Memoize

BasicWerk   EC Support   Technique   Facebook  

20141217190017_Emacs_slime_setup

Emacs_slime_setup

 

slime のインストール


slime を wget して ~/.emacs.d/slime にコピー

 
% wget http://common-lisp.net/project/slime/snapshots/slime-current.tgz
% tar xvzf slime-current.tgz
# 僕のところでは slime-2014-01-15 というフォルダに展開されたので
% cp -R slime-2014-01-15 ~/.emacs.d/slime
 

 

これを機会に Clozure CL を入れてみた。

 
% sudo port install ccl
 
# ccl64 という名前でインストールされるようだ
% which ccl64
/opt/local/bin/ccl64
 

 

~/.emacs に追記

 
% cat ~/.emacs
(setq default-tab-width 4)
(setq-default tab-width 4)
(setq make-backup-files nil)
(setq explicit-shell-file-name "/bin/zsh")
 
;; 追記ここから
;; http://dev.ariel-networks.com/wp/archives/462
;; Clozure CL is default to slime
(setq inferior-lisp-program "ccl64")
;; ~/.emacs.d/slimeをload-pathに追加
(add-to-list 'load-path (expand-file-name "~/.emacs.d/slime"))
;; SLIMEのロード
(require 'slime)
(slime-setup '(slime-repl slime-fancy slime-banner))
 
;; http://modern-cl.blogspot.jp/2011/04/3-slime.html
(setq slime-net-coding-system 'utf-8-unix)
 
;; mv cl-indent-patches.el ~/.emacs.d/
(when (require 'cl-indent-patches nil t)
  ;; emacs-lispのインデントと混同しないように
  (setq lisp-indent-function
        (lambda (&rest args)
          (apply (if (memq major-mode '(emacs-lisp-mode lisp-interaction-mode))
                     'lisp-indent-function
                     'common-lisp-indent-function)
                 args))))
 

 

 

slime の使い方


 

兎にも角にも、emacs を立ち上げたら META x slime と打ち込んで slime の REPL をバッファに立ち上げておく。

 

その上で foo.lisp (拡張子が .lisp のファイル) を C-x C-f foo.lisp で読み込むと、そのバッファは Lisp mode になる。

 

で、以下のようなコマンドを実行した時に slime が読み込んでいるこの場合は Clozure CL が S 式を評価してくれる。

 

  • C-x C-e 現在「おしり」をポイントしている S 式を評価した結果をミニバッファに表示
  • C-c C-c 現在ポイントしている関数をコンパイル
  • C-c C-k 現在のファイルをコンパイルしてロード
  • C-c C-z REPL を表示。C-x o でファイルの編集に戻る。REPL のウィンドウが邪魔になったら C-x 1 でポイントされてるファイルのウィンドウだけ残る

 

最後に、オートインデントについて。

 

REPL の方で複数行の Lisp フォームを書いているときは改行すると自動的にインデントを揃えてくれる。

しかしファイルを編集してる方 (上の例で言えば foo.lisp のバッファ) では単なる改行ではオートインデントしてくれない。

改行とインデントを同時に行うには C-j と入力する。

 

 

参考:

第3回 SLIMEの使い方 基礎編 - Modern Common Lisp

初心者の為のLisp環境 - 紫藤のWiki

 


© Shin Nakamura/BasicWerk 2008 - 2014