スポンサーリンク

EDITLINE(3) FreeBSD ライブラリ関数マニュアル EDITLINE(3)

名称

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 − ラインエ ディタと歴史関数

ライブラリ

コマンドラインエディタライブラリ (libedit, −ledit)

書式

#include <histedit.h>

EditLine *

el_init(const char *prog, FILE *fin, FILE *fout);

void

el_end(EditLine *e);

void

el_reset(EditLine *e);

const char *

el_gets(EditLine *e, int *count);

int

el_getc(EditLine *e, char *ch);

void

el_push(EditLine *e, const char *str);

int

el_parse(EditLine *e, int argc, char *argv[]);

int

el_set(EditLine *e, int op, ...);

int

el_source(EditLine *e, const char *file);

void

el_resize(EditLine *e);

const LineInfo *

el_line(EditLine *e);

int

el_insertstr(EditLine *e, char *str);

void

el_deletestr(EditLine *e, int count);

void

el_data_set(EditLine *e, void *data);

void *

el_data_get(EditLine *e);

History *

history_init();

void

history_end(History *h);

const HistEvent *

history(History *h, int op, ...);

解説

editline ライブラリには、汎用のライン編集と歴史関数が備わっています。これ は sh(1) にあるものと類似しています。

これらの関数は libedit ライブラリで利用できます (これには libtermcap ライ ブラリが必要です)。プログラムは −ledit −ltermcap とリンクする必要がありま す。

ライン編集関数

ライン編集関数は、共通のデータ構造、 EditLine を使用します。これは el_init() によって作成され、 el_end() によって解放されます。

以下の関数が利用できます。

       el_init()

ラインエディタを初期化し、他のすべてのライン編集関数が使用するデー タ構造を返します。 prog は、起動する側のプログラムの名前であり、ど の設定を使用するか決定するために editrc(5) ファイルを読み取るときに 使用されます。 finfout はそれぞれ使用する入力ストリームと出力ス トリームです。このドキュメンテーションでは、 ‘‘the tty’’ の参照が実 際にはこの入力/出力ストリームの組み合わせを参照します。

el_end()
クリーンアップし e で終了します。 el_init() で作成されたと想定され ます。

el_reset()
tty とパーサをリセットします。これは tty の状態を混乱させた可能性の あるエラーの後で呼び出す必要があります。

el_gets()
tty から 1 行を読み取ります。 count は、読み取られたキャラクタ数を 入れるように修正されます。処理が成功した場合は読み取られたラインを 返し、キャラクタが読取られないか、またはエラーが発生した場合は NULL を返します。

el_getc()
tty から 1 キャラクタを読み取ります。 ch は、読み取られたキャラクタ を入れるように修正されます。処理が成功した場合は読み取られたキャラ クタの数を返し、そうでない場合は -1 を返します。

el_push()
str
を入力ストリームに戻します。これはマクロ展開機構によって使用さ れます。詳細については、 editrc(5)bind −s の説明を参照してくだ さい。

el_parse()
argv
配列(サイズは argc エレメントです) をパースし、組み込み editline コマンドを実行します。コマンドの接頭語が ‘‘prog:’’ の場 合、 ‘‘prog’’ が el_init() に指定された prog 引数と一致するなら、 el_parse() はコマンドを実行するだけです。コマンドが未知の場合は戻り 値は -1 です。エラーがないかまたは ‘‘prog’’ が一致しなかった場合は 戻り値は 0 です。コマンドがエラーを返したときは 1 です。詳細につい ては、 editrc(5) を参照してください。

注: argv[0]el_parse() によって修正されることがあります。 ‘‘prog’’ とコマンド command の間のコロンは、NUL (‘‘\0’’) で置き換え られます。

el_set()
el_set
() editline パラメータを設定します。 op はどのパラメータを設 定するかを決定し、各操作には独自のパラメータリストがあります。

op の値については、必須引数リストとともに次のパラメータがサポートさ れています。

EL_PROMPT, char *(*f)(EditLine *)
プロンプト印刷関数を f として定義します。これはプロンプトの 入ったストリングを返すことです。

EL_TERMINAL, const char *type
tty の端末タイプが type であると定義します。 type が NULL の 場合は TERM にです。

EL_EDITOR, const char *mode
編集モードを mode に設定します。それは ‘‘emacs’’ または ‘‘vi’’ の 1 つである必要があります。

EL_SIGNAL, int flag
flag
がゼロでない場合、 editline は、コマンド入力を読み取ると きに、次のシグナル用のシグナルハンドラをインストールします。 SIGCONT, SIGHUP, SIGINT, SIGQUIT, SIGSTOP, SIGTERM, SIGTSTP, および SIGWINCH 。これら以外の場合、現在のシグナルハンドラが 使用されます。

EL_BIND,
const char *
, ..., NULL
組み込み bind コマンドを実行します。詳細については、 editrc(5) を参照してください。

