summary refs log tree commit diff
path: root/bin/bri.c
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-12-23 14:19:58 -0500
committerJune McEnroe <june@causal.agency>2020-12-23 15:56:18 -0500
commite50150458145caddac0fb0e2dd75cf99042e2b06 (patch)
tree22ad917fc6cab92659d5c23733ef78bdc9255cd2 /bin/bri.c
parentBind libedit's secret filename completion function (diff)
downloadsrc-e50150458145caddac0fb0e2dd75cf99042e2b06.tar.gz
src-e50150458145caddac0fb0e2dd75cf99042e2b06.zip
Cache the expanded prompt for editline
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.
Diffstat (limited to 'bin/bri.c')
0 files changed, 0 insertions, 0 deletions
Consolidate pbd, pbcopy, pbpasteJune McEnroe 2017-07-04Reorganize neovim configuration, againJune McEnroe 2017-07-04Remove <Esc><Esc> terminal mappingJune McEnroe <C-w><Esc> works just as well. Convenient. 2017-07-04Generalize C-w neovim terminal mappingJune McEnroe 2017-07-04Remove tmuxJune McEnroe tmux configuration was starting to bother me, and it got worse with Sierra. Turns out that neovim terminal emulation is much more natural to work with and requires less configuration, though I still disapprove of the feature being included in an editor! For detaching and attaching sessions, abduco is a simple tool that seems to work decently, but given that I will likely only be running neovim in the sessions, I might come up with something even simpler. 2017-07-04Show terminal title in statuslineJune McEnroe 2017-07-04Add nvim terminal mappingsJune McEnroe 2017-06-29Add color to xxJune McEnroe 2017-06-28Set tmux copy-mode-vi bindings for TarmakJune McEnroe 2017-06-27Link Scala syntax fileJune McEnroe Oops. 2017-06-27Clean up top of trivial colorscheme fileJune McEnroe 2017-06-27Fix Scala syntax highlight linksJune McEnroe