Libecoli 0.9.1
Extensible COmmand LIne library
 
Loading...
Searching...
No Matches
editline.h
1/* SPDX-License-Identifier: BSD-3-Clause
2 * Copyright 2018, Olivier MATZ <zer0@droids-corp.org>
3 */
4
14
15#pragma once
16
17#include <stdbool.h>
18
19#include <histedit.h>
20
21struct ec_editline;
22struct ec_node;
23struct ec_pnode;
24struct ec_comp;
25
30 char *desc;
31 char *help;
32};
33
37#define EC_EDITLINE_HISTORY_SIZE 128
38
42#define EC_EDITLINE_HELP_ATTR "help"
43
47#define EC_EDITLINE_CB_ATTR "cb"
48
100
104typedef int (*ec_editline_command_cb_t)(const struct ec_pnode *);
105
111typedef int (*ec_editline_check_exit_cb_t)(void *opaque);
112
137 const char *prog,
138 FILE *f_in,
139 FILE *f_out,
140 FILE *f_err,
141 enum ec_editline_init_flags flags
142);
143
150void ec_editline_free(struct ec_editline *editline);
151
158EditLine *ec_editline_get_el(struct ec_editline *editline);
159
175int ec_editline_set_node(struct ec_editline *editline, const struct ec_node *node);
176
185const struct ec_node *ec_editline_get_node(const struct ec_editline *editline);
186
203int ec_editline_set_history(struct ec_editline *editline, size_t hist_size, const char *hist_file);
204
215ssize_t ec_editline_get_completions(const struct ec_comp *cmpl, char ***matches_out);
216
225void ec_editline_free_completions(char **matches, size_t n);
226
239int ec_editline_print_cols(struct ec_editline *editline, char const *const *matches, size_t n);
240
250char *ec_editline_append_chars(const struct ec_comp *cmpl);
251
266 const struct ec_editline *editline,
267 const char *line,
268 struct ec_editline_help **helps_out
269);
270
284 const struct ec_editline *editline,
285 const struct ec_editline_help *helps,
286 size_t n
287);
288
300void ec_editline_free_helps(struct ec_editline_help *helps, size_t n);
301
316 const struct ec_editline *editline,
317 struct ec_editline_help **helps_out,
318 size_t *char_idx
319);
320
336 const struct ec_editline *editline,
337 const struct ec_editline_help *helps,
338 size_t n,
339 size_t char_idx
340);
341
352int ec_editline_set_prompt(struct ec_editline *editline, const char *prompt);
353
376int ec_editline_set_prompt_esc(struct ec_editline *editline, const char *prompt, char delim);
377
389char *ec_editline_curline(const struct ec_editline *editline, bool trim_after_cursor);
390
403char *ec_editline_gets(struct ec_editline *editline);
404
417struct ec_pnode *ec_editline_parse(struct ec_editline *editline);
418
440 struct ec_editline *el,
441 ec_editline_check_exit_cb_t check_exit_cb,
442 void *opaque
443);
444
458int ec_editline_complete(EditLine *el, int c);
459
474int ec_editline_set_help(struct ec_node *node, const char *help);
475
490
struct ec_comp * ec_comp(void)
int ec_editline_interact(struct ec_editline *el, ec_editline_check_exit_cb_t check_exit_cb, void *opaque)
int ec_editline_set_prompt(struct ec_editline *editline, const char *prompt)
struct ec_editline * ec_editline(const char *prog, FILE *f_in, FILE *f_out, FILE *f_err, enum ec_editline_init_flags flags)
int ec_editline_set_callback(struct ec_node *node, ec_editline_command_cb_t cb)
int ec_editline_set_prompt_esc(struct ec_editline *editline, const char *prompt, char delim)
ssize_t ec_editline_get_error_helps(const struct ec_editline *editline, struct ec_editline_help **helps_out, size_t *char_idx)
const struct ec_node * ec_editline_get_node(const struct ec_editline *editline)
void ec_editline_free(struct ec_editline *editline)
struct ec_pnode * ec_editline_parse(struct ec_editline *editline)
int(* ec_editline_command_cb_t)(const struct ec_pnode *)
Definition editline.h:104
EditLine * ec_editline_get_el(struct ec_editline *editline)
int(* ec_editline_check_exit_cb_t)(void *opaque)
Definition editline.h:111
char * ec_editline_append_chars(const struct ec_comp *cmpl)
ssize_t ec_editline_get_completions(const struct ec_comp *cmpl, char ***matches_out)
int ec_editline_set_help(struct ec_node *node, const char *help)
int ec_editline_print_error_helps(const struct ec_editline *editline, const struct ec_editline_help *helps, size_t n, size_t char_idx)
void ec_editline_free_completions(char **matches, size_t n)
ec_editline_init_flags
Definition editline.h:52
int ec_editline_set_node(struct ec_editline *editline, const struct ec_node *node)
void ec_editline_free_helps(struct ec_editline_help *helps, size_t n)
char * ec_editline_gets(struct ec_editline *editline)
int ec_editline_print_cols(struct ec_editline *editline, char const *const *matches, size_t n)
int ec_editline_print_helps(const struct ec_editline *editline, const struct ec_editline_help *helps, size_t n)
ssize_t ec_editline_get_helps(const struct ec_editline *editline, const char *line, struct ec_editline_help **helps_out)
int ec_editline_complete(EditLine *el, int c)
int ec_editline_set_history(struct ec_editline *editline, size_t hist_size, const char *hist_file)
char * ec_editline_curline(const struct ec_editline *editline, bool trim_after_cursor)
@ EC_EDITLINE_DISABLE_COMPLETION
Definition editline.h:91
@ EC_EDITLINE_DISABLE_SIGNALS
Definition editline.h:71
@ EC_EDITLINE_DEFAULT_SIGHANDLER
Definition editline.h:98
@ EC_EDITLINE_DISABLE_HISTORY
Definition editline.h:78
struct ec_node * ec_node(const char *typename, const char *id)
struct ec_pnode * ec_pnode(const struct ec_node *node)