EL_ECHOTC,
const char *
, ..., NULL
組み込み echotc コマンドを実行します。詳細については、 editrc(5) を参照してください。

EL_SETTC,
const char *
, ..., NULL
組み込み settc コマンドを実行します。詳細については、 editrc(5) を参照してください。

EL_SETTY,
const char *
, ..., NULL
組み込み setty コマンドを実行します。詳細については、 editrc(5) を参照してください。

EL_TELLTC,
const char *
, ..., NULL
組み込み telltc コマンドを実行します。詳細については、 editrc(5) を参照してください。

EL_ADDFN,
const char *name
, const char *help, unsigned char (*func)(EditLine *e, int ch)
ユーザ定義関数 func() を追加します。これは name として参照さ れ、 name に結合されたキーが入力されたときに呼び出されます。 helpname の説明です。起動時に、 ch は呼び出しを起こすキー です。 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,
History *(*func)(History *, int op, ...)
, const char *ptr
どの歴史関数を使用するかを定義します。それは通常は history() です。 ptr は、 history_init() が返す値である必要があります。

el_source()
file
の内容を読むことで editline を初期化します。 el_parse() が、 file 内の行ごとに呼び出されます。 file が NULL の場合、 $HOME/.editrc を試します。 file の形式の詳細については、 editrc(5) を参照してください。

el_resize()
端末のサイズが変化する場合は呼び出す必要があります。 EL_SIGNAL が el_set() で設定されている場合、これは自動的に行われます。そうでない 場合は、適切な機会に el_resize() を呼び出すのはアプリケーションの責 任です。

el_line()
現在のラインについての編集情報を LineInfo で返します。これは次のよ うに定義されます。

typedef struct lineinfo {
const char *buffer; /* バッファのアドレス */
const char *cursor; /* カーソルのアドレス */
const char *lastchar; /* 最後のキャラクタのアドレス */
} LineInfo;

       el_insertstr()

カーソルがあるラインに str を挿入します。 str が空であるかフィット しない場合は -1 を返します。それ以外の場合は 0 を返します。

el_deletestr()
カーソルの前の num 個のキャラクタを削除します。

el_data_set()
ユーザデータを data へ設定します。

el_data_get()
ユーザデータを取得します。

歴史リスト関数

歴史関数は共通のデータ構造 History を使用します。 History は、 history_init() によって作成され、 history_end() によって解放されます。

次の関数が利用できます。

       history_init()

歴史リストを初期化し、他のすべての歴史関数が使用するデータ構造を返 します。

history_end()
クリーンアップし、 h で終了します。 history_init() で作成されたもの と想定されます。

history()
歴史リストについて演算 op を実行します。演算が要求するオプション引 数があります。 op について次の値が、必須引数リストとともにサポート されています。

H_EVENT, int size
size
エレメントに歴史のサイズを設定します。

H_END
クリーンアップし、 h で終了します。 history_init() で作成され たものと想定されます。

H_CLEAR
歴史をクリアします。

H_FUNC,
void *ptr
, history_gfun_t first, history_gfun_t next, history_gfun_t last, history_gfun_t prev, history_gfun_t curr, history_vfun_t clear, history_efun_t enter, history_efun_t add
さまざまな歴史演算を実行する関数を定義します。 ptr は、関数が 起動されるときに関数に指定される引数です。

H_FIRST
歴史の最初のエレメントを返します。

H_LAST
歴史の最後のエレメントを返します。

H_PREV
歴史の直前のエレメントを返します。

H_NEXT
歴史の次のエレメントを返します。

H_CURR
歴史の現在のエレメントを返します。

H_ADD, const char *str
歴史の現在のエレメントの末尾に str を追加するか、またはエレメ ントがない場合は H_ENTER で 1 つのエレメントを作成します。

H_ENTER, const char *str
str
を新しいエレメントとして history() に追加します。必要であ れば、最も古いエントリを削除して、リストを作成されたサイズに 保ちます。

H_PREV_STR, const char *str
str
で開始する、最も近い直前のイベントを返します。

H_NEXT_STR, const char *str
str
で開始する、最も近い次のイベントを返します。

H_PREV_EVENT, int e
e
という番号の直前のイベントを返します。

H_NEXT_EVENT, int e
e
という番号の次のイベントを返します。

H_LOAD, const char *file
file
に保存された歴史リストをロードします。

H_SAVE, const char *file
歴史リストを file に保存します。

関連項目

sh(1), signal(3), termcap(3), editrc(5)

歴史

editline ライブラリは最初に 4.4BSD で現れました。

作者

editline ライブラリは Christos Zoulas が作成しました。このマニュアルは Luke Mewburn が作成しました。

バグ

このドキュメンテーションはおそらく不完全であると考えられます。

el_parse() は、指定された argv[0] を修正してはなりません。

トークン化関数は <histedit.h> 内では公に定義されていません。

FreeBSD 10.0 January 11, 1997 FreeBSD 10.0

スポンサーリンク