2010年7月12日月曜日

CentOS5.5 + SBCL + SLIME + Emacs22 環境構築


このエントリーをはてなブックマークに追加


Lispboxでいろいろ勉強中だけど、あまりに便利すぎて作ったプログラムを別環境で動かそうとした時にはまりそうなので、自力で環境構築してみた。

CentOS5.5(x86)
・sbcl-1.0.40-x86-linux
・emacs-22.1-2
・slime-2010-07-11
・emacs-w3m-1.4.4
・w3m-0.51
・HyperSpec-0.7

CentOSの持っている自前rpmのEmacs21ではw3mがうまく動かせなかったので、Emacs22を使ってます。


■Emacsのインストール
特に考える必要なし、以下のパッケージを突っ込んで終わり。
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/misc/testing/i386/RPMS/emacs-22.1-2.el5.kb.i386.rpm
ftp://ftp.pbone.net/mirror/centos.karan.org/el5/misc/testing/i386/RPMS/emacs-common-22.1-2.el5.kb.i386.rpm

■SBCLのインストール
こちらも余り考える必要なし。公式から最新版を取ってきて、INSTALLファイルの通りにインストールのみ

■w3m
これはCentOS に付属するパッケージを使う
w3m-0.5.1-15.el5

■emacs-w3m
こちらも公式から最新版を取得し、configure; make; make install で終了

■HyperSpec-0.7
こちらも公式から取得したものを解凍してどこか好きな場所へ配置する。
今回は/root/.emacs.d/hyperspec/HyperSpec へ配置。

■slime-2010-07-11
公式から最新版を取得。
/root/.emacs.d/slime-2010-07-11 へ配置。

========================================
ここまではただインストールしたり配置したりするだけ。
ここから .emacsの設定を行う。ほとんどネットで探したものです。
========================================

;; slimeを配置したディレクトリを指定する

(add-to-list 'load-path "/root/.emacs.d/slime-2010-07-11")
(add-to-list 'load-path "/root/.emacs.d/slime-2010-07-11/contrib")

;; sbclのパスを記述
(setq inferior-lisp-program "/usr/local/bin/sbcl")
(setq slime-net-coding-system 'utf-8-unix)

(add-hook 'lisp-mode-hook (lambda ()
                            (slime-mode t)
                            (show-paren-mode)))

(require 'slime)

;; マニュアルには(slime-setup)としか書いてないけど、
;; こう書かないと、REPLプロンプトが出ない
(slime-setup '(slime-repl))

(defun my-slime (&optional command coding-system)
  (interactive)
  (switch-to-buffer-other-window
   (get-buffer-create "*lisp*"))
  (slime command coding-system))

;; slimeバッファを切換え(よくわからんです)

(global-set-key "\C-cs" 'slime-selector)


;; C-c L で slimeを起動
(global-set-key "\C-cL" 'my-slime)

;; HyperSpecのパスを指定
(require 'hyperspec)
(setq common-lisp-hyperspec-root
        (concat "file://" (expand-file-name "/root/.emacs.d/hyperspec/HyperSpec/")) common-lisp-hyperspec-symbol-table (expand-file-name "/root/.emacs.d/hyperspec/HyperSpec/Data/MapSym.txt"))

;; HyperSpecをemacs-w3mで起動
(defadvice common-lisp-hyperspec
  (around hyperspec-lookup-w3m () activate)
  (let* ((window-configuration (current-window-configuration))
         (browse-url-browser-function
          `(lambda (url new-window)
             (w3m-browse-url url nil)
             (let ((hs-map (copy-keymap w3m-mode-map)))
               (define-key hs-map (kbd "q")
                 (lambda ()
                   (interactive)
                   (kill-buffer nil)
                   (set-window-configuration ,window-configuration)))
               (use-local-map hs-map)))))
    ad-do-it))


(require 'w3m-load)


;; 検索したい関数の上で C-c H で検索する。
(global-set-key "\C-cH" 'hyperspec-lookup)

;; バックスペースで1文字戻って消す
(if (eq window-system 'x)
(progn
        (define-key function-key-map [backspace] [8])
        (put 'backspace 'ascii-character 8)
))
(global-set-key "\C-h" 'backward-delete-char)
(global-set-key "\177" 'delete-char)

;; リージョンをハイライト
(setq-default transient-mark-mode t)

;; 起動画面を消す
(setq inhibit-startup-message t)
========================================
これで動いてるっぽく見える。まだあんまり試してないので、不具合があるかはまだ不明。

参考にしたサイト
Meadow2+SLIME+SBCL@Windows XP SP3
LISPをみんなで勉強しよう!
とりあえず暇だったし何となく始めたブログ

0 件のコメント:

コメントを投稿