C. McEnroe <june@causal.agency> wrote:
> 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.
> ---
> 
> v2: Missed adding breaks when replacing returns with assignments.

What if someone actually wanted the prompt to change?

Cheers,
-- 
Email: Herbert Xu <herb...@gondor.apana.org.au>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt

Reply via email to