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

서식
#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) 파일을 읽어낼 때 사용됩니다. fin (와)과 fout (은)는 각각 사용하는 입력 스트림과 출력 시냇물입니다. 이 다큐멘테이션에서는, “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 *)
        prompt 인쇄 함수를 f (으)로서 정의합니다. 이것은 prompt가 들어간 string (을)를 돌려주는 것입니다.

    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 에 결합된 키가 입력되었을 때에 불려 갑니다. help 하 name 의 설명입니다. 기동시에, ch (은)는 호출을 일으키는 키입니다. func() 의 반환값은 다음의 1 개입니다.

        CC_NORM
            통상의 캐릭터를 추가합니다.

        CC_NEWLINE
            줄 끝이 입력되었습니다.

        CC_EOF
            하지만 입력되었습니다.

        CC_ARGHACK
            인수로서 한층 더 명령 입력을 예기 하고 있습니다. 표시되는 것은 아무것도 하지 않습니다.

        CC_REFRESH
            표시를 리프레쉬 합니다.

        CC_CURSOR
            커서가 이동되었으므로, CC_REFRESH (을)를 갱신 및 실행합니다.

        CC_REDISPLAY
            입력행 전체를 재표시합니다. 이것이 편리한 것은, 키 결합이 그 외의 정보를 출력하는 경우입니다.

        CC_ERROR
            에러가 발생했습니다. beep음, 그리고 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 그리고 나타났습니다.

저자
-nosplit editline 프로그램 라이브러리는 Christos Zoulas 하지만 작성했습니다. 이 메뉴얼은 Luke Mewburn 하지만 작성했습니다.

버그
이 다큐멘테이션은 아마 불완전하다라고 생각됩니다.

el_parse() (은)는, 지정되었다 argv[0] (을)를 수정해 되지 않습니다.

토큰화 함수는 <histedit.h> 안에서는 공에 정의되고 있지 않습니다.