Commit Graph

579 Commits (8ae96774df202497c7e73d24e10c51e621eabddf)

Author SHA1 Message Date
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.
8 years ago
Junegunn Choi ee5aeb80a4
0.16.4 8 years ago
Junegunn Choi 4b700192c1
Add --border option to draw horizontal lines above and below the finder
Goes well with --height
8 years ago
Junegunn Choi fcf63c74f1
Fix --tiebreak=begin with algo v2
Due to performance consideration, FuzzyMatchV2 does not return the exact
positions of the matching characters by default. However, the ommission
caused `--tiebreak=begin` to produce inaccurate result in some cases.

  (echo baz foo bar; echo foo bar baz) | fzf --tiebreak=begin -fbar | head -1

  # Expected: foo bar baz
  # Actual:   baz foo bar

This commit fixes the problem by using the end offset which is
guaranteed to be correct.
8 years ago
Junegunn Choi c95bb109c8
Suppress CSI codes in the output 8 years ago
Junegunn Choi bd9c46ee34
Update ANSI processor to strip ^H along with its preceding character 8 years ago
Junegunn Choi 736aeaa1d3
Update go-runewidth
https://github.com/junegunn/go-runewidth/pull/1

/cc @joshuarubin
8 years ago
Junegunn Choi dd1f26522c
Fix caching scheme when --exact is set and '-prefix is used 8 years ago
Junegunn Choi d85a69a709
0.16.3 8 years ago
Junegunn Choi dd156b59fc
Fix display issues with execute action
- Move cursor to the top-left corner when starting a command in
  alternate screen
- Fix cursor position when returning to alternate screen when fzf is
  running in full screen mode
8 years ago
Junegunn Choi 36dceecd58
Add support for ctrl-space key
Close #825
8 years ago
Junegunn Choi 421b9b271a
Add execute-silent action
Close #823
8 years ago
Junegunn Choi ed57dcb924
Extend placeholder expression for multiple selections
Close #788
8 years ago
Junegunn Choi da2c28d5c2
Add --read0 and --print0 to --help output
Close #822
8 years ago
Junegunn Choi 8731d75607
Recalculate the width of trimmed line
Close #821
8 years ago
Junegunn Choi f2ce233a6d
0.16.2 8 years ago
Junegunn Choi 6a75e30941
Allow invisible preview window (--preview-window 0)
Close #820
8 years ago
Junegunn Choi a3244c4892
Delete every line below the cursor 8 years ago
Junegunn Choi a5ad8fd3bd
Minor refactoring 8 years ago
Junegunn Choi deccdb1ec5
Cursor postition response can be preceded by user key strokes 8 years ago
Junegunn Choi 12a43b5e62
Disable mouse if failed to query cursor position 8 years ago
Junegunn Choi e1291aa6d2
Fix make deps to see the right git dir 8 years ago
Junegunn Choi bb26f32ac7
Allow build on OpenBSD/FreeBSD/Android
Close #497
8 years ago
Junegunn Choi 4d928001b8
Update release script to upload assets in parallel 8 years ago
Junegunn Choi 71dec3dc5e
Fix bug where screen is not properly cleared on toggle-preview 8 years ago
Junegunn Choi ff248d566d
Drop ncurses dependency
Close #818
8 years ago
Junegunn Choi 6ccc12c332
Use alternate screen if --height needs the entire screen
- Remove unnecessary scrolling
- Allow us to use `--height 100%` under Neovim terminal for 24-bit colors

Related:
- #789
- https://github.com/neovim/neovim/issues/4151
8 years ago
Junegunn Choi 2a669e9a17
Clear lines even when background color is not set
Also revert the workaround in Vim plugin introduced in fa7c897.

