首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用clojure层使空间映射自动完成依赖功能

如何利用clojure层使空间映射自动完成依赖功能
EN

Stack Overflow用户
提问于 2018-07-02 21:07:56
回答 2查看 388关注 0票数 1

作为第一步,我使用空间地图并添加clojure层。我在project.clj中添加了一个依赖项,但是它不能自动完成函数。

以下是我的一些配置:

代码语言:javascript
复制
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帮助我完成自动化,或者还有其他方法来实现我的目标。

谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-07-02 22:00:52

当您require一个依赖项时,请给它一个如下的名称:

代码语言:javascript
复制
(ns example.core
  (:require [com.ok.my-library :as library])
  ... )

然后在您的代码中键入

代码语言:javascript
复制
library/

spacemacs/emacs将创建名称空间提供的名称的下拉列表。添加:as name-here通常也有助于其他人研究您的代码。

如果您的emacs没有填充该列表,那么这将是一个独立于此的问题(两者都需要解决)。

票数 0
EN

Stack Overflow用户

发布于 2019-11-27 17:05:16

对于对这方面相当陌生的人来说,这里可能有一些重要的要点需要认识到。我试着把他们指出来。这里的所有内容都适用于主要是未配置的Spacemacs,其中的clojure层和自动完成层处于活动状态。

请记住:

  1. REPL实际上不是命令行接口,而是可以与之交互的后台进程(例如通过命令行接口)--该进程具有一些相关的内部状态(当前命名空间、所需符号和命名空间、加载/评估代码)。
  2. 与REPL的更有趣的交互通常不是通过命令行,而是在编辑窗口(意为Emacs窗口)本身。

您可以通过在Spacemacs中通过键<leader>-m-e找到的Cider计算命令来实现这一点。我说的话主要适用于这种互动方式。

  1. 在某些方面,Cider和Autocomplete之间的交互更多地是与评估/ns-load-而不是ns-需求有关。

关于这个问题:

  • 当您将cider-jack-in放入新的REPL时,在没有编辑窗口或缓冲区中的ns-声明将被计算-您在user-ns中。
  • 在Cider上下文中的autocomplete-layer似乎只完成了在某些ns中声明的(与特定的:as一起)声明的所有内容,这些声明在某个时候已经被评估过,或者更可能的是,loaded (不需要)。
  • 当您在窗口中使用cider-eval-sexp-at-point (例如)时,将计算缓冲区中的命名空间声明,这通常会触发某些需求(但不是计算整个缓冲区)。

您可能会遇到问题,因为有一些计算ns-requires的奇怪方法,这些方法似乎与Emacs中某个缓冲区中是否打开了所需的ns连接。我不确定这是正确的解释,但在我看来

  • 如果在某些缓冲区中打开了ns-1,则计算:referns-1的ns-2,则只计算引用的ns-表单,而不是缓冲区。
  • 如果没有打开:refered ns,则会加载文件中的ns和所有窗体。

因此,有时有必要“手动”评估在某些ns中引用的所有表单,这样就可以解决所需的问题。您可以使用cider-evaluate-buffer或以其他方式加载ns。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51143750

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档