summaryrefslogtreecommitdiff
path: root/Src/Zle/zle_hist.c
diff options
context:
space:
mode:
authorNojus Gudinavičius <nojus.gudinavicius@gmail.com>2023-08-21 15:48:06 +0300
committerPeter Stephenson <p.stephenson@samsung.com>2023-08-22 14:29:44 +0100
commit094f230e36a4de266921ed21c0d8f3f37e634073 (patch)
tree0503c1420eb531bbad5dcd56246d73f545f91528 /Src/Zle/zle_hist.c
parentd36b9ae0dc4fdf3324f8d2ff66a174785a485932 (diff)
downloadzsh-094f230e36a4de266921ed21c0d8f3f37e634073.tar.gz
zsh-094f230e36a4de266921ed21c0d8f3f37e634073.zip
users/29175: Don't need to forget zle edits if none
Diffstat (limited to 'Src/Zle/zle_hist.c')
-rw-r--r--Src/Zle/zle_hist.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/Src/Zle/zle_hist.c b/Src/Zle/zle_hist.c
index cfaa70dae..0fdad70d9 100644
--- a/Src/Zle/zle_hist.c
+++ b/Src/Zle/zle_hist.c
@@ -68,6 +68,13 @@ Keymap isearch_keymap;
*/
#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
remember_edits(void)
@@ -81,6 +88,7 @@ remember_edits(void)
if (ent->zle_text)
free(ent->zle_text);
ent->zle_text = zlemetaline ? ztrdup(line) : line;
+ have_edits = 1;
} else if (!zlemetaline)
free(line);
}
@@ -90,6 +98,10 @@ remember_edits(void)
void
forget_edits(void)
{
+ if (!have_edits) {
+ return;
+ }
+ have_edits = 0;
Histent he;
for (he = hist_ring; he; he = up_histent(he)) {