我已经开发 C# 应用程序很长时间了。商业 IDE 和工具提供了非常好的代码完成功能。我现在正在学习 clojure,我真的很怀念熟悉的工作流程。
所以,关于emacs。我已经安装了nrepl、ac-nrepl和clojure-mode。自动完成在 repl 中工作正常。它也适用于当前缓冲区中的符号。但不适用于:
- 来自其他项目文件的符号
- 外部库(由 leiningen 管理)。
是否有任何现有的包可以完全涵盖案例 1 和 2?
我的 clojure 相关配置:
;;;;;;;;;;;;;;;
;;; clojure ;;;
;;;;;;;;;;;;;;;
(require 'nrepl)
;; Configure nrepl.el
(setq nrepl-hide-special-buffers t)
(setq nrepl-popup-stacktraces-in-repl t)
(setq nrepl-history-file "~/.emacs.d/nrepl-history")
;; Some default eldoc facilities
(add-hook 'nrepl-connected-hook
(defun pnh-clojure-mode-eldoc-hook ()
(add-hook 'clojure-mode-hook 'turn-on-eldoc-mode)
(add-hook 'nrepl-interaction-mode-hook 'nrepl-turn-on-eldoc-mode)
(nrepl-enable-on-existing-clojure-buffers)))
;; Repl mode hook
(add-hook 'nrepl-mode-hook 'subword-mode)
;; Auto completion for NREPL
(require 'ac-nrepl)
(eval-after-load "auto-complete"
'(add-to-list 'ac-modes 'nrepl-mode))
(add-hook 'nrepl-mode-hook 'ac-nrepl-setup)
(add-hook 'clojure-nrepl-mode-hook 'ac-nrepl-setup)
(define-key clojure-mode-map (kbd "C-<ret>") 'nrepl-eval-expression-at-point)
;(global-set-key (kbd "C-<ret>") 'nrepl-eval-expression-at-point)
;;;;;;;;;;;;;;;;;;;;;
;;; 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.05)
(setq ac-use-fuzzy 1)
(setq ac-auto-start 1)
(setq ac-auto-show-menu 1)
(ac-config-default)
(define-key ac-mode-map (kbd "C-SPC") 'auto-complete)