Related: #814
8 years ago
Junegunn Choi 24fa183297
make deps 8 years ago
Junegunn Choi 131aa5dd15
Composable actions in --bind
Close #816
8 years ago
Junegunn Choi 62ab8ece5e
0.16.1 8 years ago
Junegunn Choi 8e2e63f9b9
Propertly fill window with background color
Close #805
8 years ago
Junegunn Choi f96173cbe4
Add -L flag to the default find command
Close #781
8 years ago
Amos Bird 11015df52f Add half-page-{up,down} actions (#784) 8 years ago
Junegunn Choi 4bece04207
0.16.0 8 years ago
Junegunn Choi ede7bfb901
Optimize LightRenderer for slow terminals 8 years ago
Junegunn Choi e0036b5ad2
Add --filepath-word option
Close #802
8 years ago
Junegunn Choi 4ecb7f3a16
Replace --normalize with --literal and enable normalization by default
Ref #790
8 years ago
Junegunn Choi 03f5ef08c8
Use crypto/ssh/terminal instead of external stty command 8 years ago
Junegunn Choi d64828ce6d
Print error message to stderr on unexpected exit 8 years ago
Junegunn Choi 2aa739be81
Fix bug where occurrence of the pattern in header lines are highlighted 8 years ago
Junegunn Choi 9977a3e9fc
Make preview renderer suspend early on line wrap 8 years ago
Junegunn Choi f8082bc53a
No need to use /bin/sh to execute stty and tput 8 years ago
Junegunn Choi 996dcb14a3
Make fzf immediately quit when failed to read /dev/tty
Close #798
8 years ago
Junegunn Choi 0c127cfdc1
No need to query row position of the cursor if mouse is disabled 8 years ago
Junegunn Choi ae274158de
Add experimental support for 24-bit colors 8 years ago
Junegunn Choi 340af463cd
Add --min-height option for percent --height 8 years ago
Junegunn Choi 78a3f81972
Do not use \e[s and \e[u
Excerpt from http://www.tldp.org/HOWTO/Bash-Prompt-HOWTO/x361.html:

> - Save cursor position:
>   \033[s
> - Restore cursor position:
>   \033[u
>
> The latter two codes are NOT honoured by many terminal emulators. The
> only ones that I'm aware of that do are xterm and nxterm - even though
> the majority of terminal emulators are based on xterm code. As far as
> I can tell, rxvt, kvt, xiterm, and Eterm do not support them. They are
> supported on the console.

They are also unsupported by Neovim terminal.
8 years ago
Junegunn Choi 6c6c0a4778
Make util.RuneWidth return 1 for non-displayable characters
Fix line wrapping in preview window
8 years ago
Junegunn Choi a16d8f66a9
Normalize pattern string before passing it to Algo function 8 years ago
Junegunn Choi 45793d75c2
Add --normalize option to normalize latin script characters
Close #790
8 years ago
Junegunn Choi 9d545f9578
Fix update of multi-select pointer 8 years ago
Junegunn Choi a30999a785
Prepare for 0.16.0 release 8 years ago
Junegunn Choi 1448d631a7
Add --height option 8 years ago
Junegunn Choi 7b0d9e1e07
Apply --tabstop to preview window 8 years ago
Junegunn Choi 16b5902aa2
Fix Linux build (#756) 8 years ago
Junegunn Choi a442fe0fd0
Truncate long lines in preview window
Add `:wrap` to --preview-window to wrap lines instead

Close #756
8 years ago
Junegunn Choi 67026718c1
Add BUILD.md 8 years ago
Junegunn Choi a71c471405
0.15.9 8 years ago
Junegunn Choi 3858086047
Always print scroll indicator in preview window 8 years ago
Junegunn Choi dffef3d9f3
Update build instructions for ncurses 6 and tcell
Close #357
Close #738
8 years ago
Junegunn Choi de1c6b8727
[tcell] 24-bit color support
TAGS=tcell make install

    printf "\x1b[38;2;100;200;250mTRUECOLOR\x1b[m\n" |
        TERM=xterm-truecolor fzf --ansi
8 years ago
Junegunn Choi 6f17f412ba
Workaround for rendering glitch in case of short-lived input process
: | fzf --preview 'echo foo'
8 years ago
Junegunn Choi 746961bf43
[ncurses6] Suppress tui.Italic on ncurses 5 8 years ago
Junegunn Choi 182a6d99fd
[ncurses6] Support italics 8 years ago
Junegunn Choi af31088481
[ncurses6] Use wcolor_set to support more than 256 color pairs
To build fzf with ncurses 6 on macOS:

    brew install homebrew/dupes/ncurses
    LDFLAGS="-L/usr/local/opt/ncurses/lib" make install
8 years ago
Junegunn Choi 43425158f4
Make escape delay configurable via ncurses standard $ESCDELAY
Also reduce the default delay to 50ms. We should not set it to 0ms as it
breaks escape sequences on WSL. If 50ms is not enough, one can increase
the delay by setting $ESCDELAY to a larger value.
8 years ago
Junegunn Choi 8524ea7441
Do not ignore resize event from ncurses and tcell 8 years ago
Junegunn Choi 6a65006f55
0.15.8 8 years ago
Junegunn Choi d75ed841a9
Fix --no-bold on --no-color 8 years ago
Junegunn Choi 3cd2547e91
Reduce ESC delay to 100ms 8 years ago
Junegunn Choi 8c661d4e8c
Revamp escape sequence processing for WSL
Also add support for alt-[0-9] and f1[12]
8 years ago
Junegunn Choi 4b332d831e
Add --no-bold option 8 years ago