mirror of
git://git.sv.gnu.org/emacs.git
synced 2026-01-03 02:31:03 -08:00
* emacs-lisp/assoc.el (aput, adelete, amake): Use lexical-let (Bug#5450).
This commit is contained in:
parent
c6d09b8da9
commit
064eee0324
2 changed files with 12 additions and 7 deletions
|
|
@ -27,6 +27,7 @@
|
|||
;; fetching off key-value pairs in association lists.
|
||||
|
||||
;;; Code:
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(defun asort (alist-symbol key)
|
||||
"Move a specified key-value pair to the head of an alist.
|
||||
|
|
@ -71,8 +72,8 @@ If VALUE is not supplied, or is nil, the key-value pair will not be
|
|||
modified, but will be moved to the head of the alist. If the key-value
|
||||
pair cannot be found in the alist, it will be inserted into the head
|
||||
of the alist (with value nil if VALUE is nil or not supplied)."
|
||||
(let ((elem (aelement key value))
|
||||
alist)
|
||||
(lexical-let ((elem (aelement key value))
|
||||
alist)
|
||||
(asort alist-symbol key)
|
||||
(setq alist (eval alist-symbol))
|
||||
(cond ((null alist) (set alist-symbol elem))
|
||||
|
|
@ -86,7 +87,7 @@ of the alist (with value nil if VALUE is nil or not supplied)."
|
|||
Alist is referenced by ALIST-SYMBOL and the key-value pair to remove
|
||||
is pair matching KEY. Returns the altered alist."
|
||||
(asort alist-symbol key)
|
||||
(let ((alist (eval alist-symbol)))
|
||||
(lexical-let ((alist (eval alist-symbol)))
|
||||
(cond ((null alist) nil)
|
||||
((anot-head-p alist key) alist)
|
||||
(t (set alist-symbol (cdr alist))))))
|
||||
|
|
@ -123,10 +124,10 @@ KEYLIST and VALUELIST should have the same number of elements, but
|
|||
this isn't enforced. If VALUELIST is smaller than KEYLIST, remaining
|
||||
keys are associated with nil. If VALUELIST is larger than KEYLIST,
|
||||
extra values are ignored. Returns the created alist."
|
||||
(let ((keycar (car keylist))
|
||||
(keycdr (cdr keylist))
|
||||
(valcar (car valuelist))
|
||||
(valcdr (cdr valuelist)))
|
||||
(lexical-let ((keycar (car keylist))
|
||||
(keycdr (cdr keylist))
|
||||
(valcar (car valuelist))
|
||||
(valcdr (cdr valuelist)))
|
||||
(cond ((null keycdr)
|
||||
(aput alist-symbol keycar valcar))
|
||||
(t
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue