[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/trie a2554d6 094/111: Fix function symbol quoting.
From: |
Stefan Monnier |
Subject: |
[elpa] externals/trie a2554d6 094/111: Fix function symbol quoting. |
Date: |
Mon, 14 Dec 2020 11:35:28 -0500 (EST) |
branch: externals/trie
commit a2554d609bd66eb4c344b4002998e120a05c468f
Author: Toby S. Cubitt <toby-predictive@dr-qubit.org>
Commit: Toby S. Cubitt <toby-predictive@dr-qubit.org>
Fix function symbol quoting.
---
trie.el | 107 ++++++++++++++++++++++++++++++++--------------------------------
1 file changed, 54 insertions(+), 53 deletions(-)
diff --git a/trie.el b/trie.el
index 80baecd..bdeb618 100644
--- a/trie.el
+++ b/trie.el
@@ -162,18 +162,17 @@
;; --- avl-tree ---
-(put 'avl :trie-createfun
- (lambda (cmpfun _seq) (avl-tree-create cmpfun)))
-(put 'avl :trie-insertfun 'avl-tree-enter)
-(put 'avl :trie-deletefun 'avl-tree-delete)
-(put 'avl :trie-lookupfun 'avl-tree-member)
-(put 'avl :trie-mapfun 'avl-tree-mapc)
-(put 'avl :trie-emptyfun 'avl-tree-empty)
-(put 'avl :trie-stack-createfun 'avl-tree-stack)
-(put 'avl :trie-stack-popfun 'avl-tree-stack-pop)
-(put 'avl :trie-stack-emptyfun 'avl-tree-stack-empty-p)
-(put 'avl :trie-transform-for-print 'trie--avl-transform-for-print)
-(put 'avl :trie-transform-from-read 'trie--avl-transform-from-read)
+(put 'avl :trie-createfun (lambda (cmpfun _seq) (avl-tree-create cmpfun)))
+(put 'avl :trie-insertfun #'avl-tree-enter)
+(put 'avl :trie-deletefun #'avl-tree-delete)
+(put 'avl :trie-lookupfun #'avl-tree-member)
+(put 'avl :trie-mapfun #'avl-tree-mapc)
+(put 'avl :trie-emptyfun #'avl-tree-empty)
+(put 'avl :trie-stack-createfun #'avl-tree-stack)
+(put 'avl :trie-stack-popfun #'avl-tree-stack-pop)
+(put 'avl :trie-stack-emptyfun #'avl-tree-stack-empty-p)
+(put 'avl :trie-transform-for-print #'trie--avl-transform-for-print)
+(put 'avl :trie-transform-from-read #'trie--avl-transform-from-read)
@@ -277,7 +276,7 @@
(:constructor trie--create-custom
(comparison-function
&key
- (createfun #'avl-tree-create-bare)
+ (createfun #'(lambda (cmpfun _seq) (avl-tree-create cmpfun)))
(insertfun #'avl-tree-enter)
(deletefun #'avl-tree-delete)
(lookupfun #'avl-tree-member)
@@ -339,12 +338,12 @@
;; define this ourselves, because we created a defstruct without any
;; identifying tags (i.e. (:type vector)) for efficiency, but this
;; means we can only perform a rudimentary and very unreliable test.
+ ;; Good enough for internal usage.
(and (vectorp node) (= (length node) 2)))
(defun trie--node-find (node seq lookupfun)
- ;; Returns the node below NODE corresponding to SEQ, or nil if none
- ;; found.
+ ;; Returns the node below NODE corresponding to SEQ, or nil if none found.
(let ((i -1))
;; descend trie until we find SEQ or run out of trie
(while (and node (< (incf i) (length seq)))
@@ -424,45 +423,46 @@
;;; ----------------------------------------------------------------
;;; Replacements for CL functions
-;; copied from cl-extra.el
-(defun trie--subseq (seq start &optional end)
- "Return the subsequence of SEQ from START to END.
+(unless (require 'cl-lib nil t)
+ ;; copied from cl-extra.el
+ (defun cl-subseq (seq start &optional end)
+ "Return the subsequence of SEQ from START to END.
If END is omitted, it defaults to the length of the sequence.
If START or END is negative, it counts from the end."
- (if (stringp seq) (substring seq start end)
- (let (len)
- (and end (< end 0) (setq end (+ end (setq len (length seq)))))
- (when (< start 0)
- (setq start (+ start (or len (setq len (length seq))))))
- (cond ((listp seq)
- (if (> start 0) (setq seq (nthcdr start seq)))
- (if end
- (let ((res nil))
- (while (>= (setq end (1- end)) start)
- (push (pop seq) res))
- (nreverse res))
- (copy-sequence seq)))
- (t
- (or end (setq end (or len (length seq))))
- (let ((res (make-vector (max (- end start) 0) nil))
- (i 0))
- (while (< start end)
- (aset res i (aref seq start))
- (setq i (1+ i) start (1+ start)))
- res))))))
-
-
-(defun trie--position (item list)
- "Find the first occurrence of ITEM in LIST.
+ (if (stringp seq) (substring seq start end)
+ (let (len)
+ (and end (< end 0) (setq end (+ end (setq len (length seq)))))
+ (when (< start 0)
+ (setq start (+ start (or len (setq len (length seq))))))
+ (cond ((listp seq)
+ (if (> start 0) (setq seq (nthcdr start seq)))
+ (if end
+ (let ((res nil))
+ (while (>= (setq end (1- end)) start)
+ (push (pop seq) res))
+ (nreverse res))
+ (copy-sequence seq)))
+ (t
+ (or end (setq end (or len (length seq))))
+ (let ((res (make-vector (max (- end start) 0) nil))
+ (i 0))
+ (while (< start end)
+ (aset res i (aref seq start))
+ (setq i (1+ i) start (1+ start)))
+ res))))))
+
+ (defun cl-position (item list)
+ "Find the first occurrence of ITEM in LIST.
Return the index of the matching item, or nil of not found.
Comparison is done with `equal'."
- (let ((i 0))
- (catch 'found
- (while (progn
- (when (equal item (car list)) (throw 'found i))
- (setq i (1+ i))
- (setq list (cdr list))))
- nil)))
+ (let ((i 0))
+ (catch 'found
+ (while (progn
+ (when (equal item (car list)) (throw 'found i))
+ (setq i (1+ i))
+ (setq list (cdr list))))
+ nil)))
+)
(defsubst trie--seq-append (seq el)
@@ -782,7 +782,7 @@ bind any variables with names commencing \"--\"."
(lambda (n)
(and (setq --trie-deleted--node
(trie--do-delete
- n (trie--subseq --trie--do-delete--seq 1)
+ n (cl-subseq --trie--do-delete--seq 1)
--trie--do-delete--test
--trie--do-delete--deletefun
--trie--do-delete--emptyfun
@@ -804,8 +804,9 @@ If TEST is supplied, it should be a function that accepts
two
arguments: the key being deleted, and its associated data. The
key will then only be deleted if TEST returns non-nil.
-Note: to avoid nasty dynamic scoping bugs, TEST must *not* bind
-any variables with names commencing \"--\"."
+Note: In Emacsen that do not support lexical binding, TEST must
+*not* bind any variables with names commencing \"--\", or it may
+trigger nasty dynamic scoping bugs."
;; convert trie from print-form if necessary
(trie-transform-from-read-warn trie)
;; set up deletion (real work is done by `trie--do-delete'
- [elpa] externals/trie 63da3b1 111/111: * trie.el: Fix header which likely suffered a `M-q` accident, (continued)
- [elpa] externals/trie 63da3b1 111/111: * trie.el: Fix header which likely suffered a `M-q` accident, Stefan Monnier, 2020/12/14
- [elpa] externals/trie ff5e05f 040/111: Bumped copyright year, Stefan Monnier, 2020/12/14
- [elpa] externals/trie 2281926 020/111: Minor code reformatting and rearrangement, Stefan Monnier, 2020/12/14
- [elpa] externals/trie d99fb00 055/111: Simplified advice-based edebug pretty-printing of tries and dictionaries., Stefan Monnier, 2020/12/14
- [elpa] externals/trie b4d81bf 064/111: Trivial whitespace tidying., Stefan Monnier, 2020/12/14
- [elpa] externals/trie d45e9d5 062/111: Added autoload cookies., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 1c2790d 038/111: Replaced wildcard searches with more powerful and efficient regexp searches., Stefan Monnier, 2020/12/14
- [elpa] externals/trie bbfecae 085/111: Do lexbind test at compile-time instead of load-time., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 5e8e73f 081/111: Fix data wrapping handling in fuzzy query functions., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 2a9d7ec 099/111: Port efficiency improvements to trie-fuzzy-match., Stefan Monnier, 2020/12/14
- [elpa] externals/trie a2554d6 094/111: Fix function symbol quoting.,
Stefan Monnier <=
- [elpa] externals/trie c6ddbb9 096/111: Bump version numbers., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 94a1a86 087/111: Bump version numbers since we've added iterator generators., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 4001f61 097/111: Fix corresponding bug in trie-fuzzy-complete-stack., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 91d299c 104/111: Pretty-print trie nodes in edebug., Stefan Monnier, 2020/12/14
- [elpa] externals/trie fc9b218 032/111: Removed support for non-terminal * wildcards, Stefan Monnier, 2020/12/14
- [elpa] externals/trie 5a064c0 092/111: Fix bug in trie-delete return value., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 9f49d95 086/111: Implement iterator generators on collection data structures., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 2957aec 103/111: Fix bugs in trie-fuzzy-match/complete., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 3a734c3 077/111: Implement trie-fuzzy-match and trie-fuzzy-complete functions., Stefan Monnier, 2020/12/14
- [elpa] externals/trie 9259d51 088/111: Improve edebug pretty-printing., Stefan Monnier, 2020/12/14