From c7ff843ecf60ab74ce98929e45029b1aef5014e1 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Wed, 5 Nov 2014 22:50:48 +0100 Subject: 33604: fix change merging for vi mode where a change has just been undone --- Src/Zle/zle_utils.c | 6 +++--- Src/Zle/zle_vi.c | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) (limited to 'Src/Zle') diff --git a/Src/Zle/zle_utils.c b/Src/Zle/zle_utils.c index 741f119d2..e95a34b95 100644 --- a/Src/Zle/zle_utils.c +++ b/Src/Zle/zle_utils.c @@ -1395,7 +1395,8 @@ static struct change *nextchanges, *endnextchanges; /* incremented to provide a unique change number */ -static zlong undo_changeno; +/**/ +zlong undo_changeno; /* If non-zero, the last increment to undo_changeno was for the variable */ @@ -1668,8 +1669,7 @@ splitundo(char **args) { if (vistartchange >= 0) { mergeundo(); - vistartchange = (curchange && curchange->prev) ? - curchange->prev->changeno : 0; + vistartchange = undo_changeno; } handleundo(); return 0; diff --git a/Src/Zle/zle_vi.c b/Src/Zle/zle_vi.c index 18c76f917..d74b40d62 100644 --- a/Src/Zle/zle_vi.c +++ b/Src/Zle/zle_vi.c @@ -109,7 +109,7 @@ startvitext(int im) { startvichange(im); selectkeymap("main", 1); - vistartchange = (curchange && curchange->prev) ? curchange->prev->changeno : 0; + vistartchange = undo_changeno; viinsbegin = zlecs; } @@ -403,7 +403,7 @@ vichange(UNUSED(char **args)) forekill(c2 - zlecs, CUT_RAW); selectkeymap("main", 1); viinsbegin = zlecs; - vistartchange = (curchange && curchange->prev) ? curchange->prev->changeno : 0; + vistartchange = undo_changeno; } return ret; } -- cgit 1.4.1