2013-06-01 25 views
5

Tôi muốn kết hợp một môi trường chuẩn để khám phá Clojure với Emacs. Có ai có một công thức mà sẽ phù hợp với điều này? Tôi đang nghĩ đến một hệ thống Vagrant chạy một hương vị của Ubuntu, với NREPL và một số plugin hỗ trợ EMACS hữu ích.Vagrant/Clojure/Emacs

+1

Chỉ là một gợi ý. Kiểm tra [Clojure cho hướng dẫn dũng cảm và đúng] (http://www.braveclojure.com/). Anh chàng tạo ra một thiết lập cho Emacs mà chỉ là tuyệt vời. Bạn nhận được tất cả mọi thứ đóng gói với nhau và sẵn sàng để đi. –

Trả lời

4

Một Github tổ chức, vỏ được cung cấp thiết lập lang thang nằm ở đây:

https://github.com/pattinsont/Ukelele

Tất cả những gì nên được yêu cầu là một kiểm tra và lang thang lên.

Khi máy ảo đang hoạt động, hãy bật hộp lên. Chạy các emacs để hoàn tất cài đặt. Sau đó, M-x cider-jack-in

11
vagrant box add preciseMinimal http://goo.gl/wxdwM 

Thay đổi để Clojure thư mục cơ sở lang thang

vagrant init preciseMinimal 
vagrant up 

vagrant ssh 

hoặc ssh để cổng 127.0.0.1 2222 (hoặc cổng khác được đề cập trong "lang thang lên" đầu ra)

sudo apt-get update 
sudo apt-get install software-properties-common 
sudo add-apt-repository ppa:cassou/emacs 
sudo apt-get update 
sudo apt-get install emacs24 emacs24-el emacs24-common-non-dfsg 
sudo apt-get install clojure 

cd ~/ 
mkdir bin 

sed '$ a\ 
export PATH=~/bin:$PATH' ~/.bashrc 

thoát và kết nối tới ssh

cd ~/bin 
wget https://raw.github.com/technomancy/leiningen/preview/bin/lein 
chmod +x lein 
./lein 


cd ~ 
cat >.emacs 
; Package.el customization 
(package-initialize) 
(add-to-list 'package-archives 
      '("melpa" . "http://melpa.milkbox.net/packages/") t) 

;; install packages 
(defvar my-packages '(
    auto-complete 
    clojure-mode 
    clojure-test-mode 
    nrepl 
    ac-nrepl 
    paredit 
    rainbow-delimiters 
)) 

(dolist (p my-packages) 
    (when (not (package-installed-p p)) 
    (package-refresh-contents) 
    (package-install p))) 
;; The following line can be removed after first install to speed up startup 
(byte-recompile-directory (expand-file-name "~/.emacs.d") 0) 

(custom-set-variables 
;; custom-set-variables was added by Custom. 
;; If you edit it by hand, you could mess it up, so be careful. 
;; Your init file should contain only one such instance. 
;; If there is more than one, they won't work right. 
'(auto-save-default nil) 
'(backup-inhibited t t) 
'(cursor-type 'bar t) 
'(column-number-mode t) 
'(delete-selection-mode t) 
'(inhibit-startup-screen t) 
'(initial-scratch-message nil) 
'(tool-bar-mode nil) 
'(xterm-mouse-mode 1)) 

;; rainbow delimiters 
(require '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) 

;; clojure-mode 
(global-set-key [f9] 'nrepl-jack-in) 

;; 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) 
(ac-config-default) 
(define-key ac-completing-map "\M-/" 'ac-stop) 

;; 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)) 
#CTRL-D to finish 

thông tin ghi nhận biết ơn: http://blog.worldcognition.com/2012/07/setting-up-emacs-for-clojure-programming.html

+5

'paredit' có thể hơi chói tai đối với người dùng Emacs mới. Nếu bạn gắn bó với nó, bản thân tương lai của bạn sẽ luôn biết ơn. –

+1

Có thể sử dụng Chef để cài đặt các gói và có thể tải lên các .emac không? – mac

+2

Một dự án thú vị sẽ bao gồm tất cả điều này trong một cấu hình Vagrant/con rối để ví dụ: thanh toán từ GitHub và 'lang thang' sẽ là tất cả những gì cần thiết. – JohnJ