Emacs Lisp 就地编辑嵌套列表
Emacs Lisp edit nested list in place
我有一个问题想解决。我有一个方法列表及其缓冲区位置。我用
的形式创建了它
(("method_foo" 588 . 640)
("method_bar" 557 . 587)
("method_baz" 605 . 630))
等等。我有一个机制来获得我需要的新职位。但是我似乎找不到一种干净的方法来更新列表中的缓冲区位置。这似乎是一件简单的事情,特别是对于 LISt P 处理器,但我似乎无法弄清楚。任何帮助将不胜感激。
开始于:
(setq my-alist '(("method_foo" 588 . 640)
("method_bar" 557 . 587)
("method_baz" 605 . 630)))
如果您想将 "method_bar"
的位置从 (557 . 587)
更改为 (60 . 80)
,您可以这样做:
(let ((positions (assoc "method_bar" my-alist)))
(setf (cadr positions) 60
(cddr positions) 80))
参考C-hig (elisp)Setting Generalized Variables
RET 详细了解setf
的用法
我有一个问题想解决。我有一个方法列表及其缓冲区位置。我用
的形式创建了它 (("method_foo" 588 . 640)
("method_bar" 557 . 587)
("method_baz" 605 . 630))
等等。我有一个机制来获得我需要的新职位。但是我似乎找不到一种干净的方法来更新列表中的缓冲区位置。这似乎是一件简单的事情,特别是对于 LISt P 处理器,但我似乎无法弄清楚。任何帮助将不胜感激。
开始于:
(setq my-alist '(("method_foo" 588 . 640)
("method_bar" 557 . 587)
("method_baz" 605 . 630)))
如果您想将 "method_bar"
的位置从 (557 . 587)
更改为 (60 . 80)
,您可以这样做:
(let ((positions (assoc "method_bar" my-alist)))
(setf (cadr positions) 60
(cddr positions) 80))
参考C-hig (elisp)Setting Generalized Variables
RET 详细了解setf