【发布时间】:2019-05-03 16:38:46
【问题描述】:
我是 Emacs Lisp 的新手,正在更改 mu4e-send-delay 中的一些代码。我想测试用户是否将变量设置为一个值,例如在暂存缓冲区中:
(setq mu4e-sent-messages-behavior 'delete)
delete
这三个测试返回 false:
(eq 'mu4e-sent-messages-behavior 'delete)
nil
(equal 'mu4e-sent-messages-behavior 'delete)
nil
(equal 'mu4e-sent-messages-behavior "delete")
nil
这个返回 true,但使用 member 列表函数:
(if (member mu4e-sent-messages-behavior '(delete)) t nil)
t
如果用户将设置保持在代码中的默认设置:
(defcustom mu4e-sent-messages-behavior 'sent
...
)
那么member 也失败了:
(when (member mu4e-sent-messages-behavior '(sent)) t nil)
nil
我的测试出了什么问题,如何测试用户设置的变量的值?
【问题讨论】:
-
引号表示您正在测试 symbol
mu4e-sent-messages-behavior是否与符号delete(或字符串"delete")相同,当然还有不是——它们是不同的符号(或符号和字符串)。您想测试变量的 值,而不是变量的符号。
标签: elisp