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

如何在emacs中查找CL函数定义,emacs,lisp,common-lisp,Emacs,Lisp,Common Lisp,有没有办法从emacs中查看公共lisp函数及其文档的参数?或者查看所有可用功能的列表 差不多。手册GNU Emacs Common Lisp Emulation(GNU Emacs通用Lisp仿真)随GNU Emacs一起提供,它位于主(dir-level)信息菜单中的CL。参考功能索引以获取记录的功能列表。但是文档有点不完整,它只记录了Emacs实现,这有时与常见的Lisp规范不同 有关该语言的精确信息,请参阅公共Lisp文档 您可以使用文档获取函数的文档。(以下示例用于获取有关函数列

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

差不多。手册GNU Emacs Common Lisp Emulation(GNU Emacs通用Lisp仿真)随GNU Emacs一起提供,它位于主(
dir
-level)信息菜单中的
CL
。参考功能索引以获取记录的功能列表。但是文档有点不完整,它只记录了Emacs实现,这有时与常见的Lisp规范不同

有关该语言的精确信息,请参阅公共Lisp文档


您可以使用
文档
获取函数的文档。(以下示例用于获取有关函数
列表的信息

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

(documentation 'list 'function)
"Returns constructs and returns a list of its arguments."
例如,在CMUCL中它是
(swank backend::arglist'list)
,在CLISP中它只是
(arglist'list)
,等等

注意:如果您使用,您应该看到下面的可用参数。

下面的所有内容都来自

问题2。从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”仅针对HyperSpec将browse url browser函数设置为W3。你可以 可以全局设置变量(如果希望始终使用W3或其他特定浏览器),也可以本地设置变量(如果需要)
要使用特定浏览器而不是默认浏览器)。

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

另一个有用的SLIME特性是C-C-d C-d-这将弹出一个新的缓冲区,其中包含有关该函数的文档

这些也非常有用:

  • C-C C-w C-a
    slime谁是专家
  • C-C-C-w C-b
    粘液谁绑定
  • C-C-C-w C-C
    slime谁打电话
  • C-C C-w RET
    slime who macroexpansion
  • C-C-C-w C-r
    slime谁参考
  • C-C-C-w C-s
    slime谁设置
  • C-C-C-w C-w
    slime给谁打电话
  • C-C C-w a
    slime谁是专家
  • C-C C-w b
    粘液谁绑定
  • C-C C-w C
    slime谁打电话
  • C-C C-w m
    slime who macroexpansion
  • C-C C-w r
    slime谁参考
  • C-C C-w s
    slime谁设置
  • C-C C-w w
    slime给谁打电话
从他们的名字可以明显看出他们在做什么


另外,SLIME还有一个
自动完成
插件,它可以在下拉菜单中显示文档和函数参数(嗯,有点像),在视觉上类似于VisualStudio或Eclipse。我想它叫
ac slime
,可以通过ELPA安装。

我如何使用
(documentation
,例如查找
格式的documentation
?您可以这样使用:
(文档'格式'功能)
。大多数实现在某些地方也有ARGLIST函数。我所说的CL是指Common Lisp,而不是任何elisp东西。您提到的这些主要是为了elisp吗?@OpenLearner否,只有与
eldoc模式相关的部分,其余部分是SLIME绑定。如果您安装了SLIME,您可以找到所有这些(以及更多)通过执行
C-h m
(或
m-x描述模式
)或
C-h b
m-x描述键绑定
)。