Emacsには,他のLispシステムでプログラムを実行する機能があります.Lisp をEmacsの下位プロセスとして実行し,式をそれにわたして評価することができ ます.下位プロセスで走らせているLisp用に編集していたプログラムで変更した 関数定義は,Emacsのバッファから直接Lispにわたすことができます.
下位のLispプロセスを実行するには,M-x run-lispと入力します.これ
によって,シェルでlisp
と入力して動作するのと同じlisp
という
名前のプログラムを実行します.このとき入力と出力両方は`*lisp*'とい
うEmacsバッファを通して行なわれます.すなわちLispからの端末出力がバッファ
にはいり,ポイントを進め,Lispへの端末入力はバッファのテキストから送られ
ます.Lispに入力を与えるには,バッファの最後に移動して入力し,RET
を押します.`*lisp*'バッファは,Inferior Lispモードで,これはLispモー
ドとShellモードの特徴を兼ね備えたモードです(see section Shellモード).
外部のLispで実行するソースファイルの編集には,Lispモードを使います.こ のモードはM-x lisp-modeで選択できます.また,たいていのLispシステ ムで普通考えられているように,末尾が`.l'や`.lisp'という名前の ファイルには自動的に使われます.
実行中のLispプログラムの関数を編集しているとき,変更した定義を下位の
Lispプロセスに送るにはC-M-xを入力するのが簡単です.Lispモードでは,
関数lisp-send-defun
を実行します.この関数はポイントのまわりやその
次のdefunを探し,それをLispプロセスに送ります(Emacsでは現在のバッファが
何であるかに関係なく,どんな下位のプロセスにも送れます).
Lispモード(外部のLispシステムで実行されるプログラムを編集するとき)と Emacs-Lispモード(Emacsで実行されるLispプログラムを編集するとき)での C-M-xの意味を比べてみます.どちらのモードでもポイントがある関数を 定義します.しかし,その方法はLisp環境によって違います.See section Lisp用の主モード.