./sysutils/fzf, Command-line fuzzy finder

[ CVSweb ] [ Homepage ] [ RSS ] [ Required by ] [ Add to tracker ]


Branch: CURRENT, Version: 0.56.3, Package name: fzf-0.56.3, Maintainer: pkgsrc-users

fzf is a general-purpose command-line fuzzy finder. It's an
interactive Unix filter for command-line that can be used with any
list; files, command history, processes, hostnames, bookmarks, git
commits, etc.


Required to run:
[shells/bash]

Required to build:
[pkgtools/cwrappers] [security/go-crypto] [textproc/go-runewidth] [devel/go-sys] [devel/go-isatty] [devel/go-shellwords] [lang/go114]

Master sites:

Filesize: 293.364 KB

Version history: (Expand)


CVS history: (Expand)


   2024-04-21 10:54:36 by Iku Iwasa | Files touched by this commit (3) | Package updated
Log message:
fzf: update to 0.50.0

0.50.0

* Search performance optimization. You can observe 50%+ improvement in some
  scenarios.

    $ rg --line-number --no-heading --smart-case . > $DATA

    $ wc < $DATA
     5520118 26862362 897487793

    $ hyperfine -w 1 -L bin fzf-0.49.0,fzf-7ce6452,fzf-a5447b8,fzf '{bin} \ 
--filter "///" < $DATA | head -30'
    Summary
      fzf --filter "///" < $DATA | head -30 ran
        1.16 ± 0.03 times faster than fzf-a5447b8 --filter "///" < \ 
$DATA | head -30
        1.23 ± 0.03 times faster than fzf-7ce6452 --filter "///" < \ 
$DATA | head -30
        1.52 ± 0.03 times faster than fzf-0.49.0 --filter "///" < \ 
$DATA | head -30

* Added: jump and jump-cancel events that are triggered when leaving jump
  mode

    # Default behavior
    fzf --bind space:jump

    # Same as jump-accept action
    fzf --bind space:jump,jump:accept

    # Accept on jump, abort on cancel
    fzf --bind space:jump,jump:accept,jump-cancel:abort

    # Change header on jump-cancel
    fzf --bind 'space:change-header(Type jump \ 
label)+jump,jump-cancel:change-header:Jump cancelled'

* Added: a new environment variable $FZF_KEY exported to the child
  processes. It's the name of the last key pressed.

   fzf: --bind 'space:jump,jump:accept,jump-cancel:transform:[[ $FZF_KEY =~ \ 
ctrl-c ]] && echo abort'

* fzf can be built with profiling options. See BUILD.md for more information.

* Bug fixes

0.49.0

* Ingestion: performance improved by around 40% (more or less depending on
  options)

    $ time wc data
     5513620 37997130 547840920 data

    real    0m0.822s
    user    0m0.764s
    sys     0m0.052s

    $ hyperfine -L bin fzf-0.48.1,fzf '{bin} --sync --bind load:accept < data'
    Benchmark 1: fzf-0.48.1 --sync --bind load:accept < data
      Time (mean ± σ):     440.3 ms ±   4.9 ms    [User: 501.8 ms, System: \ 
117.0 ms]
      Range (min … max):   432.8 ms … 446.1 ms    10 runs

    Benchmark 2: fzf --sync --bind load:accept < data
      Time (mean ± σ):     303.3 ms ±   4.5 ms    [User: 320.1 ms, System: \ 
108.6 ms]
      Range (min … max):   296.6 ms … 311.4 ms    10 runs

    Summary
      fzf --sync --bind load:accept < data ran
        1.45 ± 0.03 times faster than fzf-0.48.1 --sync --bind load:accept < data

* --info=hidden: and --info=inline-right will no longer hide the horizontal
  separator by default. This gives you more flexibility in customizing the
  layout.

    fzf --border --info=inline-right
    fzf --border --info=inline-right --separator ═
    fzf --border --info=inline-right --no-separator
    fzf --border --info=hidden
    fzf --border --info=hidden --separator ━
    fzf --border --info=hidden --no-separator

* Added two environment variables exported to the child processes

  * FZF_PREVIEW_LABEL
  * FZF_BORDER_LABEL

    # Use the current value of $FZF_PREVIEW_LABEL to determine which actions to \ 
perform
    git ls-files |
      fzf --header 'Press CTRL-P to change preview mode' \
          --bind='ctrl-p:transform:[[ $FZF_PREVIEW_LABEL =~ cat ]] \
          && echo "change-preview(git log --color=always \ 
