diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2017-06-16 23:14:50 -0700 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2017-06-16 23:14:50 -0700 |
commit | 5da101a52afd8d99f7ede8ef8fbf61afbd52cb02 (patch) | |
tree | e663431bf9b64cfe714241cc69fdbf2a880b38a9 /linenoise/linenoise.h | |
parent | 308a431b217b39cdd636a7424579e74f8e1ee7ff (diff) | |
download | txr-5da101a52afd8d99f7ede8ef8fbf61afbd52cb02.tar.gz txr-5da101a52afd8d99f7ede8ef8fbf61afbd52cb02.tar.bz2 txr-5da101a52afd8d99f7ede8ef8fbf61afbd52cb02.zip |
linenoise: callback for checking syntax completeness.
The idea is that when the user types Enter to submit a line,
it can be checked whether it is complete syntax using a
callback. If the callback indicates that the syntax is
incomplete (there are open expressions, string literals or
whatever), then Enter is inserted verbatim. This is active
in multi-line mode only.
* linenoise.c (struct lino_state): New members, enter_callback
and ce_ctx.
(lino_set_enter_cb): New function.
(edit): If enter is issued, and multi-line mode is in effect,
and there is an enter callback, then call it. If the callback
returns false, then just insert the character.
* linenoise.h (lino_enter_cb_t): New typedef.
(lino_set_enter_cb): Declared.
Diffstat (limited to 'linenoise/linenoise.h')
-rw-r--r-- | linenoise/linenoise.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/linenoise/linenoise.h b/linenoise/linenoise.h index 28b304a4..b07b15ea 100644 --- a/linenoise/linenoise.h +++ b/linenoise/linenoise.h @@ -80,3 +80,6 @@ int lino_get_noninteractive(lino_t *); typedef char *lino_atom_cb_t(lino_t *, const char *line, int n, void *ctx); void lino_set_atom_cb(lino_t *, lino_atom_cb_t *, void *ctx); + +typedef int lino_enter_cb_t(const char *line, void *ctx); +void lino_set_enter_cb(lino_t *, lino_enter_cb_t *, void *ctx); |