Commit Graph

143 Commits

Author SHA1 Message Date
Will Dietz
8660aef4b7 editline: fix behavior when tty is narrower than column width
Fixes crash when dividing by the number of columns,
which was computed as zero in this situation.

Instead, always have at least one "column" even if it wraps.
2019-04-26 13:30:15 -05:00
Daiderd Jordan
a4b67d2268
make Ctrl-L clear the screen instead of just starting a new line 2018-12-23 20:49:25 +01:00
Joachim Nilsson
2137b9df9f Revert "Merge pull request #21 from cogutvalera/issue_1171"
This reverts commit cddd8d8de0, reversing
changes made to 4ec7d26a9d.
2018-11-15 10:27:22 +01:00
Joachim Nilsson
66d8ae84e2 Revert "Coding style and const fixes to last PR"
This reverts commit fbb1f8800a.
2018-11-15 10:26:03 +01:00
Joachim Nilsson
fbb1f8800a Coding style and const fixes to last PR
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-10-24 08:28:34 +02:00
Valera Cogut
1db83fe6c6 Fixed inconsistent indentation 2018-10-18 16:54:16 +03:00
Valera Cogut
4784fe2491 Hide secret information 2018-10-18 11:15:35 +03:00
Joachim Nilsson
ebefa8b890 Refactor, simplify helper macro
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-21 07:12:24 +02:00
Joachim Nilsson
237014f7d9 Bump ABI version
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-16 10:10:03 +02:00
Joachim Nilsson
14b6dd37d6 Fix off-by-one in forward kill word
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-16 09:29:48 +02:00
Joachim Nilsson
89d2fefbc6 Skip leading whitespace when skipping or killing forwards
When the point is on whitespace between two words skipping forward, or
killing forward, should result in the new point being moved to the next
word:

     foo    bar fox gnu
         ^
=>
     foo    bar fox gnu
                ^

Before this patch the point moved to 'b'.  After this patch the point
moves to the first letter of the next word, 'f'.  Kill forward word now
properly kills 'bar' and moves to the first whitespace letter after
'bar'.  Both are now behaving like FSF Readline.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-16 09:29:48 +02:00
Joachim Nilsson
ac522cd749 Fix potential memory leak, found by Coverity Scan
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-16 08:29:01 +02:00
Joachim Nilsson
9a16999f0e Remove GNU Readline rl_complete() prototype, for now
We should add a configure option --enable-readline-compat, or sth, so
rl_complete2() (removed in this commit) becomes the new rl_complete(),
and the current rl_complete() becomes el_complete().

The current implementation of rl_complete2() was is incomplete and also
not working properly.  To eliminate any confusion on the matter this
patch removes it.  To restore functionality we should, at the very
least, merge with complete() and possibly also refactor rl_find_token()
to share code with the legacy el_find_word().

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-13 19:06:05 +02:00
Joachim Nilsson
29b24dcf83 Clarify comment about future --enable-readline-compat interface
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-12 17:12:19 +02:00
Joachim Nilsson
097fde5267 Merge branch 'master' of github.com:troglobit/editline 2018-09-11 19:57:25 +02:00
Joachim Nilsson
77d531f5b5 Refactor completion handling and add FSF Readline callbacks
Still a bit raw, but the basic building blocks are there, waiting to be
cleaned up and released.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-09-11 19:55:43 +02:00
jmjatlanta
d2418161ad Fix sementation violation when displaying options 2018-07-11 18:01:48 -05:00
Joachim Nilsson
76039b458b Fix #17: Fix off-by-one problem with strdup() replacement
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-06-14 21:59:18 +02:00
Joachim Nilsson
bd5ae42b4b Remove configure option --disable-default-complete
The filename completion handler fallback will now be enabled by default.
To disable it a new GNU Readline function pointer will be added.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-04-02 22:08:43 +02:00
Joachim Nilsson
41bbb304b1 Export internal el_next_hist() and el_prev_hist()
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-04-01 16:10:10 +02:00
Joachim Nilsson
0bfaf351aa Add support for Ctrl+Right and Ctrl+Left, forward/back word
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-03-22 08:42:32 +01:00
Joachim Nilsson
2ce0be942e Minor, reorder functions
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2018-03-22 08:38:04 +01:00
Joachim Nilsson
bc7fc7e5c0 Fix #15: Alternate interface to plain readline(), for event loops
This rather big patch adds support for the GNU Readline alternate
interface, for use with event loops:

    void rl_callback_handler_install (const char *prompt, rl_vcpfunc_t *lhandler);
    void rl_callback_read_char       (void);
    void rl_callback_handler_remove  (void);

The code has been tested using the testit and excallback examples.
Both regular editing and searching works as intended.

