Lisp Portacle-为什么我访问文件时intellisense函数停止工作(它在repl中工作)

Lisp Portacle-为什么我访问文件时intellisense函数停止工作(它在repl中工作),lisp,common-lisp,Lisp,Common Lisp,我对emacs和lisp非常陌生,所以我从portacle开始。当它在repl中启动时,我可以定义函数,然后当我使用它们时,我在底部得到一些涉及参数名称的智能感知。但是,当我打开文件时,intellisense不适用于新文件 如何让intellisense(函数的参数名)与我在repl中时的工作方式相同地为文件工作?您所称的“intellisense”是emacs/SLIME所称的“completion”(两者都是一个很好的名称,但对于Lisp人来说,更老更通用的术语更有意义) 正如Rainer

我对emacs和lisp非常陌生,所以我从portacle开始。当它在repl中启动时,我可以定义函数,然后当我使用它们时,我在底部得到一些涉及参数名称的智能感知。但是,当我打开文件时,intellisense不适用于新文件


如何让intellisense(函数的参数名)与我在repl中时的工作方式相同地为文件工作?

您所称的“intellisense”是emacs/SLIME所称的“completion”(两者都是一个很好的名称,但对于Lisp人来说,更老更通用的术语更有意义)

正如Rainer在一篇评论中所建议的,你没有得到任何对文件有用的东西的原因,是因为这种工作方式是Emacs秘密地与Lisp实现(我想在本例中是SBCL)交谈,并询问它,几乎是“告诉我关于这件事的事情”,而SBCL只有知道“这件事”时才能这样做,在加载相关文件之前,它不会

我不知道Portacle的绑定是什么,但在更简单的SLIME环境中加载文件的方式是,在Emacs中访问文件时,使用C-C-C-k(即control-C-control-k),它将编译并加载文件



对于不习惯Lisp环境的人来说,这种生活方式可能相当陌生,但在Lisp世界中,情况或多或少是这样的:Lisp通常是加载代码的增量系统,随着越来越多的代码被加载到世界中,世界变得更加丰富,并且能够告诉您关于它所看到的代码的事情。事实上,一种至少曾经很常见的方法是将一大堆内容加载到Lisp中,然后保存运行中的映像以供以后重新启动:这些保存的映像通常被称为“世界加载”、“带”、“系统输出”(在某些异端机器上)或“映像”。

可能需要首先将文件加载到Lisp中?通常,您将使用-load进行工作,然后在其中构建;这最好通过视频来演示。不幸的是,我不知道有任何视频说明ASDF,最接近的是感谢您的详细解释,这是有意义的。当我编译文件时,我得到intellisense/completion。它正在按预期工作。