Commit Graph

352 Commits (f7447aece12f9b95133b803d5c4f71815bee8ca6)

Author SHA1 Message Date
Junegunn Choi 00f96aae76
Avoid rendering delay when displaying extremely long lines
Related #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 827a83efbc
Remove Offset slice from Result struct 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 8df7d962e6
Improve rendering time of long lines 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 e455836cc9
Fix race condition where preview window is not properly cleared 8 years ago
Junegunn Choi 24e1fabf2e
Do not process ANSI codes in --preview output at once
Close #598
8 years ago
Junegunn Choi 2bbc12063c
Add --preview and --preview-window
Close #587
8 years ago
Junegunn Choi 56fb2f00b3
Use single-quoted strings in execute action
Close #590
8 years ago
Junegunn Choi 13330738b8
Do not match jump labels beyond the screen limit 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 74d1694be9 Fix #541 - Print double-click when --expect=double-click is set 8 years ago
Junegunn Choi 2ccdf21a1f Add --hscroll-off=COL option
Close #513
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
Junegunn Choi e95d82748f Use $SHELL to start $FZF_DEFAULT_COMMAND (#481) 8 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'
8 years ago
Junegunn Choi 1893eca41a Handle SIGTERM gracefully (#482) 8 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 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 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 99ea1056ac Add --tabstop option
Related: https://github.com/junegunn/fzf.vim/issues/49
9 years ago
Junegunn Choi a89d8995c3 Add execute-multi action
Close #413
9 years ago
Junegunn Choi dbc854d5f4 Handle wide unicode characters in --prompt 9 years ago
Junegunn Choi 6bddffbca4 Setup signal handlers before ncurses initialization
This prevents fzf from missing SIGWINCH during startup which
occasionally happens with fzf-tmux
9 years ago
Junegunn Choi ae04f56dbd Fix --bind "double-click:execute(...)" (#374) 9 years ago
Junegunn Choi f80ff8c917 Add bindable double-click event (#374) 9 years ago
Junegunn Choi 86bc9d506f Fix invalid interrupt handler during execute action
Interrupt handling during execute action was not serialized and often
caused crash, failed to restore the terminal state.
9 years ago
Junegunn Choi ca19762e58 Exit status 130 when fzf is terminated by the user
Related: #345
9 years ago
Junegunn Choi 2022a3ad96 Replace --header-file with --header (#346)
and allow using --header and --header-lines at the same time.

Close #346.
9 years ago
Junegunn Choi 65d9d416b4 Change exit status (0: OK, 1: No match, 2: Error/Interrupted)
A la grep. Close #345
9 years ago
Junegunn Choi 90b0cd44ac Should not strip ANSI codes when --ansi is not set 9 years ago
Junegunn Choi 15c49a3e08 Fix race condition 9 years ago
Junegunn Choi 0ea66329b8 Performance tuning - eager rune array conversion
> wc -l /tmp/list2
     2594098 /tmp/list2

    > time cat /tmp/list2 | fzf-0.10.1-darwin_amd64 -fqwerty > /dev/null

    real    0m5.418s
    user    0m10.990s
    sys     0m1.302s

    > time cat /tmp/list2 | fzf-head -fqwerty > /dev/null

    real    0m4.862s
    user    0m6.619s
    sys     0m0.982s
9 years ago
Junegunn Choi 634670e3ea Lint 9 years ago
Junegunn Choi 7231acd442 Fix mouse scroll when --margin is set 9 years ago
Junegunn Choi ee0c8a2635 Add --margin option
Close #299
9 years ago
Junegunn Choi fdbf3d3fec Replace eof action with cancel (#289) 9 years ago
Junegunn Choi 13e040baee Bind CTRL-D to the new delete-char/eof action
- CTRL-D - delete-char/eof
- DEL - delete-char
9 years ago
Junegunn Choi cc0d5539ba Add "eof" action which closes the finder only when input is empty
Close #289
9 years ago
Junegunn Choi 928fccc15b Fix header not shown when the lines go beyond the screen limit 9 years ago
Junegunn Choi 5e3cb3a4ea Fix ANSI processor to handle multi-line regions 9 years ago
Junegunn Choi f71ea5f3ea Add test cases for header and fix corner cases 9 years ago
Junegunn Choi f469c25730 Add --header-lines option 9 years ago
Junegunn Choi 8b2adba8d6 Redraw of header on resize 9 years ago
Junegunn Choi d459e9abce Add --header-file option 9 years ago
Junegunn Choi a8b2c257cd Improve handling of key names
Remember the exact string given as the key name so that it's possible to
correctly handle synonyms and print the original string.
9 years ago
Junegunn Choi d261c36cde Keep the spinner spinning even when the source stream is idle 9 years ago
Junegunn Choi fe4e452d68 Add --cycle option for cyclic scrolling
Close #266
9 years ago
Junegunn Choi d54a4fa223 Add key name "bspace" for --bind (bspace != ctrl-h) 9 years ago
Junegunn Choi 6c99cc1700 Add bind action for executing arbitrary command (#265)
e.g. fzf --bind "ctrl-m:execute(less {})"
     fzf --bind "ctrl-t:execute[tmux new-window -d 'vim {}']"
9 years ago
Junegunn Choi 77bab51696 GoLint fix 9 years ago
Junegunn Choi 6ad1736832 Fix ignore action 9 years ago
Junegunn Choi 9fca611c4a Add `ignore` action for --bind 9 years ago
Junegunn Choi 3b52811796 Add support for search history
- Add `--history` option (e.g. fzf --history ~/.fzf.history)
- Add `--history-max` option for limiting the size of the file (default 1000)
- Add `previous-history` and `next-history` actions for `--bind`
    - CTRL-P and CTRL-N are automatically remapped to these actions when
      `--history` is used

Closes #249, #251
9 years ago
Junegunn Choi eaa3c67a5e Add actions for --bind: select-all / deselect-all / toggle-all
Close #257
9 years ago
Junegunn Choi 443a80f254 Always use the same color for multi-select markers 9 years ago
Junegunn Choi 801cf9ac62 Add unbound "toggle" action for customization 9 years ago
Junegunn Choi 1592bedbe8 Custom key binding support (#238) 9 years ago
Junegunn Choi 5d9107fd15 Print info after prompt on redraw
This fixes the issue where "inline-info" is not immediately rendered
when the terminal is resized.
9 years ago
Junegunn Choi 651a8f8cc2 Add --inline-info option
Close #202
9 years ago
Junegunn Choi 9f64a00549 Fix double-click result when scroll offset is positive 9 years ago
Junegunn Choi f66d94c6b0 Add `--color=[dark|light|16|bw]` option
- dark:  the current default for 256-color terminal
- light: color scheme for 256-color terminal with light background
- 16:    the default color scheme for 16-color terminal (`+2`)
- bw:    no colors (`+c`)
9 years ago
Junegunn Choi 2fe1e28220 Improvements in performance and memory usage
I profiled fzf and it turned out that it was spending significant amount
of time repeatedly converting character arrays into Unicode codepoints.
This commit greatly improves search performance after the initial scan
by memoizing the converted results.

This commit also addresses the problem of unbounded memory usage of fzf.
fzf is a short-lived process that usually processes small input, so it
was implemented to cache the intermediate results very aggressively with
no notion of cache expiration/eviction. I still think a proper
implementation of caching scheme is definitely an overkill. Instead this
commit introduces limits to the maximum size (or minimum selectivity) of
the intermediate results that can be cached.
9 years ago
Junegunn Choi f9225f98e7 Fix sort control from Terminal 9 years ago
Junegunn Choi d1d59272a2 Add visual indication of --toggle-sort
Close #194
9 years ago
Junegunn Choi 48ab87294b Add --no-hscroll option to disable horizontal scroll
Close #193
9 years ago
Junegunn Choi 50292adacb Implement --toggle-sort option (#173) 9 years ago
Junegunn Choi 2a167aa030 Implement --expect option to support simple key bindings (#163) 9 years ago
Junegunn Choi f8c49effd4 Respect "boldness" of input string 9 years ago
Junegunn Choi b431e227da Code cleanup 9 years ago
Junegunn Choi 3dddbfd8fa Fix string truncation 9 years ago
Junegunn Choi e70a2a5817 Add support for ANSI color codes 9 years ago
Junegunn Choi c1aa5c5f33 Add --tac option and reverse display order of --no-sort
DISCLAIMER: This is a backward incompatible change
9 years ago
Junegunn Choi e808151c28 Make --select-1 and --exit-0 asynchronous 9 years ago
Junegunn Choi 448132c46c Fix error when --query contains wide-length characters 10 years ago
Junegunn Choi 71a7b3a26f Improve rendering performance by caching rune widths
Related: 8bead4a
10 years ago
Junegunn Choi 48e16edb47 Redraw and adjust upon terminal resize 10 years ago
Junegunn Choi 8bead4ae34 Improved handling of tab characters 10 years ago
Junegunn Choi 5c0dc79ffa Print selected items in the order they are selected 10 years ago
Junegunn Choi ae3180f919 Fix CTRL-Y key binding
With tmux-based test cases
10 years ago
Junegunn Choi 62acb9adc4 Fix error with empty list and release 0.9.1-dev 10 years ago
Junegunn Choi cd847affb7 Reorganize source code 10 years ago
Junegunn Choi 7a2bc2cada Lint 10 years ago
Junegunn Choi 1db68a3976 Avoid unnecessary update of search progress 10 years ago
Junegunn Choi f670f4f076 Make sure that cy is properly limited 10 years ago
Junegunn Choi 2d9b38b93e Constrain cy in vmove() 10 years ago
Junegunn Choi b8a9861f95 Fix double click on an empty row not to close fzf 10 years ago
Junegunn Choi 188c90bf25 Fix incorrect behaviors of mouse events when --multi enabled 10 years ago
Junegunn Choi b7bb100810 Improve response time by only looking at top-N items 10 years ago
Junegunn Choi aa05bf5206 Reduce memory footprint 10 years ago
Junegunn Choi efec9acd6f Fix missing mutex unlock 10 years ago
Junegunn Choi f99f66570b Add small initial delay to screen update
To avoid flickering when the input is small
10 years ago
Junegunn Choi 383f908cf7 Remove unnecessary event dispatch 10 years ago
Junegunn Choi dee0909d2b Fix mouse click offset when list is scrolled 10 years ago
Junegunn Choi 606d33e77e Remove race conditions from screen update 10 years ago
Junegunn Choi f3177305d5 Rewrite fzf in Go 10 years ago