2006-11-28

Emacs で快適に Lisp / Scheme ソースを編集する

Emacs には EmacsLisp のインタープリターが内蔵されている (正確には EmacsLisp の処理系の上に Emacs というエディターが構築されてる) ので、EmacsLisp のソースを編集しながら評価が可能。EmacsLisp 程強力ではないけれど、同じようことを Common Lisp (あるいは Scheme) でもやれる。

※以下の説明は、Emacs 22 用のもの。Emacs 21 で同じことが出来るかは確かめてない。

Common Lisp の場合

まず、Emacs から呼び出す Common Lisp の処理系を .emacs で設定する。clisp を使うなら、こんな感じ。

(setq inferior-lisp-program "clisp")

Lisp のソース・ファイルを開いたら、次のコマンドを実行。

M-x run-lisp

すると、shell モードの Lisp バージョンが起動する。こんな感じ。

  i i i i i i i       ooooo    o        ooooooo   ooooo   ooooo
  I I I I I I I      8     8   8           8     8     o  8    8
  I  \ `+' /  I      8         8           8     8        8    8
   \  `-+-'  /       8         8           8      ooooo   8oooo
    `-__|__-'        8         8           8           8  8
        |            8     o   8           8     o     8  8
  ------+------       ooooo    8oooooo  ooo8ooo   ooooo   8

Copyright (c) Bruno Haible, Michael Stoll 1992, 1993
Copyright (c) Bruno Haible, Marcus Daniels 1994-1997
Copyright (c) Bruno Haible, Pierpaolo Bernardi, Sam Steingold 1998
Copyright (c) Bruno Haible, Sam Steingold 1999-2000
Copyright (c) Sam Steingold, Bruno Haible 2001-2004


[1]> 

これを inferior lisp モードと呼ぶらしい。ここでは、簡便に lisp shell と呼ぼう。

ソース・ファイルを編集して、括弧の後ろで C-x C-e すると、直前の S 式が lisp shell に送られる。例えば、

(reverse '(3 2 1))-!-

上のコードをソース・ファイルに書いて、-!- の位置で C-x C-e してみやう。すると、lisp shell で上記 S 式が評価され、その結果が表示される。

[1]> (1 2 3)
[2]> 

数引数を付けると (C-u C-x C-e)、C-x C-e 後に lisp shell に switch-buffer する。

ちなみに、M-C-x は、Emacs Lisp mode と同じように、トップレベルの S 式を lisp shell に送る。リージョンの実行は、C-c C-r

Scheme の場合

Common Lisp の場合とほぼ同じ。相違点だけ書いておきませう。

Scheme の処理系は、以下のやうに設定する (下の例は Gauche を使う場合)。

(setq scheme-program-name "gosh -i")

M-x run-lisp の代わりに、次のコマンドを実行する。

M-x run-scheme

後は、Scheme のソースを書きながら、C-x C-e, M-C-x, C-c C-r で楽しい Scheme life をどうぞ。

追記: Scheme と Emacs の連携については、次のページも参考になる。

No comments:

Post a Comment