首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Emacs + Cider (Clojure) +自动完成:如何获得docstring?

Emacs + Cider (Clojure) +自动完成:如何获得docstring?
EN

Stack Overflow用户
提问于 2014-05-20 17:39:24
回答 4查看 5K关注 0票数 5

我正在尝试正确地配置emacs来编写Clojure代码。我的Emacs配置基于这个好的博客文章

然而,我确实改变了一些设置,比如他正在使用的主题等等。我一直在检查以获得自动完成(埃尔多克?我不确定)是否在Clojure中并从我自己的代码中显示函数的docstring。

我想看看屏幕截图中的文档:

但是,我无法让“黄色”文档框出现。我不确定这是由于我的.emacs文件中的错误配置,还是它是我必须使用的命令还是.

这是我的.emacs文件:

代码语言:javascript
复制
(add-to-list 'custom-theme-load-path "~/.emacs.d/lib/noctilux-theme")

(require 'package):
  (add-to-list 'package-archives
    '("marmalade" . "http://marmalade-repo.org/packages/")
    '("melpa" . "http://melpa.milkbox.net/packages/"))

;; Initialize all the ELPA packages (what is installed using the packages commands)    
(package-initialize)  

;; Set bigger fonts
(set-default-font "Courier New-13")  

;; Setup to have a french keyboard layout working   
(require 'iso-transl)  

;; Show parenthesis mode
(show-paren-mode 1)  

;; rainbow delimiters
(global-rainbow-delimiters-mode)

;; paredit
(add-hook 'clojure-mode-hook 'paredit-mode)
(add-hook 'nrepl-mode-hook 'paredit-mode)
(global-set-key [f7] 'paredit-mode)

;; theme
(load-theme 'noctilux t)

;; clojure-mode
(global-set-key [f9] 'cider-jack-in)
(add-hook 'clojure-mode-hook 'turn-on-eldoc-mode)

;; nrepl
(add-hook 'nrepl-interaction-mode-hook 'nrepl-turn-on-eldoc-mode)
(setq nrepl-popup-stacktraces nil)
(add-to-list 'same-window-buffer-names "*nrepl*")
(add-hook 'nrepl-mode-hook 'paredit-mode)

;; Auto complete
(require 'auto-complete-config)
;(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
(setq ac-delay 0.0)
;(setq ac-use-quick-help t)
(setq ac-quick-help-delay 0.0)
;(setq ac-use-fuzzy 1)
;(setq ac-auto-start 1)
;(setq ac-auto-show-menu 1)
(ac-config-default)

;; ac-nrepl
(require 'ac-nrepl)
(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
(eval-after-load "auto-complete" '(add-to-list 'ac-modes 'nrepl-mode))


(defun set-auto-complete-as-completion-at-point-function ()
  (setq completion-at-point-functions '(auto-complete)))
(add-hook 'auto-complete-mode-hook 'set-auto-complete-as-completion-at-point-function)

(add-hook 'cider-repl-mode-hook 'set-auto-complete-as-completion-at-point-function)
(add-hook 'cider-mode-hook 'set-auto-complete-as-completion-at-point-function)


;; scroll one line at a time (less "jumpy" than defaults)

(setq mouse-wheel-scroll-amount '(1 ((shift) . 1))) ;; one line at a time

(setq mouse-wheel-progressive-speed nil) ;; don't accelerate scrolling

(setq mouse-wheel-follow-mouse 't) ;; scroll window under mouse

(setq scroll-step 1) ;; keyboard scroll one line at a time

基于@syohex评论的更新

下面是我在CLJ缓冲区中看到的内容:

在NREPL中,我确实看到了"v“而不是"d”(顺便说一下,这些字母意味着什么?)正如我在评论中所说的,在NREPL中,我确实看到了黄色框的出现,然后当弹出窗口出现时,文档黄色框就消失了。在CLJ代码缓冲区中,黄色框永远不会打开。

最后更新

经过更多的测试后,一切都如期而至。当弹出第一次显示时,黄色框就会消失。然而,当我开始选择不同的选择时,它就会在正确的地方重新出现。

而且,它开始在CLJ缓冲区中工作,我看到的是字母"v“,而不是上面的Sreen快照中的"d”。也许我忘了启动NREPL,必须重新测试。

无论如何,一切都如期而至。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-05-21 07:57:48

nrepl-mode-hooknrepl-interaction-mode-hooknrepl-mode都过时了。您应该分别使用cider-mode-hookcider-repl-mode-hookcider-mode来代替它们。

您应该将ac-quick-help-delay设置为比0更有价值(例如,0.5)。补丁在下面。

代码语言:javascript
复制
--- nconf-orig.el   2014-05-21 16:51:40.056185465 +0900
+++ conf-new.el 2014-05-21 16:53:11.936182181 +0900
@@ -43,7 +43,7 @@
 ;(add-to-list 'ac-dictionary-directories "~/.emacs.d/ac-dict")
 (setq ac-delay 0.0)
 ;(setq ac-use-quick-help t)
-(setq ac-quick-help-delay 0.0)
+(setq ac-quick-help-delay 0.5)
 ;(setq ac-use-fuzzy 1)
 ;(setq ac-auto-start 1)
 ;(setq ac-auto-show-menu 1)
@@ -51,9 +51,10 @@

 ;; ac-nrepl
 (require 'ac-nrepl)
-(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
-(add-hook 'nrepl-interaction-mode-hook 'ac-nrepl-setup)
-(eval-after-load "auto-complete" '(add-to-list 'ac-modes 'nrepl-mode))
+(add-hook 'cider-mode-hook 'ac-nrepl-setup)
+(add-hook 'cider-repl-mode-hook 'ac-nrepl-setup)
+(add-to-list 'ac-modes 'cider-mode)
+(add-to-list 'ac-modes 'cider-repl-mode)


 (defun set-auto-complete-as-completion-at-point-function ()
票数 3
EN

Stack Overflow用户

发布于 2014-11-07 19:50:31

实际上,这个配置和以前的ac-nrepl是不推荐的,请参阅新的包苹果酒

代码语言:javascript
复制
(require 'ac-cider)
(add-hook 'cider-mode-hook 'ac-flyspell-workaround)
(add-hook 'cider-mode-hook 'ac-cider-setup)
(add-hook 'cider-repl-mode-hook 'ac-cider-setup)
(eval-after-load "auto-complete"
    '(add-to-list 'ac-modes 'cider-mode))
票数 3
EN

Stack Overflow用户

发布于 2016-09-08 18:16:23

黄色框首先出现,然后当自动完成弹出时,带有文档的黄色框将被删除。

这种行为是由(setq ac-quick-help-delay 0.5)引起的,因为0.5s太快了

将0.5更改为更大的数值(在我的计算机上最小值为0.9,但这可能取决于计算机的性能)或删除(setq ac-quick-help-delay 0.5),因为这将使用默认值:大约2.5s,它可以解决问题。

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

https://stackoverflow.com/questions/23766483

复制
相关文章

相似问题

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