如何使用elisp在emacs中打印所有符号。
可以使用symbolp函数测试一个lisp对象是否为符号。但是如何收集所有符号呢?
是否可以访问emacs的符号表?
(require 'cl)
(loop for x being the symbols
if (boundp x)
collect (symbol-name x))
loop
是一个Common Lisp宏,也已被移植到Emacs Lisp中。它是cl
包的一部分(标准Emacs发行版的一部分),您需要require
来使用它。
另一个要考虑的选项可能是:
(apropos "." t)
apropos
命令的执行时间会更长,但是这样可以获取更多关于符号的信息。
(require 'cl)
来使用loop
,然而emacs22是一个(非常?)老的版本。你应该考虑使用emacs24或至少是emacs23。 - Daimrod为了完整起见,这是一个不使用cl
包列出所有符号的方法:
创建一个新的缓冲区,然后输入 M-:(mapatoms (lambda (s) (insert (symbol-name s) "\n")))
RET。这将在缓冲区中插入所有现有符号的名称,每行一个。