Emacs 27 officially deprecates cl.el, which causes run-tests.sh to
fail even when all tests pass, due to byte-compiler warnings.
* dash.el: Do not unconditionally require cl.el in all Emacs
versions. Remove gv setter for -first-item, which is redundant
since -first-item is an alias of car. Also wrap calls to
gv-define-setter in with-no-warnings to suppress warnings about
gv--defsetter being undefined at runtime in certain Emacs versions.
(-third-item): Do not assume caddr is defined just because cl.el was
loaded within eval-when-compile: caddr is only defined if cl.el is
loaded at runtime, or in Emacs 26 and above.
* dev/examples.el (odd?): New helper function akin to even?.
(-partition-after-pred, -partition-before-pred): Use it instead of
assuming oddp from cl.el is defined.
* run-tests.sh: Byte-compile all Emacs versions. Pass -Q along with
-batch for some older Emacs versions. Consistently use
short (single-hyphen) Emacs options.
* README.md:
* dash.info:
* dash.texi: Regenerate docs.
The descructoring could be extended by defining a function named
`dash-expand:&{destructoring-key}` where {destructoring-key} stands for the key
that will be used in the let destructoring, e. g. &hash/&plist in the standart
dash
Move to EVM for version management, rather than a patchwork of PPAs.
Add testing for all Emacs versions including minor releases 24.1 to
25.3. Add Emacs-26 pretest. Add Emacs master snapshot.
Fix comments in dash.el that describe workaround for missing gv.el in
24.1.1 and 24.2.1. Update run-tests.el to skip byte compilation check
in these versions.
Remove support for tests on Emacs 23 (and by implication full support
for Emacs-23, although this commit introduces no breaking changes by
itself). Remove ert.el from, as it was needed only for Emacs 23.
* Add -doto macro (like Clojure's doto)
Here is its documentation in clojuredocs:
(doto x & forms)
Evaluates x then calls all of the methods and functions with the
value of x supplied at the front of the given arguments. The forms
are evaluated in order. Returns x.
(doto (new java.util.HashMap) (.put "a" 1) (.put "b" 2))
Documentation:
https://clojuredocs.org/clojure.core/doto
Source (clojure):
https://github.com/clojure/clojure/blob/clojure-1.7.0/src/clj/clojure/core.clj#L3700
* Use make-symbol instead of gensym to stay consistent
Consistent with other code in dash.el
* Fix referring to rest from cl.el in -doto
* Add doto example with setcar and setcdr
* Clarify -doto docstring: eval-initial-value evalled only once
Also mention all arguments in the docstring to please checkdoc
* Make -doto documentation more in line with Emacs standards
This adds `-each-indexed` and an anaphoric variant `--each-indexed`,
equivalent to `-map-indexed`.
Whilst `--each` already defines `it-index`, it's not documented. Having
a separate version is more explicit and more discoverable because it's
similarly named to `-map-indexed`.
Fixes#175.