Commit Graph

352 Commits (f7447aece12f9b95133b803d5c4f71815bee8ca6)

Author SHA1 Message Date
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 05b5f3f845
'reload' action should reset multi-selection 5 years ago
Junegunn Choi deccf20a35
Fix regression of select-all 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
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 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
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 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 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
5 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 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
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
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
ZDNoFYVe 43345fb642 Implement flag for preserving whitespace around field (#1242) 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
Junegunn Choi 9c47739c0e
Fix panic when replace-query is triggered on empty result set 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
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 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 e3973c74e7
Fix custom foreground color inside preview window
Close #1046
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 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 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 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 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 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 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
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 eba9e04e2e
Export FZF_PREVIEW_HEIGHT instead of FZF_HEIGHT
https://github.com/junegunn/fzf.vim/issues/361
7 years ago
Junegunn Choi d34e4cf698
Support CTRL-Z (SIGSTOP) 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 c82fb3c9b9
Add toggle-preview-wrap action 7 years ago
Junegunn Choi 309e1d8619
Properly truncate long query string 7 years ago
Junegunn Choi 4b700192c1
Add --border option to draw horizontal lines above and below the finder
Goes well with --height
7 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
7 years ago
Junegunn Choi 421b9b271a
Add execute-silent action
Close #823
7 years ago
Junegunn Choi ed57dcb924
Extend placeholder expression for multiple selections
Close #788
7 years ago
Junegunn Choi 8731d75607
Recalculate the width of trimmed line
Close #821
7 years ago
Junegunn Choi 6a75e30941
Allow invisible preview window (--preview-window 0)
Close #820
7 years ago
Junegunn Choi 71dec3dc5e
Fix bug where screen is not properly cleared on toggle-preview 7 years ago
Junegunn Choi ff248d566d
Drop ncurses dependency
Close #818
7 years ago
Junegunn Choi 131aa5dd15
Composable actions in --bind
Close #816
7 years ago
Junegunn Choi 8e2e63f9b9
Propertly fill window with background color
Close #805
7 years ago
Amos Bird 11015df52f Add half-page-{up,down} actions (#784) 7 years ago
Junegunn Choi ede7bfb901
Optimize LightRenderer for slow terminals 7 years ago
Junegunn Choi e0036b5ad2
Add --filepath-word option
Close #802
7 years ago
Junegunn Choi 2aa739be81
Fix bug where occurrence of the pattern in header lines are highlighted 7 years ago
Junegunn Choi 9977a3e9fc
Make preview renderer suspend early on line wrap 7 years ago
Junegunn Choi 340af463cd
Add --min-height option for percent --height 7 years ago
Junegunn Choi 9d545f9578
Fix update of multi-select pointer 7 years ago
Junegunn Choi 1448d631a7
Add --height option 7 years ago
Junegunn Choi 7b0d9e1e07
Apply --tabstop to preview window 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 3858086047
Always print scroll indicator in preview window 8 years ago
Junegunn Choi 8524ea7441
Do not ignore resize event from ncurses and tcell 8 years ago
Junegunn Choi 4b332d831e
Add --no-bold option 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
Junegunn Choi 0c573b3dff
Prepare for termbox/windows build
`TAGS=termbox make` (or `go build -tags termbox`)
8 years ago
Junegunn Choi 9f321cbe13
Fix header lines being cleared on toggle-preview
Close #722
8 years ago
Junegunn Choi 0a8d2996dc
Set foreground color without affecting background
Close #712
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 957c12e7d7
Fix SEGV when trying to render preview but the window is closed
Close #677
8 years ago
Junegunn Choi 1fc5659842
Add support for more ANSI color attributes (#674)
Dim, underline, blink, reverse
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 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.
8 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"
8 years ago
Junegunn Choi 8d3a302a17 Simplify Item structure
This commit compensates for the performance overhead from the
extended tiebreak option.
8 years ago
Junegunn Choi 1d2d32c847 Accept comma-separated list of sort criteria 8 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 9 years ago
Junegunn Choi 71a7b3a26f Improve rendering performance by caching rune widths
Related: 8bead4a
9 years ago
Junegunn Choi 48e16edb47 Redraw and adjust upon terminal resize 9 years ago
Junegunn Choi 8bead4ae34 Improved handling of tab characters 9 years ago
Junegunn Choi 5c0dc79ffa Print selected items in the order they are selected 9 years ago
Junegunn Choi ae3180f919 Fix CTRL-Y key binding
With tmux-based test cases
9 years ago
Junegunn Choi 62acb9adc4 Fix error with empty list and release 0.9.1-dev 9 years ago
Junegunn Choi cd847affb7 Reorganize source code 9 years ago
Junegunn Choi 7a2bc2cada Lint 9 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