Commit Graph

752 Commits (a0b42e6538092dc6dea9f918a7a74c9408e44d4c)

Author SHA1 Message Date
Junegunn Choi eaa413c566
Fix error when preview command failed to start 4 years ago
Junegunn Choi 552414978e
0.24.0-rc1 4 years ago
Junegunn Choi 607081bbaa
[vim] Download latest binary to meet version requirement 4 years ago
Junegunn Choi 2e8e63fb0b
Add more --border options
Instead of drawing the window border in Vim using an extra window,
extend the --border option so that we do can it natively.

Close #2223
Fix #2184
4 years ago
Junegunn Choi 9b946f2b7a
Fix preview window of tcell renderer 4 years ago
Junegunn Choi 11841f688b
Add support for text styling using --color
Close #1663
4 years ago
Junegunn Choi 03c4f04246
Use 64-bit integer for preview version 4 years ago
Junegunn Choi a1f06ae27f
Fix regression where empty preview content is not displayed 4 years ago
Junegunn Choi 69dffd78a6
Do not assume that each character takes at least 1 column
Fixes #2163, though this is not a proper fix to the problem.
4 years ago
Junegunn Choi a4d9b0b468
Support ANSI escape sequence for clearing display in preview window
fzf --preview 'for i in $(seq 100000); do
    (( i % 200 == 0 )) && printf "\033[2J"
    echo "$i"
    sleep 0.01
  done'
4 years ago
Junegunn Choi d2d4d68585
Always show the number of selected entries to indicate if --multi is enabled
Close #2217

  seq 100 | fzf
    # 100/100
  seq 100 | fzf --multi
    # 100/100 (0)
  seq 100 | fzf --multi 5
    # 100/100 (0/5)
