branch: externals/taxy
commit aa0fe08de8676b61c3d633893b537839478d3434
Author: Adam Porter <[email protected]>
Commit: Adam Porter <[email protected]>
Change: taxy-copy -> taxy-emptied
This is more descriptive and accurate.
---
README.org | 12 ++++++------
taxy.el | 7 ++++---
2 files changed, 10 insertions(+), 9 deletions(-)
diff --git a/README.org b/README.org
index eca198c..9c46940 100644
--- a/README.org
+++ b/README.org
@@ -233,7 +233,7 @@ The ~:predicate~ function determines whether an object fits
into that taxy. If
The ~:then~ function determines what happens to an object after being taken
in: if the function, called with the object, returns a non-nil value, that
value is applied to other taxys at the same level until one of their ~:then~
functions returns nil or no more taxys remain. The function defaults to
~ignore~, which makes a taxy "consume" its objects by default. Setting the
function to, e.g. ~identity~, makes it not consume them, leaving them eligible
to also be taken into subsequent tax [...]
-After defining a taxy, call ~taxy-fill~ with it and a list of objects to fill
the taxy's hierarchy. *Note:* ~taxy-fill~ modifies the taxy given to it
(filling its ~:objects~ and those of its ~:taxys~), so when using a statically
defined taxy (e.g. one defined with ~defvar~), you should pass ~taxy-fill~ a
taxy copied with ~taxy-copy~, which recursively copies a taxy without
~:objects~.
+After defining a taxy, call ~taxy-fill~ with it and a list of objects to fill
the taxy's hierarchy. *Note:* ~taxy-fill~ modifies the taxy given to it
(filling its ~:objects~ and those of its ~:taxys~), so when using a statically
defined taxy (e.g. one defined with ~defvar~), you should pass ~taxy-fill~ a
taxy copied with ~taxy-emptied~, which recursively copies a taxy without
~:objects~.
To return a taxy in a more human-readable format (with only relevant fields
included), use ~taxy-plain~. You may also use ~taxy-map~ to replace objects in
a taxy with, e.g. a more useful representation.
@@ -253,10 +253,10 @@ You may not always know in advance what taxonomy a set of
objects fits into, so
:name "Modes"
:take (apply-partially #'taxy-take-keyed
#'buffery-major-mode)))))
- ;; Note the use of `taxy-copy' to avoid mutating the original taxy
definition.
+ ;; Note the use of `taxy-emptied' to avoid mutating the original taxy
definition.
(taxy-plain
(taxy-fill (buffer-list)
- (taxy-copy buffery)))
+ (taxy-emptied buffery)))
#+END_SRC
The taxy's ~:take~ function is set to the ~taxy-take-keyed~ function,
partially applied with the ~buffery-major-mode~ function as its ~key-fn~
(~taxy-fill~ supplies the buffer and the taxy as arguments), and it produces
this taxonomy of buffers:
@@ -296,7 +296,7 @@ The taxy's ~:take~ function is set to the ~taxy-take-keyed~
function, partially
** Reusable taxys
-Since taxys are structs, they may be stored in variables and used in other
structs (being sure to copy the root taxy with ~taxy-copy~ before filling).
For example, this shows using =taxy= to classify Matrix rooms in
[[https://github.com/alphapapa/ement.el][Ement.el]]:
+Since taxys are structs, they may be stored in variables and used in other
structs (being sure to copy the root taxy with ~taxy-emptied~ before filling).
For example, this shows using =taxy= to classify Matrix rooms in
[[https://github.com/alphapapa/ement.el][Ement.el]]:
#+BEGIN_SRC elisp
(defun ement-roomy-buffer (room)
@@ -347,7 +347,7 @@ Using those defined taxys, we then fill the ~ement-roomy~
taxy with all of the r
(list (ement-room--room-display-name room)
(ement-room-id room)))
(taxy-fill (ement-session-rooms ement-session)
- (taxy-copy ement-roomy))))
+ (taxy-emptied ement-roomy))))
#+END_SRC
This produces:
@@ -388,7 +388,7 @@ If you happen to like macros, ~taxy~ works well with
threading (i.e. ~thread-las
#+BEGIN_SRC elisp
(thread-last ement-roomy
- taxy-copy
+ taxy-emptied
(taxy-fill (ement-session-rooms ement-session))
(taxy-map (lambda (room)
(list (ement-room--room-display-name room)
diff --git a/taxy.el b/taxy.el
index 935b404..7f181f6 100644
--- a/taxy.el
+++ b/taxy.el
@@ -72,12 +72,13 @@
(taxy-objects taxy)
(mapcar #'taxy-plain (taxy-taxys taxy)))))
-(defun taxy-copy (taxy)
+(defun taxy-emptied (taxy)
"Return a copy of TAXY without objects.
-Clears TAXY's objects and those of its descendant taxys."
+Omits TAXY's objects and those of its descendant taxys. Useful
+when reusing taxy definitions."
(setf taxy (copy-taxy taxy)
(taxy-objects taxy) nil
- (taxy-taxys taxy) (mapcar #'taxy-copy (taxy-taxys taxy)))
+ (taxy-taxys taxy) (mapcar #'taxy-emptied (taxy-taxys taxy)))
taxy)
(defun taxy-map (fn taxy)