Windows下で、 GNU Common LispをGnu Emacs(Meadow)と一緒に使う

たけおか@AXE (ex.山本ナヲミ)(竹岡尚三)

#| これは、筆者が
技術評論社 刊 ソフトウェアデザイン誌
「つこてなんぼのFreeBSD」
1998年9月
に掲載した原稿をもとにしたものです |#

初出: 2009/MAY/02


0. WindowsのGnu emacsからGCL(Gnu Common Lisp)を使う

shellからGCLを起動して使うとわかる通り、こういう対話型の言語を、 ttyやDOS窓で使用するのは非常に辛いものがあります。
なぜなら、たった1文字の打ち間違いで折角の入力がムダになってしまうからで す。
それをなんとかするには、Emacsの中からGCLを使用するのです。
すごいことに、GNU-Emacsには、Lispを起動するコマンドがあります。


ここで使用したソフトウェア。
Gnu Common Lisp: 2.6.6
Meadow :2.10 (GnuEmacs 21.4.1)



1. WindowsのGnu emacsからGCL(Gnu Common Lisp)を使えるようにする

Gnu Common Lisp for Microsoft WindowsのConnecting Emacs to GCL
http://www.cs.utexas.edu/~novak/gclwin.html
から、写してるだけ…



  1. gcl1.batというファイルを作る。
    (C:\Progra~1\GCL-2.6.6-CLtL1\bin\gcl1.bat でいいでしょう)

    --- gcl1.bat
    
    @echo off
    set C_INCLUDE_PATH=C:\Progra~1\GCL-2.6.6-CLtL1\lib\gcl-2.6.6\h
    path C:\Progra~1\GCL-2.6.6-CLtL1\mingw\bin;%PATH%
    C:\Progra~1\GCL-2.6.6-CLtL1\lib\gcl-2.6.6\unixport\saved_gcl.exe -dir C:/Progra~1/GCL-2.6.6-CLtL1/lib/gcl-2.6.6/unixport/ -libdir C:/Progra~1/GCL-2.6.6-CLtL1/lib/gcl-2.6.6/ -eval "(setq si::*allow-gzipped-file* t)" %1 %2 %3 %4 %5 %6 %7 %8 %9
     
    ---



  2. .emacsの変更

    .emacs (Gnu emacsを使っていればどこかに、あるはず)に、次の2行を加える。

    ---
    
    (set-variable 'inferior-lisp-program
      "C:/Progra~1/GCL-2.6.6-CLtL1/bin/gcl1.bat")
    (autoload 'fi:common-lisp "fi-site-init" "" t)
     
    ---

これで、emacs のバッファでGCLを動かすことが可能になりました。


2. GCLをEmacsと組み合わせて使う

では、meadowを起動して、その中からgclを起動しましょう。
emacsが起動したら、M-xを打鍵し、ミニバッファで「run-lisp」と打ち込み、リ ターンを入力します。
すると、muleのバッファ内でGCLが起動します。
このバッファの中では、GCLと対話でき、しかもEmacsの編集コマンドが使用で きます。これで、打ち間違いを起こしても、大丈夫ですね。
次にソースを編集するために、C-x 2としてスクリーンを2つに分割し、片方で tst.lspを編集するバッファを開きます。



さて、Emacs+GCLのすごいところはこれからです。
ファイル編集バッファで色々と打ち込みます。tst.lspを編集中のファイル編集 バッファはLispモードになっているはずです。
関数一つだけを編集して、それをすぐにGCLに読み込ませたい時は、編集バッファ の関数定義のS式のすぐ後ろにカーソルを持っていき、C-x C-eと連打します。す るとS式が GCLに送られて、評価されます。
C-x C-eはカーソルの直前にあるS式を評価するので、関数定義のみでなく、ファ イル編集バッファ中の任意のS式を評価することができます。
関数定義をコンパイルしてロードしたい場合は、関数定義の式のすぐ後ろにカー ソルを置き、そこでC-c C-cと連打します。すると、関数定義がGCLに送られ、関 数をコンパイルした後、ロードします。
作成したプログラムが無限ループなどに入った場合は、GCLの動作しているウイ ンドウ(*inferior-lisp*)でC-c C-cと連打してください。これでブレークします。
※ただ、このWindows版の場合、 Lispアプリケーションの実行を中止しようと、C-c C-c を連打すると、 gcl1.batの実行も止まってしまうんですね。(号泣)
(UNIX版だと、こういうことは起きないのに…)



もう、これだけあれば、Lispマシンは必要ありませんね。
筆者は、Symbolics(有名なLispマシン)を持っていますが、 SysmbolicsLisp+Zmacsよりも、貧乏ながらもGCL+Muleの方が、今では手軽 かつ高速に動くので、最近ではSymbolicsにはほとんど火を入れていません。

--- EOF


たけおかの Lispページ 目次

Gnu Common Lisp(GCL)/Kyoto Common Lisp(KCL)の最適化について

CommonLispで記述した、StarTrek(1976年頃流行した古いゲーム)

Prologの入門文書に飽きた人に

たけおか(竹岡尚三)のホームページ


このページの情報が役に立ったと思ったら、クリックしてください。
危険なサイトではありません。
Binary Monster