1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-06-23 11:08:19 +02:00

users/29175: Don't need to forget zle edits if none

This commit is contained in:
Nojus Gudinavičius 2023-08-21 15:48:06 +03:00 committed by Peter Stephenson
parent d36b9ae0dc
commit 094f230e36
2 changed files with 18 additions and 0 deletions

View file

@ -1,3 +1,9 @@
2023-08-22 Peter Stephenson <p.stephenson@samsung.com>
* Nojus Gudinavičius: users/29175: Src/Zle/zle_hist.c: don't
need to forget edits if none were made, avoiding loop over
entire history.
2023-08-21 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp> 2023-08-21 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
* Shohei YOSHIDA: 52059 (+52070): Completion/Unix/Command/_scons: * Shohei YOSHIDA: 52059 (+52070): Completion/Unix/Command/_scons:

View file

@ -68,6 +68,13 @@ Keymap isearch_keymap;
*/ */
#define GETZLETEXT(ent) ((ent)->zle_text ? (ent)->zle_text : (ent)->node.nam) #define GETZLETEXT(ent) ((ent)->zle_text ? (ent)->zle_text : (ent)->node.nam)
/*
* Flag that edits have been made to a zle line.
* If not set, nothing to forget.
*/
/**/
int have_edits = 0;
/**/ /**/
void void
remember_edits(void) remember_edits(void)
@ -81,6 +88,7 @@ remember_edits(void)
if (ent->zle_text) if (ent->zle_text)
free(ent->zle_text); free(ent->zle_text);
ent->zle_text = zlemetaline ? ztrdup(line) : line; ent->zle_text = zlemetaline ? ztrdup(line) : line;
have_edits = 1;
} else if (!zlemetaline) } else if (!zlemetaline)
free(line); free(line);
} }
@ -90,6 +98,10 @@ remember_edits(void)
void void
forget_edits(void) forget_edits(void)
{ {
if (!have_edits) {
return;
}
have_edits = 0;
Histent he; Histent he;
for (he = hist_ring; he; he = up_histent(he)) { for (he = hist_ring; he; he = up_histent(he)) {