Clojure: configurazione Emacs
Emacs si adatta molto bene allo sviluppo in Clojure per via del suo sistema 'Slime', che ti permette di gestire un processo Clojure (o qualsiasi altro tipo di Lisp) dall'interno dell'editor.
Il 'clojure-mode' include un installatore che scarica tutti i pacchetti necessari per la creazione dell'ambiente di lavoro.
Quanto segue è un'installazione personale - se vuoi fare un'installazione per tutti gli utenti della macchina, bisgona adattare alcuni dei passaggi.
Prima di tutto, bisogna scegliere il percorso dove scaricare i file. Bisogna sia una directory nel proprio PATH, qui uso ~/bin.
$ cd ~/bin $ git clone git://github.com/jochu/clojure-mode.git
Lanciare Emacs.
Vai al buffer *scratch*
(add-to-list 'load-path "~/bin/clojure-mode")C-M-x (require 'clojure-mode)C-M-x M-x clojure-install
L'installatore chiede subito il percorso dove installare, scrivi:
~/bin
L'installazione scarica/aggiorna/compila i seguenti pacchetti:
- clojure-mode
- clojure
- clojure-contrib
- slime
- swank-clojure
Alla fine dell'installazione c'è il suggerimento di copiare la seguente riga nel proprio file .emacs:
(clojure-slime-config "~/bin")
Personalmente, ho preferito usare quanto segue:
(add-to-list 'load-path "~/bin/clojure-mode") (require 'clojure-mode) (add-to-list 'load-path "~/bin/slime") (require 'slime) (slime-setup) (add-to-list 'load-path "~/bin/swank-clojure") (setq swank-clojure-binary "~/bin/clj") (require 'swank-clojure-autoload)
Inoltre, ho modificato il mio script Bash per l'avvio di Clojure (~/bin/clj) per aggiungere un riferim:
#!/bin/bash CLOJURE=/usr/share/java/clojure.jar JLINE=/usr/share/java/jline.jar CLOJURE_CONTRIB=~/bin/clojure-contrib/clojure-contrib.jar SWANK=~/bin/swank-clojure/src CLASSPATH=. for i in $CLOJURE $CLOJURE_CONTRIB $JLINE $SWANK do if [ ! -e "$i" ]; then echo "File not found: $i" exit 1; fi CLASSPATH=$CLASSPATH:$i done export CLASSPATH=$CLASSPATH if [ -z "$1" ]; then java -cp $CLASSPATH jline.ConsoleRunner clojure.main else CLASS=$1; shift; java -cp $CLASSPATH clojure.lang.Script $CLASS -- $* fi
Riavvia Emacs, e scrivi:
M-x slime ; SLIME 2009-05-17 user> (+ 1 1) 2 user>
Altri commandi essenziali:
C-x C-f: caricare file
C-c C-k: compilare fie nel buffer attuale
C-M-x: compilare defun intorno al punto di inserimento
C-g: Annulla commando
Per uscire, bisogna chiudere il collegamento con Clojure:
M-x slime-quit-lisp