当使用Slime时,我该如何在Emacs中跳转到函数定义?

10
我已经使用https://github.com/thephoeron/slime-pack安装了Slime,并想更深入地探索Common Lisp。
如何在Emacs中访问特定函数的源代码?
例如,如果我有一个函数:
(type-of 1)

我想要访问type-of的源代码,怎么做呢?

我不使用你提到的库,但我经常使用M-x find-function。这对你有用吗?还有find-function-other-windowfind-function-other-frame - lawlist
我遇到了错误“目录 /usr/bin/src/code 不存在,创建它吗?”,但在使用Emacs软件包管理器安装Slime后问题得到解决。 - Ehvince
1个回答

15

Meta .

调用函数:slime-edit-definition

为了跳转到Lisp实现内部的函数,您可能需要执行某些额外操作以指向源代码。在SBCL中,您需要将sb-ext:set-sbcl-source-location设置到正确的位置,在.sbclrc中:

(sb-ext:set-sbcl-source-location "/path/to/sbcl/")
你可以在Emacs中使用C-xC-f命令编辑.sbclrc文件,路径为~/.sbclrc

3
如果您自己构建SBCL,源代码位置会被自动设置。 - Xach
3
只有在您加载的文件中定义了函数,此方法才有效。如果您尝试使用通过C-x e从源发送到REPL的定义来执行此操作,则会收到“Error: DEFINITION-SOURCE of function FOO-BAR did not contain meaningful information.”的错误提示。请注意不要改变原意。 - Throw Away Account
但是,如何跳回去? - 1.618
2
META逗号允许您跳回。 - PuercoPop
链接到Slime文档 :) - Ehvince
如果相应的函数在一个包中,不要忘记在REPL中加载该包。我花了5分钟才意识到这一点,当时我刚开始使用Emacs。 - Philipp Ludwig

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