Commit Graph

651 Commits (552414978ed74e7cd77bd57874f6fbbe3e0024c4)

Author SHA1 Message Date
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
Junegunn Choi 0b33dc6ce1
0.17.1 7 years ago
Junegunn Choi 64a6ced62e
Do not immediately check --height option on Windows (#1082) 7 years ago
Junegunn Choi 438f6c96cd
Fix compilation error of Windows binary 7 years ago
Jan Edmund Lazo c4185e81e8
Fix ExecCommandWith for cmd.exe in Windows (#1072)
Close #1018

Run the command as is in cmd.exe with no parsing and escaping.
Explicity set cmd.SysProcAttr so execCommand does not escape the command.
Technically, the command should be escaped with ^ for special characters,
including ". This allows cmd.exe commands to be chained together.

See https://github.com/neovim/neovim/pull/7343#issuecomment-333350201

This commit also updates quoteEntry to use strings.Replace instead of
strconv.Quote which escapes more than \ and ".
7 years ago
Junegunn Choi ee40212e97
Update FZF_DEFAULT_COMMAND
- Use bash for `set -o pipefail`
- Fall back to simpler find command when the original command failed

Related: #1061
7 years ago
Junegunn Choi e1582b8323
Clean up renderer code
Remove code that is no longer relevant after the removal of ncurses
renderer. This commit also fixes background color issue on tcell-based
FullscreenRenderer (Windows).
7 years ago
Junegunn Choi 7cfa6f0265
Fix custom foreground color inside preview window (addendum)
This fixes foreground color inside preview window when the text has ANSI
attributes except for foreground color.

Close #1046
7 years ago
Junegunn Choi e3973c74e7
Fix custom foreground color inside preview window
Close #1046
7 years ago
Junegunn Choi e3e7b3360c
Delete ncurses implementation 7 years ago
Junegunn Choi e89eebb7ba
0.17.0 7 years ago
Junegunn Choi fee404399a
Make --expect additive
Similarly to --bind or --color.

--expect used to replace the previously specified keys, and
fzf#wrap({'options': '--expect=f1'}) wouldn't work as expected. It
forced us to come up with some ugly hacks like the following:

13b27c45c8/autoload/fzf/vim.vim (L1086)
7 years ago
Junegunn Choi 6b4805ca1a
Optimize rank comparison on x86 (little-endian) 7 years ago
Junegunn Choi 159699b5d7
Remove an unnecessary code branch 7 years ago
Junegunn Choi af809c9661
Minor refactorings 7 years ago
Junegunn Choi 71fdb99a07
Remove bound checkings in inner loops 7 years ago
Junegunn Choi 55ee4186aa
Ignore EvtReadNew if EvtReadFin is already set 7 years ago
Junegunn Choi 941b0a0ff7
Minor optimization of FuzzyMatchV2
Calculate the first row of the score matrix during phase 2
7 years ago
Junegunn Choi 6aae12288e
Extract debug code from FuzzyMatchV2 7 years ago
Junegunn Choi 302cc552ef
Remove unused clear arguments of alloc16 and alloc32 7 years ago
Junegunn Choi a2a4df0886
Pass util.Chars by pointer 7 years ago
Junegunn Choi 87874bba88
Remove redundant read event when --sync is used 7 years ago
Junegunn Choi c304fc4333
Delay slab allocation 7 years ago
Junegunn Choi 6977cf268f
Limit search scope of uppercase letter 7 years ago
Junegunn Choi 931c78a70c
Short-circuit ANSI processing if no ANSI codes are found
Rework of 656963e. Makes --ansi processing around 20% faster on plain
strings without ANSI codes.
7 years ago
Junegunn Choi 8d23646fe6
Revert "Short-circuit ANSI processing if no ANSI codes are found"
This reverts commit 656963e018.
7 years ago
Junegunn Choi 656963e018
Short-circuit ANSI processing if no ANSI codes are found 7 years ago
Junegunn Choi 0558dfee79
Remove count field from ChunkList 7 years ago
Junegunn Choi 487c8fe88f
Make Reader event notification asynchronous
Instead of notifying the event coordinator (EventBox) whenever a new
line is arrived, start a background goroutine that periodically does the
task. Atomic.StoreInt32 is much cheaper than mutex synchronization
that happens during EventBox update.
7 years ago
Junegunn Choi 0d171ba1d8
Remove special nilItem 7 years ago
Junegunn Choi 6bc592e6c9
Update FuzzyMatchV1 to use skip optimization used in V2 7 years ago
Junegunn Choi 6c76d8cd1c
Disallow escaping of meta characters except for spaces
https://github.com/junegunn/fzf/issues/444#issuecomment-321719604
7 years ago
Junegunn Choi a09e411936
Treat | as proper query when it can't be an OR operator 7 years ago
Junegunn Choi 02a7b96f33
Treat $ as proper search query
When $ is the leading character in a query, it's probably not meant to
be an anchor.
7 years ago
Junegunn Choi e55e029ae8
Build cache key for a pattern only once 7 years ago
Junegunn Choi 6b18b144cf
Fix escaping of meta characters after ' or ! prefix
https://github.com/junegunn/fzf/issues/444#issuecomment-321432803
7 years ago
Junegunn Choi 6d53089cc1
Allow escaping term starting with |
Close #444
7 years ago
Junegunn Choi e85a8a68d0
Allow escaping meta characters with backslashes
One can escape meta characters in extended-search mode with backslashes.

  Prefixes:
    \'
    \!
    \^

  Suffix:
    \$

  Term separator:
    \<SPACE>

To keep things simple, we are not going to support escaping of escaped
sequences (e.g. \\') for matching them literally.

Since this is a breaking change, we will bump the minor version.

Close #444
7 years ago
Junegunn Choi dc55e68524
Remove unnecessary SCP (Save Cursor Position)
It is reported that it can have an unwanted side effect of clearing the
screen on terminal emulators that do not properly support it.

Patch suggested by @arya.

Close #1011
7 years ago
Junegunn Choi 999d374f0c
Fix invalid cache lookups 7 years ago
Junegunn Choi ecb6b234cc
0.16.11 7 years ago
Junegunn Choi 39dbc8acdb
Exit 2 instead of panic when failed to open /dev/tty 7 years ago
Junegunn Choi a56489bc7f
Remove non-exclusive access to ChunkList field 7 years ago
Junegunn Choi 99927c7071
Modify loop conditions in checkAscii function 7 years ago
Junegunn Choi 37370f057f
Do not use defer in performance-sensitive contexts 7 years ago
Junegunn Choi f4b46fad27
Inline function calls in a tight loop
Manually inline function calls in a tight loop as Go compiler does not
inline non-leaf functions. It is observed that this unpleasant code
change resulted up to 10% performance improvement.
7 years ago
Junegunn Choi 8db3345c2f
Optimize exact match by applying the same trick for fuzzy match 7 years ago
Junegunn Choi 69aa2fea68
Optimize fuzzy search performance for ASCII strings 7 years ago
Junegunn Choi 4c5a679066
Make deselect-all instantaneous 7 years ago
Junegunn Choi a0a3c349c9
Update preview window when selection has changed
Close #995
7 years ago
Junegunn Choi 6dbc108da2
0.16.10 7 years ago
Junegunn Choi bd98f988f0
Further reduce unnecessary rune array conversion
I was too quick to release 0.16.9, this commit makes --ansi processing
even faster.
7 years ago
Junegunn Choi 06301c7847
Fix regression: ANSI color in preview window not cleared 7 years ago
Junegunn Choi 18a1aeaa91
0.16.9 7 years ago
Junegunn Choi c9f16b6430
Avoid unconditionally storsing input as runes
When --with-nth is used, fzf used to preprocess each line and store the
result as rune array, which was wasteful if the line only contains ascii
characters.
7 years ago
Junegunn Choi bc9d2abdb6
Improve preview window rendering
- Fix incorrect display of the last line when more than a line is
  wrapped above
- Avoid unnecessary flickering of the window
7 years ago
Junegunn Choi 28810c178f
Optimize ANSI code scanner
This change gives 5x speed improvement
7 years ago
Junegunn Choi a9e64efe45
Fix regression: output printed on alternate screen 7 years ago
Junegunn Choi 6b5886c034
Adjust --no-clear option for repetitive relaunching
Related: https://gist.github.com/junegunn/4963bab6ace453f7f529d2d0e01b1d85

Close #974
7 years ago
Junegunn Choi bbe10f4f77
Consolidate Result and rank structs
By not storing item index twice, we can cut down the size of Result
struct and now it makes more sense to store and pass Results by values.
Benchmarks show no degradation of performance by additional pointer
indirection for looking up index.
7 years ago
Junegunn Choi 5e72709613
Speed up initial scanning with bitwise AND operation 7 years ago
Junegunn Choi 9e85cba0d0
Reduce memory footprint of Item struct 7 years ago
Junegunn Choi 8dbdd55730
Refactor cache lookup
- Remove multiple mutex locks in partial cache lookup
- Simplify return values
7 years ago
Junegunn Choi 6725151a99
Remove unnecessary copy of Chunk slice 7 years ago
Junegunn Choi d4f3d5a164
Remove pointer indirection by changing Chunk definition 7 years ago
Junegunn Choi b13fcfd831
Add missing --no-expect flag 7 years ago
Junegunn Choi 07ef2b051c
Print [ERROR] on info line when the default command failed
With zero result.

Related: https://github.com/junegunn/fzf.vim/issues/22#issuecomment-311869805
7 years ago
Junegunn Choi 0c66521b23
Fix handling of bracketed paste mode
fzf should immediately continue consuming the buffer after discarding
bracketed paste mode sequence.

Close #951
7 years ago
Junegunn Choi b49f22cdf9
0.16.8 7 years ago
Junegunn Choi bf0cb4bfe2
Use find as the default command on Cygwin environment 7 years ago
Junegunn Choi ca0b3b6fd7
Fixes for Cygwin
- Update install script to download Windows binary if $TERM == cygwin
- Unset TERM if $TERM == cygwin (#933)
- Always use cmd.exe instead of $SHELL when running commands
7 years ago
Junegunn Choi 83e9af6601
Add git revision to --version output 7 years ago
Junegunn Choi 8bbf9335e1
Restructuring: main package in project root 7 years ago
Junegunn Choi 159f30b37f
Merge branch 'glide' of https://github.com/hinshun/fzf into hinshun-glide 7 years ago
Junegunn Choi 2e3dc75425
Fix inconsistent tiebreak scores when --nth is used
Make sure to consistently calculate tiebreak scores based on the
original line.

This change may not be preferable if you filter aligned tabular input on
a subset of columns using --nth. However, if we calculate length
tiebreak only on the matched components instead of the entire line, the
result can be very confusing when multiple --nth components are
specified, so let's keep it simple and consistent.

Close #926
7 years ago
Edgar Lee 7d3575b362
Use glide to handle go dependencies 7 years ago
Junegunn Choi 5d6eb5bfd6
Respect ANSI color state from the previous line in preview output 7 years ago
Junegunn Choi cf4711d878
Fix display of tab characters in --prompt 7 years ago
Tw ab182e276b Use read syscall directly to get character (#931)
Due to go std lib uses poller for os.File introducing in this commit:
c05b06a12d
There are two changes to watch out:
1. os.File.Fd will always return a blocking fd except on bsd.
2. os.File.Read won't return EAGAIN error for nonblocking fd.

So
For 1, we just get tty's fd in advance and then set its block mode.
For 2, we use read syscall directly to get what we wanted error(EAGAIN).

Fix issue #910.

Signed-off-by: Tw <tw19881113@gmail.com>
7 years ago
Junegunn Choi f5746002fd
Do not "--cycle" on page-up/page-down
Close #928
7 years ago
Junegunn Choi e1e3339770
Implement bindable "change" event and "top" action
# Move cursor to the top result whenever the query string is changed
    fzf --bind change:top

Close #925
7 years ago
Junegunn Choi 2d61691bb2
0.16.7 7 years ago
Junegunn Choi eba9e04e2e
Export FZF_PREVIEW_HEIGHT instead of FZF_HEIGHT
https://github.com/junegunn/fzf.vim/issues/361
7 years ago
Junegunn Choi 7f17a9d1b4
Update mattn/go-shellwords 7 years ago
Junegunn Choi d34e4cf698
Support CTRL-Z (SIGSTOP) 7 years ago
Junegunn Choi 6b592137b9
Add support for ctrl-alt-[a-z] key chords
Close #906
7 years ago
Junegunn Choi 9078197446
Add --version to --help output and man page
Close #888
Close #894
7 years ago
Junegunn Choi e03e91477b
0.16.6 7 years ago
Junegunn Choi 6fd4be580b
Use alternate screen only when the value of height is 100%
Do not automatically decide to use alternate screen when the value of
height exceeds the height of the terminal.

    # Use alternate screen
    fzf
    fzf --height 100%
    fzf --no-height

    # Still use current screen
    fzf --height 10000
7 years ago
Junegunn Choi 53348feb89
Add --no-clear option 7 years ago
Junegunn Choi cb9238dc4e
Display -S if sort is disabled and toggle-sort is used
This is to address a common confusion that one does not realize that
sorting is intentionally turned off by default and can be enabled by
a bind key.
7 years ago
Junegunn Choi 972fb1a29d
Suppress ANSI colors in preview window if --no-color is set 7 years ago
Junegunn Choi c89ac341e4
Clear background even if background color is not set
This is needed when fzf is started from inside a program (e.g. Vim)
and it uses a different background color than the terminal.

- https://github.com/junegunn/fzf.vim/issues/325
- https://github.com/junegunn/fzf.vim/issues/300
7 years ago
Junegunn Choi 0b940e4b2b
Redraw item if query string has changed 7 years ago
Junegunn Choi e87a85a179
0.16.5 7 years ago
Junegunn Choi 11407bf656
Exclude sysfs in find commands 7 years ago
Junegunn Choi c82fb3c9b9
Add toggle-preview-wrap action 7 years ago
Junegunn Choi 309e1d8619
Properly truncate long query string 7 years ago
Junegunn Choi 3d74d277aa
Use cut instead of sed in the default command 7 years ago
Junegunn Choi 21da02fac2
Fix indentation 7 years ago
Junegunn Choi 19569bd5c5
Move cursor to the top-left when returning to alternate screen
Fix broken preview border. Reported by Thomas Sattler.

    fzf --bind 'enter:execute(date)' --preview=date --reverse
7 years ago
Junegunn Choi 5bb18b6441
Remove Dockerfiles and clean up Makefile
Due to the recent removal of ncurses dependency, we can cross-compile
binaries for different platforms without virtual machines.
7 years ago