\{})+change-preview-label([[ log ]])" \
          || echo "change-preview(bat --color=always \ 
\{})+change-preview-label([[ cat ]])"'

* Renamed: track action to track-current to highlight the difference
  between the global tracking state set by --track and a one-off tracking
  action
  * track is still available as an alias

* Added untrack-current and toggle-track-current actions
  * *-current actions are no-op when the global tracking state is set

* Bug fixes and minor improvements
   2024-04-05 21:14:14 by Benny Siegert | Files touched by this commit (161) | Package updated
Log message:
Revbump all Go packages after go121 update
   2024-03-23 07:34:00 by Iku Iwasa | Files touched by this commit (3) | Package updated
Log message:
fzf: update to 0.48.1

0.48.1

* CTRL-T and ALT-C bindings can be disabled by setting FZF_CTRL_T_COMMAND
  and FZF_ALT_C_COMMAND to empty strings respectively when sourcing the
  script

    # bash
    FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --bash)"

    # zsh
    FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= eval "$(fzf --zsh)"

    # fish
    fzf --fish | FZF_CTRL_T_COMMAND= FZF_ALT_C_COMMAND= source

  * Setting the variables after sourcing the script will have no effect
* Bug fixes

0.48.0

* Shell: integration scripts are now embedded in the fzf binary. This
  simplifies the distribution, and the users are less likely to have problems
  caused by using incompatible scripts and binaries.
  * bash

      # Set up fzf key bindings and fuzzy completion
      eval "$(fzf --bash)"

  * zsh

       # Set up fzf key bindings and fuzzy completion
       eval "$(fzf --zsh)"

  * fish

      # Set up fzf key bindings
      fzf --fish | source

* Added options for customizing the behavior of the built-in walker

  Option		Description					 Default
  --walker=OPTS 	Walker options ([file][,dir][,follow][,hidden])  file,follow,hidden
  --walker-root=DIR 	Root directory from which to start walker        .
  --walker-skip=DIRS 	Comma-separated list of directory names to skip  \ 
.git,node_modules

  * Examples

      # Built-in walker is only used by standalone fzf when $FZF_DEFAULT_COMMAND \ 
is not set
      unset FZF_DEFAULT_COMMAND

      fzf # default: --walker=file,follow,hidden --walker-root=. \ 
--walker-skip=.git,node_modules
      fzf --walker=file,dir,hidden,follow --walker-skip=.git,node_modules,target

      # Walker options in $FZF_DEFAULT_OPTS
      export FZF_DEFAULT_OPTS="--walker=file,dir,hidden,follow \ 
--walker-skip=.git,node_modules,target"
      fzf

      # Reading from STDIN; --walker is ignored
      seq 100 | fzf --walker=dir

      # Reading from $FZF_DEFAULT_COMMAND; --walker is ignored
      export FZF_DEFAULT_COMMAND='seq 100'
      fzf --walker=dir

* Shell: integration scripts have been updated to use the built-in walker
  with these new options and they are now much faster out of the box.

0.47.0

* Replaced "the default find command" with a built-in directory walker to
  simplify the code and to achieve better performance and consistent behavior
  across platforms. This doesn't affect you if you have $FZF_DEFAULT_COMMAND
  set.
  * Breaking changes:
    * Unlike the previous "find" command, the new traversal code will list
      hidden files, but hidden directories will still be ignored
    * No filtering of devtmpfs or proc types
    * Traversal is parallelized, so the order of the entries will be
      different each time
  * You may wonder why fzf implements directory walker anyway when it's a
    filter program following the Unix philosophy. But fzf has had the walker
    code for years to tackle the performance problem on Windows. And I
    decided to use the same approach on different platforms as well for the
    benefits listed above.
  * Built-in: walker is using the excellent charlievieth/fastwalk library,
    which easily outperforms its competitors and supports safely following
    symlinks.
* Added $FZF_DEFAULT_OPTS_FILE to allow managing default options in a file
  * Option precedence from lower to higher
    a. Options read from $FZF_DEFAULT_OPTS_FILE
    b. Options from $FZF_DEFAULT_OPTS
    c. Options from command-line arguments
* Bug fixes and improvements
   2024-02-10 07:04:36 by Iku Iwasa | Files touched by this commit (3) | Package updated
Log message:
fzf: update to 0.46.1

* Bug fixes and improvements
* Updated rivo/uniseg dependency to v0.4.6
   2024-02-07 15:51:04 by Benny Siegert | Files touched by this commit (156) | Package updated
Log message:
Revbump all Go packages after go121 update
   2024-01-28 09:18:18 by Iku Iwasa | Files touched by this commit (3) | Package updated
