Libecoli 0.11.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#include <stdio.h>
19
20struct ec_node;
21struct ec_pnode;
22struct ec_comp;
23struct editline;
24
26struct ec_editline;
27
32 char *desc;
33 char *help;
34};
35
39#define EC_EDITLINE_HISTORY_SIZE 128
40
96
102typedef int (*ec_editline_check_exit_cb_t)(void *opaque);
103
128 const char *prog,
129 FILE *f_in,
130 FILE *f_out,
131 FILE *f_err,
132 enum ec_editline_init_flags flags
133);
134
141void ec_editline_free(struct ec_editline *editline);
142
149struct editline *ec_editline_get_el(struct ec_editline *editline);
150
165 const struct ec_editline *editline,
166 unsigned int *width,
167 unsigned int *height
168);
169
185int ec_editline_set_node(struct ec_editline *editline, const struct ec_node *node);
186
195const struct ec_node *ec_editline_get_node(const struct ec_editline *editline);
196
213int ec_editline_set_history(struct ec_editline *editline, size_t hist_size, const char *hist_file);
214
225int ec_editline_set_prompt(struct ec_editline *editline, const char *prompt);
226
250int ec_editline_set_prompt_esc(struct ec_editline *editline, const char *prompt, char delim);
251
263char *ec_editline_curline(const struct ec_editline *editline, bool trim_after_cursor);
264
277char *ec_editline_gets(struct ec_editline *editline);
278
291struct ec_pnode *ec_editline_parse(struct ec_editline *editline);
292
315 struct ec_editline *editline,
316 ec_editline_check_exit_cb_t check_exit_cb,
317 void *opaque
318);
319
333int ec_editline_complete(struct editline *el, int c);
334
struct ec_comp * ec_comp(void)
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_prompt_esc(struct ec_editline *editline, const char *prompt, char delim)
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_check_exit_cb_t)(void *opaque)
Definition editline.h:102
struct editline * ec_editline_get_el(struct ec_editline *editline)
int ec_editline_term_size(const struct ec_editline *editline, unsigned int *width, unsigned int *height)
int ec_editline_complete(struct editline *el, int c)
int ec_editline_interact(struct ec_editline *editline, ec_editline_check_exit_cb_t check_exit_cb, void *opaque)
ec_editline_init_flags
Definition editline.h:44
int ec_editline_set_node(struct ec_editline *editline, const struct ec_node *node)
char * ec_editline_gets(struct ec_editline *editline)
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:87
@ EC_EDITLINE_DISABLE_SIGNALS
Definition editline.h:65
@ EC_EDITLINE_DEFAULT_SIGHANDLER
Definition editline.h:94
@ EC_EDITLINE_DISABLE_HISTORY
Definition editline.h:72
struct ec_node * ec_node(const char *typename, const char *id)
struct ec_pnode * ec_pnode(const struct ec_node *node)