Emacs cider を 0.7.0-SNAPSHOT へ update
cider なんだがどうやら GW 前に 0.6.0 リリースがリリースされてた模様。 そこで REPL 上で 0.6.0alpha と表示されてた cider を 0.7.0-SNAPSHOT へ更新した。
更新は el-get で Github master から remove -> install と実行し、 後 leiningen プラグインである cider-nrepl の同じバージョンを指定したものを profiles.clj に追加した。
これで REPL 起動時に 0.7.0-SNAPSHOT と表示されるようになってれば OK。
良いと思った部分
stacktrace が別バッファに見易い形で出るようになった
割といい感じで色づけとフォーマットをしてくれるようになってる。 stacktrace の種類によって表示のフィルタリングもやってくれる模様。 全て表示にすれば従来の素の stacktrace も出る。
フィルタの種類がいくつかあるけど、どれがどれだかはまだ良く見てない。
repl 上もソースコードと同じような色付けしてくれるようになった
ソースコード編集時と比べ微妙に色付けが弱かった REPL も設定 ON にすれば ほぼソースコードと同じ色付けをしてくれるようになった。
Windows での REPL 改行表示設定方法に関するドキュメント追記
cider の REPL 出力で ^M
が出るのが地味に気になりつつもそのまま使ってたんだが、
なにげにドキュメント見たら回避方法書いてあった。
Windows 特有だったのね。
これらは自分が良いなと思った部分で他の変更点に関しては 公式の CHANGELOG参照。
面倒だと思った部分
冒頭の更新手順でも書いたが leiningen プラグインである cider-nrepl が必須になった。 ただ CHANGELOG によれば必須になったのは現行の Github master からっぽくて 0.7.0-SNAPSHOT でなく 0.6.0 で更新すれば必須ではなさそうだけど未確認。
Windows の REPL 改行表示と同様 profiles.clj に書けば済むっちゃ済むんだが、 最初必須になったってのを見落としてて何で stacktrace 出なくなったんだとプチハマりしてた。
今回更新後の設定
profiles.clj 全体と init.el 抜粋を載せときます。
profiles.clj
{:user {:plugins [[lein-pprint "1.1.1"] [lein-deps-tree "0.1.2"] [codox "0.6.6"] [lein-shell "0.4.0"] [cider/cider-nrepl "0.7.0-SNAPSHOT"]] :injections [(use 'clojure.pprint)] :jvm-opts ["-Dline.separator=\"\n\""]}}
init.el の Clojure 含む lisp 周りのみ。 cider だけ、と言う感じになってなく少しゴチャっとしてる。
;;; ;;; elisp, clojure 他 lisp ファミリー開発 ;;; ;; カッコ強調表示 (show-paren-mode) (require 'cider-mode) ; cider 設定 (add-hook 'cider-mode-hook 'cider-turn-on-eldoc-mode) (setq nrepl-hide-special-buffers t) (setq cider-repl-tab-command 'indent-for-tab-command) (setq nrepl-buffer-name-show-port t) (setq cider-repl-display-in-current-window t) (setq cider-repl-pop-to-buffer-on-connect t) (setq cider-popup-stacktraces t) (setq cider-repl-popup-stacktraces t) (setq cider-auto-select-error-buffer t) (setq cider-repl-print-length 2000) (setq cider-repl-use-clojure-font-lock t) (define-key cider-mode-map (kbd "C-.") 'complete-symbol) (define-key cider-mode-map (kbd "RET") 'newline-and-indent) ;; イチイチ describe-function してられない (require 'eldoc) (setq eldoc-idle-delay 0) (setq eldoc-echo-area-use-multiline-p t) (add-hook 'emacs-lisp-mode-hook 'turn-on-eldoc-mode) (add-hook 'emacs-lisp-mode-hook 'rainbow-delimiters-mode) (add-hook 'lisp-interaction-mode-hook 'turn-on-eldoc-mode) (add-hook 'lisp-interaction-mode-hook 'rainbow-delimiters-mode) (add-hook 'cider-mode-hook 'rainbow-delimiters-mode) (add-hook 'cider-repl-mode-hook 'rainbow-delimiters-mode) ;; 補完。 (define-key emacs-lisp-mode-map (kbd "C-.") 'lisp-complete-symbol) (define-key lisp-interaction-mode-map (kbd "C-.") 'lisp-complete-symbol) ; ac-nrepl (require 'auto-complete-config) (ac-config-default) (require 'ac-nrepl) (add-hook 'cider-repl-mode-hook 'ac-nrepl-setup) (add-hook 'cider-mode-hook 'ac-nrepl-setup) (eval-after-load "auto-complete" '(add-to-list 'ac-modes 'cider-repl-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) (define-key cider-mode-map (kbd "C-c C-d") 'ac-nrepl-popup-doc)