% 入力モジュール
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+A
Ctrl+E
Ctrl+J
, Ctrl+M
, Enterキー, ReturnキーCtrl+P
, 上カーソルキーCtrl+N
, 下カーソルキーCtrl+D
Ctrl+H
, BSキーCtrl+U
Ctrl+K
Ctrl+L
Ctrl+C
Ctrl+Z
EOF
何も入力がない状態で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)