Commit Graph

461 Commits (a56489bc7f6b2f0ff8925b69089d7b3fea1ef235)

Author SHA1 Message Date
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
Junegunn Choi dc557c0d4c
Update ANSI processor to handle more VT-100 escape sequences
The updated regular expression should include not all but most of the
frequently used ANSI sequences. Close #735.
8 years ago
Junegunn Choi a2beb159f1
0.15.7 8 years ago
Junegunn Choi 7ce427ff47
Fix panic when color is disabled and header lines contain ANSI colors
Close #732
8 years ago
Junegunn Choi a221c672fb
0.15.6 8 years ago
Junegunn Choi f87d382ec8
Fix --color=bw on tcell build 8 years ago
Junegunn Choi 2192d8d816
GOOS=windows make release 8 years ago
Junegunn Choi d206949f62
Wait for additional keys after ESC for up to 100ms
Close #661
8 years ago
Junegunn Choi 898d8d94c8
Fix issues in tcell renderer and Windows build
- Fix display of CJK wide characters
- Fix horizontal offset of header lines
- Add support for keys with ALT modifier, shift-tab, page-up and down
- Fix util.ExecCommand to properly parse command-line arguments
- Fix redraw on resize
- Implement Pause/Resume for execute action
- Remove runtime check of GOOS
- Change exit status to 2 when tcell failed to start
- TBD: Travis CI build for tcell renderer
    - Pending. tcell cannot reliably ingest keys from tmux send-keys
8 years ago
Michael Kelley 26895da969
Implement tcell-based renderer 8 years ago
Junegunn Choi 0c573b3dff
Prepare for termbox/windows build
`TAGS=termbox make` (or `go build -tags termbox`)
8 years ago
Junegunn Choi 06a6ad8bca
Update ANSI processor to ignore ^N and ^O
This reverts commit 02c6ad0e59.
8 years ago
Junegunn Choi 02c6ad0e59
Strip ^N and ^O from preview output
https://github.com/junegunn/fzf/issues/391#issuecomment-257090266

e.g. fzf --preview 'printf "$(tput setaf 2)foo$(tput sgr0)bar\nbar\n"'
8 years ago
Junegunn Choi 9f321cbe13
Fix header lines being cleared on toggle-preview
Close #722
8 years ago
Junegunn Choi 9f30ca2923
0.15.5 8 years ago
Junegunn Choi 0a8d2996dc
Set foreground color without affecting background
Close #712
8 years ago
Junegunn Choi cfdb00b971
Allow other options to follow --color without spec 8 years ago
Junegunn Choi 0541c0dbcf
Use relative position instead of absolute distance for --tiebreak=end
Fix unintuitive result where `*fzf*/install` is ranked higher than
`fzf/src/fzf/*fzf*-linux_386` on --tiebreak=end.
8 years ago
Junegunn Choi 3222d62ddf
0.15.4 8 years ago
Junegunn Choi aeb957a285
Use exact match by default for inverse search term
This is a breaking change, but I believe it makes much more sense. It is
almost impossible to predict which entries will be filtered out due to
a fuzzy inverse term. You can still perform inverse-fuzzy-match by
prepending `!'` to the term.

