@ 261102.1

250226.2 · 710ebdf9c14e0c88b0cfc843ce08edcdd4554571

Make --accept-nth compatible with --select-1

Fix #4287

reading declarations

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

src/item.go

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

src/terminal.go

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

test/test_core.rb

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