From aaa5c1896f44232e28ce2ad5fd287772ec5e8f8d Mon Sep 17 00:00:00 2001 From: NeilBrown Date: Thu, 15 Nov 2012 10:59:04 +1100 Subject: [PATCH] vpatch: allow mode setting keys to toggle back to 'merge'. When I set the mode to anything other than 'merge', I usually want to then go straight back to 'merge'. And if someone does it by mistake, a toggle function is easier to guess. So make all mode setting commands toggle between their mode, and 'merge'. Signed-off-by: NeilBrown --- vpatch.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/vpatch.c b/vpatch.c index 99ec97e..fcace15 100644 --- a/vpatch.c +++ b/vpatch.c @@ -1938,37 +1938,50 @@ static int merge_window(struct plist *p, FILE *f, int reverse) break; case 'a': /* 'after' view in patch window */ + if (mode == AFTER) + goto set_merge; mode = AFTER; modename = "after"; modehelp = after_help; mmode = mode; curs.alt = 0; refresh = 3; break; case 'b': /* 'before' view in patch window */ + if (mode == BEFORE) + goto set_merge; mode = BEFORE; modename = "before"; modehelp = before_help; mmode = mode; curs.alt = 0; refresh = 3; break; case 'o': /* 'original' view in the merge window */ + if (mode == ORIG) + goto set_merge; mode = ORIG; modename = "original"; modehelp = orig_help; mmode = mode; curs.alt = 0; refresh = 3; break; case 'r': /* the 'result' view in the merge window */ + if (mode == RESULT) + goto set_merge; mode = RESULT; modename = "result"; modehelp = result_help; mmode = mode; curs.alt = 0; refresh = 3; break; case 'd': + if (mode == (BEFORE|AFTER)) + goto set_merge; mode = BEFORE|AFTER; modename = "diff"; modehelp = diff_help; mmode = mode; curs.alt = 0; refresh = 3; break; case 'm': + set_merge: mode = ORIG|RESULT; modename = "merge"; modehelp = merge_help; mmode = mode; curs.alt = 0; refresh = 3; break; case '|': + if (mode == (ORIG|RESULT|BEFORE|AFTER)) + goto set_merge; mode = ORIG|RESULT|BEFORE|AFTER; modename = "sidebyside"; modehelp = sidebyside_help; mmode = mode; curs.alt = 0; refresh = 3; -- 2.39.5