mirror of
https://github.com/junegunn/fzf.git
synced 2025-08-01 12:42:01 -07:00
11
src/core.go
11
src/core.go
@@ -476,8 +476,17 @@ func Run(opts *Options) (int, error) {
|
||||
if len(opts.Expect) > 0 {
|
||||
opts.Printer("")
|
||||
}
|
||||
transformer := func(item *Item) string {
|
||||
return item.AsString(opts.Ansi)
|
||||
}
|
||||
if opts.AcceptNth != nil {
|
||||
fn := opts.AcceptNth(opts.Delimiter)
|
||||
transformer = func(item *Item) string {
|
||||
return item.acceptNth(opts.Ansi, opts.Delimiter, fn)
|
||||
}
|
||||
}
|
||||
for i := 0; i < count; i++ {
|
||||
opts.Printer(val.Get(i).item.AsString(opts.Ansi))
|
||||
opts.Printer(transformer(val.Get(i).item))
|
||||
}
|
||||
if count == 0 {
|
||||
exitCode = ExitNoMatch
|
||||
|
@@ -51,3 +51,9 @@ func (item *Item) AsString(stripAnsi bool) string {
|
||||
}
|
||||
return item.text.ToString()
|
||||
}
|
||||
|
||||
func (item *Item) acceptNth(stripAnsi bool, delimiter Delimiter, transformer func([]Token, int32) string) string {
|
||||
tokens := Tokenize(item.AsString(stripAnsi), delimiter)
|
||||
transformed := transformer(tokens, item.Index())
|
||||
return StripLastDelimiter(transformed, delimiter)
|
||||
}
|
||||
|
@@ -1575,9 +1575,7 @@ func (t *Terminal) output() bool {
|
||||
}
|
||||
if t.acceptNth != nil {
|
||||
transform = func(item *Item) string {
|
||||
tokens := Tokenize(item.AsString(t.ansi), t.delimiter)
|
||||
transformed := t.acceptNth(tokens, item.Index())
|
||||
return StripLastDelimiter(transformed, t.delimiter)
|
||||
return item.acceptNth(t.ansi, t.delimiter, t.acceptNth)
|
||||
}
|
||||
}
|
||||
found := len(t.selected) > 0
|
||||
|
@@ -238,6 +238,11 @@ class TestCore < TestInteractive
|
||||
assert_equal %w[5555 55], fzf_output_lines
|
||||
end
|
||||
|
||||
def test_select_1_accept_nth
|
||||
tmux.send_keys "seq 1 100 | #{fzf(:with_nth, '..,..', :print_query, :q, 5555, :'1', :accept_nth, '"{1} // {1}"')}", :Enter
|
||||
assert_equal ['5555', '55 // 55'], fzf_output_lines
|
||||
end
|
||||
|
||||
def test_exit_0
|
||||
tmux.send_keys "seq 1 100 | #{fzf(:with_nth, '..,..', :print_query, :q, 555_555, :'0')}", :Enter
|
||||
assert_equal %w[555555], fzf_output_lines
|
||||
|
Reference in New Issue
Block a user