如何在elisp/emacs中检查变量是否设置为什么?

16

假设我在 .emacs 文件中有以下一行内容。

(setq-default default-directory "~/Desktop/mag")

如何在elisp中检查`default-directory`的值?

补充

我提出这个问题是因为我需要根据这个问题检查default-directory的值。

当我点击C-x C-f时,elisp代码应该更改默认目录,但我仍然得到~ /,而不是~/Desktop/mag。因此,我需要检查default-directory的值。


1
请问您能否澄清一下您的问题?显然,“只是评估default-directory”不是您想要的答案,那么它不能满足您的需求是什么呢? - zwol
5个回答

26

如果你在控制台上,可以输入C-h v,这将提示你输入变量名。键入default-directory(或任何其他名称),你将获得一个包含有关该变量的一些信息的缓冲区,包括它的值。

你正在运行的elisp函数是describe-variable:

(describe-variable VARIABLE)

我通过 C-h k C-h v 找到了答案。C-h k 可以显示下一个按键或按键序列调用的函数。


将Paul和monotux的答案结合起来:检查变量是否设置的可靠/快速方法是将光标放在它上面,然后按“C-h v”键:如果eldoc自动选择该变量以获取信息,则它已经被设置了。确实非常方便。 - yPhil
记录在GNU Emacs手册中,并绑定到“C-h v”。 - young_souvlaki

15

如果你只是想检查值,可以在 *scratch* 缓冲区中运行以下命令:

(print default-directory) <ctrl-j>

*scratch* 缓冲区允许你即时执行 lisp 代码。你必须按下 ctrl-j 键才能执行。


很抱歉要这么说,但我认为我的答案更好。不切换缓冲区速度更快。此外,有些变量不是缓冲区本地的吗? - Emanuel Berg
啊哈,原帖想要用Elisp。抱歉,那么上面的内容不适用。 - Emanuel Berg

8

正如之前所述,C-h v 是查找变量值最简单的方法。为了使它更好用,将光标放在您想了解的变量上,然后运行 C-h v,它会默认显示光标下的单词。非常方便。


1

尝试:

(print default-directory)

将上述代码写在emacs中的一行内,在该行末尾按下C-x C-e


1
如果你只想在echo区域看到变量值(减少混乱),请尝试:
(defun describe-variable-short (var)
  (interactive "vVariable: ")
  (message (format "%s: %s" (symbol-name var) (symbol-value var))) )
(global-set-key "\C-hV" 'describe-variable-short)

3
只需键入“M-:name RET”(对于所涉及的变量名称)即可。 - phils

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接