Emacs 如何使带有clojure层的SpaceMac自动完成依赖关系中的功能
作为标题,我使用SpaceMac并添加Emacs 如何使带有clojure层的SpaceMac自动完成依赖关系中的功能,emacs,clojure,autocomplete,spacemacs,Emacs,Clojure,Autocomplete,Spacemacs,作为标题,我使用SpaceMac并添加clojure层。 我在project.clj中添加了一个依赖项,但它不能自动完成函数 以下是我的一些配置: dotspacemacs-configuration-layers '( (auto-completion :variables auto-completion-enable-help-tooltip t auto-completion-enable-snippets-in-p
clojure
层。
我在project.clj
中添加了一个依赖项,但它不能自动完成函数
以下是我的一些配置:
dotspacemacs-configuration-layers
'(
(auto-completion :variables
auto-completion-enable-help-tooltip t
auto-completion-enable-snippets-in-popup t
auto-completion-enable-sort-by-usage t)
better-defaults
emacs-lisp
(git :variables
git-magit-status-fullscreen t
git-enable-github-support t
git-gutter-use-fringe t)
github
markdown
org
syntax-checking
version-control
clojure
)
当我导入一个依赖项时,我不知道它提供了哪些功能,所以我想让emacs帮助我自动完成,或者是否有其他方法来实现我的目标
谢谢。当您
需要依赖项时,请给它起个这样的名字:
(ns example.core
(:require [com.ok.my-library :as library])
... )
然后在您键入时输入代码
library/
SpaceMac/emacs将创建该名称空间提供的名称下拉列表。在此处添加:as name
通常也有助于其他人以后探索您的代码
如果您的emacs没有填充该列表,这将是一个独立于此列表的问题(两者都需要解决)。对于刚刚接触此列表的人来说,这里可能有一些要点需要了解。我会尽力指出它们。
这里的一切都适用于大多数未配置的SpaceMac,clojure和auto complete图层处于活动状态
请记住:
REPL实际上不是命令行接口,而是运行的后台进程,您可以与之交互(例如通过命令行接口)-该进程具有一些相关的内部状态(当前名称空间、所需符号和名称空间、加载/计算的代码)
与REPL更有趣的交互通常不是通过命令行,而是在编辑窗口(意思是Emacs窗口)本身
您可以使用苹果酒评估命令执行此操作,该命令可通过Spacemacs中的键-m-e
找到。我所说的主要适用于这种互动方式
苹果酒REPL和自动完成之间的交互在某些方面更多地与评估/ns-load
ing有关,而不是与ns要求有关
现在回答问题:
- 当您
苹果酒插接
到一个新的REPL中时,不计算任何编辑窗口或缓冲区中的ns声明-您在用户
-ns中
- 苹果酒上下文中的自动完成层似乎只完成了在某些ns声明中声明(使用特定的
:as
)的所有事情,这些事情在某些时候已经过评估,或者更可能是加载的(不需要)
- 当您在窗口中的点
(例如)处执行苹果酒评估sexp时,将计算缓冲区中的命名空间声明,这通常会触发一些requires(但不会计算整个缓冲区)
您可能会遇到问题,因为在计算ns
-requires时有一些奇怪的方式,这似乎与Emacs中某个缓冲区中是否打开了所需的ns
有关。我不确定这是正确的解释,但在我看来
- 如果在某个缓冲区中打开了
-1,请计算ns
-2ns
s您的:reference
-1,只计算引用的ns表单,不计算 缓冲区ns
- 如果未打开
:请参阅
已打开的ns,ns及其所有窗体都处于打开状态 文件已加载
因此,有时有必要“手动”评估您在某些
ns
中引用的所有表单,以便能够解决所需的问题。您可以使用cider evaluate buffer
执行此操作,或者以其他方式加载ns。是的,我完全按照您编写的操作,并且没有提供名称下拉列表,因此我不确定问题出在哪里。我认为添加自动完成
和clojure
层应该可以工作。谢谢你的帮助。我意识到我需要将require buy添加到cljr add require to ns
的命令,而不是键入我自己,并且在出现下拉菜单时可以工作。