Also, the problem with lingering artefacts on screen when scrolling
through the history has been fixed.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-12-11 08:43:43 +01:00
Joachim Nilsson
2ec55cc9f1 Minor, simplify
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-12-11 08:42:33 +01:00
Joachim Nilsson
7f7bb5b45c Minor, use NULL not 0, and -1 not NULL
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-12-11 01:45:25 +01:00
Joachim Nilsson
779db8817e rl_refresh_line(): new (undocumented) readline compat fn
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-12-02 21:14:14 +01:00
Joachim Nilsson
29a71a53d0 rl_insert_text(): new readline compat fn
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-12-02 21:13:39 +01:00
Joachim Nilsson
94b1a78444 src/Makefile: Add -Wextra to CFLAGS
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-12-02 18:25:49 +01:00
Joachim Nilsson
a9d4247c09 Minor, header cleanup, whitespace fixes, comments
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-30 18:20:29 +01:00
Joachim Nilsson
ea79fe70f9 write_history(), read_history(): Check fclose() return value
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 21:40:38 +01:00
Joachim Nilsson
2075dedc80 Remove leading (superfluous) comment
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 17:22:08 +01:00
Joachim Nilsson
54714631e2 Move All rights reserved to next line
All BSD style licenses put this text on a separate line, immediately
following the Copyright line.  The C-News license is confusing enough
to most people, so let's align at least a bit with the norm.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 17:20:21 +01:00
Joachim Nilsson
a70a933698 Modify header guards, __FILE_H__ is reserved for system headers
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 17:17:50 +01:00
Joachim Nilsson
b613db2afb Whitespace + coding style cleanup
- Use Emacs K&R style
- Add missing braces to for() loops
- Fix coding style issues in cli.c example
- Add empty lines to separate sections
- Simplify and de-indent code, check error case first + continue

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 16:40:10 +01:00
Joachim Nilsson
1ace811722 rl_uninitialize(): also free old_search from previous i-search
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 15:32:59 +01:00
Claus Fischer
4b8333ad39 Remove duplicate unique history check
Signed-off-by: Claus Fischer <claus.fischer@clausfischer.com>
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 15:03:01 +01:00
Joachim Nilsson
ed37cef412 Minor whitespace fixes/cleanup
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 15:01:22 +01:00
Joachim Nilsson
2a3b422137 Fix negative array index triggered by i-search
This is a fix to a bug reported by Claus Fischer.  When doing a reversed
i-search on the history, clear_line() sets rl_point to a negative value,
which is later used by ceol().  The intention is to clear the whole line
for the new Search: prompt, but indexing an array with a negative value
is strongly discouraged.

To prevent this negative indexing from happening we check in ceol() for
rl_point < 0, but we quickly notice another side effect: one lingering
character at the end of line when returning from i-search.  The problem
manifests itself more cleary when having a looooo000ooonong prompt.

The fix is to rub out the extra space, insert the i-search string, and
*then* call ceol() again.

Thanks to Claus for pointing this out!

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 14:53:14 +01:00
Claus Fischer
317b43e488 rl_unintialize(): New function, free all memory after use
Free all allocated internal memory and reset variables so
rl_initialize() or readline() may be called again later.

Signed-off-by: Claus Fischer <claus.fischer@clausfischer.com>
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 14:44:24 +01:00
Claus Fischer
ed87f37409 Initialize global variables and reset to NULL on free()
Signed-off-by: Claus Fischer <claus.fischer@clausfischer.com>
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2017-11-29 14:41:50 +01:00
Joachim Nilsson
8078ff69cc Add ABI version info for libtool, start with 0.0.0
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2016-06-06 19:56:08 +02:00
Joachim Nilsson
6db7c7d440 Minor cleanup and simplification of build system
- Move 'foreign' declaration from Makefile.am's to configure script
- Move CFLAGS from configure script to src/Makefile.am
- Remove faltering license blurb at top of configure script, no need
  for this since we a) do not care, b) falls under project license

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2016-06-01 07:26:16 +02:00
Joachim Nilsson
059d97d7a9 Remove Emacs version-control handling
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2016-05-07 22:42:24 +02:00
Jakub Pawlowski
edc38768ff Add tty_flush() to rl_forced_update_display()
Forcing update should flush, otherwise weird stuff happen when writing
to console asynchronously (cursor is moved, text is not displayed).

Signed-off-by: Jakub Pawlowski <jakubpawlo@gmail.com>
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2016-01-28 19:46:53 +01:00
Joachim Nilsson
a1002f6984 Update .gitignore with generated files
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2016-01-27 09:32:19 +01:00
Joachim Nilsson
7abfadd7e6 Attempt to work around slightly bogus Coverity warnings.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2015-09-10 13:06:39 +02:00
Joachim Nilsson
295f901800 Remove generated files from autoconf et al, run ./autogen.sh instead.
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2015-09-10 10:58:09 +02:00
C0deH4cker
a1ca0d46ac Include <sys/ioctl.h> before calling ioctl() for Clang on OX X
At least when building with Clang on OS X, there is an error on
[line 1120 of editline.c][err] caused by using the `ioctl()` function
without first declaring it by including its header `<sys/ioctl.h>`.
Adding this line makes the build complete without error.

[err]: https://github.com/troglobit/editline/blob/master/src/editline.c#L1120

Signed-off-by: C0deH4cker <c0deh4cker@gmail.com>
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2015-09-08 08:23:59 +02:00
Joachim Nilsson
9c163ff72b Rename define CONFIG_ANNOYING_NOISE --> CONFIG_TERMINAL_BELL
Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2015-04-06 15:24:28 +02:00
Joachim Nilsson
6a8556733a Add support for disabling default SIGINT and EOF behavior.
This patch adds support for `--disable-eof` and `--disable-sigint` to
the Editline configure script.  With either of these two switches the
`tty_special()` function bypasses the special TTY checks making it
possible to bind Ctrl-C and Ctrl-D to custom callbacks.  This can be
useful if you want to emulate a Cisco style CLI rather than traditional
UNIX.

The user can of course also redefine the VINTR and VEOF special terminal
control characters, but these configure script switches may be easier to
use for some.

Also, the CLI example has been updated to bind Ctrl-D, Ctrl-C and Ctrl-Z
for testing purposes.

Signed-off-by: Joachim Nilsson <troglobit@gmail.com>
2015-04-06 14:53:47 +02:00