在我的Emacs配置中,我有一个字符串:
(setq ibuffer-saved-filter-groups
(quote (("default"
("dired"
(mode . dired-mode))
("System"
(or (name . "\*scratch\*")
(name . "\*Messages\*")))
("SVN"
(name . "^\\*vc-.*\\*$"))))))
变量name
和mode
未定义,但代码已正确评估。当我尝试自己制作这样的东西时:
(some-var . "some-value")
我收到有关未定义变量some-var
的错误。
答案 0 :(得分:7)
当引用基准时,不评估任何内容。例如:
foo
计算绑定到标识符foo
的值,而
'foo
或
(quote foo)
评估为符号foo
。
同样地,
(+ 1 2 3)
评估为6,而
'(+ 1 2 3)
或
(quote (+ 1 2 3))
评估到包含四个元素的列表:符号+
,以及数字1,2和3.特别是,+
未被评估。
同样,您的name
和mode
都在引用的基准范围内,不会被视为标识符,而是视为符号。他们没有被评估。
答案 1 :(得分:1)
我觉得这样,因为名字和模式都在(引用)
答案 2 :(得分:0)
查看C-h v ibuffer-saved-filter-groups。它进一步解释了这些变量。这是一个alist变量。根据文件,它应该看起来像((“STRING”QUALIFIERS)(“STRING”QUALIFIERS)...)现在QUALIFIERS是一个与`ibuffer-filtering-qualifiers'相同形式的列表。这是一个类似(SYMBOL.QUALIFIER)的列表。