EDITLINE
Section: C Library Functions (3)
索引
jman
BSD mandoc
索引
名称
editline
el_init
el_end
el_reset
el_gets
el_getc
el_push
el_parse
el_set
el_source
el_resize
el_line
el_insertstr
el_deletestr
el_data_set
el_data_get
history_init
history_end
history
- ラインエディタと歴史関数
索引
ライブラリ
Lb libedit
索引
書式
Fd #include <histedit.h>
Ft EditLine *
Fn el_init const char *prog FILE *fin FILE *fout
Ft void
Fn el_end EditLine *e
Ft void
Fn el_reset EditLine *e
Ft const char *
Fn el_gets EditLine *e int *count
Ft int
Fn el_getc EditLine *e char *ch
Ft void
Fn el_push EditLine *e const char *str
Ft int
Fn el_parse EditLine *e int argc char *argv[]
Ft int
Fn el_set EditLine *e int op ...
Ft int
Fn el_source EditLine *e const char *file
Ft void
Fn el_resize EditLine *e
Ft const LineInfo *
Fn el_line EditLine *e
Ft int
Fn el_insertstr EditLine *e char *str
Ft void
Fn el_deletestr EditLine *e int count
Ft void
Fn el_data_set EditLine *e void *data
Ft void *
Fn el_data_get EditLine *e
Ft History *
Fn history_init
Ft void
Fn history_end History *h
Ft const HistEvent *
Fn history History *h int op ...
索引
解説
editline
ライブラリには、汎用のライン編集と歴史関数が備わっています。これは
sh(1)
にあるものと類似しています。
これらの関数は
libedit
ライブラリで利用できます
(これには
libtermcap
ライブラリが必要です)。プログラムは
-ledit ltermcap
とリンクする
必要があります。
索引
ライン編集関数
ライン編集関数は、共通のデータ構造、
Fa EditLine
を使用します。これは
Fn el_init
によって作成され、
Fn el_end
によって解放されます。
以下の関数が利用できます。
- Fn el_init
-
ラインエディタを初期化し、他のすべてのライン編集関数が使用するデータ構造を
返します。
Fa prog
は、起動する側のプログラムの名前であり、どの設定を使用するか
決定するために
editrc(5)
ファイルを読み取るときに使用されます。
Fa fin
と
Fa fout
はそれぞれ使用する入力ストリームと出力ストリームです。この
ドキュメンテーションでは、
``the tty''
の参照が実際にはこの入力/出力ストリームの
組み合わせを参照します。
- Fn el_end
-
クリーンアップし
Fa e
で終了します。
Fn el_init
で作成されたと想定されます。
- Fn el_reset
-
tty とパーサをリセットします。これは
tty の状態を混乱させた可能性のある
エラーの後で呼び出す必要があります。
- Fn el_gets
-
tty から 1 行を読み取ります。
Fa count
は、読み取られたキャラクタ数を
入れるように修正されます。処理が成功した場合は読み取られたラインを返し、
キャラクタが読取られないか、またはエラーが発生した場合は
NULL
を返します。
- Fn el_getc
-
tty から
1 キャラクタを読み取ります。
Fa ch
は、読み取られたキャラクタを
入れるように修正されます。処理が成功した場合は読み取られたキャラクタの数を
返し、そうでない場合は -1 を返します。
- Fn el_push
-
Fa str
を入力ストリームに戻します。これはマクロ展開機構によって使用されます。
詳細については、
editrc(5)
の
bind
-s
の説明を参照してください。
- Fn el_parse
-
Fa argv
配列(サイズは
Fa argc
エレメントです)
をパースし、組み込み
コマンドを実行します。コマンドの接頭語が
``prog:''
の場合、
``prog''
が
Fn el_init
に指定された
Fa prog
引数と一致するなら、
Fn el_parse
はコマンドを
実行するだけです。コマンドが未知の場合は戻り値は
-1 です。エラーがないかまたは
``prog''
が一致しなかった場合は
戻り値は
0 です。コマンドがエラーを
返したときは
1 です。詳細については、
editrc(5)
を参照してください。
注
argv[0]
は
Fn el_parse
によって修正されることがあります。
``prog''
と
コマンド
command
の間のコロンは、NUL
(``\0''
)
で置き換えられます。
- Fn el_set
-
Fn el_set
パラメータを設定します。
Fa op
はどのパラメータを設定するかを決定し、
各操作には独自のパラメータリストがあります。
Fa op
の値については、必須引数リストとともに次のパラメータがサポート
されています。
- EL_PROMPT , Fa char *(*f)(EditLine *)
-
プロンプト印刷関数を
Fa f
として定義します。これはプロンプトの入ったストリング
を返すことです。
- EL_TERMINAL , Fa const char *type
-
tty の端末タイプが
Fa type
であると定義します。
Fa type
が
NULL
の場合は
TERM
にです。
- EL_EDITOR , Fa const char *mode
-
編集モードを
Fa mode
に設定します。それは
``emacs''
または
``vi''
の 1 つである必要があります。
- EL_SIGNAL , Fa int flag
-
Fa flag
がゼロでない場合、
は、コマンド入力を読み取るときに、次の
シグナル用のシグナルハンドラをインストールします。
SIGCONT
SIGHUP
SIGINT
SIGQUIT
SIGSTOP
SIGTERM
SIGTSTP
および
SIGWINCH
。これら以外の場合、現在のシグナルハンドラが
使用されます。
- EL_BIND ,
Fa const char * ,
Fa ... ,
NULL
-
組み込み
bind
コマンドを実行します。詳細については、
editrc(5)
を
参照してください。
- EL_ECHOTC ,
Fa const char * ,
Fa ... ,
NULL
-
組み込み
echotc
コマンドを実行します。詳細については、
editrc(5)
を
参照してください。
- EL_SETTC ,
Fa const char * ,
Fa ... ,
NULL
-
組み込み
settc
コマンドを実行します。詳細については、
editrc(5)
を参照してください。
- EL_SETTY ,
Fa const char * ,
Fa ... ,
NULL
-
組み込み
setty
コマンドを実行します。詳細については、
editrc(5)
を
参照してください。
- EL_TELLTC ,
Fa const char * ,
Fa ... ,
NULL
-
組み込み
telltc
コマンドを実行します。詳細については、
editrc(5)
を
参照してください。
- EL_ADDFN ,
Fa const char *name ,
Fa const char *help ,
Fa unsigned char (*func)(EditLine *e, int ch)
-
ユーザ定義関数
Fn func
を追加します。これは
Fa name
として参照され、
Fa name
に結合されたキーが入力されたときに呼び出されます。
Fa help
は
Fa name
の説明です。
起動時に、
Fa ch
は呼び出しを起こすキーです。
Fn func
の戻り値は次の 1 つです。
- CC_NORM
-
通常のキャラクタを追加します。
- CC_NEWLINE
-
行末が入力されました。
- CC_EOF
-
が入力されました。
- CC_ARGHACK
-
引数としてさらにコマンド入力を予期しています。表示されることは
何もしません。
- CC_REFRESH
-
表示をリフレッシュします。
- CC_CURSOR
-
カーソルが移動されたので、
CC_REFRESH
を更新および実行します。
- CC_REDISPLAY
-
入力行全体を再表示します。これが便利なのは、キー結合がその他の
情報を出力する場合です。
- CC_ERROR
-
エラーが発生しました。ビープ音、そして tty をフラッシュします。
- CC_FATAL
-
致命的エラー。tty を既知の状態にリセットします。
- EL_HIST ,
Fa History *(*func)(History *, int op, ...) ,
Fa const char *ptr
-
どの歴史関数を使用するかを定義します。それは通常は
Fn history
です。
Fa ptr
は、
Fn history_init
が返す値である必要があります。
- Fn el_source
-
Fa file
の内容を読むことで
を初期化します。
Fn el_parse
が、
Fa file
内の行ごとに呼び出されます。
Fa file
が
NULL
の場合、
$HOME/.editrc
を試します。
Fa file
の形式の詳細については、
editrc(5)
を
参照してください。
- Fn el_resize
-
端末のサイズが変化する場合は呼び出す必要があります。
EL_SIGNAL
が
Fn el_set
で設定されている場合、これは自動的に行われます。そうでない場合は、適切な
機会に
Fn el_resize
を呼び出すのはアプリケーションの責任です。
- Fn el_line
-
現在のラインについての編集情報を
Fa LineInfo
で返します。これは次のように
定義されます。
- typedef struct lineinfo {
const char *buffer; /* バッファのアドレス */
const char *cursor; /* カーソルのアドレス */
const char *lastchar; /* 最後のキャラクタのアドレス */
} LineInfo;
- Fn el_insertstr
-
カーソルがあるラインに
Fa str
を挿入します。
Fa str
が空であるかフィットしない
場合は -1 を返します。それ以外の場合は 0 を返します。
- Fn el_deletestr
-
カーソルの前の
Fa num
個のキャラクタを削除します。
- Fn el_data_set
-
ユーザデータを
Fa data
へ設定します。
- Fn el_data_get
-
ユーザデータを取得します。
索引
歴史リスト関数
歴史関数は共通のデータ構造
Fa History
を使用します。
Fa History
は、
Fn history_init
によって作成され、
Fn history_end
によって解放されます。
次の関数が利用できます。
- Fn history_init
-
歴史リストを初期化し、他のすべての歴史関数が使用するデータ構造を返します。
- Fn history_end
-
クリーンアップし、
Fa h
で終了します。
Fn history_init
で作成されたものと
想定されます。
- Fn history
-
歴史リストについて演算
Fa op
を実行します。演算が要求する
オプション引数があります。
Fa op
について次の値が、必須引数リストとともに
サポートされています。
- H_EVENT , Fa int size
-
Fa size
エレメントに歴史のサイズを設定します。
- H_END
-
クリーンアップし、
Fa h
で終了します。
Fn history_init
で作成されたものと
想定されます。
- H_CLEAR
-
歴史をクリアします。
- H_FUNC ,
Fa void *ptr ,
Fa history_gfun_t first ,
Fa history_gfun_t next ,
Fa history_gfun_t last ,
Fa history_gfun_t prev ,
Fa history_gfun_t curr ,
Fa history_vfun_t clear ,
Fa history_efun_t enter ,
Fa history_efun_t add
-
さまざまな歴史演算を実行する関数を定義します。
Fa ptr
は、関数が起動されるときに関数に指定される引数です。
- H_FIRST
-
歴史の最初のエレメントを返します。
- H_LAST
-
歴史の最後のエレメントを返します。
- H_PREV
-
歴史の直前のエレメントを返します。
- H_NEXT
-
歴史の次のエレメントを返します。
- H_CURR
-
歴史の現在のエレメントを返します。
- H_ADD , Fa const char *str
-
歴史の現在のエレメントの末尾に
Fa str
を追加するか、またはエレメントがない
場合は
H_ENTER
で 1 つのエレメントを作成します。
- H_ENTER , Fa const char *str
-
Fa str
を新しいエレメントとして
Fn history
に追加します。必要であれば、最も古い
エントリを削除して、リストを作成されたサイズに保ちます。
- H_PREV_STR , Fa const char *str
-
Fa str
で開始する、最も近い直前のイベントを返します。
- H_NEXT_STR , Fa const char *str
-
Fa str
で開始する、最も近い次のイベントを返します。
- H_PREV_EVENT , Fa int e
-
Fa e
という番号の直前のイベントを返します。
- H_NEXT_EVENT , Fa int e
-
Fa e
という番号の次のイベントを返します。
- H_LOAD , Fa const char *file
-
Fa file
に保存された歴史リストをロードします。
- H_SAVE , Fa const char *file
-
歴史リストを
Fa file
に保存します。
索引
関連項目
sh(1),
signal(3),
termcap(3),
editrc(5)
索引
歴史
ライブラリは最初に
BSD 4.4
で現れました。
索引
作者
An -nosplit
ライブラリは
An Christos Zoulas
が作成しました。このマニュアルは
An Luke Mewburn
が作成しました。
索引
バグ
このドキュメンテーションはおそらく不完全であると考えられます。
Fn el_parse
は、指定された
argv[0]
を修正してはなりません。
トークン化関数は
<histedit.h>
内では公に定義されていません。
索引
Index
- 名称
-
- ライブラリ
-
- 書式
-
- 解説
-
- ライン編集関数
-
- 歴史リスト関数
-
- 関連項目
-
- 歴史
-
- 作者
-
- バグ
-
Time: 07:06:47 GMT, January 12, 2009