| Token    | Match type                 | Description                       |
| -------- | -------------------------- | --------------------------------- |
| `sbtrkt` | fuzzy-match                | Items that match `sbtrkt`         |
| `^music` | prefix-exact-match         | Items that start with `music`     |
| `.mp3$`  | suffix-exact-match         | Items that end with `.mp3`        |
| `'wild`  | exact-match (quoted)       | Items that include `wild`         |
| `!fire`  | inverse-exact-match        | Items that do not include `fire`  |
| `!.mp3$` | inverse-suffix-exact-match | Items that do not end with `.mp3` |
8 years ago
Junegunn Choi 154cf22ffa
Display scroll indicator in preview window 8 years ago
Junegunn Choi 51f532697e
Adjust maximum scroll offset
It was possible that a few lines at the bottom may not be visible if
there are lines above that span multiple lines.
8 years ago
Junegunn Choi 3066b206af
Support field index expressions in preview and execute action
Also close #679. The placeholder for the current query is {q}.
8 years ago
Junegunn Choi 04492bab10
Use unicode.IsSpace to cover more whitespace characters 8 years ago
Junegunn Choi 8b0d0342d4
0.15.3 8 years ago
Junegunn Choi 957c12e7d7
Fix SEGV when trying to render preview but the window is closed
Close #677
8 years ago
Junegunn Choi 3b5ae0f8a2
Fix failing unit tests on ANSI attributes 8 years ago
Junegunn Choi 1fc5659842
Add support for more ANSI color attributes (#674)
Dim, underline, blink, reverse
8 years ago
Junegunn Choi 1bc223d4b3
0.15.2 8 years ago
Junegunn Choi bef405bfa5
Ignore VT100-related escape codes 8 years ago
Junegunn Choi 0612074abe
Support high intensity colors
Close #671
8 years ago
Junegunn Choi 8c8b5b313e Add preview-page-up and preview-page-down actions 8 years ago
Junegunn Choi 66d55fd893
Make preview windows scrollable
Close #669

You can use your mouse or binadble preview-up and preview-down actions
to scroll the content of the preview window.

    fzf --preview 'highlight -O ansi {}' --bind alt-j:preview-down,alt-k:preview-up
8 years ago
Junegunn Choi 7fa5e6c861
0.15.1 8 years ago
Junegunn Choi 00f96aae76
Avoid rendering delay when displaying extremely long lines
Related #666
8 years ago
Junegunn Choi a749e6bd16
Fix temp directory in a test case 8 years ago
Junegunn Choi 791076d366
Fix panic when pattern occurs after 2^15-th column
Fix #666
8 years ago
Junegunn Choi 37f43fbb35
Add --print0 option
Related: #660
8 years ago
Junegunn Choi 401a5fd5ff
Printable character in --expect set should not affect --print-query 8 years ago
Junegunn Choi 1854922f0c
Truncate the query string if it's too long
Use hard-coded limit to keep it simple. An alternative is to dynamically
calculate the width of the visible area and use it as the limit, but it
can cause unwanted truncation of the query on screen resize/split.
8 years ago
Junegunn Choi 2fc7c18747
Revise ranking algorithm 8 years ago
Junegunn Choi 8ef2420677
Update README 8 years ago
ishanray f44d40f6b4 Update algo.go 8 years ago
Junegunn Choi b86838c2b0
0.13.5 8 years ago
Junegunn Choi 1f7d1f9b15
Update Centos Dockerfile to use Go 1.7 8 years ago
Junegunn Choi f8fdf9618a
No need to cache the result in filtering mode (--filter) 8 years ago
Junegunn Choi 827a83efbc
Remove Offset slice from Result struct 8 years ago
Junegunn Choi 608c416207
Add missing sources 8 years ago
Junegunn Choi 37dc273148
Micro-optimizations
- Make structs smaller
- Introduce Result struct and use it to represent matched items instead of
  reusing Item struct for that purpose
- Avoid unnecessary memory allocation
- Avoid growing slice from the initial capacity
- Code cleanup
8 years ago
Junegunn Choi f7f01d109e
Set the upper limit of the number of search go routines 8 years ago
Junegunn Choi 01ee335521
Remove duplicate code 8 years ago
Junegunn Choi 0e0de29b87
Inline function calls in tight loops
By only using leaf functions
8 years ago
Junegunn Choi babf877fd6
Increase the number of go routines for search
Sort performance increases as the size of each sublist decreases (n in
nlog(n) decreases). Merger is then responsible for merging the sorted
lists in order, and since in most cases we are only interesed in the
matches in the first page on the screen so the overhead in the process
is negligible.
8 years ago
Junegunn Choi 935272824e
Setting GOMAXPROCS is no longer needed
https://golang.org/doc/go1.5
8 years ago
Junegunn Choi 3a9532c8fd
Increase read buffer size to 64KB 8 years ago
Junegunn Choi c4c92142a6
0.13.4 8 years ago
Junegunn Choi d4b6338102
Lint 8 years ago
Junegunn Choi 8df7d962e6
Improve rendering time of long lines 8 years ago
Junegunn Choi 41e916a511
[perf] evaluateBonus can start from sidx - 1 8 years ago
Junegunn Choi d9c8a9a880
[perf] Remove memory copy when using string delimiter 8 years ago
Junegunn Choi ddc7bb9064
[perf] Optimize AWK-style tokenizer for --nth
Approx. 50% less memory footprint and 40% improvement in query time
8 years ago
Junegunn Choi 1d4057c209
[perf] Avoid allocating rune array for ascii string
In the best case (all ascii), this reduces the memory footprint by 60%
and the response time by 15% to 20%. In the worst case (every line has
non-ascii characters), 3 to 4% overhead is observed.
8 years ago
Junegunn Choi 1e74dbb937
:hidden property of previous --preview-window should be cleared
Fix #636. Patch suggested by @edi9999.
8 years ago
Junegunn Choi fccc93176b
0.13.3 8 years ago
Junegunn Choi a9a29dff4f
Fix duplicate rendering of the last line in preview window 8 years ago
Junegunn Choi 5759d50d4a
0.13.2 8 years ago
Junegunn Choi e455836cc9
Fix race condition where preview window is not properly cleared 8 years ago
Junegunn Choi 8a90f26c8a
0.13.1 8 years ago
Junegunn Choi 24e1fabf2e
Do not process ANSI codes in --preview output at once
Close #598
8 years ago
Junegunn Choi 3e1d6a7bcf
0.13.0 8 years ago
Junegunn Choi 2bbc12063c
Add --preview and --preview-window
Close #587
8 years ago
Junegunn Choi b8737b724b
Ignore controls chars for bracketed paste mode
Close #594
8 years ago
Junegunn Choi 56fb2f00b3
Use single-quoted strings in execute action
Close #590
8 years ago
Junegunn Choi 2f364c62f4
0.12.2 8 years ago
Junegunn Choi 7ed9f83662
Validate jump label characters
Also extend default jump labels
8 years ago
Junegunn Choi f498a9b3fb
Revert version number 8 years ago
Junegunn Choi 13330738b8
Do not match jump labels beyond the screen limit 8 years ago
Junegunn Choi e53535cc61
Update default jump labels 8 years ago
Junegunn Choi c62fc5e75c
More named keys: F5 ~ F10, ALT-/ 8 years ago
Junegunn Choi 70245ad98c
[make] Reduce the size of the binaries with `-ldflags -w`
Related: #555
8 years ago
Junegunn Choi 6d235bceee
Add jump and jump-accept actions for --bind
jump and jump-accept implement EasyMotion-like movement in fzf.
Suggested by @mhrebenyuk. Close #569.
8 years ago
Junegunn Choi 9078688baf Add print-query action for --bind
Close #571
8 years ago
Junegunn Choi dd4be1da38
Allow alt-enter and alt-space for --bind (#571) 8 years ago
Junegunn Choi 88a80e3c2c
Determine 256-color capability using tigetnum("colors")
Close #570
8 years ago
Junegunn Choi 7f64fba80f Update Makefile to allow build on i686 (#555) 8 years ago
Gene Pavlovsky d1b402a23c Fix missing reference to UNAME_M
The `Build on $(UNAME_M) is not supported, yet` message was referencing an undefined UNAME_M. Fixed that.
8 years ago
Junegunn Choi 35a9aff8e1 0.12.1 8 years ago
Junegunn Choi 85ef3263fc Fix incorrect cache reference in --exact mode (#547)
When we prepend a single quote to our query in --exact mode, we are not
supposed to limit the scope of the new search to the previous
exact-match result.
8 years ago
Junegunn Choi 4bde8de63f Apply new ranking algorithm to exact match as well 8 years ago
Junegunn Choi 879ead210f 0.11.2 8 years ago
Junegunn Choi 2f6d23b91e Enhanced ranking algorithm
Based on the patch by Matt Westcott (@mjwestcott).
But with a more conservative approach:
- Does not use linearly increasing penalties; It is agreed upon that we
  should prefer matching characters at the beginnings of the words, but
  it's not always clear that the relevance is inversely proportional to
  the distance from the beginning.
- The approach here is more conservative in that the bonus is never
  large enough to override the matchlen, so it can be thought of as the
  first implicit tiebreak criterion.
- One may argue the change breaks the contract of --tiebreak, but the
  judgement depends on the definition of "tie".
8 years ago
Junegunn Choi 74d1694be9 Fix #541 - Print double-click when --expect=double-click is set 8 years ago
Matt Westcott 2ca704405a Fix algorithm tests 8 years ago
Junegunn Choi 6ea760a336 Make 32-bit linux binary (partially) static (#523) 8 years ago
Junegunn Choi b47ab633e2 0.11.4 8 years ago
Junegunn Choi 2ccdf21a1f Add --hscroll-off=COL option
Close #513
8 years ago
Junegunn Choi 1b9ca314b8 Update build script
- GOPATH is no longer required
- fzf repository does not have to be in GOPATH
- Build Linux binary with Go 1.5.3
8 years ago
Junegunn Choi e72a360337 Minor refactoring
- Slightly more efficient processing of Options
- Do not return reference type arguments that are mutated inside the
  function
- Use util.Constrain function when appropriate
8 years ago
Sergey Vlasov e3401a0645 Go 1.3 compatibility 9 years ago
Junegunn Choi 40d934e378 0.11.3 9 years ago
Junegunn Choi e95d82748f Use $SHELL to start $FZF_DEFAULT_COMMAND (#481) 9 years ago
Junegunn Choi 30bd0b53db Fix #481 - Use $SHELL instead of sh in execute action
Note that $SHELL only points to the default shell instead of the current
shell. If you're on a non-default shell, you might want to override the
value like follows.

  SHELL=zsh fzf --bind 'enter:execute:echo $ZSH_VERSION; sleep 1'
9 years ago
Junegunn Choi 1893eca41a Handle SIGTERM gracefully (#482) 9 years ago
Junegunn Choi 8695b5e319 Reduce the initial delay when --tac is not given
fzf defers the initial rendering of the screen up to 100ms if the input
stream is ongoing to prevent unnecessary redraw during the initial
phase. However, 100ms delay is quite noticeable and might give the
impression that fzf is not snappy enough. This commit reduces the
maximum delay down to 20ms when --tac is not specified, in which case
the input list quickly fills the entire screen.
9 years ago
Junegunn Choi 95970164ad 0.11.2 9 years ago
Junegunn Choi f6c6e59a50 Add toggle-in and toggle-out for --bind
Related: #452

When `--multi` is set, tab key will bring your cursor down, and
shift-tab up. But since fzf by default draws the screen in bottom-up
fashion, one may feel that the opposite of the behavior is more
desirable and choose to customize the key bindings as follows.

    export FZF_DEFAULT_OPTS="--bind tab:toggle-up,shift-tab:toggle-down"

This configuration, however, becomes no longer straightforward when
`--reverse` is set and fzf switches to top-down layout. To address the
requirement, this commit adds `toggle-in` and `toggle-out` option which
switch direction depending on `--reverse`-ness.

    export FZF_DEFAULT_OPTS="--bind tab:toggle-out,shift-tab:toggle-in"
9 years ago
Junegunn Choi 45143f9541 Ignore leading whitespaces when calculating 'begin' index 9 years ago
Junegunn Choi 8d3a302a17 Simplify Item structure
This commit compensates for the performance overhead from the
extended tiebreak option.
9 years ago
Junegunn Choi 1d2d32c847 Accept comma-separated list of sort criteria 9 years ago
Junegunn Choi d635b3fd3c Update license: 2016 9 years ago
Junegunn Choi aa171b45cb Fix ubuntu-android target of Makefile 9 years ago
Junegunn Choi a1db64e7b1 Unset GO15VENDOREXPERIMENT in linux build env (#430) 9 years ago
Junegunn Choi 0b9c4e1e74 Remove submodules and disable GO15VENDOREXPERIMENT (#430)
Having submodules causes vim-plug or other vim plugin managers to clone
them with no real benefit to the end-users. There's currently no
compelling reason for me to use submodules.
9 years ago
Junegunn Choi 248320fa55 0.11.1 9 years ago
Junegunn Choi d4e26707c7 GO15VENDOREXPERIMENT=1 (#430) 9 years ago
Junegunn Choi 99ea1056ac Add --tabstop option
Related: https://github.com/junegunn/fzf.vim/issues/49
9 years ago
Junegunn Choi e1df876b61 Merge pull request #380 from acornejo/android
Add android build: `make android`
9 years ago
Alex Cornejo 28ffb9638d add android build 9 years ago
Junegunn Choi 1c20255504 Fix typos in help message
Close #425. Thanks to @blueyed.
9 years ago