* dash.el (-is-prefix?): Stop looping when prefix runs out, even if
list starts with nil elements.
(-is-suffix?): Avoid reversing arguments; just use member.
* dev/examples.el (-is-prefix?, -is-suffix?): Extend tests.
* README.md:
* dash.texi: Regenerate docs.
* dash.el (-remove-item): Define as an alias of remove for speed.
* dev/examples.el (-remove-item): Extend tests.
* README.md:
* dash.texi: Regenerate docs.
* dev/examples-to-docs.el (example-to-string): Simplify.
* dev/examples-to-info.el (example-to-string): Use @error{} instead
of @result{} for errors. Use error-message-string to translate
error lists to their corresponding message.
* dev/examples-to-tests.el (example-to-should): Add support for
checking whole error lists, not just error symbols.
* dev/examples.el (-running-sum, -running-product, -iota): Specify
whole error list, not just error symbol.
* dash.texi: Regenerate.
* dash.el (---partition-all-in-steps-reversed): Rename from this...
(dash--partition-all-in-steps-reversed): ...to this. All callers
changed. Signal wrong-type-argument message conforming to
(info "(elisp) Signaling Errors"). Prefer built-in definitions over
Dash ones where either will do.
(-setq): Signal wrong-number-of-arguments like setq.
(-running-sum, -running-product): Signal wrong-type-argument.
* dev/examples.el (-running-sum, -running-product)
(-partition-in-steps, -partition-all-in-steps, -setq): Update
accordingly.
* README.md:
* dash.texi: Regenerate docs.
This reverts some of the copying added in PR #354 so as to maintain
some support for circular and dotted list tails, which can't be
copied. For more discussion, see also issue #225.
* dash.el (--take-while, -take-while, -take, -take-last)
(-drop-last): Improve docstring.
(--drop-while, -drop): Revert to not returning a copy.
(-drop-while): Update docstring accordingly.
(-split-at): Simplify. Improve docstring.
(-rotate): Prefer nthcdr over -drop for clarity.
* dev/examples.el (-drop, -drop-while): Update tests for reverted
behavior.
(-take-while, -split-at, -rotate, -cycle, -fix): Improve tests.
* README.md:
* dash.texi: Regenerate docs.
Provide a command to register the Dash Info index under
emacs-lisp-mode in info-lookup-alist for the benefit of 'C-h S', and
provide an unloader function for unload-feature to undo this.
* dash.el (dash--info-doc-spec, dash--info-elisp-docs)
(dash-register-info-lookup, dash-unload-function): New definitions.
* dash-template.texi (Info symbol lookup):
* readme-template.md (Info symbol lookup): New sections.
* README.md:
* dash.texi: Regenerate docs.
Fixes#326.
* dash.el (-cons*): Return nil when called with no arguments instead
of signaling an error. Rewrite for speed.
* dev/examples.el (-cons*): Add more tests.
* README.md:
* dash.texi: Regenerate docs.
* dash.el (-list): Fix doc in the case that the first argument is
already a list.
* dev/examples.el (-list): Expand tests.
* README.md:
* dash.texi: Regenerate docs.
Fixes#225.
* dash.el (--each, --each-while, --each-r, --each-r-while): Protect
it and it-index from modification and unused lexical variable
warnings.
(-each): Use mapc for speed.
(-each-indexed, -each-while, -each-r, -each-r-while, --dotimes)
(-dotimes, -map): Improve docstrings and make them more consistent.
(--map): Rewrite as a loop to avoid funcall overhead and unused
lexical variable warnings.
* dev/examples.el (three-letters): Remove function.
(Maps): Fix grammar.
(Unfolding): Wrap description over multiple lines.
(Side effects): No need to hyphenate side effects.
(-map, -each, --each-while, -each-indexed, -each-r, -each-r-while)
(-dotimes): Simplify and extend tests.
* README.md:
* dash.texi: Regenerate docs.
The macro was broken until now for anything other than list forms,
due to a mistake in quoting. Use this as an opportunity to rethink
the macro's behavior in this case. Instead of using funcall, which
is unusual for a macro, thread the value using ->. Suggested by
Zach Shaftel <zshaftel@gmail.com>.
* dash.el (-doto): Rewrite in terms of ->. Fix docstring. Add
Edebug spec.
(--doto): Rename argument for consistency with -doto. Expand
docstring. Add Edebug spec.
* dev/examples.el (-doto): Test fixed behavior of -doto.
* README.md:
* dash.texi: Regenerate docs.
Fixes#333.
* dash-template.texi: Set version flag DASHFNVER for
dash-functional.el alongside that for dash.el.
(Using in a package): Use it.
* dev/examples-to-info.el (create-info-file): Substitute package
version of dash-functional.el alongside that of dash.el.
* dash.texi: Regenerate manual.
* dash.el (--iterate): Implement in terms of dotimes. Move
definition before first use.
(-iterate): Implement in terms of --iterate.
* dev/examples.el (Unfolding): Fix group description.
(-iterate): Add more tests.
* README.md:
* dash.texi: Regenerate docs.
* Makefile: New file subsuming create-docs.sh and run-tests.sh.
* create-docs.sh:
* run-tests.sh: Remove files.
* .github/workflows/test.yml:
* dash-template.texi (Contribute):
* readme-template.md (Contribute):
* pre-commit.sh: Refer to new Make targets.
* dev/examples.el: Add support for running byte-compiled tests in
Emacs < 24.3, where setf was still defined in cl-macs.el.
* README.md:
* dash.texi: Regenerate docs.
* .gitignore: Ignore locally compiled Info manual.
* doc/fdl.texi:
* doc/gpl.texi: New files containing GNU FDL and GPL in Texinfo
format.
* dash-template.texi: Include their contents as appendices, and
license manual under the GNU FDL. Define placeholder flag DASHVER
for the current version of the dash.el package. Fix titles,
subtitle, directory file entry, markup, and menus. Improve wording
and cross-references. Reconcile manual contents with those of
readme-template.md, particularly the change log and list of
contributors. Generate a function rather than concept index, which
is not used.
* dev/examples-to-info.el: Set DASHVER in dash.texi to the current
version of the dash.el package.
* dash.texi: Regenerate manual.
* dash.el (-cycle): Use append for faster list copying that
continues to work with non-list sequences. Fix docstring.
* dev/examples.el (-cycle): Test that returned list is a copy.
* README.md:
* dash.info:
* dash.texi: Regenerate docs.
This cleans up the fontification code and makes it less intrusive.
In particular, Dash function calls are no longer fontified, as
discussed in #303.
* dash.el (dash): Fix custom group description.
(dash--enable-fontlock): Remove.
(dash--keywords): New variable.
(dash--turn-on-fontify-mode): New function.
(dash-fontify-mode-lighter): New user option.
(dash-fontify-mode, global-dash-fontify-mode): New autoloaded minor
modes replacing dash-enable-fontlock, dash-enable-font-lock, etc.
(dash-enable-fontlock): Update docstring. Make obsolete in favor of
global-dash-fontify-mode, which is now called in the :set function.
(dash-enable-font-lock): Make obsolete alias of
global-dash-fontify-mode.
* dash-template.texi (Syntax highlighting of dash functions):
* readme-template.md (Syntax highlighting of dash functions):
Retitle as "Fontification of special variables" for clarity and
accuracy and describe dash-fontify-mode instead of the now obsolete
dash-enable-font-lock.
* README.md:
* dash.info:
* dash.texi: Regenerate docs.
Fixes#298.
Fixes#303.
Closes#310.