% 入力モジュール
nptのドキュメントです。
参照元:ANSI Common Lisp npt
前へ:npt特有の機能
TERMEとは、readline, editlineのように、
入力を補助するためのモジュールです。
現在nptでは、外部モジュールのreadlineとeditlineを利用することができます。
これらのモジュールはnpt内部の機能ではありませんので、
使用するには別途モジュールをインストールする必要がありました。
それに対してTERMEは、nptのソースに含まれているため
新たに何かを用意する必要はありません。
nptの開発方針には、何のモジュールにも依存せず
単体でCommon Lispを構築するという考えがあります。
それにもかかわらず、readline, editlineを
利用できるのは単純に便利だったからです。
TERMEの開発の目的は、これらのモジュールのに替わることです。
現在、TERMEはFreeBSDとLinuxで使用することができます。
FreeBSDとLinuxではデフォルトでTERMEを利用できます。
下記にFreeBSDでコンパイルした例を示します。
$ cc -o npt -DLISP_FREEBSD *.c -lm
$ ./npt --version-script | grep prompt-mode
prompt-mode terme
prompt-modeがtermeになっていることが分かります。
readlineやeditlineのように、明示的に指定することもできます。
LISP_TERMEをdefineしてコンパイルしてください。
$ cc -o npt -DLISP_FREEBSD -DLISP_TERME *.c -lm
TERMEのオプションは、下記の2つ用意されています。
カラーモードは、名の通りプロンプトに色を付けるかどうかを選択します。
明暗モードは、色を明るくするか暗くするかを選択します。
使用しているターミナルの背景が白地の場合は、
デフォルトの明るいモードだと見づらいかもしれません。
そのようなときは、暗いモードの使用を検討してみてください。
デフォルトはカラー使用、明るいモードです。
コンパイルした後でも、これらのモードは変更可能です。
カラーモードは、次のdefine値で変更できます。
LISP_TERME_COLOR (デフォルト)LISP_TERME_MONOCHROMEもし色を使用したくない場合は、
LISP_TERME_MONOCHROMEを指定してコンパイルしてください。
例えば次の通り。
$ cc -o npt -DLISP_FREEBSD -DLISP_TERME_MONOCHROME *.c -lm
モードの指定は下記のコマンドで確認できます。
$ ./npt --version-script | grep prompt-color
prompt-color off
モードはコマンドのオプションで変更できます。
カラーモードで起動する場合は次のようにします。
$ npt --color
色を使用しないモノクロモードで起動する場合は次のようにします。
$ npt --monochrome
実行中はnpt-system:*prompt-color*の値を操作することで、
モードの確認と切り替えをすることができます。
* npt-system:*prompt-color*
NIL
* (setq npt-system:*prompt-color* t)
T
カラーモードが指定されているときに限り、
明暗モードを指定できます。
明暗モードは、次のdefine値で変更できます。
LISP_TERME_BRIGHT (デフォルト)LISP_TERME_DARKもし暗い色を使用したい場合は、
LISP_TERME_DARKを指定してコンパイルしてください。
例えば次の通り。
$ cc -o npt -DLISP_FREEBSD -DLISP_TERME_DARK *.c -lm
モードの指定は下記のコマンドで確認できます。
$ ./npt --version-script | grep prompt-bright
prompt-bright dark
モードはコマンドのオプションで変更できます。
明るいモードで起動する場合は次のようにします。
$ npt --bright
暗いモードで起動する場合は次のようにします。
$ npt --dark
実行中はnpt-system:*prompt-bright*の値を操作することで、
モードの確認と切り替えをすることができます。
* npt-system:*prompt-bright*
NIL
* (setq npt-system:*prompt-bright* t)
T
操作方法を示します。
Ctrl+B, 左カーソルキーCtrl+F, 右カーソルキーCtrl+ACtrl+ECtrl+J, Ctrl+M, Enterキー, ReturnキーCtrl+P, 上カーソルキーCtrl+N, 下カーソルキーCtrl+DCtrl+H, BSキーCtrl+UCtrl+KCtrl+LCtrl+CCtrl+ZEOF 何も入力がない状態でCtrl+Dその他の文字は入力になります。
入力文字はUTF-8のみ受け付けます。
不正なUTF-8文字は全て無視されます。
Ctrl+Dには2つの機能があります。
もし何かの文字が入力されている場合は、カーソルにある一文字を削除します。
しかし、入力がない時にCtrl+Dを押すと、
EOFを返却したことになり、プロンプトは強制終了されます。
もしdebugger起動中のrestart選択画面のときに
Ctrl+DでEOFを入力した場合は、
abort restartを選択したことと同じになります。
:exitを入力した場合も同じようにabortとなります。
もしeval-loopでCtrl+Dを入力した場合は、
eval-loopから脱出するので、おそらくはプロセスが終了します。
もしeval-loopを終了したくない場合は、
npt-system:*eval-loop-exit*変数にtを代入してください。
終了を確認するExit?というプロンプトが表示されます。
実行例を下記に示します。
$ npt
* (setq npt-system:*eval-loop-exit* t)
T
* ^D
Exit? ^D
* ^D
Exit? zzz
* ^D
Exit? y
$
起動時に設定したい場合は、initfileを利用するのが便利です。
次の操作によりファイルを作成してください。
$ vi $HOME/.npt.lisp
作成するファイルは、npt起動時に自動的にloadされます。
下記に例を示します。
;; 終了時に確認のプロンプトを出す
(setq npt-system:*eval-loop-exit* t)
;; プロンプトの色を暗くする
(setq npt-system:*prompt-bright* nil)