* dash.el (--every, -every): New definitions; to --every-p and
-every-p what --some and -some are to --some-p and -some-p,
respectively.
(--any?): Open-code ---truthy? for clarity.
(--all?): Rewrite in terms of --every. Extend docstring.
(-all?): Extend docstring.
* dev/examples.el (-any?, -all?, -some): Extend tests.
(-every): New tests.
* NEWS.md (2.19.0): Announce -every and --every.
* README.md:
* dash.texi: Regenerate docs.
* dash.el (-partial): Define as alias of apply-partially.
(-applify): Mark as pure and side-effect-free. Simplify for speed.
* dev/examples.el (-partial, -applify): Extend tests.
* README.md:
* dash.texi: Regenerate docs.
* dash.el (-flatten-n): Don't maintain a list of intermediate
results. Eta-reduce.
* dev/examples.el (-flatten-n): Check for destructive side effects.
Re: #373.
* dash.el (--iterate): Evaluate FORM N-1, not N, times, fixing a
regression in Dash 2.18.0. Don't evaluate INIT if N is zero, fixing
a bug since the introduction of the macro.
* dev/examples.el (-flatten-n): Add regression test.
(-iterate): Test for superfluous evaluations.
Fixes#373.
This prepares for the release of dash 2.18.0 and the final obsolete
version 1.3.0 of dash-functional.
* NEWS.md (2.18): Announce obsoletion of dash-functional.el.
* dash-functional.el: Mention obsoletion in package Commentary, and
emit a warning when byte-compiled or loaded.
(-rpartial, -juxt, -compose, -applify, -on, -flip, -const, -cut)
(-not, -orfn, -andfn, -iteratefn, -counter, -fixfn-max-iterations)
(-fixfn, -prodfn): Move from here...
* dash.el: ...to here.
(-partial): Move definition under "Combinators".
* Makefile (ELS, dash-functional.elc):
* dev/dash-defs.el (dash--make-md, dash--make-texi):
* dev/examples.el:
(Function combinators):
* dash-template.texi:
(Installation, Using in a package):
* readme-template.md (Installation, Using in a package): Remove all
uses and mentions of dash-functional.
* README.md:
* dash.texi: Regenerate docs.
Closes#356.
* dev/examples.el (-take, -drop, -drop-last, -take-while)
(-running-sum, -running-product, -common-prefix, -common-suffix)
(-list, -each-indexed, -dotimes): Prefer '() over () in printed
examples, as we can control how the former is printed, whereas the
latter is always printed as nil.
* README.md:
* dash.texi: Regenerate docs.
* 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.
* 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.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.