如何使带有clojure层的spacemacs自动完成依赖功能
How make spacemacs with clojure layer to complete function in dependency automatic
作为标题,我使用 spacemacs 并添加 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帮我自动完成,或者有什么办法可以达到我的目的。
谢谢。
当你 require
一个依赖项给它一个这样的名字时:
(ns example.core
(:require [com.ok.my-library :as library])
... )
然后在您的代码中键入
library/
spacemacs/emacs 将创建该名称空间提供的名称的下拉列表。添加 :as name-here
通常也有助于其他人稍后探索您的代码。
如果您的 emacs 没有填充该列表,那将是一个独立于此列表的问题(两者都需要解决)。
对于对此相当陌生的人来说,这里可能有一些要点需要了解。我会尽力指出它们。
这里的所有内容都适用于大部分未配置的 Spacemacs,其中 clojure 和自动完成层处于活动状态。
切记:
- REPL 实际上不是命令行界面,而是您可以与之交互的后台进程 运行ning(例如通过命令行界面)- 该进程具有一些相关的内部状态(当前命名空间, 所需的符号和命名空间,loaded/evaluated 代码)
- 与 REPL 更有趣的交互通常不是通过命令行,而是在编辑 Window(意思是 Emacs Window)本身
您可以使用 Cider 评估命令来执行此操作,可通过 Spacemacs 中的 <leader>-m-e
键找到。我所说的主要适用于那种互动方式。
- Cider REPL 和自动完成之间的交互在某些方面与 evaluation/ns-
load
ing 有关,而不是与 ns-require
现在开始提问:
- 当你
cider-jack-in
进入一个新的 REPL 时,没有编辑 Window 或缓冲区的 ns 声明被评估 - 你在 user
-ns
- Cider 上下文中的 autocomplete-layer 似乎只完成了,但也完成了在某些 ns 中声明的所有内容(具有特定的
:as
) -声明在某个时候被评估,或者更可能的是,loaded
(不需要)
- 当您
cider-eval-sexp-at-point
(例如)在 Window 中时,会评估缓冲区中的名称空间声明,这通常会触发一些要求(虽然不会评估整个缓冲区)
你可能会 运行 遇到问题,因为有一些奇怪的方式来评估 ns
-requires,这似乎与某个要求的 ns
是否打开有关在你的 Emacs 中缓冲。我不确定这是正确的解释,但在我看来
- 如果您在某个缓冲区中打开了
ns
-1,则评估 ns
-2
:refer
s 你的 ns
-1,只有引用的 ns-form 被评估,而不是
缓冲区
- 如果您没有打开
:refer
ed ns,则 ns 及其中的所有表格
文件已加载
因此,有时有必要 "manually" 评估您在某些 ns
中引用的所有表单,以便解决需求。您可以使用 cider-evaluate-buffer
或以其他方式加载 ns。
作为标题,我使用 spacemacs 并添加 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帮我自动完成,或者有什么办法可以达到我的目的。
谢谢。
当你 require
一个依赖项给它一个这样的名字时:
(ns example.core
(:require [com.ok.my-library :as library])
... )
然后在您的代码中键入
library/
spacemacs/emacs 将创建该名称空间提供的名称的下拉列表。添加 :as name-here
通常也有助于其他人稍后探索您的代码。
如果您的 emacs 没有填充该列表,那将是一个独立于此列表的问题(两者都需要解决)。
对于对此相当陌生的人来说,这里可能有一些要点需要了解。我会尽力指出它们。 这里的所有内容都适用于大部分未配置的 Spacemacs,其中 clojure 和自动完成层处于活动状态。
切记:
- REPL 实际上不是命令行界面,而是您可以与之交互的后台进程 运行ning(例如通过命令行界面)- 该进程具有一些相关的内部状态(当前命名空间, 所需的符号和命名空间,loaded/evaluated 代码)
- 与 REPL 更有趣的交互通常不是通过命令行,而是在编辑 Window(意思是 Emacs Window)本身
您可以使用 Cider 评估命令来执行此操作,可通过 Spacemacs 中的 <leader>-m-e
键找到。我所说的主要适用于那种互动方式。
- Cider REPL 和自动完成之间的交互在某些方面与 evaluation/ns-
load
ing 有关,而不是与 ns-require
现在开始提问:
- 当你
cider-jack-in
进入一个新的 REPL 时,没有编辑 Window 或缓冲区的 ns 声明被评估 - 你在user
-ns - Cider 上下文中的 autocomplete-layer 似乎只完成了,但也完成了在某些 ns 中声明的所有内容(具有特定的
:as
) -声明在某个时候被评估,或者更可能的是,loaded
(不需要) - 当您
cider-eval-sexp-at-point
(例如)在 Window 中时,会评估缓冲区中的名称空间声明,这通常会触发一些要求(虽然不会评估整个缓冲区)
你可能会 运行 遇到问题,因为有一些奇怪的方式来评估 ns
-requires,这似乎与某个要求的 ns
是否打开有关在你的 Emacs 中缓冲。我不确定这是正确的解释,但在我看来
- 如果您在某个缓冲区中打开了
ns
-1,则评估ns
-2:refer
s 你的ns
-1,只有引用的 ns-form 被评估,而不是 缓冲区 - 如果您没有打开
:refer
ed ns,则 ns 及其中的所有表格 文件已加载
因此,有时有必要 "manually" 评估您在某些 ns
中引用的所有表单,以便解决需求。您可以使用 cider-evaluate-buffer
或以其他方式加载 ns。