gpt4 book ai didi

emacs - Emacs Lisp 中的动态变量

转载 作者:行者123 更新时间:2023-12-02 21:40:25 25 4
gpt4 key购买 nike

我的代码看起来像这样

(defun work ()
(interactive)
(case major-mode
('javascript-mode (setq js-indent-level (if (eq js-indent-level 2) 4 2)))
('css-mode (setq cssm-indent-level (if (eq cssm-indent-level 2) 4 2)))
('nxml-mode (setq nxml-child-indent (if (eq nxml-child-indent 2) 4 2)))
(t (setq c-basic-offset (if (eq c-basic-offset 2) 4 2)))))

在 2 级和 4 级缩进级别之间切换(我使用 4 个缩进空间,但需要 2 个缩进空间来工作),是否可以将每行代码缩小为看起来相同的内容:

(defun work ()
(interactive)
(let ((var (case major-mode
('javascript-mode 'js-indent-level)
('css-mode 'cssm-indent-level)
('nxml-mode 'nxml-child-indent)
(t 'c-basic-offset))))
;; like C pointers
(setf (pointer var) (if (eq (pointer var) 2) 4 2))))

(defun work ()
(interactive)
(let ((var (cdr (assoc major-mode indent-vars))))
(setf (pointer var) (if (eq (pointer var) 2) 4 2))))

如果我的缩进变量在 indent-vars alist 中

我需要使用宏还是 eval 才能做到这一点吗?

最佳答案

您需要symbol-valueset .

(defun work ()
(interactive)
(let ((var (cdr (assoc major-mode indent-vars))))
(set var (if (eq (symbol-value var) 2) 4 2))))

关于emacs - Emacs Lisp 中的动态变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20541634/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com