diff --git a/README.md b/README.md index e825e45..ac324e7 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,9 @@ In this mode new mappings are available: - 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. You can set your own mapping to invoke `fzf-mode`: diff --git a/rc/fzf.kak b/rc/fzf.kak index babfc46..7e15997 100644 --- a/rc/fzf.kak +++ b/rc/fzf.kak @@ -250,27 +250,6 @@ define-command -hidden fzf-bzr %{ evaluate-commands %sh{ eval echo 'fzf \"edit \$1\" \"$cmd\" \"-m --expect ctrl-w $additional_flags\"' }} -define-command -hidden fzf-tag %{ evaluate-commands %sh{ - case $kak_opt_fzf_tag_command in - readtags) - cmd="readtags -l | cut -f1" ;; - readtags*) - cmd=$kak_opt_fzf_tag_command ;; - *) - echo "echo -markup '{Information}$kak_opt_fzf_tag_command is not supported by the script. fzf.kak may not work as you expect." - cmd=$kak_opt_fzf_tag_command ;; - esac - title="fzf tag" - [ ! -z "${kak_client_env_TMUX}" ] && additional_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 $additional_keybindings" - echo "info -title '$title' '$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\"' -}} - define-command -hidden fzf-cd %{ evaluate-commands %sh{ title="fzf change directory" @@ -330,11 +309,13 @@ define-command -hidden fzf -params 2..3 %{ evaluate-commands %sh{ fi if [ ! -z "${kak_client_env_TMUX}" ]; then + [ -z "${items_command##*Q*}" ] && items_command=$(echo $items_command | sed 's:$kind \(\w\):\$kind \"\1\":') cmd="$preview_pos $items_command | fzf-tmux -d $kak_opt_fzf_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:') - 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\\\"\"" + [ -z "${items_command##*Q*}" ] && items_command=$(echo $items_command | sed 's:$kind \(\w\):\\\\\\$kind \\\\\\\"\1\\\\\\\":') + 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\\\"\" else echo "fail termcmd option is not set" exit @@ -347,13 +328,16 @@ define-command -hidden fzf -params 2..3 %{ evaluate-commands %sh{ read action if [ "${callback% *}" != "change-directory" ]; then case $action in - "ctrl-w") + ctrl-w) wincmd="x11-new " [ ! -z "${kak_client_env_TMUX}" ] && wincmd="tmux-new-window " ;; - "ctrl-s") + ctrl-s) wincmd="tmux-new-vertical " ;; - "ctrl-v") + ctrl-v) wincmd="tmux-new-horizontal " ;; + alt-*) + kind="${action##*-}" + callback="fzf-tag $kind" ;; *) wincmd= ;; esac @@ -422,3 +406,1196 @@ define-command -hidden fzf-buffer %{ evaluate-commands %sh{ ) > /dev/null 2>&1 < /dev/null & }} +declare-option -hidden -docstring "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 "Set of mappings for Ant filetype" \ +str fzf_tag_ant " +: projects +: targets +: properties(global) +: antfiles" + +declare-option -hidden -docstring "Set of mappings for Asciidoc filetype" \ +str fzf_tag_asciidoc " +: chapters +: sections +: level : sections +: level : sections +: level : sections +: level : sections +: anchors" + +declare-option -hidden -docstring "Set of mappings for Asm filetype" \ +str fzf_tag_asm " +: defines +: labels +: macros +: types (structs and records) +: sections" + +declare-option -hidden -docstring "Set of mappings for Asp filetype" \ +str fzf_tag_asp " +: constants +: classes +: functions +: subroutines +: variables" + +declare-option -hidden -docstring "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 "Set of mappings for AutoIt filetype" \ +str fzf_tag_autoit " +: functions +: regions +: global variables +: local variables +: included scripts" + +declare-option -hidden -docstring "Set of mappings for Automake filetype" \ +str fzf_tag_automake " +: directories +: programs +: manuals +: ltlibraries +: libraries +: scripts +: datum +: conditions" + +declare-option -hidden -docstring "Set of mappings for Awk filetype" \ +str fzf_tag_awk " +: functions" + +declare-option -hidden -docstring "Set of mappings for Basic filetype" \ +str fzf_tag_basic " +: constants +: functions +: labels +: types +: variables +: enumerations" + +declare-option -hidden -docstring "Set of mappings for BETA filetype" \ +str fzf_tag_beta " +: fragment definitions +: slots (fragment uses) +: patterns (virtual or rebound)" + +declare-option -hidden -docstring "Set of mappings for Clojure filetype" \ +str fzf_tag_clojure " +: functions +: namespaces" + +declare-option -hidden -docstring "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 "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 "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 "Set of mappings for CPreProcessor filetype" \ +str fzf_tag_cpreprocessor " +: macro definitions +: included header files" + +declare-option -hidden -docstring "Set of mappings for CSS filetype" \ +str fzf_tag_css " +: classes +: selectors +: identities" + +declare-option -hidden -docstring "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 "Set of mappings for Ctags filetype" \ +str fzf_tag_ctags " +: language definitions +: kind definitions" + +declare-option -hidden -docstring "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 "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 "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 "Set of mappings for Diff filetype" \ +str fzf_tag_diff " +: modified files +: newly created files +: deleted files +: hunks" + +declare-option -hidden -docstring "Set of mappings for DTD filetype" \ +str fzf_tag_dtd " +: entities +: parameter entities +: elements +: attributes +: notations" + +declare-option -hidden -docstring "Set of mappings for DTS filetype" \ +str fzf_tag_dts " +: phandlers +: labels +: regex" + +declare-option -hidden -docstring "Set of mappings for DosBatch filetype" \ +str fzf_tag_dosbatch " +: labels +: variables" + +declare-option -hidden -docstring "Set of mappings for Eiffel filetype" \ +str fzf_tag_eiffel " +: classes +: features" + +declare-option -hidden -docstring "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 "Set of mappings for Erlang filetype" \ +str fzf_tag_erlang " +: macro definitions +: functions +: modules +: record definitions +: type definitions" + +declare-option -hidden -docstring "Set of mappings for Falcon filetype" \ +str fzf_tag_falcon " +: classes +: functions +: class members +: variables +: imports" + +declare-option -hidden -docstring "Set of mappings for Flex filetype" \ +str fzf_tag_flex " +: functions +: classes +: methods +: properties +: global variables +: mxtags" + +declare-option -hidden -docstring "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 "Set of mappings for Fypp filetype" \ +str fzf_tag_fypp " +: macros" + +declare-option -hidden -docstring "Set of mappings for Gdbinit filetype" \ +str fzf_tag_gdbinit " +: definitions +: toplevel variables" + +declare-option -hidden -docstring "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 "Set of mappings for HTML filetype" \ +str fzf_tag_html " +: named anchors +: H1 headings +: H2 headings +: H3 headings" + +declare-option -hidden -docstring "Set of mappings for Iniconf filetype" \ +str fzf_tag_iniconf " +: sections +: keys" + +declare-option -hidden -docstring "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 "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 "Set of mappings for JavaProperties filetype" \ +str fzf_tag_javaproperties " +: keys" + +declare-option -hidden -docstring "Set of mappings for JavaScript filetype" \ +str fzf_tag_javascript " +: functions +: classes +: methods +: properties +: constants +: global variables +: generators" + +declare-option -hidden -docstring "Set of mappings for JSON filetype" \ +str fzf_tag_json " +: objects +: arrays +: numbers +: strings +: booleans +: nulls" + +declare-option -hidden -docstring "Set of mappings for LdScript filetype" \ +str fzf_tag_ldscript " +: sections +: symbols +: versions +: input sections" + +declare-option -hidden -docstring "Set of mappings for Lisp filetype" \ +str fzf_tag_lisp " +: functions" + +declare-option -hidden -docstring "Set of mappings for Lua filetype" \ +str fzf_tag_lua " +: functions" + +declare-option -hidden -docstring "Set of mappings for M4 filetype" \ +str fzf_tag_m4 " +: macros +: macro files" + +declare-option -hidden -docstring "Set of mappings for Man filetype" \ +str fzf_tag_man " +: titles +: sections" + +declare-option -hidden -docstring "Set of mappings for Make filetype" \ +str fzf_tag_make " +: macros +: targets +: makefiles" + +declare-option -hidden -docstring "Set of mappings for Markdown filetype" \ +str fzf_tag_markdown " +: chapsters +: sections +: subsections +: subsubsections +: level : subsections +: level : subsections +: regex" + +declare-option -hidden -docstring "Set of mappings for MatLab filetype" \ +str fzf_tag_matlab " +: function +: variable +: class" + +declare-option -hidden -docstring "Set of mappings for Myrddin filetype" \ +str fzf_tag_myrddin " +: functions +: constants +: variables +: types +: traits +: packages" + +declare-option -hidden -docstring "Set of mappings for ObjectiveC filetype" \ +str fzf_tag_objectivec " +: class interface +: class implementation +: Protocol +: Object's method +: Class' method +: Global variable +: Object field +: : function +: : property +: : type alias +: : type structure +: An enumeration +: : preprocessor macro" + +declare-option -hidden -docstring "Set of mappings for OCaml filetype" \ +str fzf_tag_ocaml " +: classes +: Object's method +: Module or functor +: Global variable +: Signature item +: Type name +: : function +: : constructor +: : 'structure' field +: An exception" + +declare-option -hidden -docstring "Set of mappings for Passwd filetype" \ +str fzf_tag_passwd " +: user names" + +declare-option -hidden -docstring "Set of mappings for Pascal filetype" \ +str fzf_tag_pascal " +: functions +: procedures" + +declare-option -hidden -docstring "Set of mappings for Perl filetype" \ +str fzf_tag_perl " +: constants +: formats +: labels +: packages +: subroutines" + +declare-option -hidden -docstring "Set of mappings for Perl6 filetype" \ +str fzf_tag_perl6 " +: classes +: grammars +: methods +: modules +: packages +: roles +: rules +: submethods +: subroutines +: tokens" + +declare-option -hidden -docstring "Set of mappings for PHP filetype" \ +str fzf_tag_php " +: classes +: constant definitions +: functions +: interfaces +: namespaces +: traits +: variables +: aliases" + +declare-option -hidden -docstring "Set of mappings for Pod filetype" \ +str fzf_tag_pod " +: chapters +: sections +: subsections +: subsubsections" + +declare-option -hidden -docstring "Set of mappings for Protobuf filetype" \ +str fzf_tag_protobuf " +: packages +: messages +: fields +: enum constants +: enum types +: services" + +declare-option -hidden -docstring "Set of mappings for PuppetManifest filetype" \ +str fzf_tag_puppetmanifest " +: classes +: definitions +: nodes +: resources +: variables" + +declare-option -hidden -docstring "Set of mappings for Python filetype" \ +str fzf_tag_python " +: classes +: functions +: class members +: variables +: name referring : module defined in other file +: modules +: name referring : class/variable/function/module defined in other module" + +declare-option -hidden -docstring "Set of mappings for PythonLoggingConfig filetype" \ +str fzf_tag_pythonloggingconfig " +: logger sections +: logger qualnames" + +declare-option -hidden -docstring "Set of mappings for QemuHX filetype" \ +str fzf_tag_qemuhx " +: QEMU Management Protocol dispatch table entries +: item in texinfo doc" + +declare-option -hidden -docstring "Set of mappings for QtMoc filetype" \ +str fzf_tag_qtmoc " +: slots +: signals +: properties" + +declare-option -hidden -docstring "Set of mappings for R filetype" \ +str fzf_tag_r " +: functions +: libraries +: sources +: global variables +: function variables" + +declare-option -hidden -docstring "Set of mappings for RSpec filetype" \ +str fzf_tag_rspec " +: describes +: contexts" + +declare-option -hidden -docstring "Set of mappings for REXX filetype" \ +str fzf_tag_rexx " +: subroutines" + +declare-option -hidden -docstring "Set of mappings for Robot filetype" \ +str fzf_tag_robot " +: testcases +: keywords +: variables" + +declare-option -hidden -docstring "Set of mappings for RpmSpec filetype" \ +str fzf_tag_rpmspec " +: tags +: macros +: packages +: global macros" + +declare-option -hidden -docstring "Set of mappings for ReStructuredText filetype" \ +str fzf_tag_restructuredtext " +: chapters +: sections +: subsections +: subsubsections +: targets" + +declare-option -hidden -docstring "Set of mappings for Ruby filetype" \ +str fzf_tag_ruby " +: classes +: methods +: modules +: singleton methods" + +declare-option -hidden -docstring "Set of mappings for Rust filetype" \ +str fzf_tag_rust " +: module +: structural type +: trait interface +: implementation +: Function +: Enum +: Type Alias +: Global variable +: Macro Definition +: : struct field +: An enum variant +: : method" + +declare-option -hidden -docstring "Set of mappings for Scheme filetype" \ +str fzf_tag_scheme " +: functions +: sets" + +declare-option -hidden -docstring "Set of mappings for Sh filetype" \ +str fzf_tag_sh " +: aliases +: functions +: script files +: label for here document" + +declare-option -hidden -docstring "Set of mappings for SLang filetype" \ +str fzf_tag_slang " +: functions +: namespaces" + +declare-option -hidden -docstring "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 "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 "Set of mappings for SystemdUnit filetype" \ +str fzf_tag_systemdunit " +: units" + +declare-option -hidden -docstring "Set of mappings for Tcl filetype" \ +str fzf_tag_tcl " +: procedures +: namespaces" + +declare-option -hidden -docstring "Set of mappings for TclOO filetype" \ +str fzf_tag_tcloo " +: classes +: methods" + +declare-option -hidden -docstring "Set of mappings for Tex filetype" \ +str fzf_tag_tex " +: parts +: chapters +: sections +: subsections +: subsubsections +: paragraphs +: subparagraphs +: labels +: includes" + +declare-option -hidden -docstring "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 "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 "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 "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 "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 "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 "Set of mappings for WindRes filetype" \ +str fzf_tag_windres " +: dialogs +: menus +: icons +: bitmaps +: cursors +: fonts +: versions +: accelerators" + +declare-option -hidden -docstring "Set of mappings for YACC filetype" \ +str fzf_tag_yacc " +: labels" + +declare-option -hidden -docstring "Set of mappings for YumRepo filetype" \ +str fzf_tag_yumrepo " +: repository id" + +declare-option -hidden -docstring "Set of mappings for Zephir filetype" \ +str fzf_tag_zephir " +: classes +: constant definitions +: functions +: interfaces +: namespaces +: traits +: variables +: aliases" + +declare-option -hidden -docstring "Set of mappings for DBusIntrospect filetype" \ +str fzf_tag_dbusintrospect " +: interfaces +: methods +: signals +: properties" + +declare-option -hidden -docstring "Set of mappings for Glade filetype" \ +str fzf_tag_glade " +: identifiers +: classes +: handlers" + +declare-option -hidden -docstring "Set of mappings for Maven2 filetype" \ +str fzf_tag_maven2 " +: group identifiers +: artifact identifiers +: properties +: repository identifiers" + +declare-option -hidden -docstring "Set of mappings for PlistXML filetype" \ +str fzf_tag_plistxml " +: keys" + +declare-option -hidden -docstring "Set of mappings for RelaxNG filetype" \ +str fzf_tag_relaxng " +: elements +: attributes +: named patterns" + +declare-option -hidden -docstring "Set of mappings for SVG filetype" \ +str fzf_tag_svg " +: id attributes" + +declare-option -hidden -docstring "Set of mappings for XSLT filetype" \ +str fzf_tag_xslt " +: stylesheets +: parameters +: matched template +: matched template +: variables" + +declare-option -hidden -docstring "Set of mappings for Yaml filetype" \ +str fzf_tag_yaml " +: anchors" + +declare-option -hidden -docstring "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 alt-P --expect alt-p --expect alt-T --expect alt-t --expect alt-U --expect alt-u --expect alt-c --expect alt-l --expect alt-V --expect alt-v --expect alt-f --expect alt-n --expect alt-x --expect alt-R --expect alt-r --expect alt-K --expect alt-k --expect alt-O --expect alt-o --expect alt-E --expect alt-e --expect alt-b --expect alt-i --expect alt-a --expect alt-y --expect alt-S" + additional_message=$kak_opt_fzf_tag_ada ;; + ant) + additional_keybindings="--expect alt-p --expect alt-t --expect alt-P --expect alt-i" + additional_message=$kak_opt_fzf_tag_ant ;; + asciidoc) + additional_keybindings="--expect alt-c --expect alt-s --expect alt-S --expect alt-t --expect 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 alt-S" + additional_message=$kak_opt_fzf_tag_autoit ;; + automake) + additional_keybindings="--expect alt-d --expect alt-P --expect alt-M --expect alt-T --expect alt-L --expect alt-S --expect 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 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 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 alt-L --expect alt-c --expect alt-n --expect alt-A --expect alt-N --expect 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 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 alt-S --expect alt-f --expect alt-g --expect alt-P --expect alt-s --expect 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 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 alt-X --expect alt-M --expect alt-n --expect alt-p --expect alt-s --expect alt-T --expect alt-u --expect alt-v --expect alt-V" + additional_message=$kak_opt_fzf_tag_d ;; + ddtd) + additional_keybindings="--expect 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 ;; + eelm) + additional_keybindings="--expect alt-m --expect alt-n --expect alt-p --expect alt-t --expect alt-c --expect alt-a --expect 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 alt-E --expect alt-f --expect alt-i --expect alt-k --expect alt-l --expect alt-L --expect alt-m --expect alt-M --expect alt-n --expect alt-N --expect alt-p --expect alt-P --expect alt-s --expect alt-t --expect alt-v --expect 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 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 alt-M --expect alt-u --expect alt-P" + additional_message=$kak_opt_fzf_tag_go ;; + html) + additional_keybindings="--expect alt-a --expect alt-h --expect alt-i --expect 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 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 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 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 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 alt-I" + additional_message=$kak_opt_fzf_tag_make ;; + markdown) + additional_keybindings="--expect alt-c --expect alt-s --expect alt-S --expect alt-t --expect 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 alt-I --expect alt-P --expect alt-m --expect alt-c --expect alt-v --expect alt-E --expect alt-f --expect alt-p --expect alt-t --expect alt-s --expect alt-e --expect alt-M" + additional_message=$kak_opt_fzf_tag_objectivec ;; + ocaml) + additional_keybindings="--expect alt-c --expect alt-m --expect alt-M --expect alt-v --expect alt-p --expect alt-t --expect alt-f --expect alt-C --expect alt-r --expect 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 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 alt-r" + additional_message=$kak_opt_fzf_tag_protobuf ;; + puppetmanpython) + additional_keybindings="--expect alt-c --expect alt-f --expect alt-m --expect alt-v --expect 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 alt-L --expect alt-q" + additional_message=$kak_opt_fzf_tag_pythonloggingconfig ;; + qemuhx) + additional_keybindings="--expect alt-q --expect alt-i" + additional_message=$kak_opt_fzf_tag_qemuhx ;; + qtmoc) + additional_keybindings="--expect alt-s --expect 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 alt-S --expect alt-t --expect alt-T" + additional_message=$kak_opt_fzf_tag_restructuredtext ;; + ruby) + additional_keybindings="--expect alt-c --expect alt-f --expect alt-m --expect 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 alt-f --expect alt-g --expect alt-t --expect alt-v --expect alt-M --expect alt-m --expect alt-e --expect 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 alt-E --expect alt-l --expect alt-L --expect alt-P --expect alt-p --expect alt-r --expect alt-s --expect alt-t --expect alt-T --expect alt-v --expect alt-i --expect alt-e --expect alt-U --expect alt-R --expect alt-D --expect alt-V --expect alt-n --expect alt-x --expect alt-y --expect 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 alt-P --expect alt-G --expect alt-l --expect alt-i" + additional_message=$kak_opt_fzf_tag_tex ;; + ttcn) + additional_keybindings="--expect alt-M --expect alt-t --expect alt-c --expect alt-d --expect alt-f --expect alt-s --expect alt-C --expect alt-a --expect alt-G --expect alt-P --expect alt-v --expect 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 alt-P --expect alt-s --expect alt-t --expect 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 alt-A --expect alt-C --expect alt-V --expect alt-E --expect alt-I --expect alt-M --expect alt-K --expect alt-P --expect alt-Q --expect alt-R --expect alt-S --expect alt-T" + additional_message=$kak_opt_fzf_tag_systemverilog ;; + vhdl) + additional_keybindings="--expect alt-c --expect alt-t --expect alt-T --expect alt-r --expect alt-e --expect alt-C --expect alt-d --expect alt-f --expect alt-p --expect 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\"' +}} +