summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJunegunn Choi <junegunn.c@gmail.com>2020-07-28 12:58:37 +0900
committerJunegunn Choi <junegunn.c@gmail.com>2020-07-28 12:58:37 +0900
commitaa5dae391b1e0de23996ddebeda7d15041d1ad0b (patch)
treeee6fa54be162211dc6ddef0334e8af11b6e44d51
parent08a6fd4ad4334b00a08427b335caa5476b8d789f (diff)
Fix handling of unicode characters in query string
-rw-r--r--src/terminal.go10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/terminal.go b/src/terminal.go
index c144569a..87703d3e 100644
--- a/src/terminal.go
+++ b/src/terminal.go
@@ -405,8 +405,8 @@ func NewTerminal(opts *Options, eventBox *util.EventBox) *Terminal {
}
renderer = tui.NewLightRenderer(opts.Theme, opts.Black, opts.Mouse, opts.Tabstop, opts.ClearOnExit, false, maxHeightFunc)
}
- wordRubout := "[^[:alnum:]][[:alnum:]]"
- wordNext := "[[:alnum:]][^[:alnum:]]|(.$)"
+ wordRubout := "[^\\pL\\pN][\\pL\\pN]"
+ wordNext := "[\\pL\\pN][^\\pL\\pN]|(.$)"
if opts.FileWord {
sep := regexp.QuoteMeta(string(os.PathSeparator))
wordRubout = fmt.Sprintf("%s[^%s]", sep, sep)
@@ -1232,7 +1232,8 @@ func findLastMatch(pattern string, str string) int {
if locs == nil {
return -1
}
- return locs[len(locs)-1][0]
+ prefix := []rune(str[:locs[len(locs)-1][0]])
+ return len(prefix)
}
func findFirstMatch(pattern string, str string) int {
@@ -1244,7 +1245,8 @@ func findFirstMatch(pattern string, str string) int {
if loc == nil {
return -1
}
- return loc[0]
+ prefix := []rune(str[:loc[0]])
+ return len(prefix)
}
func copySlice(slice []rune) []rune {