Libecoli 0.11.3
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
31#define EC_EDITLINE_HISTORY_SIZE 128
32
88
94typedef int (*ec_editline_check_exit_cb_t)(void *opaque);
95
120 const char *prog,
121 FILE *f_in,
122 FILE *f_out,
123 FILE *f_err,
124 enum ec_editline_init_flags flags
125);
126
133void ec_editline_free(struct ec_editline *editline);
134
141struct editline *ec_editline_get_el(struct ec_editline *editline);
142
157 const struct ec_editline *editline,
158 unsigned int *width,
159 unsigned int *height
160);
161
177int ec_editline_set_node(struct ec_editline *editline, const struct ec_node *node);
178
187const struct ec_node *ec_editline_get_node(const struct ec_editline *editline);
188
205int ec_editline_set_history(struct ec_editline *editline, size_t hist_size, const char *hist_file);
206
217int ec_editline_set_prompt(struct ec_editline *editline, const char *prompt);
218
242int ec_editline_set_prompt_esc(struct ec_editline *editline, const char *prompt, char delim);
243
255char *ec_editline_curline(const struct ec_editline *editline, bool trim_after_cursor);
256
269char *ec_editline_gets(struct ec_editline *editline);
270
283struct ec_pnode *ec_editline_parse(struct ec_editline *editline);
284
307 struct ec_editline *editline,
308 ec_editline_check_exit_cb_t check_exit_cb,
309 void *opaque
310);
311
325int ec_editline_complete(struct editline *el, int c);
326
327/*
328 * Deprecated aliases for symbols moved to interact.h.
329 */
330
331#include "interact.h"
332#include "utils.h"
333
335
336#define EC_EDITLINE_HELP_ATTR EC_DEPRECATED_MACRO("use EC_INTERACT_HELP_ATTR") EC_INTERACT_HELP_ATTR
337#define EC_EDITLINE_CB_ATTR EC_DEPRECATED_MACRO("use EC_INTERACT_CB_ATTR") EC_INTERACT_CB_ATTR
338#define EC_EDITLINE_DESC_ATTR EC_DEPRECATED_MACRO("use EC_INTERACT_DESC_ATTR") EC_INTERACT_DESC_ATTR
339
340struct EC_DEPRECATED("use struct ec_interact_help") ec_editline_help {
341 char *desc;
342 char *help;
343};
344
346 ec_editline_command_cb_t EC_DEPRECATED("use ec_interact_command_cb_t");
347
348/*
349 * Suppress deprecation warnings for function declarations that reference
350 * deprecated types in their signatures.
351 */
352#pragma GCC diagnostic push
353#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
354
355EC_DEPRECATED("use ec_interact_get_completions") ssize_t
356ec_editline_get_completions(const struct ec_comp *cmpl, char ***matches_out);
357
358EC_DEPRECATED("use ec_interact_free_completions")
359void ec_editline_free_completions(char **matches, size_t n);
360
361EC_DEPRECATED("use ec_interact_print_cols")
362int ec_editline_print_cols(struct ec_editline *editline, char const *const *matches, size_t n);
363
364EC_DEPRECATED("use ec_interact_append_chars")
365char *ec_editline_append_chars(const struct ec_comp *cmpl);
366
367EC_DEPRECATED("use ec_interact_get_helps") ssize_t ec_editline_get_helps(
368 const struct ec_editline *editline,
369 const char *line,
370 struct ec_editline_help **helps_out
371);
372
373EC_DEPRECATED("use ec_interact_print_helps")
374int ec_editline_print_helps(
375 const struct ec_editline *editline,
376 const struct ec_editline_help *helps,
377 size_t n
378);
379
380EC_DEPRECATED("use ec_interact_free_helps")
381void ec_editline_free_helps(struct ec_editline_help *helps, size_t n);
382
383EC_DEPRECATED("use ec_interact_get_error_helps") ssize_t ec_editline_get_error_helps(
384 const struct ec_editline *editline,
385 struct ec_editline_help **helps_out,
386 size_t *char_idx
387);
388
389EC_DEPRECATED("use ec_interact_print_error_helps")
390int ec_editline_print_error_helps(
391 const struct ec_editline *editline,
392 const struct ec_editline_help *helps,
393 size_t n,
394 size_t char_idx
395);
396
397EC_DEPRECATED("use ec_interact_set_help")
398int ec_editline_set_help(struct ec_node *node, const char *help);
399
400EC_DEPRECATED("use ec_interact_set_callback")
401int ec_editline_set_callback(struct ec_node *node, ec_interact_command_cb_t cb);
402
403EC_DEPRECATED("use ec_interact_set_desc")
404int ec_editline_set_desc(struct ec_node *node, const char *desc);
405
406#pragma GCC diagnostic pop
407
409
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:94
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:36
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:79
@ EC_EDITLINE_DISABLE_SIGNALS
Definition editline.h:57
@ EC_EDITLINE_DEFAULT_SIGHANDLER
Definition editline.h:86
@ EC_EDITLINE_DISABLE_HISTORY
Definition editline.h:64
int(* ec_interact_command_cb_t)(const struct ec_pnode *)
Definition interact.h:49
struct ec_node * ec_node(const char *typename, const char *id)
struct ec_pnode * ec_pnode(const struct ec_node *node)
#define EC_DEPRECATED(msg)
Definition utils.h:36