Log message:
fzf: update to 0.46.0

* Added two new events
  * result - triggered when the filtering for the current query is complete
    and the result list is ready resize - triggered when the terminal size
  * is changed

* fzf now exports the following environment variables to the child processes
    Variable		Description
    FZF_LINES		Number of lines fzf takes up excluding padding and margin
    FZF_COLUMNS		Number of columns fzf takes up excluding padding and margin
    FZF_TOTAL_COUNT	Total number of items
    FZF_MATCH_COUNT	Number of matched items
    FZF_SELECT_COUNT	Number of selected items
    FZF_QUERY		Current query string
    FZF_PROMPT		Prompt string
    FZF_ACTION		The name of the last action performed

  * This allows you to write sophisticated transformations like so

    # Script to dynamically resize the preview window
    transformer='
      # 1 line for info, another for prompt, and 2 more lines for preview window \ 
border
      lines=$(( FZF_LINES - FZF_MATCH_COUNT - 4 ))
      if [[ $FZF_MATCH_COUNT -eq 0 ]]; then
        echo "change-preview-window:hidden"
      elif [[ $lines -gt 3 ]]; then
        echo "change-preview-window:$lines"
      elif [[ $FZF_PREVIEW_LINES -ne 3 ]]; then
        echo "change-preview-window:3"
      fi
    '
    seq 10000 | fzf --preview 'seq {} 10000' --preview-window up \
                    --bind "result:transform:$transformer" \
                    --bind "resize:transform:$transformer"

  * And we're phasing out {fzf:prompt} and {fzf:action}

* Changed: mattn/go-runewidth dependency to rivo/uniseg for accurate
  results

  * Set --ambidouble if your terminal displays ambiguous width characters
    (e.g. box-drawing characters for borders) as 2 columns
  * RUNEWIDTH_EASTASIAN=1 is still respected for backward compatibility,
    but it's recommended that you use this new option instead

* Bug fixes
   2024-01-10 20:14:43 by Benny Siegert | Files touched by this commit (152) | Package updated
Log message:
Revbump all Go packages after go121 update
   2024-01-07 09:12:26 by Iku Iwasa | Files touched by this commit (3) | Package updated
Log message:
fzf: update to 0.45.0

* Added transform action to conditionally perform a series of actions

    # Disallow selecting an empty line
    echo -e "1. Hello\n2. Goodbye\n\n3. Exit" |
      fzf --height '~100%' --reverse --header 'Select one' \
          --bind 'enter:transform:[[ -n {} ]] && echo accept || echo \ 
"change-header:Invalid selection"'

    # Move cursor past the empty line
    echo -e "1. Hello\n2. Goodbye\n\n3. Exit" |
      fzf --height '~100%' --reverse --header 'Select one' \
          --bind 'enter:transform:[[ -n {} ]] && echo accept || echo \ 
"change-header:Invalid selection"' \
          --bind 'focus:transform:[[ -n {} ]] && exit; [[ {fzf:action} \ 
=~ up$ ]] && echo up || echo down'

    # A single key binding to toggle between modes
    fd --type file |
      fzf --prompt 'Files> ' \
          --header 'CTRL-T: Switch between Files/Directories' \
          --bind 'ctrl-t:transform:[[ ! {fzf:prompt} =~ Files ]] &&
                    echo "change-prompt(Files> )+reload(fd --type \ 
file)" ||
                    echo "change-prompt(Directories> )+reload(fd --type \ 
directory)"'

* Added placeholder expressions
  * {fzf:action} - The name of the last action performed
  * {fzf:prompt} - Prompt string (including ANSI color codes)
  * {fzf:query} - Synonym for {q}

* Added support for negative height

    # Terminal height minus 1, so you can still see the command line
    fzf --height=-1

  This handles a terminal resize better than --height=$(($(tput lines) - 1))

* Added: accept-or-print-query action that acts like accept but prints the
  current query when there's no match for the query

    # You can make CTRL-R paste the current query when there's no match
    export FZF_CTRL_R_OPTS='--bind enter:accept-or-print-query'

  * Note that there are alternative ways to implement the same strategy

      # 'become' is apparently more versatile but it's not available on Windows.
      export FZF_CTRL_R_OPTS='--bind "enter:become:if [ -z {} ]; then echo \ 
{q}; else echo {}; fi"'

      # Using the new 'transform' action
      export FZF_CTRL_R_OPTS='--bind "enter:transform:[ -z {} ] && \ 
echo print-query || echo accept"'

* Added show-header and hide-header actions
* Bug fixes