| Commit message (Collapse) | Author | Age |
|
|
|
|
|
| |
editline does not render a multi-line PS1 correctly when RPS1 is also
set. To work around this, return only the last line of the cached prompt
to editline, and print the leading lines separately inside setprompt.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, the prompt would be expanded every time editline called the
getprompt callback. I think the code may have been written assuming that
editline only calls getprompt once per prompt, but it may actually call
it many times, for instance every time you type backspace. This results
not only in slower editing from expanding complex prompts repeatedly, it
also consumes more and more stack memory each time getprompt is called.
This can be seen by setting PS1 to some command substitution, typing
many characters at the prompt, then holding backspace and observing
memory usage. Thankfully all this stack memory is freed between prompts
by the stackmark calls around el_gets.
This change causes prompt expansion to always happen in the setprompt
call, as it would when editline is disabled, and a cached copy of the
prompt is saved for getprompt to return every time editline calls it.
Since getprompt is no longer doing expansion, the stackmark calls
surrounding el_gets can be removed.
|
|
|
|
|
|
|
|
|
|
| |
Check if the FreeBSD (and by extension macOS) _el_fn_sh_complete version
of the function exists, which does shell escaping of completed filenames
before _el_fn_complete learned to.
Tab is bound after calling el_set() and el_source() since the default
bindings set tab to something else, and it should always be filename
completion in the shell.
|
| |
|
|
|
|
|
| |
Previously, configure --with-libedit would only fail in the case where
libedit is available but its header file histedit.h is not.
|
|
From tag 'v0.5.11.2'.
|