Ignore punctuation characters before and after preview offset column

This is to allow line numbers in a ctags output (e.g. 123;")
This commit is contained in:
Junegunn Choi 2020-08-02 10:02:11 +09:00
parent f092e4038f
commit 92b7efafca
No known key found for this signature in database
GPG Key ID: 254BC280FEF9C627
2 changed files with 13 additions and 4 deletions

View File

@ -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
}

View File

@ -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