如何在emacs中查找CL函数定义

时间:2013-10-21 01:47:17

标签: emacs lisp common-lisp

有没有办法从emacs中查看常见的lisp函数及其文档的参数?或者还要查看所有可用功能的列表?

4 个答案:

答案 0 :(得分:7)

SLIME自动加载eldoc-mode - 这是在迷你缓冲区中显示函数参数的模式。如果您的意思是cl Emacs Lisp库,您可以使用 M-x eldoc-mode加载它。

另一个有用的SLIME功能是 C-c C-d C-d - 这会弹出一个新缓冲区,其中包含有关该功能的文档。

这些也很有用:

  • C-c C-w C-a slime-who-specializes
  • C-c C-w C-b slime-who-binds
  • C-c C-w C-c slime-who-calls
  • C-c C-w RET slime-who-macroexpands
  • C-c C-w C-r slime-who-references
  • C-c C-w C-s slime-who-sets
  • C-c C-w C-w slime-calls-who
  • C-c C-w a slime-who-specializes
  • C-c C-w b slime-who-binds
  • C-c C-w c slime-who-calls
  • C-c C-w m slime-who-macroexpands
  • C-c C-w r slime-who-references
  • C-c C-w s slime-who-sets
  • C-c C-w w slime-calls-who

他们的名字应该是显而易见的。

Addidionally,SLIME有一个auto-complete插件,可以在下拉菜单中显示文档和函数参数(好吧,类似),在视觉上类似于Visual Studio或Eclipse的工作方式。我认为它叫ac-slime,可以通过ELPA安装。

答案 1 :(得分:1)

您可以使用documentation获取函数的文档。 (以下示例获取有关函数list的信息。)

(documentation 'list 'function)
"Returns constructs and returns a list of its arguments."

要获取参数列表,某些包中通常存在依赖于实现的函数arglist。您可以使用(apropos 'arglist)搜索此功能。这将为您提供名称包含arglist的所有实习符号的列表。

例如在CMUCL中它是(swank-backend::arglist 'list),在CLISP中它只是(arglist 'list)等。

N.B。如果您使用SLIME,则无论如何都应该看到下面的可用参数。

答案 2 :(得分:0)

排序。手册GNU Emacs Common Lisp Emulation附带GNU Emacs - 主{(1}}级)信息菜单中的CL。请参阅功能索引以获取已记录功能的列表。但是文档有些不完整,它仅记录了Emacs实现,有时与Common Lisp规范不同。

有关该语言的详细信息,请参阅Common Lisp文档。

答案 3 :(得分:0)

以下所有内容均来自http://cl-cookbook.sourceforge.net/emacs-ide.html

Q2。从Emacs中查看HyperSpec

Q2我喜欢在Emacs中访问HyperSpec,但为什么必须使用外部浏览器?为什么 我不能只看到Emacs中的HyperSpec吗?

A2如果您使用Emacs附加软件包W3(或提供类似功能的W3M),您可以显示HTML页面 在Emacs里面。一旦安装了W3和HyperSpec,请使用类似于以下内容的代码来访问 Shift-F1键中的HyperSpec:

(global-set-key [(shift f1)]
    '(lambda ()
       (interactive)
       (let ((browse-url-browser-function 
                        'browse-url-w3)
               (common-lisp-hyperspec-root            
                        "file://c:/home/docs/Hyperspec/")
                           (common-lisp-hyperspec-symbol-table 
                         (concat common-lisp-hyperspec-root 
                                     "Data/Map_Sym.txt"))
                (hyperspec-prog 
                         "c:/home/site/ilisp/extra/hyperspec"))
         (load-library hyperspec-prog)
         (common-lisp-hyperspec 
                    (thing-at-point 'symbol)))))

请注意,上面代码中的“let”将browse-url-browser-function设置为仅适用于HyperSpec的W3。您可以 要么全局设置变量(如果要始终使用W3或其他特定浏览器),要么本地设置(如果你 想要使用特定的浏览器,而不是默认的浏览器。)