diff --git a/internal/action/bindings.go b/internal/action/bindings.go index 6fba69e0..7cad325a 100644 --- a/internal/action/bindings.go +++ b/internal/action/bindings.go @@ -60,7 +60,7 @@ func BindKey(k, v string) { config.Bindings[k] = v } -// findKeyEvent will find binding Key 'b' using string 'k' +// findEvent will find binding Key 'b' using string 'k' func findEvent(k string) (b Event, ok bool) { modifiers := tcell.ModNone diff --git a/internal/action/command.go b/internal/action/command.go index 39dc2c2a..082d0746 100644 --- a/internal/action/command.go +++ b/internal/action/command.go @@ -743,28 +743,35 @@ func (h *BufPane) ReplaceCmd(args []string) { all := false noRegex := false - if len(args) > 2 { - for _, arg := range args[2:] { - switch arg { - case "-a": - all = true - case "-l": - noRegex = true - default: + foundSearch := false + foundReplace := false + var search string + var replaceStr string + for _, arg := range args { + switch arg { + case "-a": + all = true + case "-l": + noRegex = true + default: + if !foundSearch { + foundSearch = true + search = arg + } else if !foundReplace { + foundReplace = true + replaceStr = arg + } else { InfoBar.Error("Invalid flag: " + arg) return } } } - search := args[0] - if noRegex { search = regexp.QuoteMeta(search) } - replace := []byte(args[1]) - replaceStr := args[1] + replace := []byte(replaceStr) var regex *regexp.Regexp var err error diff --git a/internal/util/util.go b/internal/util/util.go index bfbe43b1..d10c9851 100644 --- a/internal/util/util.go +++ b/internal/util/util.go @@ -407,3 +407,7 @@ func Clamp(val, min, max int) int { func IsNonAlphaNumeric(c rune) bool { return !unicode.IsLetter(c) && !unicode.IsNumber(c) } + +func ParseSpecial(s string) string { + return strings.Replace(s, "\\t", "\t", -1) +}