diff --git a/README.md b/README.md index e75992a..afea88e 100644 --- a/README.md +++ b/README.md @@ -5,25 +5,17 @@ ![Github commits (since latest release)](https://img.shields.io/github/commits-since/andreyorst/fzf.kak/latest.svg) ![license](https://img.shields.io/github/license/andreyorst/fzf.kak.svg) -> **fzf.kak** is a plugin for [Kakoune](https://github.com/mawww/kakoune) editor, that brings integration with [fzf](https://github.com/junegunn/fzf) -> tool. This plugin is being tested against Kakoune 2018.09.04. +**fzf.kak** is a plugin for [Kakoune](https://github.com/mawww/kakoune) editor, that brings integration with [fzf](https://github.com/junegunn/fzf) +tool. This plugin is being tested against Kakoune 2018.09.04. ![showcase](https://user-images.githubusercontent.com/19470159/46813471-6ee76800-cd7f-11e8-89aa-123b3a5f9f1b.gif) -### Dependencies -|Tool |Information | -|:--------:|:--------------------------------------------------------------------------------------| -|tmux |Depends on [fzf-tmux](https://github.com/junegunn/fzf/blob/master/bin/fzf-tmux) script.| -|X11 |X11 supported via `termcmd` option. | -|GNU Screen|GNU Screen is not yet supported. | -|ctags |[universal-ctags](https://github.com/universal-ctags/ctags) package. | - ## Installation Recommended way to install is to use [plug.kak](https://github.com/andreyorst/plug.kak) plugin manager. You can install **fzf.kak** by adding this to your `kakrc`: ```kak -plug andreyorst/fzf.kak +plug "andreyorst/fzf.kak" ``` Then reload Kakoune config or restart Kakoune and run `:plug-install`. @@ -31,24 +23,24 @@ Then reload Kakoune config or restart Kakoune and run `:plug-install`. Or install this plugin any other preferred way. ## Usage -There's no default key binking to invoke fzf, but **fzf.kak** provides a `fzf-mode` command that can be mapped to preferred key. +There's no default key binding to invoke fzf, but **fzf.kak** provides a `fzf-mode` command that can be mapped to preferred key. You can set your own mapping to invoke `fzf-mode`: -``` + +```kak map global normal ': fzf-mode' # note that the space after colon is intentional to suppess fzf-mode to show in command history ``` -Each fzf subcommand has mnemonic mapping, like `f` for opening files, `t` for tags and so on. + +Each fzf sub-command has mnemonic mapping, like `f` for opening files, `t` for tags and so on. Available mappings: -- b - Select buffer -- c - Switch servers working directory -- f - Search for file and open it -- v - Edit file in version control system tree -- V - Explicitly select which vcs command to run -- s - Search over buffer contents and jump to result line -- t - Browse ctags tags - fzf.kak supports filtering tags on per language basis. For each filetype - press alt+filter key specified in the info box to - reload fzf buffer with the desired filter. +- b - Select buffer +- c - Switch server's working directory +- f - Search for file and open it +- v - Edit file in version control system tree +- Alt+v - Explicitly select which vcs command to run +- s - Search over buffer contents and jump to result line +- t - Browse ctags tags +- Alt+t - Select tag kind filter on per language basis So for example pressing Ctrl+pf will open fzf at the bottom of the Kakoune buffer, showing you all possible files. @@ -58,9 +50,9 @@ bottom of the Kakoune buffer, showing you all possible files. #### Tmux When using inside tmux, fzf will use bottom split. Height of this split can be changed with `fzf_tmux_height` option. -`fzf_tmux_height_file_preview` option is used to control height of the split when you do file searching. +`fzf_tmux_height_file_preview` option is used to control height of the split when you do file searching with file-preview turned on. -#### Files +#### File with file-preview turned on. You can configure what command to use to search for files, and it's arguments. Supported tools are [GNU Find](https://www.gnu.org/software/findutils/), [The Silver Searcher](https://github.com/ggreer/the_silver_searcher), [ripgrep](https://github.com/BurntSushi/ripgrep), [fd](https://github.com/sharkdp/fd). GNU find is used by default, but you can switch to another one. There are some default values for those, so you can go: @@ -90,7 +82,7 @@ You also able to set parameters to vcs command to use to provide project files. * `fzf_hg_command` Other VCS are not supported officially. Open a feature request if you want some unsupported VCS to be included. -You also can change one of options to contain your vcs command, and use this command explicitly from vcs submode. +You also can change one of options to contain your VCS command, and use this command explicitly from VCS sub-mode. #### ctags It is also possible to add parameters to ctags search executable. like `sort -u` and others: @@ -133,19 +125,22 @@ You can disable the preview window in fzf window by setting `fzf_preview` option set-option global fzf_preview false ``` -## Some demonstration gifs: -### Opening files: -![files](https://user-images.githubusercontent.com/19470159/45917778-3988e200-be85-11e8-890d-b180d013b99e.gif) +## Contributing -### Searching tags with universal-ctags -![ctags](https://user-images.githubusercontent.com/19470159/45917775-3988e200-be85-11e8-8959-d7ddf17961b7.gif) +If you want to contribute to **fzf.kak** by adding a module, you can submit one by providing a pull request, +or just open a feature request and we'll see what can be done. -### Browsing Git tree files -![git](https://user-images.githubusercontent.com/19470159/45917779-3988e200-be85-11e8-9136-c0c830e838bc.gif) +### Writing a module -### Switching buffers -![buffers](https://user-images.githubusercontent.com/19470159/45917774-38f04b80-be85-11e8-963b-5721bd6364b3.gif) +You can write a module for **fzf.kak**. To create one, simply define a function in separate file, located +in `rc/fzf-modules/`, and named after the function. **fzf.kak** provides a general purpose command, that can be called with some +Kakoune command as first parameter, and command that provides list of items for fzf as a second parameter. Third optional parameter is +for defining extra arguments for fzf itself, like additional keybindings. -### Changing directories -![dirs](https://user-images.githubusercontent.com/19470159/45917776-3988e200-be85-11e8-89bf-7c1453806c83.gif) +Overall module structure is: +* Define a `fzf-command` command +* Prepare list of items for fzf, or define an item command +* call `fzf` command and pass needed arguments to it. +Of course modules can and will be more complex, since a good module checks if command for providing item list is available on user's machine, +and supports various settings inside it. Feel free to look how existing modules are made. diff --git a/rc/fzf-modules/VCS/fzf-bzr.kak b/rc/fzf-modules/VCS/fzf-bzr.kak new file mode 100644 index 0000000..e2d7e7b --- /dev/null +++ b/rc/fzf-modules/VCS/fzf-bzr.kak @@ -0,0 +1,32 @@ +# ╭─────────────╥─────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-svn.kak │ +# ╞═════════════╩═════════════════════════╡ +# │ Submodule for Bzr support for fzf.kak │ +# ╞═══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰───────────────────────────────────────╯ + +declare-option -docstring "command to provide list of files in GNU Bazaar repository to fzf. Arguments are supported +Supported tools: + : : + GNU Bazaar: ""bzr"" + +Default arguments: + ""bzr ls -R --versioned -0"" +" \ +str fzf_bzr_command "bzr" + +map global fzf-vcs -docstring "edit file from GNU Bazaar tree" 'b' ': fzf-bzr' + +define-command -hidden fzf-bzr %{ evaluate-commands %sh{ + case $kak_opt_fzf_bzr_command in + bzr) + cmd="bzr ls -R --versioned -0" ;; + bzr*) + cmd=$kak_opt_fzf_bzr_command ;; + esac + [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" + printf "%s\n" "fzf %{edit} %{$cmd} %{-m --expect ctrl-w $additional_flags}" +}} + diff --git a/rc/fzf-modules/VCS/fzf-git.kak b/rc/fzf-modules/VCS/fzf-git.kak new file mode 100644 index 0000000..102dd34 --- /dev/null +++ b/rc/fzf-modules/VCS/fzf-git.kak @@ -0,0 +1,32 @@ +# ╭─────────────╥─────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-svn.kak │ +# ╞═════════════╩═════════════════════════╡ +# │ Submodule for Git support for fzf.kak │ +# ╞═══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰───────────────────────────────────────╯ + +declare-option -docstring "command to provide list of files in git tree to fzf. Arguments are supported +Supported tools: + : : + Git : ""git"" + +Default arguments: + ""git ls-tree --full-tree --name-only -r HEAD"" +" \ +str fzf_git_command "git" + +map global fzf-vcs -docstring "edit file from Git tree" 'g' ': fzf-git' + +define-command -hidden fzf-git %{ evaluate-commands %sh{ + case $kak_opt_fzf_git_command in + git) + cmd="git ls-tree --full-tree --name-only -r HEAD" ;; + git*) + cmd=$kak_opt_fzf_git_command ;; + esac + [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" + printf "%s\n" "fzf %{edit} %{$cmd} %{-m --expect ctrl-w $additional_flags}" +}} + diff --git a/rc/fzf-modules/VCS/fzf-hg.kak b/rc/fzf-modules/VCS/fzf-hg.kak new file mode 100644 index 0000000..9912f12 --- /dev/null +++ b/rc/fzf-modules/VCS/fzf-hg.kak @@ -0,0 +1,32 @@ +# ╭─────────────╥────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-svn.kak │ +# ╞═════════════╩════════════════════════╡ +# │ Submodule for Hg support for fzf.kak │ +# ╞══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰──────────────────────────────────────╯ + +declare-option -docstring "command to provide list of files in mercurial repository to fzf. Arguments are supported +Supported tools: + : : + Mercurial SCM: ""hg"" + +Default arguments: + ""hg locate -f -0 -I .hg locate -f -0 -I ."" +" \ +str fzf_hg_command "hg" + +map global fzf-vcs -docstring "edit file from mercurial tree" 'h' ': fzf-hg' + +define-command -hidden fzf-hg %{ evaluate-commands %sh{ + case $kak_opt_fzf_hg_command in + hg) + cmd="hg locate -f -0 -I .hg locate -f -0 -I ." ;; + hg*) + cmd=$kak_opt_fzf_hg_command ;; + esac + [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" + printf "%s\n" "fzf %{edit} %{$cmd} %{-m --expect ctrl-w $additional_flags}" +}} + diff --git a/rc/fzf-modules/VCS/fzf-svn.kak b/rc/fzf-modules/VCS/fzf-svn.kak new file mode 100644 index 0000000..ee89fc2 --- /dev/null +++ b/rc/fzf-modules/VCS/fzf-svn.kak @@ -0,0 +1,32 @@ +# ╭─────────────╥─────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-svn.kak │ +# ╞═════════════╩═════════════════════════╡ +# │ Submodule for Svn support for fzf.kak │ +# ╞═══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰───────────────────────────────────────╯ + +declare-option -docstring "command to provide list of files in svn repository to fzf. Arguments are supported +Supported tools: + : : + Subversion: ""svn"" + +Default arguments: + ""svn list -R . | grep -v '$/' | tr '\\n' '\\0'"" +" \ +str fzf_svn_command "svn" + +map global fzf-vcs -docstring "edit file from Subversion tree" 's' ': fzf-svn' + +define-command -hidden fzf-svn %{ evaluate-commands %sh{ + case $kak_opt_fzf_svn_command in + svn) + cmd="svn list -R . | grep -v '$/' | tr '\\n' '\\0'" ;; + svn*) + cmd=$kak_opt_fzf_svn_command ;; + esac + [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" + printf "%s\n" "fzf %{edit} %{$cmd} %{-m --expect ctrl-w $additional_flags}" +}} + diff --git a/rc/fzf-modules/fzf-buffer.kak b/rc/fzf-modules/fzf-buffer.kak new file mode 100644 index 0000000..c3064d4 --- /dev/null +++ b/rc/fzf-modules/fzf-buffer.kak @@ -0,0 +1,17 @@ +# ╭─────────────╥────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-buffer.kak │ +# ╞═════════════╩════════════════════════╡ +# │ Module for changing buffers with fzf │ +# │ for fzf.kak plugin │ +# ╞══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰──────────────────────────────────────╯ + +map global fzf -docstring "open buffer" 'b' ': fzf-buffer' + +define-command -hidden fzf-buffer %{ evaluate-commands %sh{ + printf "%s\n" "info -title %{fzf buffer} %{Set buffer to edit in current client.}" + buffers=$(printf "%s\n" "$kak_buflist" | sed "s/^'//;s/'$//;s/' '/\n/g") + printf "%s\n" "fzf %{buffer} %{printf \"%s\n\" \"$buffers\"}" +}} diff --git a/rc/fzf-modules/fzf-cd.kak b/rc/fzf-modules/fzf-cd.kak new file mode 100644 index 0000000..a8c9e80 --- /dev/null +++ b/rc/fzf-modules/fzf-cd.kak @@ -0,0 +1,31 @@ +# ╭─────────────╥────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-cd.kak │ +# ╞═════════════╩════════════════════════╡ +# │ Module for changing directories with │ +# │ fzf for fzf.kak plugin │ +# ╞══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰──────────────────────────────────────╯ + +declare-option -docstring "command to provide list of directories to fzf. +Default value: + find: (echo .. && find \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print) +" \ +str fzf_cd_command "find" + +map global fzf -docstring "change directory" 'c' ': fzf-cd' + +define-command -hidden fzf-cd %{ evaluate-commands %sh{ + tmux_height=$kak_opt_fzf_tmux_height + printf '%s\n' "info -title %{fzf change directory} %{Change the server's working directory}" + + case $kak_opt_fzf_cd_command in + find) + items_command="(echo .. && find \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print)" ;; + *) + items_command=$kak_opt_fzf_cd_command ;; + esac + printf "%s\n" "fzf %{change-directory} %{$items_command} %{} %{fzf-cd}" +}} + diff --git a/rc/fzf-modules/fzf-ctags.kak b/rc/fzf-modules/fzf-ctags.kak new file mode 100644 index 0000000..0dfd211 --- /dev/null +++ b/rc/fzf-modules/fzf-ctags.kak @@ -0,0 +1,838 @@ +# ╭─────────────╥──────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-ctags.kak │ +# ╞═════════════╩══════════════════════════╡ +# │ Module for searching tags with fzf │ +# │ and universal-ctags for fzf.kak plugin │ +# ╞════════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰────────────────────────────────────────╯ + +declare-option -docstring "command to provide list of ctags to fzf. Arguments are supported +Supported tools: + : : + universal-ctags: ""readtags"" + +Default arguments: + ""readtags -l | cut -f1"" +" \ +str fzf_tag_command "readtags" + +declare-option -docstring "file that should be used by fzf-tag to provide tags. +Default value: tags" \ +str fzf_tag_file "tags" + +map global fzf -docstring "find tag" 't' ': fzf-tag' + +# this huge try block defines filetype aware filter mappings for separate fzf-ctags mode +try %{ + declare-user-mode fzf-ctags + + map global fzf -docstring "select tag type" '' ': enter-user-mode fzf-ctags' + + hook global WinSetOption filetype=ada %{ + map global fzf-ctags '' ': fzf-tag P' -docstring 'package specifications' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'types' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'subtypes' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'record type components' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'enum type literals' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'generic formal parameters' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'constants' + map global fzf-ctags 'x' ': fzf-tag x' -docstring 'user defined exceptions' + map global fzf-ctags '' ': fzf-tag R' -docstring 'subprogram specifications' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'subprograms' + map global fzf-ctags '' ': fzf-tag K' -docstring 'task specifications' + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'tasks' + map global fzf-ctags '' ': fzf-tag O' -docstring 'protected data specifications' + map global fzf-ctags 'o' ': fzf-tag o' -docstring 'protected data' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'task/protected data entries' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'labels' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'loop/declare identifiers' + map global fzf-ctags '' ': fzf-tag S' -docstring '(ctags internal use)' + } + hook global WinSetOption filetype=ant %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'projects' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'targets' + map global fzf-ctags '' ': fzf-tag P' -docstring 'properties(global)' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'antfiles' + } + hook global WinSetOption filetype=asciidoc %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'chapters' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags '' ': fzf-tag S' -docstring 'level 2 sections' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'level 3 sections' + map global fzf-ctags '' ': fzf-tag T' -docstring 'level 4 sections' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'level 5 sections' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'anchors' + } + hook global WinSetOption filetype=asm %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'defines' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'macros' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'types (structs and records)' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + } + hook global WinSetOption filetype=asp %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'constants' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'subroutines' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + } + hook global WinSetOption filetype=autoconf %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'templates' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'autoconf macros' + map global fzf-ctags 'w' ': fzf-tag w' -docstring 'options specified with --with-...' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'options specified with --enable-...' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'substitution keys' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'automake conditions' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'definitions' + } + hook global WinSetOption filetype=autoit %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'regions' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'global variables' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'local variables' + map global fzf-ctags '' ': fzf-tag S' -docstring 'included scripts' + } + hook global WinSetOption filetype=automake %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'directories' + map global fzf-ctags '' ': fzf-tag P' -docstring 'programs' + map global fzf-ctags '' ': fzf-tag M' -docstring 'manuals' + map global fzf-ctags '' ': fzf-tag T' -docstring 'ltlibraries' + map global fzf-ctags '' ': fzf-tag L' -docstring 'libraries' + map global fzf-ctags '' ': fzf-tag S' -docstring 'scripts' + map global fzf-ctags '' ': fzf-tag D' -docstring 'datum' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'conditions' + } + hook global WinSetOption filetype=awk %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + } + hook global WinSetOption filetype=basic %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constants' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'types' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumerations' + } + hook global WinSetOption filetype=beta %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'fragment definitions' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'slots (fragment uses)' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'patterns (virtual or rebound)' + } + hook global WinSetOption filetype=clojure %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + } + hook global WinSetOption filetype=cmake %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'macros' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'targets' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + map global fzf-ctags '' ': fzf-tag D' -docstring 'options specified with -' + map global fzf-ctags 'p' ': fzf-tag P' -docstring 'projects' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'regex' + } + hook global WinSetOption filetype=c %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumerators (values inside an enumeration)' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumeration names' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'included header files' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'struct, and union members' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structure names' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'typedefs' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'union names' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + } + hook global WinSetOption filetype=cpp %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumerators (values inside an enumeration)' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumeration names' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'included header files' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'class, struct, and union members' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structure names' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'typedefs' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'union names' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + } + hook global WinSetOption filetype=cpreprocessor %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'included header files' + } + hook global WinSetOption filetype=css %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'selectors' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'identities' + } + hook global WinSetOption filetype=csharp %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumerators (values inside an enumeration)' + map global fzf-ctags '' ': fzf-tag E' -docstring 'events' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'fields' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumeration names' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'properties' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structure names' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'typedefs' + } + hook global WinSetOption filetype=ctags %{ + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'language definitions' + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'kind definitions' + } + hook global WinSetOption filetype=cobol %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'paragraphs' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'data items' + map global fzf-ctags '' ': fzf-tag S' -docstring 'source code file' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'file descriptions (f, , )' + map global fzf-ctags 'g' ': fzf-tag G' -docstring 'group items' + map global fzf-ctags '' ': fzf-tag P' -docstring 'program ids' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags '' ': fzf-tag D' -docstring 'divisions' + } + hook global WinSetOption filetype=cuda %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumerators (values inside an enumeration)' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumeration names' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'included header files' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'struct, and union members' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structure names' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'typedefs' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'union names' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + } + hook global WinSetOption filetype=d %{ + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'aliases' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumeration names' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumerators (values inside an enumeration)' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'class, struct, and union members' + map global fzf-ctags '' ': fzf-tag X' -docstring 'mixins' + map global fzf-ctags '' ': fzf-tag M' -docstring 'modules' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structure names' + map global fzf-ctags '' ': fzf-tag T' -docstring 'templates' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'union names' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + map global fzf-ctags '' ': fzf-tag V' -docstring 'version statements' + } + hook global WinSetOption filetype=diff %{ + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'modified files' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'newly created files' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'deleted files' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'hunks' + } + hook global WinSetOption filetype=dtd %{ + map global fzf-ctags '' ': fzf-tag E' -docstring 'entities' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'parameter entities' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'elements' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'attributes' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'notations' + } + hook global WinSetOption filetype=dts %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'phandlers' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'regex' + } + hook global WinSetOption filetype=dosbatch %{ + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + } + hook global WinSetOption filetype=eiffel %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'features' + } + hook global WinSetOption filetype=elm %{ + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'module' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'renamed mported odule' + map global fzf-ctags 'p' ': fzf-tag P' -docstring 'port' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type efinition' + map global fzf-ctags 'c' ': fzf-tag C' -docstring 'type onstructor' + map global fzf-ctags 'a' ': fzf-tag A' -docstring 'type lias' + map global fzf-ctags 'f' ': fzf-tag F' -docstring 'functions' + } + hook global WinSetOption filetype=erlang %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'modules' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'record definitions' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type definitions' + } + hook global WinSetOption filetype=falcon %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'class members' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'imports' + } + hook global WinSetOption filetype=flex %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'properties' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'global variables' + map global fzf-ctags 'x' ': fzf-tag x' -docstring 'mxtags' + } + hook global WinSetOption filetype=fortran %{ + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'block data' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'common blocks' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'entry points' + map global fzf-ctags '' ': fzf-tag E' -docstring 'enumerations' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interface contents, generic names, and operators' + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'type and structure components' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'modules' + map global fzf-ctags '' ': fzf-tag M' -docstring 'type bound procedures' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namelists' + map global fzf-ctags '' ': fzf-tag N' -docstring 'enumeration values' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'programs' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'subroutines' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'derived types and structures' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'program (global) and module variables' + map global fzf-ctags '' ': fzf-tag S' -docstring 'submodules' + } + hook global WinSetOption filetype=fypp %{ + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'macros' + } + hook global WinSetOption filetype=gdbinit %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'definitions' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'toplevel variables' + } + hook global WinSetOption filetype=go %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constants' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'types' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structs' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'struct members' + map global fzf-ctags '' ': fzf-tag M' -docstring 'struct anonymous members' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'unknown' + map global fzf-ctags '' ': fzf-tag P' -docstring 'name for specifying imported package' + } + hook global WinSetOption filetype=html %{ + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'named anchors' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'h1 headings' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'h2 headings' + map global fzf-ctags 'j' ': fzf-tag j' -docstring 'h3 headings' + } + hook global WinSetOption filetype=iniconf %{ + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'keys' + } + hook global WinSetOption filetype=itcl %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'object-specific variables' + map global fzf-ctags '' ': fzf-tag C' -docstring 'common variables' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'procedures within the class namespace' + } + hook global WinSetOption filetype=java %{ + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'annotation declarations' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enum constants' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'fields' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enum types' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + } + hook global WinSetOption filetype=javaproperties %{ + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'keys' + } + hook global WinSetOption filetype=javascript %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'properties' + map global fzf-ctags '' ': fzf-tag C' -docstring 'constants' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'global variables' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'generators' + } + hook global WinSetOption filetype=json %{ + map global fzf-ctags 'o' ': fzf-tag o' -docstring 'objects' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'arrays' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'numbers' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'strings' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'booleans' + map global fzf-ctags 'z' ': fzf-tag z' -docstring 'nulls' + } + hook global WinSetOption filetype=ldscript %{ + map global fzf-ctags '' ': fzf-tag S' -docstring 'sections' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'symbols' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'versions' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'input sections' + } + hook global WinSetOption filetype=lisp %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + } + hook global WinSetOption filetype=lua %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + } + hook global WinSetOption filetype=m4 %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macros' + map global fzf-ctags '' ': fzf-tag I' -docstring 'macro files' + } + hook global WinSetOption filetype=man %{ + map global fzf-ctags 't' ': fzf-tag t' -docstring 'titles' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + } + hook global WinSetOption filetype=make %{ + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'macros' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'targets' + map global fzf-ctags '' ': fzf-tag I' -docstring 'makefiles' + } + hook global WinSetOption filetype=markdown %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'chapsters' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags '' ': fzf-tag S' -docstring 'subsections' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'subsubsections' + map global fzf-ctags '' ': fzf-tag T' -docstring 'level 4 subsections' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'level 5 subsections' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'regex' + } + hook global WinSetOption filetype=matlab %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'class' + } + hook global WinSetOption filetype=myrddin %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constants' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'types' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'traits' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + } + hook global WinSetOption filetype=objectivec %{ + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'class interface' + map global fzf-ctags '' ': fzf-tag I' -docstring 'class implementation' + map global fzf-ctags '' ': fzf-tag P' -docstring 'rotocol' + map global fzf-ctags 'm' ': fzf-tag M' -docstring 'object's method' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'class' method' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'global variable' + map global fzf-ctags '' ': fzf-tag E' -docstring 'bject field' + map global fzf-ctags 'f' ': fzf-tag F' -docstring 'a function' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'a property' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'a type alias' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'a type structure' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'an enumeration' + map global fzf-ctags '' ': fzf-tag M' -docstring ' preprocessor macro' + } + hook global WinSetOption filetype=ocaml %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'object's method' + map global fzf-ctags '' ': fzf-tag M' -docstring 'odule or functor' + map global fzf-ctags 'v' ': fzf-tag V' -docstring 'global variable' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'signature item' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type name' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'a function' + map global fzf-ctags '' ': fzf-tag C' -docstring ' constructor' + map global fzf-ctags 'r' ': fzf-tag R' -docstring 'a 'structure' field' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'an exception' + } + hook global WinSetOption filetype=passwd %{ + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'user names' + } + hook global WinSetOption filetype=pascal %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'procedures' + } + hook global WinSetOption filetype=perl %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constants' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'formats' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'subroutines' + } + hook global WinSetOption filetype=perl6 %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'grammars' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 'o' ': fzf-tag o' -docstring 'modules' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'roles' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'rules' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'submethods' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'subroutines' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'tokens' + } + hook global WinSetOption filetype=php %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'constant definitions' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'traits' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'aliases' + } + hook global WinSetOption filetype=pod %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'chapters' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags '' ': fzf-tag S' -docstring 'subsections' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'subsubsections' + } + hook global WinSetOption filetype=protobuf %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'messages' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'fields' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enum constants' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enum types' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'services' + } + hook global WinSetOption filetype=puppetmanifest %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'definitions' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'nodes' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'resources' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + } + hook global WinSetOption filetype=python %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'class members' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags '' ': fzf-tag I' -docstring 'name referring a module defined in other file' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'modules' + map global fzf-ctags 'x' ': fzf-tag x' -docstring 'name referring a class/variable/function/module defined in other module' + } + hook global WinSetOption filetype=pythonloggingconfig %{ + map global fzf-ctags '' ': fzf-tag L' -docstring 'logger sections' + map global fzf-ctags 'q' ': fzf-tag q' -docstring 'logger qualnames' + } + hook global WinSetOption filetype=qemuhx %{ + map global fzf-ctags 'q' ': fzf-tag q' -docstring 'q anagement rotocol dispatch table entries' + map global fzf-ctags 'i' ': fzf-tag I' -docstring 'item in texinfo doc' + } + hook global WinSetOption filetype=qtmoc %{ + map global fzf-ctags 's' ': fzf-tag s' -docstring 'slots' + map global fzf-ctags '' ': fzf-tag S' -docstring 'signals' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'properties' + } + hook global WinSetOption filetype=r %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'libraries' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sources' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'global variables' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'function variables' + } + hook global WinSetOption filetype=rspec %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'describes' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'contexts' + } + hook global WinSetOption filetype=rexx %{ + map global fzf-ctags 's' ': fzf-tag s' -docstring 'subroutines' + } + hook global WinSetOption filetype=robot %{ + map global fzf-ctags 't' ': fzf-tag t' -docstring 'testcases' + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'keywords' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + } + hook global WinSetOption filetype=rpmspec %{ + map global fzf-ctags 't' ': fzf-tag t' -docstring 'tags' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'macros' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'packages' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'global macros' + } + hook global WinSetOption filetype=restructuredtext %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'chapters' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags '' ': fzf-tag S' -docstring 'subsections' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'subsubsections' + map global fzf-ctags '' ': fzf-tag T' -docstring 'targets' + } + hook global WinSetOption filetype=ruby %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'methods' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'modules' + map global fzf-ctags '' ': fzf-tag S' -docstring 'singleton methods' + } + hook global WinSetOption filetype=rust %{ + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'module' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'structural type' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'trait interface' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'implementation' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enum' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type lias' + map global fzf-ctags 'v' ': fzf-tag V' -docstring 'global variable' + map global fzf-ctags '' ': fzf-tag M' -docstring 'acro efinition' + map global fzf-ctags 'm' ': fzf-tag M' -docstring 'a struct field' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'an enum variant' + map global fzf-ctags '' ': fzf-tag P' -docstring ' method' + } + hook global WinSetOption filetype=scheme %{ + map global fzf-ctags 'f' ': fzf-tag F' -docstring 'functions' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sets' + } + hook global WinSetOption filetype=sh %{ + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'aliases' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'script files' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'label for here document' + } + hook global WinSetOption filetype=slang %{ + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + } + hook global WinSetOption filetype=sml %{ + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'exception declarations' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'functor definitions' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'signature declarations' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'structure declarations' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type definitions' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'value bindings' + } + hook global WinSetOption filetype=sql %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'cursors' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags '' ': fzf-tag E' -docstring 'record fields' + map global fzf-ctags '' ': fzf-tag L' -docstring 'block label' + map global fzf-ctags '' ': fzf-tag P' -docstring 'packages' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'procedures' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'subtypes' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'tables' + map global fzf-ctags '' ': fzf-tag T' -docstring 'triggers' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'indexes' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'events' + map global fzf-ctags '' ': fzf-tag U' -docstring 'publications' + map global fzf-ctags '' ': fzf-tag R' -docstring 'services' + map global fzf-ctags '' ': fzf-tag D' -docstring 'domains' + map global fzf-ctags '' ': fzf-tag V' -docstring 'views' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'synonyms' + map global fzf-ctags 'x' ': fzf-tag x' -docstring 'mobiink able cripts' + map global fzf-ctags 'y' ': fzf-tag Y' -docstring 'mobiink onn cripts' + map global fzf-ctags 'z' ': fzf-tag Z' -docstring 'mobiink roperties ' + } + hook global WinSetOption filetype=systemdunit %{ + map global fzf-ctags 'u' ': fzf-tag U' -docstring 'units' + } + hook global WinSetOption filetype=tcl %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'procedures' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + } + hook global WinSetOption filetype=tcloo %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + } + hook global WinSetOption filetype=tex %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'parts' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'chapters' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'sections' + map global fzf-ctags 'u' ': fzf-tag u' -docstring 'subsections' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'subsubsections' + map global fzf-ctags '' ': fzf-tag P' -docstring 'paragraphs' + map global fzf-ctags '' ': fzf-tag G' -docstring 'subparagraphs' + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'includes' + } + hook global WinSetOption filetype=ttcn %{ + map global fzf-ctags '' ': fzf-tag M' -docstring 'module definition' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type definition' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constant definition' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'template definition' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definition' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'signature definition' + map global fzf-ctags '' ': fzf-tag C' -docstring 'testcase definition' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'altstep definition' + map global fzf-ctags '' ': fzf-tag G' -docstring 'group definition' + map global fzf-ctags '' ': fzf-tag P' -docstring 'module parameter definition' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable instance' + map global fzf-ctags '' ': fzf-tag T' -docstring 'timer instance' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'port instance' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'record/set/union member' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumeration value' + } + hook global WinSetOption filetype=vera %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'macro definitions' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'enumerators (values inside an enumeration)' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'enumeration names' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'class, struct, and union members' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'programs' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'signals' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'tasks' + map global fzf-ctags '' ': fzf-tag T' -docstring 'typedefs' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'included header files' + } + hook global WinSetOption filetype=verilog %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constants (define, parameter, specparam)' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'events' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'modules' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'net data types' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'ports' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'register data types' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'tasks' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'blocks' + } + hook global WinSetOption filetype=systemverilog %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constants (define, parameter, specparam, enum values)' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'events' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'modules' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'net data types' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'ports' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'register data types' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'tasks' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'blocks' + map global fzf-ctags '' ': fzf-tag A' -docstring 'assertions' + map global fzf-ctags '' ': fzf-tag C' -docstring 'classes' + map global fzf-ctags '' ': fzf-tag V' -docstring 'covergroups' + map global fzf-ctags '' ': fzf-tag E' -docstring 'enumerators' + map global fzf-ctags '' ': fzf-tag I' -docstring 'interfaces' + map global fzf-ctags '' ': fzf-tag M' -docstring 'modports' + map global fzf-ctags '' ': fzf-tag K' -docstring 'packages' + map global fzf-ctags '' ': fzf-tag P' -docstring 'programs' + map global fzf-ctags '' ': fzf-tag R' -docstring 'properties' + map global fzf-ctags '' ': fzf-tag S' -docstring 'structs and unions' + map global fzf-ctags '' ': fzf-tag T' -docstring 'type declarations' + } + hook global WinSetOption filetype=vhdl %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'constant declarations' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'type definitions' + map global fzf-ctags '' ': fzf-tag T' -docstring 'subtype definitions' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'record names' + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'entity declarations' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function prototypes and declarations' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'procedure prototypes and declarations' + map global fzf-ctags '' ': fzf-tag P' -docstring 'package definitions' + } + hook global WinSetOption filetype=vim %{ + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'autocommand groups' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'user-defined commands' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'function definitions' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'maps' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variable definitions' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'vimball filename' + } + hook global WinSetOption filetype=windres %{ + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'dialogs' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'menus' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'icons' + map global fzf-ctags 'b' ': fzf-tag b' -docstring 'bitmaps' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'cursors' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'fonts' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'versions' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'accelerators' + } + hook global WinSetOption filetype=yacc %{ + map global fzf-ctags 'l' ': fzf-tag l' -docstring 'labels' + } + hook global WinSetOption filetype=yumrepo %{ + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'repository id' + } + hook global WinSetOption filetype=zephir %{ + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'd' ': fzf-tag d' -docstring 'constant definitions' + map global fzf-ctags 'f' ': fzf-tag f' -docstring 'functions' + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'namespaces' + map global fzf-ctags 't' ': fzf-tag t' -docstring 'traits' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'aliases' + } + hook global WinSetOption filetype=dbusintrospect %{ + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'interfaces' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'methods' + map global fzf-ctags 's' ': fzf-tag s' -docstring 'signals' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'properties' + } + hook global WinSetOption filetype=glade %{ + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'identifiers' + map global fzf-ctags 'c' ': fzf-tag c' -docstring 'classes' + map global fzf-ctags 'h' ': fzf-tag h' -docstring 'handlers' + } + hook global WinSetOption filetype=maven2 %{ + map global fzf-ctags 'g' ': fzf-tag g' -docstring 'group identifiers' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'artifact identifiers' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'properties' + map global fzf-ctags 'r' ': fzf-tag r' -docstring 'repository identifiers' + } + hook global WinSetOption filetype=plistxml %{ + map global fzf-ctags 'k' ': fzf-tag k' -docstring 'keys' + } + hook global WinSetOption filetype=relaxng %{ + map global fzf-ctags 'e' ': fzf-tag e' -docstring 'elements' + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'attributes' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'named patterns' + } + hook global WinSetOption filetype=svg %{ + map global fzf-ctags 'i' ': fzf-tag i' -docstring 'id attributes' + } + hook global WinSetOption filetype=xslt %{ + map global fzf-ctags 's' ': fzf-tag s' -docstring 'stylesheets' + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'parameters' + map global fzf-ctags 'm' ': fzf-tag m' -docstring 'matched template' + map global fzf-ctags 'n' ': fzf-tag n' -docstring 'matched template' + map global fzf-ctags 'v' ': fzf-tag v' -docstring 'variables' + } + hook global WinSetOption filetype=yaml %{ + map global fzf-ctags 'a' ': fzf-tag a' -docstring 'anchors' + } + hook global WinSetOption filetype=ansibleplaybook %{ + map global fzf-ctags 'p' ': fzf-tag p' -docstring 'plays' + } +} catch %{ + echo -debug "Error while declaring 'fzf-ctags' mode" +} + +define-command -hidden fzf-tag -params ..2 %{ evaluate-commands %sh{ + path=$PWD + while [ "$path" != "$HOME" ]; do + if [ -e "./$kak_opt_fzf_tag_file" ]; then + break + else + cd .. + path=$PWD + fi + done + + if [ "$path" = "$HOME" ] && [ ! -e "./$kak_opt_fzf_tag_file" ]; then + printf "%s\n" "echo -markup %{{Information}No '$kak_opt_fzf_tag_file' file found}" + exit + elif [ "$path" = "$HOME" ] && [ -e "./$kak_opt_fzf_tag_file" ]; then + printf "%s\n" "echo -markup %{{Information}'$kak_opt_fzf_tag_file' file found at $HOME. Check if it is right tag file}" + fi + + if [ -n "$1" ]; then + cmd="cd $path; readtags -Q '(eq? \$kind \"$1\")' -l | cut -f1" + else + cmd="cd $path; readtags -l | cut -f1" + fi + + message="Jump to a symbol''s definition +: open tag in new buffer +: open tag in new window" + + [ -n "${kak_client_env_TMUX}" ] && tmux_keybindings=" +: open tag in horizontal split +: open tag in vertical split" + + printf "%s\n" "info -title 'fzf tag' '$message$tmux_keybindings'" + + [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" + printf "%s\n" "set-option -add window ctagsfiles %{$path/$kak_opt_fzf_tag_file}" + printf "%s\n" "fzf %{ctags-search} %{$cmd | awk '!a[\$0]++'} %{--expect ctrl-w $additional_flags}" +}} diff --git a/rc/fzf-modules/fzf-file.kak b/rc/fzf-modules/fzf-file.kak new file mode 100644 index 0000000..812cbac --- /dev/null +++ b/rc/fzf-modules/fzf-file.kak @@ -0,0 +1,62 @@ +# ╭─────────────╥────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-file.kak │ +# ╞═════════════╩════════════════════════╡ +# │ Module for opening files with fzf │ +# │ for fzf.kak plugin │ +# ╞══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰──────────────────────────────────────╯ + +declare-option -docstring "command to provide list of files to fzf. Arguments are supported +Supported tools: + : : + GNU Find: ""find"" + The Silver Searcher: ""ag"" + ripgrep: ""rg"" + fd: ""fd"" + +Default arguments: + find: ""find -type f -follow"" + ag: ""ag -l -f --hidden --one-device ."" + rg: ""rg -L --hidden --files"" + fd: ""fd --type f --follow"" +" \ +str fzf_file_command "find" + +map global fzf -docstring "open file" 'f' ': fzf-file' + +define-command -hidden fzf-file %{ evaluate-commands %sh{ + if [ -z "$(command -v $kak_opt_fzf_file_command)" ]; then + printf "%s\n" "echo -markup '{Information}''$kak_opt_fzf_file_command'' is not installed. Falling back to ''find'''" + kak_opt_fzf_file_command="find" + fi + case $kak_opt_fzf_file_command in + find) + cmd="find -type f -follow" ;; + ag) + cmd="ag -l -f --hidden --one-device . " ;; + rg) + cmd="rg -L --hidden --files" ;; + fd) + cmd="fd --type f --follow" ;; + find*|ag*|rg*|fd*) + cmd=$kak_opt_fzf_file_command ;; + *) + items_executable=$(printf "%s\n" "$kak_opt_fzf_file_command" | grep -o -E "[[:alpha:]]+" | head -1) + printf "%s\n" "echo -markup '{Information}'Warning: '$executable'' is not supported by fzf.kak.'" + cmd=$kak_opt_fzf_file_command ;; + esac + + message="Open single or multiple files. +: open file in new buffer. +: open file in new window" + [ ! -z "${kak_client_env_TMUX}" ] && tmux_keybindings=" +: open file in horizontal split +: open file in vertical split" + + printf "%s\n" "info -title 'fzf file' '$message$tmux_keybindings'" + [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" + printf "%s\n" "fzf %{edit} %{$cmd} %{-m --expect ctrl-w $additional_flags}" +}} + diff --git a/rc/fzf-modules/fzf-search.kak b/rc/fzf-modules/fzf-search.kak new file mode 100644 index 0000000..6041bd2 --- /dev/null +++ b/rc/fzf-modules/fzf-search.kak @@ -0,0 +1,21 @@ +# ╭─────────────╥────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-search.kak │ +# ╞═════════════╩════════════════════════╡ +# │ Module for searching inside current │ +# │ buffer with fzf for fzf.kak │ +# ╞══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰──────────────────────────────────────╯ + +map global fzf -docstring "search in buffer" 's' ': fzf-buffer-search' + +define-command -hidden fzf-buffer-search %{ evaluate-commands %sh{ + title="fzf buffer search" + message="Search buffer with fzf, and jump to result location" + printf "%s\n" "info -title '$title' '$message'" + buffer_content="$(mktemp ${TMPDIR:-/tmp}/fzf-buff-${kak_buffile##*/}.XXXXXX)" + printf "%s\n" "execute-keys -draft %{%cat>$buffer_content;}" + printf "%s\n" "fzf %{execute-keys} %{(nl -b a -n ln $buffer_content; rm $buffer_content)} %{--reverse | cut -f 1} %{execute-keys gx}" +}} + diff --git a/rc/fzf-modules/fzf-vcs.kak b/rc/fzf-modules/fzf-vcs.kak new file mode 100644 index 0000000..bcc5eee --- /dev/null +++ b/rc/fzf-modules/fzf-vcs.kak @@ -0,0 +1,56 @@ +# ╭─────────────╥────────────────────────╮ +# │ Author: ║ File: │ +# │ Andrey Orst ║ fzf-vcs.kak │ +# ╞═════════════╩════════════════════════╡ +# │ Module that declares VCS submodule │ +# │ for various version control systems │ +# │ to open files with fzf │ +# ╞══════════════════════════════════════╡ +# │ GitHub.com/andreyorst/fzf.kak │ +# ╰──────────────────────────────────────╯ + +try %{ declare-user-mode fzf-vcs } catch %{echo -markup "{Error}Can't declare mode 'fzf-vcs' - already exists"} + +map global fzf -docstring "edit file from vcs repo" 'v' ': fzf-vcs' +map global fzf -docstring "svitch to vcs selection mode" '' ': fzf-vcs-mode' + +define-command -docstring "Enter fzf-vcs-mode. +This mode allows selecting specific vcs command." \ +fzf-vcs-mode %{ try %{ evaluate-commands 'enter-user-mode fzf-vcs' } } + +define-command -hidden -docstring 'Wrapper command for fzf vcs to automatically decect +used version control system. + +Supported vcs: + Git: "git" + Subversion: "svn" + Mercurial SCM: "hg" + GNU Bazaar: "bzr" +' \ +fzf-vcs %{ evaluate-commands %sh{ + commands="git rev-parse --is-inside-work-tree +svn info +hg --cwd . root +bzr status" + IFS=' +' + for cmd in $commands; do + eval $cmd >/dev/null 2>&1 + res=$? + if [ "$res" = "0" ]; then + vcs=$(printf "%s\n" "$cmd" | awk '{print $1}') + title="fzf $vcs" + [ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings=" +: open file in horizontal split +: open file in vertical split" + message="Open single or multiple files from git tree. +: open file in new buffer. +: open file in new window $additional_keybindings" + printf "%s\n" "info -title %{$title} %{$message}" + printf "%s\n" "fzf-$vcs" + exit + fi + done + printf "%s\n" "echo -markup '{Information}No VCS found in current folder'" +}} + diff --git a/rc/fzf.kak b/rc/fzf.kak index 285846c..6b44e93 100644 --- a/rc/fzf.kak +++ b/rc/fzf.kak @@ -8,139 +8,53 @@ # │ different fzf commands. │ # ╰─────────────────────────────────╯ -try %{ declare-user-mode fzf } catch %{echo -markup "{Error}Can't declare mode 'fzf' - already exists"} -try %{ declare-user-mode fzf-vcs } catch %{echo -markup "{Error}Can't declare mode 'fzf-vcs' - already exists"} +try %{ declare-user-mode fzf } catch %{ echo -markup "{Error}Can't declare mode 'fzf' - already exists" } # Options -declare-option -docstring "command to provide list of files to fzf. Arguments are supported -Supported tools: - : : - GNU Find: ""find"" - The Silver Searcher: ""ag"" - ripgrep: ""rg"" - fd: ""fd"" - -Default arguments: - find: ""find -type f -follow"" - ag: ""ag -l -f --hidden --one-device ."" - rg: ""rg -L --hidden --files"" - fd: ""fd --type f --follow"" -" \ -str fzf_file_command "find" - -declare-option -docstring "command to provide list of files in git tree to fzf. Arguments are supported -Supported tools: - : : - Git : ""git"" - -Default arguments: - ""git ls-tree --name-only -r HEAD"" -" \ -str fzf_git_command "git" - -declare-option -docstring "command to provide list of files in svn repository to fzf. Arguments are supported -Supported tools: - : : - Subversion: ""svn"" - -Default arguments: - ""svn list -R . | grep -v '$/' | tr '\\n' '\\0'"" -" \ -str fzf_svn_command "svn" - -declare-option -docstring "command to provide list of files in mercurial repository to fzf. Arguments are supported -Supported tools: - : : - Mercurial SCM: ""hg"" - -Default arguments: - ""hg locate -f -0 -I .hg locate -f -0 -I ."" -" \ -str fzf_hg_command "hg" - -declare-option -docstring "command to provide list of files in GNU Bazaar repository to fzf. Arguments are supported -Supported tools: - : : - GNU Bazaar: ""bzr"" - -Default arguments: - ""bzr ls -R --versioned -0"" -" \ -str fzf_bzr_command "bzr" - -declare-option -docstring "command to provide list of ctags to fzf. Arguments are supported -Supported tools: - : : - universal-ctags: ""readtags"" - -Default arguments: - ""readtags -l | cut -f1"" -" \ -str fzf_tag_command "readtags" - -declare-option -docstring "allow showing preview window +declare-option -docstring 'allow showing preview window Default value: true -" \ +' \ bool fzf_preview true -declare-option -docstring "amount of lines to pass to preview window -Default value: 100" \ +declare-option -docstring 'amount of lines to pass to preview window +Default value: 100' \ int fzf_preview_lines 100 -declare-option -docstring "highlighter to use in preview window +declare-option -docstring 'Highlighter to use in preview window. You can provide +only the name of the tool that you want to use, or specify a command. Supported tools: : : - Bat: ""bat"" - Coderay: ""coderay"" - Highlight: ""highlight"" - Rouge: ""rouge"" + Bat: "bat" + Coderay: "coderay" + Highlight: "highlight" + Rouge: "rouge" -Default arguments: - bat: ""bat --color=always --style=header,grid,numbers {}"" - coderay: ""coderay {}"" - highlight: ""highlight --failsafe -O ansi {}"" - rouge: ""rougify {}"" -" \ +These are default arguments for the tools above: + : : + bat: "bat --color=always --style=plain {}" + coderay: "coderay {}" + highlight: "highlight --failsafe -O ansi {}" + rouge: "rougify {}" +' \ str fzf_highlighter "highlight" -declare-option -docstring "height of fzf tmux split in screen lines or percents +declare-option -docstring "height of fzf tmux split in screen lines or percents. Default value: 25%%" \ str fzf_tmux_height '25%' -declare-option -docstring "height of fzf tmux split for file preview in screen lines or percents +declare-option -docstring "height of fzf tmux split for file preview in screen lines or percents. Default value: 70%%" \ str fzf_tmux_height_file_preview '70%' -declare-option -docstring "width of preview window +declare-option -docstring "width of preview window. Default value: 50%%" \ str fzf_preview_width '50%' -declare-option -docstring "height of preview window +declare-option -docstring "height of preview window. Default value: 60%%" \ str fzf_preview_height '60%' -declare-option -docstring "command to provide list of directories to fzf. -Default value: - find: (echo .. && find \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print) -" \ -str fzf_cd_command "find" - -# default mappings -map global fzf -docstring "open buffer" 'b' ': fzf-buffer' -map global fzf -docstring "change directory" 'c' ': fzf-cd' -map global fzf -docstring "open file" 'f' ': fzf-file' -map global fzf -docstring "edit file from vcs repo" 'v' ': fzf-vcs' -map global fzf -docstring "svitch to vcs selection mode" 'V' ': fzf-vcs-mode' -map global fzf -docstring "search in buffer" 's' ': fzf-buffer-search' -map global fzf -docstring "find tag" 't' ': fzf-tag' - -map global fzf-vcs -docstring "edit file from Git tree" 'g' ': fzf-git' -map global fzf-vcs -docstring "edit file from Subversion tree" 's' ': fzf-svn' -map global fzf-vcs -docstring "edit file from mercurial tree" 'h' ': fzf-hg' -map global fzf-vcs -docstring "edit file from GNU Bazaar tree" 'b' ': fzf-bzr' - -# Commands define-command -docstring "Enter fzf-mode. fzf-mode contains mnemonic key bindings for every fzf.kak command @@ -149,171 +63,51 @@ Best used with mapping like: " \ fzf-mode %{ try %{ evaluate-commands 'enter-user-mode fzf' } } -define-command -docstring "Enter fzf-mode. -fzf-mode contains mnemonic key bindings for every fzf.kak command +define-command -hidden -docstring \ +"fzf [ ]: generic fzf command. +This command can be used to create new fzf wrappers for various Kakoune or external +features. More about arguments: -Best used with mapping like: - map global normal '' ': fzf-mode' -" \ -fzf-vcs-mode %{ try %{ evaluate-commands 'enter-user-mode fzf-vcs' } } +: +The is a Kakoune command that should be used after fzf returns some result. +For example to open file chooser we can call fzf with `edit` as a command: +'fzf %{edit} %{}' +After choosing one or more files in fzf, will be used with each of them. -define-command -hidden fzf-file %{ evaluate-commands %sh{ - if [ -z $(command -v $kak_opt_fzf_file_command) ]; then - echo "echo -markup '{Information}''$kak_opt_fzf_file_command'' is not installed. Falling back to ''find'''" - kak_opt_fzf_file_command="find" - fi - case $kak_opt_fzf_file_command in - find) - cmd="find -type f -follow" ;; - ag) - cmd="ag -l -f --hidden --one-device . " ;; - rg) - cmd="rg -L --hidden --files" ;; - fd) - cmd="fd --type f --follow" ;; - find*|ag*|rg*|fd*) - cmd=$kak_opt_fzf_file_command ;; - *) - executable=$(echo $kak_opt_fzf_file_command | awk '{print $1'}| tr '(' ' ' | cut -d " " -f 2) - echo "echo -markup '{Information}''$executable'' is not supported by the script. fzf.kak may not work as you expect.'" - cmd=$kak_opt_fzf_file_command ;; - esac - title="fzf file" - [ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings=" -: open file in horizontal split -: open file in vertical split" - message="Open single or multiple files. -: open file in new buffer. -: open file in new window $additional_keybindings" - echo "info -title '$title' '$message'" - [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" - eval echo 'fzf \"edit \$1\" \"$cmd\" \"-m --expect ctrl-w $additional_flags\"' -}} + +This is the shell command that is used to provide list of values to fzf. It can be +any command that provides newline separated list of items, which is then piped to fzf. -define-command -hidden -docstring "Wrapper command for fzf vcs to automatically decect -used version control system. + +These are additional flags for fzf program, that are passed to it. You can check them +in fzf manual. -Supported vcs: - Git: ""git"" - Subversion: ""svn"" - Mercurial SCM: ""hg"" - GNU Bazaar: ""bzr"" -" \ -fzf-vcs %{ evaluate-commands %sh{ - commands="git rev-parse --is-inside-work-tree -svn info -hg --cwd . root -bzr status" - IFS=' -' - for cmd in $commands; do - eval $cmd >/dev/null 2>&1 - res=$? - if [ "$res" = "0" ]; then - vcs=$(echo $cmd | awk '{print $1}') - title="fzf $vcs" - [ ! -z "${kak_client_env_TMUX}" ] && additional_keybindings=" -: open file in horizontal split -: open file in vertical split" - message="Open single or multiple files from git tree. -: open file in new buffer. -: open file in new window $additional_keybindings" - echo "info -title '$title' '$message'" - echo "fzf-$vcs" - exit - fi - done - echo "echo -markup '{Information}No VCS found in current folder'" -}} + +This is extra commands that are preformed after fzf finishis and main command was +executed. This can be used to invoke fzf back, like in fzf-cd command, or to execute +any other Kakoune command that is meaningfull in current situation. This is more is +a workaround of problem with executing composite commands, where fzf result should +be in the middle of the command and may be changed or removed it further versions. -define-command -hidden fzf-git %{ evaluate-commands %sh{ - case $kak_opt_fzf_git_command in - git) - cmd="git ls-tree --name-only -r HEAD" ;; - git*) - cmd=$kak_opt_fzf_git_command ;; - esac - [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" - eval echo 'fzf \"edit \$1\" \"$cmd\" \"-m --expect ctrl-w $additional_flags\"' -}} - -define-command -hidden fzf-hg %{ evaluate-commands %sh{ - case $kak_opt_fzf_hg_command in - hg) - cmd="hg locate -f -0 -I .hg locate -f -0 -I ." ;; - hg*) - cmd=$kak_opt_fzf_hg_command ;; - esac - [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" - eval echo 'fzf \"edit \$1\" \"$cmd\" \"-m --expect ctrl-w $additional_flags\"' -}} - -define-command -hidden fzf-svn %{ evaluate-commands %sh{ - case $kak_opt_fzf_svn_command in - svn) - cmd="svn list -R . | grep -v '$/' | tr '\\n' '\\0'" ;; - svn*) - cmd=$kak_opt_fzf_svn_command ;; - esac - [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" - eval echo 'fzf \"edit \$1\" \"$cmd\" \"-m --expect ctrl-w $additional_flags\"' -}} - -define-command -hidden fzf-bzr %{ evaluate-commands %sh{ - case $kak_opt_fzf_bzr_command in - bzr) - cmd="bzr ls -R --versioned -0" ;; - bzr*) - cmd=$kak_opt_fzf_bzr_command ;; - esac - [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" - eval echo 'fzf \"edit \$1\" \"$cmd\" \"-m --expect ctrl-w $additional_flags\"' -}} - -define-command -hidden fzf-cd %{ evaluate-commands %sh{ - title="fzf change directory" - message="Change the server''s working directory" - echo "info -title '$title' '$message'" - case $kak_opt_fzf_cd_command in - find) - cmd="(echo .. && find \( -path '*/.svn*' -o -path '*/.git*' \) -prune -o -type d -print)" ;; - *) - cmd=$kak_opt_fzf_cd_command ;; - esac - eval echo 'fzf \"change-directory \$1\" \"$cmd\"' -}} - -define-command -hidden fzf-buffer-search %{ evaluate-commands %sh{ - title="fzf buffer search" - message="Search buffer with fzf, and jump to result location" - echo "info -title '$title' '$message'" - line=$kak_cursor_line - char=$(expr $kak_cursor_char_column - 1) - buffer_content=$(mktemp ${TMPDIR:-/tmp}/kak-curr-buff.XXXXXX) - echo "execute-keys %{%cat>$buffer_content;}" - echo "execute-keys $line g $char l" - echo "fzf \"execute-keys \$1 gx\" \"(nl -b a -n ln $buffer_content\" \"--reverse | cut -f 1; rm $buffer_content)\"" -}} - -define-command -hidden fzf -params 2..3 %{ evaluate-commands %sh{ - callback=$1 +If you want to develop a module with fzf command, feel free to check for existing +module implementations in 'rc/fzf-modules' directory." \ +fzf -params 2..4 %{ evaluate-commands %sh{ + command=$1 items_command=$2 additional_flags=$3 + extra_action=$4 tmux_height=$kak_opt_fzf_tmux_height - items_executable=$(echo $items_command | awk '{print $1}' | tr '(' ' ' | cut -d " " -f 2) - if [ -z $(command -v $items_executable) ]; then - echo "fail \'$items_executable' executable not found" + items_executable=$(printf "%s\n" "$items_command" | grep -o -E "[[:alpha:]]+" | head -1) + if [ -z "$(command -v $items_executable)" ]; then + printf "%s\n" "fail %{'$items_executable' executable not found}" exit fi - tmp=$(mktemp $(eval echo ${TMPDIR:-/tmp}/kak-fzf.XXXXXX)) - exec=$(mktemp $(eval echo ${TMPDIR:-/tmp}/kak-exec.XXXXXX)) - - if [ "$(echo $callback | awk '{print $1}')" = "edit" ] && [ $kak_opt_fzf_preview = "true" ]; then + if [ "$command" = "edit" ] && [ $kak_opt_fzf_preview = "true" ]; then case $kak_opt_fzf_highlighter in bat) - highlighter="bat --color=always --style=header,grid,numbers {}" ;; + highlighter="bat --color=always --style=plain {}" ;; coderay) highlighter="coderay {}" ;; highlight) @@ -323,1318 +117,69 @@ define-command -hidden fzf -params 2..3 %{ evaluate-commands %sh{ bat*|coderay*|highlight*|rougify*) highlighter=$kak_opt_fzf_highlighter ;; *) - executable=$(echo $kak_opt_fzf_highlighter | awk '{print $1}'| tr '(' ' ' | cut -d " " -f 2) - echo "echo -markup '{Information}''$executable'' highlighter is not supported by the script. fzf.kak may not work as you expect.'" + executable=$(printf "%s\n" "$kak_opt_fzf_highlighter" | grep -o -E '[[:alpha:]]+' | head -1) + printf "%s\n" "echo -markup %{{Information}'$executable' highlighter is not supported by the script. fzf.kak may not work as you expect.}" highlighter=$kak_opt_fzf_highlighter ;; esac - if [ ! -z "${kak_client_env_TMUX}" ]; then + + if [ -n "$kak_client_env_TMUX" ]; then preview_pos="pos=right:$kak_opt_fzf_preview_width;" tmux_height=$kak_opt_fzf_tmux_height_file_preview else - preview_pos='sleep 0.1; if [ \$(tput cols) -gt \$(expr \$(tput lines) \* 2) ]; then pos=right:'$kak_opt_fzf_preview_width'; else pos=top:'$kak_opt_fzf_preview_height'; fi;' + preview_pos="sleep 0.1; [ \$(tput cols) -gt \$(expr \$(tput lines) \* 2) ] && pos=right:$kak_opt_fzf_preview_width || pos=top:$kak_opt_fzf_preview_height;" fi + additional_flags="--preview '($highlighter || cat {}) 2>/dev/null | head -n $kak_opt_fzf_preview_lines' --preview-window=\$pos $additional_flags" fi - if [ ! -z "${kak_client_env_TMUX}" ]; then - [ -z "${items_command##*Q*}" ] && items_command=$(echo $items_command | sed 's:$kind \(\w\):\$kind \"\1\":') - [ "$(echo $callback | awk '{print $1}')" = "ctags-search" ] && items_command="$items_command | awk '!a[\$0]++'" - cmd="$preview_pos $items_command | fzf-tmux -d $tmux_height --expect ctrl-q $additional_flags > $tmp" - elif [ ! -z "${kak_opt_termcmd}" ]; then - path=$(pwd) - additional_flags=$(echo $additional_flags | sed 's:\$pos:\\\\\\\$pos:') - [ -z "${items_command##*Q*}" ] && items_command=$(echo $items_command | sed 's:$kind \(\w\):\\\\\\$kind \\\\\\\"\1\\\\\\\":') - [ "$(echo $callback | awk '{print $1}')" = "ctags-search" ] && items_command="$items_command | awk '!a[\\\\\\\$0]++'" - cmd="$kak_opt_termcmd \"sh -c \\\"sh=$(command -v sh); SHELL=\\\$sh; export SHELL; cd $path && $preview_pos $items_command | fzf --expect ctrl-q $additional_flags > $tmp\\\"\"" + tmp=$(mktemp ${TMPDIR:-/tmp}/kak-fzf-tmp.XXXXXX) + fzfcmd=$(mktemp ${TMPDIR:-/tmp}/kak-fzfcmd.XXXXXX) + printf "%s\n" "cd $PWD && $preview_pos $items_command | SHELL=$(command -v sh) fzf $additional_flags > $tmp" > $fzfcmd + chmod 755 $fzfcmd + + if [ -n "$kak_client_env_TMUX" ]; then + [ -n "${tmux_height%%*%}" ] && measure="-p" || measure="-p" + cmd="command tmux split-window $measure ${tmux_height%%%*} 'sh -c $fzfcmd; rm $fzfcmd'" + elif [ -n "$kak_opt_termcmd" ]; then + cmd="$kak_opt_termcmd 'sh -c $fzfcmd; rm $fzfcmd'" else - echo "fail termcmd option is not set" + printf "%s\n" "fail %{termcmd option is not set}" + rm $fzfcmd + rm $tmp exit fi ( eval "$cmd" + while [ -e $fzfcmd ]; do + sleep 0.1 + done if [ -s $tmp ]; then ( read action - if [ "${callback% *}" != "change-directory" ]; then - case $action in - ctrl-w) - wincmd="x11-new " - [ ! -z "${kak_client_env_TMUX}" ] && wincmd="tmux-new-window " ;; - ctrl-s) - wincmd="tmux-new-vertical " ;; - ctrl-v) - wincmd="tmux-new-horizontal " ;; - alt-*) - kind="${action##*-}" - callback="fzf-tag $kind" ;; - *) - wincmd= ;; - esac - callback="$wincmd$callback" - echo "echo evaluate-commands -client $kak_client \"$callback\" | kak -p $kak_session" > $exec - else - echo "echo evaluate-commands -client $kak_client \"$callback\" | kak -p $kak_session" > $exec - echo "echo evaluate-commands -client $kak_client \"fzf-cd\" | kak -p $kak_session" >> $exec - fi - chmod 755 $exec - while read file; do - $exec "\'$file'" + case $action in + ctrl-w) + [ -n "$kak_client_env_TMUX" ] && wincmd="tmux-new-window" || wincmd="x11-new" ;; + ctrl-s) + wincmd="tmux-new-vertical" ;; + ctrl-v) + wincmd="tmux-new-horizontal" ;; + *) + if [ -n "$action" ]; then + printf "%s\n" "evaluate-commands -client $kak_client '$command' '$action'" | kak -p $kak_session + [ -n "$extra_action" ] && printf "%s\n" "evaluate-commands -client $kak_client $extra_action" | kak -p $kak_session + fi ;; + esac + kakoune_command() { + printf "%s\n" "evaluate-commands -client $kak_client $wincmd $command %{$1}" + [ -n "$extra_action" ] && printf "%s\n" "evaluate-commands -client $kak_client $extra_action" + } + while read item; do + kakoune_command "$item" | kak -p $kak_session done ) < $tmp fi rm $tmp - rm $exec ) > /dev/null 2>&1 < /dev/null & }} -define-command -hidden fzf-buffer %{ evaluate-commands %sh{ - tmp=$(mktemp $(eval echo ${TMPDIR:-/tmp}/kak-fzf.XXXXXX)) - setbuf=$(mktemp $(eval echo ${TMPDIR:-/tmp}/kak-setbuf.XXXXXX)) - delbuf=$(mktemp $(eval echo ${TMPDIR:-/tmp}/kak-delbuf.XXXXXX)) - buffers=$(mktemp $(eval echo ${TMPDIR:-/tmp}/kak-buffers.XXXXXX)) - IFS="'" - for buffer in $kak_buflist; do - [ ! -z $buffer ] && [ $buffer != ' ' ] && echo $buffer >> $buffers - done - if [ ! -z "${kak_client_env_TMUX}" ]; then - cmd="cat $buffers | fzf-tmux -d $kak_opt_fzf_tmux_height --expect ctrl-d > $tmp" - elif [ ! -z "${kak_opt_termcmd}" ]; then - cmd="$kak_opt_termcmd \"sh -c 'cat $buffers | fzf --expect ctrl-d > $tmp'\"" - else - echo "fail termcmd option is not set" - fi - - echo "info -title 'fzf buffer' 'Set buffer to edit in current client -: delete selected buffer'" - - echo "echo evaluate-commands -client $kak_client \"buffer \'\$1'\" | kak -p $kak_session" > $setbuf - echo "echo evaluate-commands -client $kak_client \"delete-buffer \'\$1'\" | kak -p $kak_session" > $delbuf - echo "echo evaluate-commands -client $kak_client \"fzf-buffer \" | kak -p $kak_session" >> $delbuf - chmod 755 $setbuf - chmod 755 $delbuf - ( - eval "$cmd" - if [ -s $tmp ]; then - ( - read action - read buf - if [ "$action" = "ctrl-d" ]; then - $setbuf $kak_bufname - $delbuf $buf - else - $setbuf $buf - fi - ) < $tmp - else - $setbuf $kak_bufname - fi - rm $tmp - rm $setbuf - rm $delbuf - rm $buffers - ) > /dev/null 2>&1 < /dev/null & -}} - -declare-option -hidden -docstring "A set of mappings for Ada filetype" \ -str fzf_tag_ada " -: package specifications -: packages -: types -: subtypes -: record type components -: enum type literals -: variables -: generic formal parameters -: constants -: user defined exceptions -: subprogram specifications -: subprograms -: task specifications -: tasks -: protected data specifications -: protected data -: task/protected data entries -: labels -: loop/declare identifiers -: (ctags internal use)" - -declare-option -hidden -docstring "A set of mappings for Ant filetype" \ -str fzf_tag_ant " -: projects -: targets -: properties(global) -: antfiles" - -declare-option -hidden -docstring "A set of mappings for Asciidoc filetype" \ -str fzf_tag_asciidoc " -: chapters -: sections -: level 2 sections -: level 3 sections -: level 4 sections -: level 5 sections -: anchors" - -declare-option -hidden -docstring "A set of mappings for Asm filetype" \ -str fzf_tag_asm " -: defines -: labels -: macros -: types (structs and records) -: sections" - -declare-option -hidden -docstring "A set of mappings for Asp filetype" \ -str fzf_tag_asp " -: constants -: classes -: functions -: subroutines -: variables" - -declare-option -hidden -docstring "A set of mappings for Autoconf filetype" \ -str fzf_tag_autoconf " -: packages -: templates -: autoconf macros -: options specified with --with-... -: options specified with --enable-... -: substitution keys -: automake conditions -: definitions" - -declare-option -hidden -docstring "A set of mappings for AutoIt filetype" \ -str fzf_tag_autoit " -: functions -: regions -: global variables -: local variables -: included scripts" - -declare-option -hidden -docstring "A set of mappings for Automake filetype" \ -str fzf_tag_automake " -: directories -: programs -: manuals -: ltlibraries -: libraries -: scripts -: datum -: conditions" - -declare-option -hidden -docstring "A set of mappings for Awk filetype" \ -str fzf_tag_awk " -: functions" - -declare-option -hidden -docstring "A set of mappings for Basic filetype" \ -str fzf_tag_basic " -: constants -: functions -: labels -: types -: variables -: enumerations" - -declare-option -hidden -docstring "A set of mappings for BETA filetype" \ -str fzf_tag_beta " -: fragment definitions -: slots (fragment uses) -: patterns (virtual or rebound)" - -declare-option -hidden -docstring "A set of mappings for Clojure filetype" \ -str fzf_tag_clojure " -: functions -: namespaces" - -declare-option -hidden -docstring "A set of mappings for CMake filetype" \ -str fzf_tag_cmake " -: functions -: macros -: targets -: variable definitions -: options specified with -D -: projects -: regex" - -declare-option -hidden -docstring "A set of mappings for C filetype" \ -str fzf_tag_c " -: macro definitions -: enumerators (values inside an enumeration) -: function definitions -: enumeration names -: included header files -: struct, and union members -: structure names -: typedefs -: union names -: variable definitions" - -declare-option -hidden -docstring "A set of mappings for C++ filetype" \ -str fzf_tag_cpp " -: macro definitions -: enumerators (values inside an enumeration) -: function definitions -: enumeration names -: included header files -: class, struct, and union members -: structure names -: typedefs -: union names -: variable definitions -: classes -: namespaces" - -declare-option -hidden -docstring "A set of mappings for CPreProcessor filetype" \ -str fzf_tag_cpreprocessor " -: macro definitions -: included header files" - -declare-option -hidden -docstring "A set of mappings for CSS filetype" \ -str fzf_tag_css " -: classes -: selectors -: identities" - -declare-option -hidden -docstring "A set of mappings for C# filetype" \ -str fzf_tag_csharp " -: classes -: macro definitions -: enumerators (values inside an enumeration) -: events -: fields -: enumeration names -: interfaces -: methods -: namespaces -: properties -: structure names -: typedefs" - -declare-option -hidden -docstring "A set of mappings for Ctags filetype" \ -str fzf_tag_ctags " -: language definitions -: kind definitions" - -declare-option -hidden -docstring "A set of mappings for Cobol filetype" \ -str fzf_tag_cobol " -: paragraphs -: data items -: source code file -: file descriptions (FD, SD, RD) -: group items -: program ids -: sections -: divisions" - -declare-option -hidden -docstring "A set of mappings for CUDA filetype" \ -str fzf_tag_cuda " -: macro definitions -: enumerators (values inside an enumeration) -: function definitions -: enumeration names -: included header files -: struct, and union members -: structure names -: typedefs -: union names -: variable definitions" - -declare-option -hidden -docstring "A set of mappings for D filetype" \ -str fzf_tag_d " -: aliases -: classes -: enumeration names -: enumerators (values inside an enumeration) -: function definitions -: interfaces -: class, struct, and union members -: mixins -: modules -: namespaces -: structure names -: templates -: union names -: variable definitions -: version statements" - -declare-option -hidden -docstring "A set of mappings for Diff filetype" \ -str fzf_tag_diff " -: modified files -: newly created files -: deleted files -: hunks" - -declare-option -hidden -docstring "A set of mappings for DTD filetype" \ -str fzf_tag_dtd " -: entities -: parameter entities -: elements -: attributes -: notations" - -declare-option -hidden -docstring "A set of mappings for DTS filetype" \ -str fzf_tag_dts " -: phandlers -: labels -: regex" - -declare-option -hidden -docstring "A set of mappings for DosBatch filetype" \ -str fzf_tag_dosbatch " -: labels -: variables" - -declare-option -hidden -docstring "A set of mappings for Eiffel filetype" \ -str fzf_tag_eiffel " -: classes -: features" - -declare-option -hidden -docstring "A set of mappings for Elm filetype" \ -str fzf_tag_elm " -: Module -: Renamed Imported Module -: Port -: Type Definition -: Type Constructor -: Type Alias -: Functions" - -declare-option -hidden -docstring "A set of mappings for Erlang filetype" \ -str fzf_tag_erlang " -: macro definitions -: functions -: modules -: record definitions -: type definitions" - -declare-option -hidden -docstring "A set of mappings for Falcon filetype" \ -str fzf_tag_falcon " -: classes -: functions -: class members -: variables -: imports" - -declare-option -hidden -docstring "A set of mappings for Flex filetype" \ -str fzf_tag_flex " -: functions -: classes -: methods -: properties -: global variables -: mxtags" - -declare-option -hidden -docstring "A set of mappings for Fortran filetype" \ -str fzf_tag_fortran " -: block data -: common blocks -: entry points -: enumerations -: functions -: interface contents, generic names, and operators -: type and structure components -: labels -: modules -: type bound procedures -: namelists -: enumeration values -: programs -: subroutines -: derived types and structures -: program (global) and module variables -: submodules" - -declare-option -hidden -docstring "A set of mappings for Fypp filetype" \ -str fzf_tag_fypp " -: macros" - -declare-option -hidden -docstring "A set of mappings for Gdbinit filetype" \ -str fzf_tag_gdbinit " -: definitions -: toplevel variables" - -declare-option -hidden -docstring "A set of mappings for Go filetype" \ -str fzf_tag_go " -: packages -: functions -: constants -: types -: variables -: structs -: interfaces -: struct members -: struct anonymous members -: unknown -: name for specifying imported package" - -declare-option -hidden -docstring "A set of mappings for HTML filetype" \ -str fzf_tag_html " -: named anchors -: H1 headings -: H2 headings -: H3 headings" - -declare-option -hidden -docstring "A set of mappings for Iniconf filetype" \ -str fzf_tag_iniconf " -: sections -: keys" - -declare-option -hidden -docstring "A set of mappings for ITcl filetype" \ -str fzf_tag_itcl " -: classes -: methods -: object-specific variables -: common variables -: procedures within the class namespace" - -declare-option -hidden -docstring "A set of mappings for Java filetype" \ -str fzf_tag_java " -: annotation declarations -: classes -: enum constants -: fields -: enum types -: interfaces -: methods -: packages" - -declare-option -hidden -docstring "A set of mappings for JavaProperties filetype" \ -str fzf_tag_javaproperties " -: keys" - -declare-option -hidden -docstring "A set of mappings for JavaScript filetype" \ -str fzf_tag_javascript " -: functions -: classes -: methods -: properties -: constants -: global variables -: generators" - -declare-option -hidden -docstring "A set of mappings for JSON filetype" \ -str fzf_tag_json " -: objects -: arrays -: numbers -: strings -: booleans -: nulls" - -declare-option -hidden -docstring "A set of mappings for LdScript filetype" \ -str fzf_tag_ldscript " -: sections -: symbols -: versions -: input sections" - -declare-option -hidden -docstring "A set of mappings for Lisp filetype" \ -str fzf_tag_lisp " -: functions" - -declare-option -hidden -docstring "A set of mappings for Lua filetype" \ -str fzf_tag_lua " -: functions" - -declare-option -hidden -docstring "A set of mappings for M4 filetype" \ -str fzf_tag_m4 " -: macros -: macro files" - -declare-option -hidden -docstring "A set of mappings for Man filetype" \ -str fzf_tag_man " -: titles -: sections" - -declare-option -hidden -docstring "A set of mappings for Make filetype" \ -str fzf_tag_make " -: macros -: targets -: makefiles" - -declare-option -hidden -docstring "A set of mappings for Markdown filetype" \ -str fzf_tag_markdown " -: chapsters -: sections -: subsections -: subsubsections -: level 4 subsections -: level 5 subsections -: regex" - -declare-option -hidden -docstring "A set of mappings for MatLab filetype" \ -str fzf_tag_matlab " -: function -: variable -: class" - -declare-option -hidden -docstring "A set of mappings for Myrddin filetype" \ -str fzf_tag_myrddin " -: functions -: constants -: variables -: types -: traits -: packages" - -declare-option -hidden -docstring "A set of mappings for ObjectiveC filetype" \ -str fzf_tag_objectivec " -: class interface -: class implementation -: Protocol -: Object's method -: Class' method -: Global variable -: Object field -: A function -: A property -: A type alias -: A type structure -: An enumeration -: A preprocessor macro" - -declare-option -hidden -docstring "A set of mappings for OCaml filetype" \ -str fzf_tag_ocaml " -: classes -: Object's method -: Module or functor -: Global variable -: Signature item -: Type name -: A function -: A constructor -: A 'structure' field -: An exception" - -declare-option -hidden -docstring "A set of mappings for Passwd filetype" \ -str fzf_tag_passwd " -: user names" - -declare-option -hidden -docstring "A set of mappings for Pascal filetype" \ -str fzf_tag_pascal " -: functions -: procedures" - -declare-option -hidden -docstring "A set of mappings for Perl filetype" \ -str fzf_tag_perl " -: constants -: formats -: labels -: packages -: subroutines" - -declare-option -hidden -docstring "A set of mappings for Perl6 filetype" \ -str fzf_tag_perl6 " -: classes -: grammars -: methods -: modules -: packages -: roles -: rules -: submethods -: subroutines -: tokens" - -declare-option -hidden -docstring "A set of mappings for PHP filetype" \ -str fzf_tag_php " -: classes -: constant definitions -: functions -: interfaces -: namespaces -: traits -: variables -: aliases" - -declare-option -hidden -docstring "A set of mappings for Pod filetype" \ -str fzf_tag_pod " -: chapters -: sections -: subsections -: subsubsections" - -declare-option -hidden -docstring "A set of mappings for Protobuf filetype" \ -str fzf_tag_protobuf " -: packages -: messages -: fields -: enum constants -: enum types -: services" - -declare-option -hidden -docstring "A set of mappings for PuppetManifest filetype" \ -str fzf_tag_puppetmanifest " -: classes -: definitions -: nodes -: resources -: variables" - -declare-option -hidden -docstring "A set of mappings for Python filetype" \ -str fzf_tag_python " -: classes -: functions -: class members -: variables -: name referring a module defined in other file -: modules -: name referring a class/variable/function/module defined in other module" - -declare-option -hidden -docstring "A set of mappings for PythonLoggingConfig filetype" \ -str fzf_tag_pythonloggingconfig " -: logger sections -: logger qualnames" - -declare-option -hidden -docstring "A set of mappings for QemuHX filetype" \ -str fzf_tag_qemuhx " -: QEMU Management Protocol dispatch table entries -: item in texinfo doc" - -declare-option -hidden -docstring "A set of mappings for QtMoc filetype" \ -str fzf_tag_qtmoc " -: slots -: signals -: properties" - -declare-option -hidden -docstring "A set of mappings for R filetype" \ -str fzf_tag_r " -: functions -: libraries -: sources -: global variables -: function variables" - -declare-option -hidden -docstring "A set of mappings for RSpec filetype" \ -str fzf_tag_rspec " -: describes -: contexts" - -declare-option -hidden -docstring "A set of mappings for REXX filetype" \ -str fzf_tag_rexx " -: subroutines" - -declare-option -hidden -docstring "A set of mappings for Robot filetype" \ -str fzf_tag_robot " -: testcases -: keywords -: variables" - -declare-option -hidden -docstring "A set of mappings for RpmSpec filetype" \ -str fzf_tag_rpmspec " -: tags -: macros -: packages -: global macros" - -declare-option -hidden -docstring "A set of mappings for ReStructuredText filetype" \ -str fzf_tag_restructuredtext " -: chapters -: sections -: subsections -: subsubsections -: targets" - -declare-option -hidden -docstring "A set of mappings for Ruby filetype" \ -str fzf_tag_ruby " -: classes -: methods -: modules -: singleton methods" - -declare-option -hidden -docstring "A set of mappings for Rust filetype" \ -str fzf_tag_rust " -: module -: structural type -: trait interface -: implementation -: Function -: Enum -: Type Alias -: Global variable -: Macro Definition -: A struct field -: An enum variant -: A method" - -declare-option -hidden -docstring "A set of mappings for Scheme filetype" \ -str fzf_tag_scheme " -: functions -: sets" - -declare-option -hidden -docstring "A set of mappings for Sh filetype" \ -str fzf_tag_sh " -: aliases -: functions -: script files -: label for here document" - -declare-option -hidden -docstring "A set of mappings for SLang filetype" \ -str fzf_tag_slang " -: functions -: namespaces" - -declare-option -hidden -docstring "A set of mappings for SML filetype" \ -str fzf_tag_sml " -: exception declarations -: function definitions -: functor definitions -: signature declarations -: structure declarations -: type definitions -: value bindings" - -declare-option -hidden -docstring "A set of mappings for SQL filetype" \ -str fzf_tag_sql " -: cursors -: functions -: record fields -: block label -: packages -: procedures -: subtypes -: tables -: triggers -: variables -: indexes -: events -: publications -: services -: domains -: views -: synonyms -: MobiLink Table Scripts -: MobiLink Conn Scripts -: MobiLink Properties " - -declare-option -hidden -docstring "A set of mappings for SystemdUnit filetype" \ -str fzf_tag_systemdunit " -: units" - -declare-option -hidden -docstring "A set of mappings for Tcl filetype" \ -str fzf_tag_tcl " -: procedures -: namespaces" - -declare-option -hidden -docstring "A set of mappings for TclOO filetype" \ -str fzf_tag_tcloo " -: classes -: methods" - -declare-option -hidden -docstring "A set of mappings for Tex filetype" \ -str fzf_tag_tex " -: parts -: chapters -: sections -: subsections -: subsubsections -: paragraphs -: subparagraphs -: labels -: includes" - -declare-option -hidden -docstring "A set of mappings for TTCN filetype" \ -str fzf_tag_ttcn " -: module definition -: type definition -: constant definition -: template definition -: function definition -: signature definition -: testcase definition -: altstep definition -: group definition -: module parameter definition -: variable instance -: timer instance -: port instance -: record/set/union member -: enumeration value" - -declare-option -hidden -docstring "A set of mappings for Vera filetype" \ -str fzf_tag_vera " -: classes -: macro definitions -: enumerators (values inside an enumeration) -: function definitions -: enumeration names -: interfaces -: class, struct, and union members -: programs -: signals -: tasks -: typedefs -: variable definitions -: included header files" - -declare-option -hidden -docstring "A set of mappings for Verilog filetype" \ -str fzf_tag_verilog " -: constants (define, parameter, specparam) -: events -: functions -: modules -: net data types -: ports -: register data types -: tasks -: blocks" - -declare-option -hidden -docstring "A set of mappings for SystemVerilog filetype" \ -str fzf_tag_systemverilog " -: constants (define, parameter, specparam, enum values) -: events -: functions -: modules -: net data types -: ports -: register data types -: tasks -: blocks -: assertions -: classes -: covergroups -: enumerators -: interfaces -: modports -: packages -: programs -: properties -: structs and unions -: type declarations" - -declare-option -hidden -docstring "A set of mappings for VHDL filetype" \ -str fzf_tag_vhdl " -: constant declarations -: type definitions -: subtype definitions -: record names -: entity declarations -: function prototypes and declarations -: procedure prototypes and declarations -: package definitions" - -declare-option -hidden -docstring "A set of mappings for Vim filetype" \ -str fzf_tag_vim " -: autocommand groups -: user-defined commands -: function definitions -: maps -: variable definitions -: vimball filename" - -declare-option -hidden -docstring "A set of mappings for WindRes filetype" \ -str fzf_tag_windres " -: dialogs -: menus -: icons -: bitmaps -: cursors -: fonts -: versions -: accelerators" - -declare-option -hidden -docstring "A set of mappings for YACC filetype" \ -str fzf_tag_yacc " -: labels" - -declare-option -hidden -docstring "A set of mappings for YumRepo filetype" \ -str fzf_tag_yumrepo " -: repository id" - -declare-option -hidden -docstring "A set of mappings for Zephir filetype" \ -str fzf_tag_zephir " -: classes -: constant definitions -: functions -: interfaces -: namespaces -: traits -: variables -: aliases" - -declare-option -hidden -docstring "A set of mappings for DBusIntrospect filetype" \ -str fzf_tag_dbusintrospect " -: interfaces -: methods -: signals -: properties" - -declare-option -hidden -docstring "A set of mappings for Glade filetype" \ -str fzf_tag_glade " -: identifiers -: classes -: handlers" - -declare-option -hidden -docstring "A set of mappings for Maven2 filetype" \ -str fzf_tag_maven2 " -: group identifiers -: artifact identifiers -: properties -: repository identifiers" - -declare-option -hidden -docstring "A set of mappings for PlistXML filetype" \ -str fzf_tag_plistxml " -: keys" - -declare-option -hidden -docstring "A set of mappings for RelaxNG filetype" \ -str fzf_tag_relaxng " -: elements -: attributes -: named patterns" - -declare-option -hidden -docstring "A set of mappings for SVG filetype" \ -str fzf_tag_svg " -: id attributes" - -declare-option -hidden -docstring "A set of mappings for XSLT filetype" \ -str fzf_tag_xslt " -: stylesheets -: parameters -: matched template -: matched template -: variables" - -declare-option -hidden -docstring "A set of mappings for Yaml filetype" \ -str fzf_tag_yaml " -: anchors" - -declare-option -hidden -docstring "A set of mappings for AnsiblePlaybook filetype" \ -str fzf_tag_ansibleplaybook " -: plays" - -define-command -hidden fzf-tag -params ..1 %{ evaluate-commands %sh{ - case $kak_opt_filetype in - ada) - additional_keybindings="--expect ctrl-alt-p --expect alt-p --expect ctrl-alt-t --expect alt-t --expect ctrl-alt-u --expect alt-u --expect alt-c --expect alt-l --expect ctrl-alt-v --expect alt-v --expect alt-f --expect alt-n --expect alt-x --expect ctrl-alt-r --expect alt-r --expect ctrl-alt-k --expect alt-k --expect ctrl-alt-o --expect alt-o --expect ctrl-alt-e --expect alt-e --expect alt-b --expect alt-i --expect alt-a --expect alt-y --expect ctrl-alt-s" - additional_message=$kak_opt_fzf_tag_ada ;; - ant) - additional_keybindings="--expect alt-p --expect alt-t --expect ctrl-alt-p --expect alt-i" - additional_message=$kak_opt_fzf_tag_ant ;; - asciidoc) - additional_keybindings="--expect alt-c --expect alt-s --expect ctrl-alt-s --expect alt-t --expect ctrl-alt-t --expect alt-u --expect alt-a" - additional_message=$kak_opt_fzf_tag_asciidoc ;; - asm) - additional_keybindings="--expect alt-d --expect alt-l --expect alt-m --expect alt-t --expect alt-s" - additional_message=$kak_opt_fzf_tag_asm ;; - asp) - additional_keybindings="--expect alt-d --expect alt-c --expect alt-f --expect alt-s --expect alt-v" - additional_message=$kak_opt_fzf_tag_asp ;; - autoconf) - additional_keybindings="--expect alt-p --expect alt-t --expect alt-m --expect alt-w --expect alt-e --expect alt-s --expect alt-c --expect alt-d" - additional_message=$kak_opt_fzf_tag_autoconf ;; - autoit) - additional_keybindings="--expect alt-f --expect alt-r --expect alt-g --expect alt-l --expect ctrl-alt-s" - additional_message=$kak_opt_fzf_tag_autoit ;; - automake) - additional_keybindings="--expect alt-d --expect ctrl-alt-p --expect ctrl-alt-m --expect ctrl-alt-t --expect ctrl-alt-l --expect ctrl-alt-s --expect ctrl-alt-d --expect alt-c" - additional_message=$kak_opt_fzf_tag_automake ;; - awk) - additional_keybindings="--expect alt-f" - additional_message=$kak_opt_fzf_tag_awk ;; - basic) - additional_keybindings="--expect alt-c --expect alt-f --expect alt-l --expect alt-t --expect alt-v --expect alt-g" - additional_message=$kak_opt_fzf_tag_basic ;; - beta) - additional_keybindings="--expect alt-f --expect alt-p --expect alt-s --expect alt-v" - additional_message=$kak_opt_fzf_tag_beta ;; - clojure) - additional_keybindings="--expect alt-f --expect alt-n" - additional_message=$kak_opt_fzf_tag_clojure ;; - cmake) - additional_keybindings="--expect alt-f --expect alt-m --expect alt-t --expect alt-v --expect ctrl-alt-d --expect alt-p --expect alt-r" - additional_message=$kak_opt_fzf_tag_cmake ;; - c) - additional_keybindings="--expect alt-d --expect alt-e --expect alt-f --expect alt-g --expect alt-h --expect alt-l --expect alt-m --expect alt-p --expect alt-s --expect alt-t --expect alt-u --expect alt-v --expect alt-x --expect alt-z --expect ctrl-alt-l" - additional_message=$kak_opt_fzf_tag_c ;; - cpp) - additional_keybindings="--expect alt-d --expect alt-e --expect alt-f --expect alt-g --expect alt-h --expect alt-l --expect alt-m --expect alt-p --expect alt-s --expect alt-t --expect alt-u --expect alt-v --expect alt-x --expect alt-z --expect ctrl-alt-l --expect alt-c --expect alt-n --expect ctrl-alt-a --expect ctrl-alt-n --expect ctrl-alt-u" - additional_message=$kak_opt_fzf_tag_cpp ;; - cpreprocessor) - additional_keybindings="--expect alt-d --expect alt-h" - additional_message=$kak_opt_fzf_tag_cpreprocessor ;; - css) - additional_keybindings="--expect alt-c --expect alt-s --expect alt-i" - additional_message=$kak_opt_fzf_tag_css ;; - csharp) - additional_keybindings="--expect alt-c --expect alt-d --expect alt-e --expect ctrl-alt-e --expect alt-f --expect alt-g --expect alt-i --expect alt-l --expect alt-m --expect alt-n --expect alt-p --expect alt-s --expect alt-t" - additional_message=$kak_opt_fzf_tag_csharp ;; - ctags) - additional_keybindings="--expect alt-l --expect alt-k" - additional_message=$kak_opt_fzf_tag_ctags ;; - cobol) - additional_keybindings="--expect alt-p --expect alt-d --expect ctrl-alt-s --expect ctrl-alt-F --expect alt-g --expect ctrl-alt-p --expect alt-s --expect ctrl-alt-d" - additional_message=$kak_opt_fzf_tag_cobol ;; - cuda) - additional_keybindings="--expect alt-d --expect alt-e --expect alt-f --expect alt-g --expect alt-h --expect alt-l --expect alt-m --expect alt-p --expect alt-s --expect alt-t --expect alt-u --expect alt-v --expect alt-x --expect alt-z --expect ctrl-alt-l" - additional_message=$kak_opt_fzf_tag_cuda ;; - d) - additional_keybindings="--expect alt-a --expect alt-c --expect alt-g --expect alt-e --expect alt-x --expect alt-f --expect alt-i --expect alt-l --expect alt-m --expect ctrl-alt-x --expect ctrl-alt-m --expect alt-n --expect alt-p --expect alt-s --expect ctrl-alt-t --expect alt-u --expect alt-v --expect ctrl-alt-v" - additional_message=$kak_opt_fzf_tag_d ;; - diff) - additional_keybindings="--expect alt-m --expect alt-n --expect alt-d --expect alt-h" - additional_message=$kak_opt_fzf_tag_diff ;; - dtd) - additional_keybindings="--expect ctrl-alt-e --expect alt-p --expect alt-e --expect alt-a --expect alt-n" - additional_message=$kak_opt_fzf_tag_dtd ;; - dts) - additional_keybindings="--expect alt-p --expect alt-l --expect alt-r" - additional_message=$kak_opt_fzf_tag_dts ;; - dosbatch) - additional_keybindings="--expect alt-l --expect alt-v" - additional_message=$kak_opt_fzf_tag_dosbatch ;; - eiffel) - additional_keybindings="--expect alt-c --expect alt-f --expect alt-l" - additional_message=$kak_opt_fzf_tag_eiffel ;; - elm) - additional_keybindings="--expect ctrl-alt-M --expect ctrl-alt-N --expect ctrl-alt-P --expect ctrl-alt-T --expect ctrl-alt-C --expect ctrl-alt-A --expect ctrl-alt-F" - additional_message=$kak_opt_fzf_tag_elm ;; - erlang) - additional_keybindings="--expect alt-d --expect alt-f --expect alt-m --expect alt-r --expect alt-t" - additional_message=$kak_opt_fzf_tag_erlang ;; - falcon) - additional_keybindings="--expect alt-c --expect alt-f --expect alt-m --expect alt-v --expect alt-i" - additional_message=$kak_opt_fzf_tag_falcon ;; - flex) - additional_keybindings="--expect alt-f --expect alt-c --expect alt-m --expect alt-p --expect alt-v --expect alt-x" - additional_message=$kak_opt_fzf_tag_flex ;; - fortran) - additional_keybindings="--expect alt-b --expect alt-c --expect alt-e --expect ctrl-alt-e --expect alt-f --expect alt-i --expect alt-k --expect alt-l --expect ctrl-alt-l --expect alt-m --expect ctrl-alt-m --expect alt-n --expect ctrl-alt-n --expect alt-p --expect ctrl-alt-p --expect alt-s --expect alt-t --expect alt-v --expect ctrl-alt-s" - additional_message=$kak_opt_fzf_tag_fortran ;; - fypp) - additional_keybindings="--expect alt-m" - additional_message=$kak_opt_fzf_tag_fypp ;; - gdbinit) - additional_keybindings="--expect alt-d --expect ctrl-alt-d --expect alt-t --expect alt-l" - additional_message=$kak_opt_fzf_tag_gdbinit ;; - go) - additional_keybindings="--expect alt-p --expect alt-f --expect alt-c --expect alt-t --expect alt-v --expect alt-s --expect alt-i --expect alt-m --expect ctrl-alt-m --expect alt-u --expect ctrl-alt-p" - additional_message=$kak_opt_fzf_tag_go ;; - html) - additional_keybindings="--expect alt-a --expect ctrl-alt-H --expect ctrl-alt-I --expect ctrl-alt-J" - additional_message=$kak_opt_fzf_tag_html ;; - iniconf) - additional_keybindings="--expect alt-s --expect alt-k" - additional_message=$kak_opt_fzf_tag_iniconf ;; - itcl) - additional_keybindings="--expect alt-c --expect alt-m --expect alt-v --expect ctrl-alt-c --expect alt-p" - additional_message=$kak_opt_fzf_tag_itcl ;; - java) - additional_keybindings="--expect alt-a --expect alt-c --expect alt-e --expect alt-f --expect alt-g --expect alt-i --expect alt-l --expect alt-m --expect alt-p" - additional_message=$kak_opt_fzf_tag_java ;; - javaproperties) - additional_keybindings="--expect alt-k" - additional_message=$kak_opt_fzf_tag_javaproperties ;; - javascript) - additional_keybindings="--expect alt-f --expect alt-c --expect alt-m --expect alt-p --expect ctrl-alt-c --expect alt-v --expect alt-g" - additional_message=$kak_opt_fzf_tag_javascript ;; - json) - additional_keybindings="--expect alt-o --expect alt-a --expect alt-n --expect alt-s --expect alt-b --expect alt-z" - additional_message=$kak_opt_fzf_tag_json ;; - ldscript) - additional_keybindings="--expect ctrl-alt-s --expect alt-s --expect alt-v --expect alt-i" - additional_message=$kak_opt_fzf_tag_ldscript ;; - lisp) - additional_keybindings="--expect alt-f" - additional_message=$kak_opt_fzf_tag_lisp ;; - lua) - additional_keybindings="--expect alt-f" - additional_message=$kak_opt_fzf_tag_lua ;; - m4) - additional_keybindings="--expect alt-d --expect ctrl-alt-i" - additional_message=$kak_opt_fzf_tag_m4 ;; - man) - additional_keybindings="--expect alt-t --expect alt-s" - additional_message=$kak_opt_fzf_tag_man ;; - make) - additional_keybindings="--expect alt-m --expect alt-t --expect ctrl-alt-i" - additional_message=$kak_opt_fzf_tag_make ;; - markdown) - additional_keybindings="--expect alt-c --expect alt-s --expect ctrl-alt-s --expect alt-t --expect ctrl-alt-t --expect alt-u --expect alt-r" - additional_message=$kak_opt_fzf_tag_markdown ;; - matlab) - additional_keybindings="--expect alt-f --expect alt-v --expect alt-c" - additional_message=$kak_opt_fzf_tag_matlab ;; - myrddin) - additional_keybindings="--expect alt-f --expect alt-c --expect alt-v --expect alt-t --expect alt-r --expect alt-p" - additional_message=$kak_opt_fzf_tag_myrddin ;; - objectivec) - additional_keybindings="--expect alt-i --expect ctrl-alt-i --expect ctrl-alt-p --expect ctrl-alt-M --expect ctrl-alt-C --expect ctrl-alt-V --expect ctrl-alt-e --expect ctrl-alt-F --expect ctrl-alt-P --expect ctrl-alt-T --expect ctrl-alt-S --expect ctrl-alt-E --expect ctrl-alt-m" - additional_message=$kak_opt_fzf_tag_objectivec ;; - ocaml) - additional_keybindings="--expect alt-c --expect ctrl-alt-M --expect ctrl-alt-m --expect ctrl-alt-V --expect ctrl-alt-P --expect ctrl-alt-T --expect ctrl-alt-F --expect ctrl-alt-c --expect ctrl-alt-R --expect ctrl-alt-E" - additional_message=$kak_opt_fzf_tag_ocaml ;; - passwd) - additional_keybindings="--expect alt-u" - additional_message=$kak_opt_fzf_tag_passwd ;; - pascal) - additional_keybindings="--expect alt-f --expect alt-p" - additional_message=$kak_opt_fzf_tag_pascal ;; - perl) - additional_keybindings="--expect alt-c --expect alt-f --expect alt-l --expect alt-p --expect alt-s --expect alt-d" - additional_message=$kak_opt_fzf_tag_perl ;; - perl6) - additional_keybindings="--expect alt-c --expect alt-g --expect alt-m --expect alt-o --expect alt-p --expect alt-r --expect alt-u --expect alt-b --expect alt-s --expect alt-t" - additional_message=$kak_opt_fzf_tag_perl6 ;; - php) - additional_keybindings="--expect alt-c --expect alt-d --expect alt-f --expect alt-i --expect alt-l --expect alt-n --expect alt-t --expect alt-v --expect alt-a" - additional_message=$kak_opt_fzf_tag_php ;; - pod) - additional_keybindings="--expect alt-c --expect alt-s --expect ctrl-alt-s --expect alt-t" - additional_message=$kak_opt_fzf_tag_pod ;; - protobuf) - additional_keybindings="--expect alt-p --expect alt-m --expect alt-f --expect alt-e --expect alt-g --expect alt-s --expect ctrl-alt-R" - additional_message=$kak_opt_fzf_tag_protobuf ;; - puppetmanifest) - additional_keybindings="--expect alt-c --expect alt-d --expect alt-n --expect alt-r --expect alt-v" - additional_message=$kak_opt_fzf_tag_puppetmanifest ;; - python) - additional_keybindings="--expect alt-c --expect alt-f --expect alt-m --expect alt-v --expect ctrl-alt-i --expect alt-i --expect alt-x --expect alt-z --expect alt-l" - additional_message=$kak_opt_fzf_tag_python ;; - pythonloggingconfig) - additional_keybindings="--expect ctrl-alt-l --expect alt-q" - additional_message=$kak_opt_fzf_tag_pythonloggingconfig ;; - qemuhx) - additional_keybindings="--expect ctrl-alt-Q --expect alt-i" - additional_message=$kak_opt_fzf_tag_qemuhx ;; - qtmoc) - additional_keybindings="--expect alt-s --expect ctrl-alt-s --expect alt-p" - additional_message=$kak_opt_fzf_tag_qtmoc ;; - r) - additional_keybindings="--expect alt-f --expect alt-l --expect alt-s --expect alt-g --expect alt-v" - additional_message=$kak_opt_fzf_tag_r ;; - rspec) - additional_keybindings="--expect alt-d --expect alt-c" - additional_message=$kak_opt_fzf_tag_rspec ;; - rexx) - additional_keybindings="--expect alt-s" - additional_message=$kak_opt_fzf_tag_rexx ;; - robot) - additional_keybindings="--expect alt-t --expect alt-k --expect alt-v" - additional_message=$kak_opt_fzf_tag_robot ;; - rpmspec) - additional_keybindings="--expect alt-t --expect alt-m --expect alt-p --expect alt-g" - additional_message=$kak_opt_fzf_tag_rpmspec ;; - restructuredtext) - additional_keybindings="--expect alt-c --expect alt-s --expect ctrl-alt-s --expect alt-t --expect ctrl-alt-t" - additional_message=$kak_opt_fzf_tag_restructuredtext ;; - ruby) - additional_keybindings="--expect alt-c --expect alt-f --expect alt-m --expect ctrl-alt-s" - additional_message=$kak_opt_fzf_tag_ruby ;; - rust) - additional_keybindings="--expect alt-n --expect alt-s --expect alt-i --expect alt-c --expect ctrl-alt-F --expect ctrl-alt-G --expect ctrl-alt-T --expect ctrl-alt-V --expect ctrl-alt-m --expect ctrl-alt-M --expect ctrl-alt-E --expect ctrl-alt-p" - additional_message=$kak_opt_fzf_tag_rust ;; - scheme) - additional_keybindings="--expect alt-f --expect alt-s" - additional_message=$kak_opt_fzf_tag_scheme ;; - sh) - additional_keybindings="--expect alt-a --expect alt-f --expect alt-s --expect alt-h" - additional_message=$kak_opt_fzf_tag_sh ;; - slang) - additional_keybindings="--expect alt-f --expect alt-n" - additional_message=$kak_opt_fzf_tag_slang ;; - sml) - additional_keybindings="--expect alt-e --expect alt-f --expect alt-c --expect alt-s --expect alt-r --expect alt-t --expect alt-v" - additional_message=$kak_opt_fzf_tag_sml ;; - sql) - additional_keybindings="--expect alt-c --expect alt-d --expect alt-f --expect ctrl-alt-e --expect alt-l --expect ctrl-alt-l --expect ctrl-alt-p --expect alt-p --expect alt-r --expect alt-s --expect alt-t --expect ctrl-alt-t --expect alt-v --expect alt-i --expect alt-e --expect ctrl-alt-u --expect ctrl-alt-r --expect ctrl-alt-d --expect ctrl-alt-v --expect alt-n --expect ctrl-alt-X --expect ctrl-alt-Y --expect ctrl-alt-Z" - additional_message=$kak_opt_fzf_tag_sql ;; - systemdunit) - additional_keybindings="--expect alt-u" - additional_message=$kak_opt_fzf_tag_systemdunit ;; - tcl) - additional_keybindings="--expect alt-p --expect alt-n" - additional_message=$kak_opt_fzf_tag_tcl ;; - tcloo) - additional_keybindings="--expect alt-c --expect alt-m" - additional_message=$kak_opt_fzf_tag_tcloo ;; - tex) - additional_keybindings="--expect alt-p --expect alt-c --expect alt-s --expect alt-u --expect alt-b --expect ctrl-alt-p --expect ctrl-alt-g --expect alt-l --expect alt-i" - additional_message=$kak_opt_fzf_tag_tex ;; - ttcn) - additional_keybindings="--expect ctrl-alt-m --expect alt-t --expect alt-c --expect alt-d --expect alt-f --expect alt-s --expect ctrl-alt-c --expect alt-a --expect ctrl-alt-g --expect ctrl-alt-p --expect alt-v --expect ctrl-alt-t --expect alt-p --expect alt-m --expect alt-e" - additional_message=$kak_opt_fzf_tag_ttcn ;; - vera) - additional_keybindings="--expect alt-c --expect alt-d --expect alt-e --expect alt-f --expect alt-g --expect alt-i --expect alt-l --expect alt-m --expect alt-p --expect ctrl-alt-p --expect alt-s --expect alt-t --expect ctrl-alt-t --expect alt-v --expect alt-x --expect alt-h" - additional_message=$kak_opt_fzf_tag_vera ;; - verilog) - additional_keybindings="--expect alt-c --expect alt-e --expect alt-f --expect alt-m --expect alt-n --expect alt-p --expect alt-r --expect alt-t --expect alt-b" - additional_message=$kak_opt_fzf_tag_verilog ;; - systemverilog) - additional_keybindings="--expect alt-c --expect alt-e --expect alt-f --expect alt-m --expect alt-n --expect alt-p --expect alt-r --expect alt-t --expect alt-b --expect ctrl-alt-a --expect ctrl-alt-c --expect ctrl-alt-v --expect ctrl-alt-e --expect ctrl-alt-i --expect ctrl-alt-m --expect ctrl-alt-k --expect ctrl-alt-p --expect ctrl-alt-q --expect ctrl-alt-r --expect ctrl-alt-s --expect ctrl-alt-t" - additional_message=$kak_opt_fzf_tag_systemverilog ;; - vhdl) - additional_keybindings="--expect alt-c --expect alt-t --expect ctrl-alt-t --expect alt-r --expect alt-e --expect ctrl-alt-c --expect alt-d --expect alt-f --expect alt-p --expect ctrl-alt-p --expect alt-l" - additional_message=$kak_opt_fzf_tag_vhdl ;; - vim) - additional_keybindings="--expect alt-a --expect alt-c --expect alt-f --expect alt-m --expect alt-v --expect alt-n" - additional_message=$kak_opt_fzf_tag_vim ;; - windres) - additional_keybindings="--expect alt-d --expect alt-m --expect alt-i --expect alt-b --expect alt-c --expect alt-f --expect alt-v --expect alt-a" - additional_message=$kak_opt_fzf_tag_windres ;; - yacc) - additional_keybindings="--expect alt-l" - additional_message=$kak_opt_fzf_tag_yacc ;; - yumrepo) - additional_keybindings="--expect alt-r" - additional_message=$kak_opt_fzf_tag_yumrepo ;; - zephir) - additional_keybindings="--expect alt-c --expect alt-d --expect alt-f --expect alt-i --expect alt-l --expect alt-n --expect alt-t --expect alt-v --expect alt-a" - additional_message=$kak_opt_fzf_tag_zephir ;; - dbusintrospect) - additional_keybindings="--expect alt-i --expect alt-m --expect alt-s --expect alt-p" - additional_message=$kak_opt_fzf_tag_dbusintrospect ;; - glade) - additional_keybindings="--expect alt-i --expect alt-c --expect alt-h" - additional_message=$kak_opt_fzf_tag_glade ;; - maven2) - additional_keybindings="--expect alt-g --expect alt-a --expect alt-p --expect alt-r" - additional_message=$kak_opt_fzf_tag_maven2 ;; - plistxml) - additional_keybindings="--expect alt-k" - additional_message=$kak_opt_fzf_tag_plistxml ;; - relaxng) - additional_keybindings="--expect alt-e --expect alt-a --expect alt-n" - additional_message=$kak_opt_fzf_tag_relaxng ;; - svg) - additional_keybindings="--expect alt-i" - additional_message=$kak_opt_fzf_tag_svg ;; - xslt) - additional_keybindings="--expect alt-s --expect alt-p --expect alt-m --expect alt-n --expect alt-v" - additional_message=$kak_opt_fzf_tag_xslt ;; - yaml) - additional_keybindings="--expect alt-a" - additional_message=$kak_opt_fzf_tag_yaml ;; - ansibleplaybook) - additional_keybindings="--expect alt-p" - additional_message=$kak_opt_fzf_tag_ansibleplaybook ;; - *) - additional_keybindings= - additional_message= - ;; - esac - - if [ ! -z "$1" ]; then - mode=$(echo "$additional_message" | grep ":" | awk '{$1=""; print}' | sed "s/\(.*\)/:\1/") - cmd="readtags -Q '(eq? \$kind $1)' -l | cut -f1" - else - cmd="readtags -l | cut -f1" - fi - - [ ! -z "${kak_client_env_TMUX}" ] && tmux_keybindings=" -: open tag in horizontal split -: open tag in vertical split" - - message="Jump to a symbol''s definition -: open tag in new buffer -: open tag in new window" - - [ ! -z "$additional_message" ] && message="$message $tmux_keybindings - -Additional filters for $kak_opt_filetype filetype: $additional_message" - - echo "info -title 'fzf tag$mode' '$message'" - - [ ! -z "${kak_client_env_TMUX}" ] && additional_flags="--expect ctrl-v --expect ctrl-s" - - eval echo 'fzf \"ctags-search \$1\" \"$cmd\" \"--expect ctrl-w $additional_flags $additional_keybindings\"' -}} -