4 years ago
Junegunn Choi faf68dbc5c
Implement streaming preview window (#2215)
Fix #2212

    # Will start rendering after 200ms, update every 100ms
    fzf --preview 'for i in $(seq 100); do echo $i; sleep 0.01; done'

    # Should print "Loading .." message after 500ms
    fzf --preview 'sleep 1; for i in $(seq 100); do echo $i; sleep 0.01; done'

    # The first line should appear after 200ms
    fzf --preview 'date; sleep 2; date'

    # Should not render before enough lines for the scroll offset are ready
    rg --line-number --no-heading --color=always ^ |
      fzf --delimiter : --ansi --preview-window '+{2}-/2' \
          --preview 'sleep 1; bat --style=numbers --color=always --pager=never --highlight-line={2} {1}'
4 years ago
Junegunn Choi fc7630a66d
0.23.1 4 years ago
Junegunn Choi 3248153d9f
Add --preview-window=default for resetting the options 4 years ago
Junegunn Choi 865144850d
Add nowrap, nocycle, nohidden for --preview-window
Close #2203
4 years ago
Junegunn Choi d9752a4c21
Reset preview window flags that are not style-related
Fix #2203
4 years ago
Junegunn Choi dba14d2630
0.23.0 4 years ago
Junegunn Choi 1d8bd11b67
Fix preview window size calculation 4 years ago
Junegunn Choi bafb99d520
Allow splitting preview-window options
e.g. --preview-window sharp --preview-window cycle
4 years ago
Junegunn Choi 3cc8a74a91
Add --preview-window option for cyclic scrolling
Close #2182
4 years ago
Tinmarino c0aa5a438f
Add preview-half-page-down and preview-half-page-up (#2145) 4 years ago
Junegunn Choi 6f9663da62
Always allow preview/execute commands with no placeholder expressions
Fix #2017
4 years ago
Wenxuan f8ae1786dd
Fix items width limit (#2190) 4 years ago
Michael Kelley ae15eda546
Add truecolor support for Windows, if available (#2156)
- Update to latest tcell which has 24 bit Windows support
- light renderer under Windows defaults to Dark256, if possible
- Respect TCELL_TRUECOLOR
- Remove tcell 1.3 references
4 years ago
Junegunn Choi f2d44ab5a7
Revert horizontal padding around preview window on "noborder"
Use 2-space horizontal padding so that the preview content is aligned
with the candidate list when the position of the preview window is `up`
or `down`.
4 years ago
Junegunn Choi 43798fc2e8
Revert 1ab4289: Preview window of size 0 is allowed 4 years ago
Junegunn Choi 9dc4b40d7a
Add more preview window options and reduce vertical padding on noborder
Fix #2138
Fix #2029
4 years ago
Junegunn Choi 1cb19dbf65
Support preview scroll offset relative to window height
Related: https://github.com/junegunn/fzf.vim/issues/1092
4 years ago
Junegunn Choi 1ab4289ad6
Disallow preview-window size of zero 4 years ago
Junegunn Choi e2ae1b249c
0.22.0 4 years ago
Junegunn Choi 92b7efafca
Ignore punctuation characters before and after preview offset column
This is to allow line numbers in a ctags output (e.g. 123;")
4 years ago
Junegunn Choi f092e4038f
Smart match of accented characters
Fix #1618
4 years ago
Junegunn Choi aa5dae391b
Fix handling of unicode characters in query string 4 years ago
Junegunn Choi a61150a96c
Allow negative field index in preview-window scroll offset 4 years ago
Junegunn Choi 0f9cb5590e
Add preview window option for setting the initial scroll offset
Close #1057
Close #2120

  # Initial scroll offset is set to the line number of each line of
  # git grep output *minus* 5 lines
  git grep --line-number '' |
    fzf --delimiter : --preview 'nl {1}' --preview-window +{2}-5
4 years ago
Junegunn Choi 8e027c445f
Support ANSI colors in --prompt string
Close #2086
4 years ago
Junegunn Choi e0217e8c79
Ignore cursor position report
Close #2081
4 years ago
Junegunn Choi 3ab1c42266
Use rune characters instaed of numbers in code 4 years ago
Junegunn Choi 199bc3f0ad
Merge branch 'master' into devel 4 years ago
Junegunn Choi 17dd833925
Add preview action for --bind
Fix #2010
Fix #1638
4 years ago
Khon Trieu 4ec144c969
Accented character normalization for Vietnamese characters (#2090)
Fix #2088
4 years ago
Junegunn Choi c33258832e
Add refresh-preview action 4 years ago
Junegunn Choi a7aa08ce07
Add backward-eof event for --bind 4 years ago
Junegunn Choi 97a725fbd0
Do not disable mouse after execute(-silent) when --height option is used
The action takes place in the alternate screen so the offsets should
still be correct.
4 years ago
Jack Bates 5deaf58928
Run rubocop --auto-correct --disable-uncorrectable (#1967)
Co-authored-by: Junegunn Choi <junegunn.c@gmail.com>
4 years ago
Junegunn Choi 334a4fa159
0.21.1 4 years ago
Alexandr a6a732e1fc
Update AtomicBool to use atomic memory operation (#1939) 4 years ago
Junegunn Choi 07b965bba1
Fix ANSI color offsets when --keep-right is used 4 years ago
Junegunn Choi c39113ee41
[windows] Do not include directories in the list
Fix #1926
4 years ago
Junegunn Choi b0673c3563
0.21.0 4 years ago
Junegunn Choi 373c6d8d55
Add --keep-right option to keep the right end of the line visible
Close #1652
4 years ago
Michael Kelley 7d5985baf9
Make height option work under Windows (#1341)
Separate Unix & Windows code into platform specific files for light renderer
4 years ago
Junegunn Choi ba82f0bef9
Do not read more than 10K characters from /dev/tty
This might help with #1456 where fzf hangs consuming CPU resources.
4 years ago
Junegunn Choi d9b1211191
Add more --border options; default changed to "rounded"
--border option now takes an optional argument that defines the style

  - rounded (new default)
  - sharp
  - horizontal (previous default)
4 years ago
Junegunn Choi dd49e41c42
Ignore xterm OSC control sequences
- OSC Ps ; Pt BEL
- OSC Ps ; Pt ST

Fix #1415
4 years ago
Junegunn Choi 4c9cab3f8a
Fix prefix/suffix/equal matcher to trim whitespaces
- Prefix matcher will trim leading whitespaces only when the pattern
  doesn't start with a whitespace
- Suffix matcher will trim trailing whitespaces only when the pattern
  doesn't end with a whitespace
- Equal matcher will trim leading whitespaces only when the pattern
  doesn't start with a whitespace, and trim trailing whitespaces only
  when the pattern doesn't end with a whitespace

Previously, only suffix matcher would trim whitespaces unconditionally.

Fix #1894
4 years ago
James Wright 9f0626da64
Add backward-delete-char/eof action (#1891)
'backward-delete-char/eof' will either abort if query is
empty or delete one character backwards.
4 years ago
Junegunn Choi dca56da0ef
Add 'insert' key for --bind
Close #1744
4 years ago
Junegunn Choi ec75d16ea8
Fix panic on unexpected escape sequences 4 years ago
Junegunn Choi 567c8303bf
Update ANSI processor to handle "rmso" and "rmul"
Fix #1877
4 years ago
Hiroki Konishi 2a60edcd52
Make pointer and multi-select marker customizable (#1844)
Add --pointer and --marker option which can provide additional context to the user
4 years ago
Hiroki Konishi d61ac32d7b
Fix bug of validation of jump-labels (#1875)
When jump-labels are specified with `--jump-labels=` way, validation was
not carried out.
4 years ago
Junegunn Choi 8583b150c9
Fix inline info truncation 4 years ago
mattn 311b78ae82
[windows] Use native walker since output of DOS command is not UTF-8 encoded (#1847)
Makes scanning 300x faster on Windows
4 years ago
Shun Sakai 3918c45ced Update copyright year (#1832)
Update copyright year to 2020 and change to multi-year format.
4 years ago
Tony Metzidis f246fb2fc2 Show error message when failed to start preview command (#1810)
Fix #1637
4 years ago
Aaron Bieber a1bcdc225e Add pledge(2) support (OpenBSD only) via a 'protector' package. (#1297) 4 years ago
Junegunn Choi 7771241cc0
Fix F1, F2, F3, F4 on rxvt-unicode
Tested on urxvt.
Fix #1799.
4 years ago
Junegunn Choi 6e3af646b2
Draw spinner with Unicode characters 4 years ago
Junegunn Choi 577024f1e9
Use rounded corners 5 years ago
Junegunn Choi 30577b0c17
0.20.0 5 years ago
Junegunn Choi 212de25409
Fix incorrect header array mutation 5 years ago
Junegunn Choi 3db6b88d82
Add preview-fg and preview-bg for --color
Close #1776
5 years ago
Junegunn Choi 8ae96774df Gutter color of 16-color theme should be undefined by default 5 years ago
Junegunn Choi 2b725a4db5
Defer resetting multi-selection on reload 5 years ago
Junegunn Choi af1a5f130b
Add clear-query and clear-selection
Close #1787
Related #1364
5 years ago
Junegunn Choi 86e3994e87 Properly clear list when --header-lines not filled on reload 5 years ago
Junegunn Choi 1e6ac5590e 'reload' action should be allowed even where there's no match
If the command template doesn't have any placeholder expressions.

    : | fzf --bind 'space:reload:seq 10'
5 years ago
Junegunn Choi 394d8cfd18
Remove immediate flickering on reload action 5 years ago
Junegunn Choi e615600ff1 Allow action composition over multiple --bind
# Note + prefix in the second bind expression
  fzf --bind u:up --bind u:+up
  fzf --bind u:up+up
5 years ago
Junegunn Choi 60465c4664 Fix parse error of --bind expression 5 years ago
Junegunn Choi 9a41fd5327
0.19.0 5 years ago
Junegunn Choi 2886f06977
Fix --preview-window noborder with non-default background color 5 years ago
Junegunn Choi d630484eeb
Update error message for --preview-window 5 years ago
Junegunn Choi e24299239e
Add `--preview-window noborder` option to disable preview border
Close #1699
5 years ago
Junegunn Choi d2fa470165
Add --info=STYLE [default|inline|hidden]
Close #1738
5 years ago
Junegunn Choi 168453da71
More key chords for --bind
Close #1752
5 years ago
Junegunn Choi 751aa1944a
Remove trailing whitespaces when using --with-nth 5 years ago
Junegunn Choi 05b5f3f845
'reload' action should reset multi-selection 5 years ago
Junegunn Choi 7e1c0f39e7
'reload' action should reset --header-lines 5 years ago
Junegunn Choi deccf20a35
Fix regression of select-all 5 years ago
Junegunn Choi 73c0a645e0
Remove unnecessary reader barrier on --filter mode 5 years ago
Junegunn Choi 78da928727
Experimental implementation of "reload" action
# Reload input list with different sources
  seq 10 | fzf --bind 'ctrl-a:reload(seq 100),ctrl-b:reload(seq 1000)'

  # Reload as you type
  seq 10 | fzf --bind 'change:reload:seq {q}' --phony

  # Integration with ripgrep
  RG_PREFIX="rg --column --line-number --no-heading --color=always --smart-case "
  INITIAL_QUERY=""
  FZF_DEFAULT_COMMAND="$RG_PREFIX '$INITIAL_QUERY'" \
    fzf --bind "change:reload:$RG_PREFIX {q} || true" \
        --ansi --phony --query "$INITIAL_QUERY"

Close #751
Close #965
Close #974
Close #1736
Related #1723
5 years ago
Junegunn Choi 11962dabba
Add --phony option for disabling search
With --phony, fzf becomes a simply selector interface without its own
search functionality. The query string is only used for building the
command for preview or execute action.

Close #1723
5 years ago
Alexandr b4cccf23d4 Improvements to code quality and readability (#1737)
* Remove 1 unused field and 3 unused functions

unused elements fount by running
golangci-lint run --disable-all --enable unused

src/result.go:19:2: field `index` is unused (unused)
        index  int32
        ^
src/tui/light.go:716:23: func `(*LightWindow).stderr` is unused (unused)
func (w *LightWindow) stderr(str string) {
                      ^
src/terminal.go:1015:6: func `numLinesMax` is unused (unused)
func numLinesMax(str string, max int) int {
     ^
src/tui/tui.go:167:20: func `ColorPair.is24` is unused (unused)
func (p ColorPair) is24() bool {
                   ^

* Address warnings from "gosimple" linter

src/options.go:389:83: S1003: should use strings.Contains(str, ",,,") instead (gosimple)
        if str == "," || strings.HasPrefix(str, ",,") || strings.HasSuffix(str, ",,") || strings.Index(str, ",,,") >= 0 {
                                                                                         ^
src/options.go:630:18: S1007: should use raw string (`...`) with regexp.MustCompile to avoid having to escape twice (gosimple)
        executeRegexp = regexp.MustCompile(
                        ^
src/terminal.go:29:16: S1007: should use raw string (`...`) with regexp.MustCompile to avoid having to escape twice (gosimple)
        placeholder = regexp.MustCompile("\\\\?(?:{[+sf]*[0-9,-.]*}|{q}|{\\+?f?nf?})")
                      ^
src/terminal_test.go:92:10: S1007: should use raw string (`...`) with regexp.MustCompile to avoid having to escape twice (gosimple)
        regex = regexp.MustCompile("\\w+")
                ^

* Address warnings from "staticcheck" linter

src/algo/algo.go:374:2: SA4006: this value of `offset32` is never used (staticcheck)
        offset32, T := alloc32(offset32, slab, N)
        ^
src/algo/algo.go:456:2: SA4006: this value of `offset16` is never used (staticcheck)
        offset16, C := alloc16(offset16, slab, width*M)
        ^
src/tui/tui.go:119:2: SA9004: only the first constant in this group has an explicit type (staticcheck)
        colUndefined Color = -2
        ^
5 years ago
Junegunn Choi 68683c444f
Fix argument parser for -m
/cc @tessus
5 years ago
Junegunn Choi a185593d65
Remove unnecessary map lookup 5 years ago
Junegunn Choi 525040238e
Fix behavior of 'deselect-all' to only deselect matches
To make it consistent with select-all and toggle-all.

Close #1364
5 years ago
Junegunn Choi 072066c49c
--multi to take optional argument to limit the number of selection
Close #1718
Related #688
5 years ago
Simon Fraser 391669a451 Add 'f' flag for placeholder expression (#1733)
If present the contents of the selection will be placed in a temporary file,
and the filename will be placed into the string instead.
5 years ago
Junegunn Choi 3b1e37f718
Fix #1657: alt-0 to alt-9 5 years ago
Christian Muehlhaeuser 6577388250 os.Kill signal cannot be trapped (#1641) 5 years ago
Christian Muehlhaeuser 3b9dbd4146 Code cleanup: remove unnecessary string conversions (#1642) 5 years ago
Christian Muehlhaeuser a1260feeed Code cleanup (#1640)
- Replaced time.Now().Sub() with time.Since()
- Replaced unnecessary string/byte slice conversions
- Removed obsolete return and value assignment in range loop
5 years ago
Junegunn Choi 0e3e6ac442
Disallow preview scroll when the content just fits the window 5 years ago
Junegunn Choi ef492f6178
Output --help message to standard output
Close #1554
5 years ago
Junegunn Choi ff951341c9
0.18.0 5 years ago
Junegunn Choi 07d755df11
Fix regression of prompt display 5 years ago
Junegunn Choi 37585bd5a5
Disable preview scroll if the content fits on the screen
Close #1540
5 years ago
Junegunn Choi 89e24bf8f2
Fix ineffective break statement 5 years ago
Junegunn Choi 8d2fcd3518
Avoid unnecessary redraw of the preview window 5 years ago
Junegunn Choi f39ab3875e
Redraw prompt only when necessary 5 years ago
Junegunn Choi 75972d59a8
Add --no-unicode option to draw borders in ASCII characters
Close ##1533
5 years ago
Junegunn Choi 2157f4f193
Add color option for gutter
fzf --color gutter:-1

Close #1529
Close #1468
5 years ago
Junegunn Choi 85c1f8a9e0
Always prepend ANSI reset code before re-assembling tokens 5 years ago
Junegunn Choi e00e7e1e56
Remove unnecessary ANSI code injection 5 years ago
Junegunn Choi 1a6defdbcc
Use simple string concatenation instead of using fmt.Sprintf 5 years ago
Junegunn Choi ef577a6509
Preserve the original color of each token when using --with-nth with --ansi
Close #1500
5 years ago
Junegunn Choi 8dc1377efb
Export FZF_PREVIEW_LINES and FZF_PREVIEW_COLUMNS to preview process
fzf will still override LINES and COLUMNS as before but they may not
hold the correct values depending on the default shell.

Close #1314
5 years ago
Junegunn Choi 6c32148f90
Add placeholder expression for zero-based item index: {n} and {+n}
Close #1482
5 years ago
Junegunn Choi 5d16b28869
Fix tab width after ANSI reset code in preview window
Close #1423
6 years ago
Junegunn Choi 5624a89231
Inverse-only matches should not reorder the remaining results
Fix #1458
6 years ago
Junegunn Choi ca42e5e00a
Avoid unnecessary redraw of preview window
Close #1455
6 years ago
Junegunn Choi 61feee690c
Render preview window when the initial query fails to match
Only if preview template contains {q}

Fix #1452
Related #1307
6 years ago
Junegunn Choi b46227dcb6
0.17.5 6 years ago
Junegunn Choi 72df905902
Do not wait for more keystrokes after double escape characters
Close #1393
6 years ago
Junegunn Choi 0d748a0699
Kill running preview process after 500ms when focus has changed
Close #1383
Close #1384
6 years ago
Junegunn Choi 27c40dc6b0
Restore STDIN during execute-silent
This allows users to terminate the process with CTRL-C when it hangs.
6 years ago
Tim Cuthbertson 70a92a858a Don't drop buffered input data in findOffset() (#1392) 6 years ago
Michael Kelley 423986996a Handle incomplete ESC sequence in typeahead buffer (#1350)
If an ESC char is found while processing characters,
continue to check for characters. This prevents fzf from
prematurely exiting.

Close #1349
6 years ago
Junegunn Choi 0edbcbdf19
Allow search query longer than the screen width
By implementing horizontal scrolling of the prompt line.
Maximum length is hard-coded to 300-chars.

Close #1312
Fix #1225
6 years ago
Junegunn Choi f0fe79dd3b
0.17.4 6 years ago
Akinori MUSHA daa1958f86 Provide an option to reverse items only (#1267) 6 years ago
Junegunn Choi 2c26f02f5c
Improve preview window update events
- Update preview window even if there is no match for the query string
  if any of the placeholder expressions evaluates to a non-empty string.
- Also, if the command template contains {q}, preview window will be
  updated if the query string changes even though the focus remains on
  the same item.

An example:

    git log --oneline --color=always |
       fzf --reverse --ansi --preview \
       '[ -n {1} ] && git show --color=always {1} || git show --color=always {q}'

Close #1307
6 years ago
Junegunn Choi 9e753a0d44
Implement ttyname() in case /dev/tty is not available
Close #1266
Close #447
6 years ago
Junegunn Choi f57920ad90
Do not print non-displayable characters
fzf used to print non-displayable characters (ascii code < 32) as '?',
but we will simply ignore those characters with this patch, just like
our terminals do.

\n and \r are exceptions. They will be printed as a space character.

TODO: \H should delete the preceding character, but this is not implemented.

Related: #1253
6 years ago
Junegunn Choi 7dbbbef51a
Add support for alt-{up,down,left,right} keys
Close #1234
6 years ago
ZDNoFYVe 43345fb642 Implement flag for preserving whitespace around field (#1242) 6 years ago
Ryan Boehning 21b94d2de5
Make fzf pass go vet
Add String() methods to types, so they can be printed with %s. Change
some %s format specifiers to %v, when the default string representation
is good enough. In Go 1.10, `go test` triggers a parallel `go vet`. So
this also makes fzf pass `go test`.

Close #1236
Close #1219
6 years ago
Junegunn Choi 417bca03df
Add shift-up and shift-down
For now, they are respectively bound to preview-up and preview-down
by default (TBD).

Not available on tcell build.

Close #1201
6 years ago
Jan Edmund Lazo 7f0caf0683 Update Windows default command to print relative paths (#1200) 7 years ago
Junegunn Choi 390b49653b
0.17.3 7 years ago
Junegunn Choi 9c47739c0e
Fix panic when replace-query is triggered on empty result set 7 years ago
Junegunn Choi 04aa2992e7
Revert "0.17.2"
This reverts commit 2f1edeff78.
7 years ago
Junegunn Choi 2f1edeff78
0.17.2 7 years ago
Junegunn Choi 5a7b41a2cf
Add accept-non-empty action
'accept-non-empty' is similar to 'accept' (which is bound to 'enter' and
'double-click' by default) but it prevents fzf from exiting without any
selection.

Close #1162
7 years ago
Junegunn Choi c20954f020
Add replace-query action
replace-query action replaces the query string with the current
selection. If the selection is too long, it will be truncated.

If the line contains meta-characters of fzf search syntax, it is
possible that the line is no longer included in the updated result.

e.g.

  echo '!hello' | fzf --bind ctrl-v:replace-query

Close #1137
7 years ago
Junegunn Choi f6b1962056
Inject $LINES and $COLUMNS when running preview command
Close #1168
7 years ago
Junegunn Choi b3b101a89c
Support binding of left-click and right-click
left-click and right-click are respectively bound to "ignore" and
"toggle" (after implicitly moving the cursor) by default.

Close #1130
7 years ago
Junegunn Choi 85a75ee035
Revert default command: find with -fstype required
In #1061 we changed the default command to retry with a simpler find
command with fewer arguments if the first find command failed. This was
to support stripped-down verions of find that do not support -fstype
argument.

However, this caused an unwanted side-effect of yielding duplicate
entries when the first command failed after producing some lines.

We revert the change in this commit, so the default command will not
work with find without -fstype support. But we now print better error
message in that case so that the user can set up a working
$FZF_DEFAULT_COMMAND.

Close #1120 #1167
7 years ago