diff --git a/src/options.go b/src/options.go index 6eafa545..1fb649f2 100644 --- a/src/options.go +++ b/src/options.go @@ -938,7 +938,11 @@ Loop: break } // Keep + or , at the end - masked += strings.Repeat(" ", loc[1]-1) + action[loc[1]-1:loc[1]] + lastChar := action[loc[1]-1] + if lastChar == '+' || lastChar == ',' { + loc[1]-- + } + masked += strings.Repeat(" ", loc[1]) action = action[loc[1]:] } masked = strings.Replace(masked, "::", string([]rune{escapedColon, ':'}), -1) diff --git a/src/options_test.go b/src/options_test.go index fbf319e0..8754716c 100644 --- a/src/options_test.go +++ b/src/options_test.go @@ -499,3 +499,12 @@ func TestParseSingleActionListError(t *testing.T) { t.Errorf("Failed to detect error") } } + +func TestMaskActionContents(t *testing.T) { + original := ":execute((f)(o)(o)(b)(a)(r))+change-query@qu@ry@+up,x:reload:hello:world" + expected := ":execute +change-query +up,x:reload " + masked := maskActionContents(original) + if masked != expected { + t.Errorf("Not masked: %s", masked) + } +}