diff options
author | Junegunn Choi <junegunn.c@gmail.com> | 2020-08-02 10:02:11 +0900 |
---|---|---|
committer | Junegunn Choi <junegunn.c@gmail.com> | 2020-08-02 10:03:17 +0900 |
commit | 92b7efafcacfa5c5de2a8f22abd859b8fc994748 (patch) | |
tree | 8d528a73a88a3339b7dbcd5e87d9dd166b8b03f9 | |
parent | f092e4038fd1344bcd0a7c11f7ab7355734f7275 (diff) |
Ignore punctuation characters before and after preview offset column
This is to allow line numbers in a ctags output (e.g. 123;")
-rw-r--r-- | src/terminal.go | 8 | ||||
-rwxr-xr-x | test/test_go.rb | 9 |
2 files changed, 13 insertions, 4 deletions
diff --git a/src/terminal.go b/src/terminal.go index 87703d3e..a7e9e9b2 100644 --- a/src/terminal.go +++ b/src/terminal.go @@ -23,12 +23,14 @@ import ( // import "github.com/pkg/profile" var placeholder *regexp.Regexp +var numericPrefix *regexp.Regexp var activeTempFiles []string const ellipsis string = ".." func init() { placeholder = regexp.MustCompile(`\\?(?:{[+sf]*[0-9,-.]*}|{q}|{\+?f?nf?})`) + numericPrefix = regexp.MustCompile(`^[[:punct:]]*([0-9]+)`) activeTempFiles = []string{} } @@ -1361,7 +1363,11 @@ func (t *Terminal) replacePlaceholder(template string, forcePlus bool, input str // Ascii to positive integer func atopi(s string) int { - n, e := strconv.Atoi(strings.ReplaceAll(s, "'", "")) + matches := numericPrefix.FindStringSubmatch(s) + if len(matches) < 2 { + return 0 + } + n, e := strconv.Atoi(matches[1]) if e != nil || n < 1 { return 0 } diff --git a/test/test_go.rb b/test/test_go.rb index 2afb5b81..bb5eb45f 100755 --- a/test/test_go.rb +++ b/test/test_go.rb @@ -1801,9 +1801,12 @@ class TestGoFZF < TestBase end def test_preview_scroll_begin_and_offset - tmux.send_keys "echo foo 123 321 | #{FZF} --preview 'seq 1000' --preview-window left:+{2}-2", :Enter - tmux.until { |lines| lines.item_count == 1 } - tmux.until { |lines| assert_match %r{121.*121/1000}, lines[1] } + ['echo foo 123 321', 'echo foo :123: 321'].each do |input| + tmux.send_keys "#{input} | #{FZF} --preview 'seq 1000' --preview-window left:+{2}-2", :Enter + tmux.until { |lines| lines.item_count == 1 } + tmux.until { |lines| assert_match %r{121.*121/1000}, lines[1] } + tmux.send_keys 'C-c' + end end def test_normalized_match |