如何为Clojure开发设置Aquamacs?

Mic*_*are 31 emacs aquamacs clojure slime paredit

我已经尝试过几次移植到Emacs进行Clojure开发,遵循各种博客文章,截屏和教程,但是在某些地方总是出现问题 - 无效的键绑定,不兼容的版本等等,我发现自己争先恐后地回到Vim.但我知道我想要Paredit和SLIME.

所以,我将再次尝试,这次由功能强大的StackOverflow™社区支持.

我希望这个问题的答案将保持最新,并可以作为像我这样的试探性转变的参考.

我想要的是: - Clojure的最新稳定版本 - Aquamacs(如果它对Rich Hickey来说足够好,对我来说已经足够好了),最新版本 - Clojure模式 - SLIME/SWANK - Paredit - 还有什么是不可或缺的吗?

安装上述内容的分步说明非常好 - 最好采用shell脚本格式.我还想了解如何开始使用最常见的Clojure相关操作(包括键绑定),包括文档和备忘单的链接.

ubo*_*ton 7

这些是我在不使用ELPA的情况下设置它们的步骤.希望这可以帮助.

使用MacPorts获取SLIME

sudo port -v install slime
Run Code Online (Sandbox Code Playgroud)

得到paredit

curl -O http://mumble.net/~campbell/emacs/paredit.el
Run Code Online (Sandbox Code Playgroud)

得到clojure&clojure-contrib

  • 使用MacPorts
sudo port -v install clojure clojure-contrib
  • 或直接下载
curl -O http://build.clojure.org/snapshots/org/clojure/clojure/1.1.0-master-SNAPSHOT/clojure-1.1.0-master-20091202.150145-1.jar
curl -O http://build.clojure.org/snapshots/org/clojure/clojure-contrib/1.1.0-master-SNAPSHOT/clojure-contrib-1.1.0-master-20091212.205045-1.jar

获得clojure-mode和swank-clojure(Emacs方面)

git clone http://github.com/technomancy/clojure-mode.git
git clone http://github.com/technomancy/swank-clojure.git
Run Code Online (Sandbox Code Playgroud)

得到swank-clojure(Clojure方面)

  • 要么下载预先构建的jar文件
curl -O http://repo.technomancy.us/swank-clojure-1.1.0.jar
  • 或者从源代码构建(假设安装了lein)
cd path/to/dir/swank-clojure
lein jar

将clojure,clojure-contrib和swank-clojure .jar文件放在〜/ .swank-clojure或〜/ .clojure(swank-clojure.el搜索它们的默认位置)中.


添加到〜/ .emacs或〜/ Library/Preferences/Aquamacs Emacs/customization.el (更改路径以匹配您自己的设置)

(add-to-list 'load-path "/opt/local/share/emacs/site-lisp/slime/")
(add-to-list 'load-path "/opt/local/share/emacs/site-lisp/slime/contrib/")
;; Change these paths to match your settings
(add-to-list 'load-path "path/to/dir/clojure-mode/")
(add-to-list 'load-path "path/to/dir/swank-clojure/")
(add-to-list 'load-path "path/to/dir/paredit/")

;; Customize swank-clojure start-up to reflect possible classpath changes
;; M-x ielm `slime-lisp-implementations RET or see `swank-clojure.el' for more info 
(defadvice slime-read-interactive-args (before add-clojure)
(require 'assoc)
(aput 'slime-lisp-implementations 'clojure
(list (swank-clojure-cmd) :init 'swank-clojure-init)))

(require 'slime)
(require 'paredit)
(require 'clojure-mode)
(require 'swank-clojure)

(eval-after-load "slime"
  '(progn
    ;; "Extra" features (contrib)
    (slime-setup 
     '(slime-repl slime-banner slime-highlight-edits slime-fuzzy))
    (setq 
     ;; Use UTF-8 coding
     slime-net-coding-system 'utf-8-unix
     ;; Use fuzzy completion (M-Tab)
     slime-complete-symbol-function 'slime-fuzzy-complete-symbol)
    ;; Use parentheses editting mode paredit
    (defun paredit-mode-enable () (paredit-mode 1))
    (add-hook 'slime-mode-hook 'paredit-mode-enable)
    (add-hook 'slime-repl-mode-hook 'paredit-mode-enable)))

;; By default inputs and results have the same color
;; Customize result color to differentiate them
;; Look for `defface' in `slime-repl.el' if you want to further customize
(custom-set-faces
 '(slime-repl-result-face ((t (:foreground "LightGreen")))))

(eval-after-load "swank-clojure"
  '(progn
    ;; Make REPL more friendly to Clojure (ELPA does not include this?)
    ;; The function is defined in swank-clojure.el but not used?!?
    (add-hook 'slime-repl-mode-hook
      'swank-clojure-slime-repl-modify-syntax t)
    ;; Add classpath for Incanter (just an example)
    ;; The preferred way to set classpath is to use swank-clojure-project
    (add-to-list 'swank-clojure-classpath 
"path/to/incanter/modules/incanter-app/target/*")))


mac*_*mac 5

下载并安装Aquamacs.

下载并安装ELPA(http://tromey.com/elpa/install.html)

做Mx package-list-packages

用"I"标记称为"clojure-mode"和"swank-clojure"的行,然后按"X".

完成.