5

Clojureコードを書くためにemacsを適切に設定しようとしています。Emacs の設定は、この良いブログ投稿に基づいています。

ただし、彼が使用しているテーマなどのいくつかの設定を変更しました。Clojure の関数のドキュメント文字列を表示するために、オートコンプリート (Eldoc? わかりません) を取得することを確認しています。自分のコードから。

そのスクリーンショットのようなドキュメントを見たい:

エルドック

ただし、「黄色」のドキュメント ボックスが表示されません。これが私の.emacsファイルの構成ミスによるものなのか、それとも私が使用しなければならないコマンドなのか、それとも...

これが私の.emacsファイルです:

(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 バッファーに表示される内容は次のとおりです。

CLJ バッファ ポップアップ

NREPL では、「d」の代わりに「v」が表示されます (ちなみに、これらの文字はどういう意味ですか?)。コメントで述べたように、NREPL では黄色のボックスが表示され、ポップアップが表示されるとドキュメントの黄色のボックスが消えます。CLJ コード バッファーでは、黄色のボックスは開きません。

最終更新

さらにいくつかのテストを行った後、すべてが期待どおりに機能しています。ポップアップが最初に表示されると、黄色いボックスが消えます。ただし、別の選択肢を選択し始めると、適切な場所に再表示されます。

また、CLJ バッファで動作し始め、上のスクリーンショットに見られるように、「d」ではなく「v」という文字が表示されます。NREPL を開始するのを忘れたのかもしれません。再テストする必要があります。

いずれにせよ、すべてが期待どおりに機能しています。

4

4 に答える 4

3

実際、この構成と前者ac-nreplは非推奨です。新しいパッケージac-ciderを参照してください

(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))
于 2014-11-07T19:50:31.330 に答える
3

nrepl-mode-hooknrepl-interaction-mode-hooknrepl-mode廃止されました。それぞれの代わりに、、、cider-mode-hookを使用する必要があります。cider-repl-mode-hookcider-mode

そして、ac-quick-help-delayそれ以上の値を設定する必要があります0(例: 0.5)。パッチは以下。

--- 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 ()
于 2014-05-21T07:57:48.763 に答える
0

黄色いボックスが最初に表示され、次にオートコンプリート ポップアップが表示されると、ドキュメントの黄色いボックスが消えます。

この動作は(setq ac-quick-help-delay 0.5)、0.5 秒では速すぎるために発生します。

0.5 をより大きな数値に変更するか (私のコンピューターで動作する最小値は 0.9 ですが、これはコンピューターのパフォーマンスに依存する場合があります)、または削除(setq ac-quick-help-delay 0.5)します。これはデフォルトの約 2.5 秒を使用するため、問題を解決できます。

于 2016-09-08T18:16:23.227 に答える