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

名称
ライブラリ
書式
解説
ライン編集関数
歴史リスト関数
関連項目
歴史
作者
バグ

jman



Time: 07:06:47 GMT, January 12, 2009