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

的用法