1
0
mirror of https://github.com/gryf/tagbar.git synced 2025-12-17 11:30:28 +01:00

Add support for various types for [u]ctags

Exuberant Ctags:
- ObjectiveC

Universal Ctags:
- Ada
- Autoconf
- Automake
- Ctags config
- D
- Elm (courtesy of @bitterjug)
- Go
- ObjectiveC
- Perl 6
- Protobuf (closes #437)
- R

Also various improvements to existing definitions based on changes in
Universal Ctags.
This commit is contained in:
Jan Larres
2017-09-03 19:01:16 +12:00
parent 59ea6d656a
commit b4643521ff
2 changed files with 337 additions and 49 deletions

View File

@@ -375,6 +375,36 @@ function! tagbar#types#ctags#init(supported_types) abort
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1}
\ ]
let types.matlab = type_matlab
" ObjectiveC {{{1
let type_objc = tagbar#prototypes#typeinfo#new()
let type_objc.ctagstype = 'objectivec'
let type_objc.kinds = [
\ {'short' : 'M', 'long' : 'preprocessor macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 'v', 'long' : 'global variables', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'class interfaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'I', 'long' : 'class implementations', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'class methods', 'fold' : 0, 'stl' : 1},
\ {'short' : 'F', 'long' : 'object fields', 'fold' : 0, 'stl' : 0},
\ {'short' : 'm', 'long' : 'object methods', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'type structures', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'type aliases', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerations', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'properties', 'fold' : 0, 'stl' : 0},
\ ]
let type_objc.sro = ':'
let type_objc.kind2scope = {
\ 'i' : 'interface',
\ 'I' : 'implementation',
\ 's' : 'struct',
\ }
let type_objc.scope2kind = {
\ 'interface' : 'i',
\ 'implementation' : 'I',
\ 'struct' : 's',
\ }
let types.objc = type_objc
let types.objcpp = type_objc
" Ocaml {{{1
let type_ocaml = tagbar#prototypes#typeinfo#new()
let type_ocaml.ctagstype = 'ocaml'

View File

@@ -3,22 +3,59 @@
function! tagbar#types#uctags#init(supported_types) abort
let types = {}
" Ada {{{1
let type_ada = tagbar#prototypes#typeinfo#new()
let type_ada.ctagstype = 'ada'
let type_ada.kinds = [
\ {'short' : 'P', 'long' : 'package specifications', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'packages', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'types', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'subtypes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'record type components', 'fold' : 0, 'stl' : 1},
\ {'short' : 'l', 'long' : 'enum type literals', 'fold' : 0, 'stl' : 0},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0},
\ {'short' : 'f', 'long' : 'generic formal parameters', 'fold' : 0, 'stl' : 0},
\ {'short' : 'n', 'long' : 'constants', 'fold' : 0, 'stl' : 0},
\ {'short' : 'x', 'long' : 'user defined exceptions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'R', 'long' : 'subprogram specifications', 'fold' : 0, 'stl' : 1},
\ {'short' : 'r', 'long' : 'subprograms', 'fold' : 0, 'stl' : 1},
\ {'short' : 'K', 'long' : 'task specifications', 'fold' : 0, 'stl' : 1},
\ {'short' : 'k', 'long' : 'tasks', 'fold' : 0, 'stl' : 1},
\ {'short' : 'O', 'long' : 'protected data specifications', 'fold' : 0, 'stl' : 1},
\ {'short' : 'o', 'long' : 'protected data', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'task/protected data entries', 'fold' : 0, 'stl' : 1},
\ {'short' : 'b', 'long' : 'labels', 'fold' : 0, 'stl' : 1},
\ {'short' : 'i', 'long' : 'loop/declare identifiers', 'fold' : 0, 'stl' : 1},
\ ]
let type_ada.sro = '.' " Not sure if possible
let type_ada.kind2scope = {
\ 'P' : 'packspec',
\ 't' : 'type',
\ }
let type_ada.scope2kind = {
\ 'packspec' : 'P',
\ 'type' : 't',
\ }
let types.ada = type_ada
" Ant {{{1
let type_ant = tagbar#prototypes#typeinfo#new()
let type_ant.ctagstype = 'ant'
let type_ant.kinds = [
\ {'short' : 'p', 'long' : 'projects', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'targets', 'fold' : 0, 'stl' : 1}
\ {'short' : 'p', 'long' : 'projects', 'fold' : 0, 'stl' : 1},
\ {'short' : 'i', 'long' : 'antfiles', 'fold' : 0, 'stl' : 0},
\ {'short' : 'P', 'long' : 'properties', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'targets', 'fold' : 0, 'stl' : 1}
\ ]
let types.ant = type_ant
" Asm {{{1
let type_asm = tagbar#prototypes#typeinfo#new()
let type_asm.ctagstype = 'asm'
let type_asm.kinds = [
\ {'short' : 'm', 'long' : 'macros', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'types', 'fold' : 0, 'stl' : 1},
\ {'short' : 'd', 'long' : 'defines', 'fold' : 0, 'stl' : 1},
\ {'short' : 'l', 'long' : 'labels', 'fold' : 0, 'stl' : 1}
\ {'short' : 'm', 'long' : 'macros', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'types', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'sections', 'fold' : 0, 'stl' : 1},
\ {'short' : 'd', 'long' : 'defines', 'fold' : 0, 'stl' : 1},
\ {'short' : 'l', 'long' : 'labels', 'fold' : 0, 'stl' : 1}
\ ]
let types.asm = type_asm
" ASP {{{1
@@ -60,6 +97,37 @@ function! tagbar#types#uctags#init(supported_types) abort
\ 'union' : 'u'
\ }
let types.asy = type_asy
" Autoconf {{{1
let type_autoconf = tagbar#prototypes#typeinfo#new()
let type_autoconf.ctagstype = 'autoconf'
let type_autoconf.kinds = [
\ {'short': 'p', 'long': 'packages', 'fold': 0, 'stl': 1},
\ {'short': 't', 'long': 'templates', 'fold': 0, 'stl': 1},
\ {'short': 'm', 'long': 'autoconf macros', 'fold': 0, 'stl': 1},
\ {'short': 'w', 'long': '"with" options', 'fold': 0, 'stl': 1},
\ {'short': 'e', 'long': '"enable" options', 'fold': 0, 'stl': 1},
\ {'short': 's', 'long': 'substitution keys', 'fold': 0, 'stl': 1},
\ {'short': 'c', 'long': 'automake conditions', 'fold': 0, 'stl': 1},
\ {'short': 'd', 'long': 'definitions', 'fold': 0, 'stl': 1},
\ ]
let types.config = type_autoconf
" Automake {{{1
let type_automake = tagbar#prototypes#typeinfo#new()
let type_automake.ctagstype = 'automake'
let type_automake.kinds = [
\ {'short' : 'I', 'long' : 'makefiles', 'fold' : 0, 'stl' : 1},
\ {'short' : 'd', 'long' : 'directories', 'fold' : 0, 'stl' : 1},
\ {'short' : 'P', 'long' : 'programs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'M', 'long' : 'manuals', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'macros', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'targets', 'fold' : 0, 'stl' : 1},
\ {'short' : 'T', 'long' : 'ltlibraries', 'fold' : 0, 'stl' : 1},
\ {'short' : 'L', 'long' : 'libraries', 'fold' : 0, 'stl' : 1},
\ {'short' : 'S', 'long' : 'scripts', 'fold' : 0, 'stl' : 1},
\ {'short' : 'D', 'long' : 'datum', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'conditions', 'fold' : 0, 'stl' : 1},
\ ]
let types.automake = type_automake
" Awk {{{1
let type_awk = tagbar#prototypes#typeinfo#new()
let type_awk.ctagstype = 'awk'
@@ -92,16 +160,17 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_c = tagbar#prototypes#typeinfo#new()
let type_c.ctagstype = 'c'
let type_c.kinds = [
\ {'short' : 'd', 'long' : 'macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 'p', 'long' : 'prototypes', 'fold' : 1, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enums', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerators', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'typedefs', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'structs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'unions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 0},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1}
\ {'short' : 'h', 'long' : 'header files', 'fold' : 1, 'stl' : 0},
\ {'short' : 'd', 'long' : 'macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 'p', 'long' : 'prototypes', 'fold' : 1, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enums', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerators', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'typedefs', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'structs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'unions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 0},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1}
\ ]
let type_c.sro = '::'
let type_c.kind2scope = {
@@ -119,18 +188,19 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_cpp = tagbar#prototypes#typeinfo#new()
let type_cpp.ctagstype = 'c++'
let type_cpp.kinds = [
\ {'short' : 'd', 'long' : 'macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 'p', 'long' : 'prototypes', 'fold' : 1, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enums', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerators', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'typedefs', 'fold' : 0, 'stl' : 0},
\ {'short' : 'n', 'long' : 'namespaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'structs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'unions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 0},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
\ {'short' : 'h', 'long' : 'header files', 'fold' : 1, 'stl' : 0},
\ {'short' : 'd', 'long' : 'macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 'p', 'long' : 'prototypes', 'fold' : 1, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enums', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerators', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'typedefs', 'fold' : 0, 'stl' : 0},
\ {'short' : 'n', 'long' : 'namespaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'structs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'unions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 0},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
\ ]
let type_cpp.sro = '::'
let type_cpp.kind2scope = {
@@ -186,29 +256,43 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_clojure = tagbar#prototypes#typeinfo#new()
let type_clojure.ctagstype = 'clojure'
let type_clojure.kinds = [
\ {'short': 'n', 'long': 'namespace', 'fold': 0, 'stl': 1},
\ {'short': 'd', 'long': 'definition', 'fold': 0, 'stl': 1},
\ {'short': 'f', 'long': 'function', 'fold': 0, 'stl': 1},
\ {'short': 'p', 'long': 'private function', 'fold': 0, 'stl': 1},
\ {'short': 'm', 'long': 'macro', 'fold': 0, 'stl': 1},
\ {'short': 'i', 'long': 'inline', 'fold': 0, 'stl': 1},
\ {'short': 'a', 'long': 'multimethod definition', 'fold': 0, 'stl': 1},
\ {'short': 'b', 'long': 'multimethod instance', 'fold': 0, 'stl': 1},
\ {'short': 'c', 'long': 'definition (once)', 'fold': 0, 'stl': 1},
\ {'short': 's', 'long': 'struct', 'fold': 0, 'stl': 1},
\ {'short': 'v', 'long': 'intern', 'fold': 0, 'stl': 1},
\ {'short': 'n', 'long': 'namespace', 'fold': 0, 'stl': 1}
\ {'short': 'n', 'long': 'namespace', 'fold': 0, 'stl': 1},
\ {'short': 'f', 'long': 'function', 'fold': 0, 'stl': 1},
\ ]
let type_clojure.sro = '.'
let type_clojure.kind2scope = {
\ 'n' : 'namespace',
\ }
let type_clojure.scope2kind = {
\ 'namespace' : 'n'
\ }
let types.clojure = type_clojure
" Ctags config {{{1
let type_ctags = tagbar#prototypes#typeinfo#new()
let type_ctags.ctagstype = 'ctags'
let type_ctags.kinds = [
\ {'short' : 'l', 'long' : 'language definitions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'k', 'long' : 'kind definitions', 'fold' : 0, 'stl' : 1},
\ ]
let type_ctags.sro = '.' " Not actually possible
let type_ctags.kind2scope = {
\ 'l' : 'langdef',
\ }
let type_ctags.scope2kind = {
\ 'langdef' : 'l',
\ }
let types.ctags = type_ctags
" COBOL {{{1
let type_cobol = tagbar#prototypes#typeinfo#new()
let type_cobol.ctagstype = 'cobol'
let type_cobol.kinds = [
\ {'short' : 'd', 'long' : 'data items', 'fold' : 0, 'stl' : 1},
\ {'short' : 'D', 'long' : 'divisions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'file descriptions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'g', 'long' : 'group items', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'paragraphs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'P', 'long' : 'program ids', 'fold' : 0, 'stl' : 1},
\ {'short' : 'S', 'long' : 'source code file', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'sections', 'fold' : 0, 'stl' : 1}
\ ]
let types.cobol = type_cobol
@@ -221,6 +305,45 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'c', 'long' : 'classes', 'fold' : 1, 'stl' : 0}
\ ]
let types.css = type_css
" D {{{1
let type_d = tagbar#prototypes#typeinfo#new()
let type_d.ctagstype = 'D'
let type_d.kinds = [
\ {'short' : 'M', 'long' : 'modules', 'fold' : 0, 'stl' : 1},
\ {'short' : 'V', 'long' : 'version statements', 'fold' : 1, 'stl' : 0},
\ {'short' : 'n', 'long' : 'namespaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'T', 'long' : 'templates', 'fold' : 0, 'stl' : 0},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'i', 'long' : 'interfaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'structure names', 'fold' : 0, 'stl' : 1},
\ {'short' : 'g', 'long' : 'enumeration names', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerators', 'fold' : 0, 'stl' : 0},
\ {'short' : 'u', 'long' : 'union names', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'function prototypes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'function definitions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 1},
\ {'short' : 'a', 'long' : 'aliases', 'fold' : 1, 'stl' : 0},
\ {'short' : 'X', 'long' : 'mixins', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'variable definitions', 'fold' : 0, 'stl' : 0},
\ ]
let type_d.sro = '.'
let type_d.kind2scope = {
\ 'g' : 'enum',
\ 'n' : 'namespace',
\ 'i' : 'interface',
\ 'c' : 'class',
\ 's' : 'struct',
\ 'u' : 'union'
\ }
let type_d.scope2kind = {
\ 'enum' : 'g',
\ 'namespace' : 'n',
\ 'interface' : 'i',
\ 'class' : 'c',
\ 'struct' : 's',
\ 'union' : 'u'
\ }
let types.d = type_d
" DOS Batch {{{1
let type_dosbatch = tagbar#prototypes#typeinfo#new()
let type_dosbatch.ctagstype = 'dosbatch'
@@ -246,6 +369,31 @@ function! tagbar#types#uctags#init(supported_types) abort
\ 'feature' : 'f'
\ }
let types.eiffel = type_eiffel
" Elm {{{1
" based on https://github.com/bitterjug/vim-tagbar-ctags-elm/blob/master/ftplugin/elm/tagbar-elm.vim
let type_elm = tagbar#prototypes#typeinfo#new()
let type_elm.ctagstype = 'elm'
let type_elm.kinds = [
\ {'short' : 'm', 'long' : 'modules', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'imports', 'fold' : 1, 'stl' : 0},
\ {'short' : 't', 'long' : 'types', 'fold' : 1, 'stl' : 0},
\ {'short' : 'a', 'long' : 'type aliases', 'fold' : 0, 'stl' : 0},
\ {'short' : 'c', 'long' : 'type constructors', 'fold' : 0, 'stl' : 0},
\ {'short' : 'p', 'long' : 'ports', 'fold' : 0, 'stl' : 0},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 1, 'stl' : 0},
\ ]
let type_elm.sro = ':'
let type_elm.kind2scope = {
\ 'f' : 'function',
\ 'm' : 'module',
\ 't' : 'type'
\ }
let type_elm.scope2kind = {
\ 'function' : 'f',
\ 'module' : 'm',
\ 'type' : 't'
\ }
let types.elm = type_elm
" Erlang {{{1
let type_erlang = tagbar#prototypes#typeinfo#new()
let type_erlang.ctagstype = 'erlang'
@@ -253,7 +401,8 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'm', 'long' : 'modules', 'fold' : 0, 'stl' : 1},
\ {'short' : 'd', 'long' : 'macro definitions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'r', 'long' : 'record definitions', 'fold' : 0, 'stl' : 1}
\ {'short' : 'r', 'long' : 'record definitions', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'type definitions', 'fold' : 0, 'stl' : 1}
\ ]
let type_erlang.sro = '.' " Not sure, is nesting even possible?
let type_erlang.kind2scope = {
@@ -298,9 +447,13 @@ function! tagbar#types#uctags#init(supported_types) abort
\ 'stl' : 1},
\ {'short' : 'c', 'long' : 'common blocks', 'fold' : 0, 'stl' : 1},
\ {'short' : 'b', 'long' : 'block data', 'fold' : 0, 'stl' : 0},
\ {'short' : 'E', 'long' : 'enumerations', 'fold' : 0, 'stl' : 1},
\ {'short' : 'N', 'long' : 'enumeration values', 'fold' : 0, 'stl' : 0},
\ {'short' : 'e', 'long' : 'entry points', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'subroutines', 'fold' : 0, 'stl' : 1},
\ {'short' : 'M', 'long' : 'type bound procedures', 'fold' : 0,
\ 'stl' : 1},
\ {'short' : 'l', 'long' : 'labels', 'fold' : 0, 'stl' : 1},
\ {'short' : 'n', 'long' : 'namelists', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
@@ -319,6 +472,27 @@ function! tagbar#types#uctags#init(supported_types) abort
\ 'subroutine' : 's'
\ }
let types.fortran = type_fortran
" Go {{{1
let type_go = tagbar#prototypes#typeinfo#new()
let type_go.ctagstype = 'go'
let type_go.kinds = [
\ {'short' : 'p', 'long' : 'packages', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'interfaces', 'fold' : 0, 'stl' : 0},
\ {'short' : 'c', 'long' : 'constants', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'structs', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'struct members', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'types', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
\ ]
let type_go.sro = '.'
let type_go.kind2scope = {
\ 's' : 'struct'
\ }
let type_go.scope2kind = {
\ 'struct' : 's'
\ }
let types.go = type_go
" HTML {{{1
let type_html = tagbar#prototypes#typeinfo#new()
let type_html.ctagstype = 'html'
@@ -337,6 +511,7 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'f', 'long' : 'fields', 'fold' : 0, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enum types', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enum constants', 'fold' : 0, 'stl' : 0},
\ {'short' : 'a', 'long' : 'annotations', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'interfaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'methods', 'fold' : 0, 'stl' : 1}
@@ -358,7 +533,9 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_javascript.ctagstype = 'javascript'
let type_javascript.kinds = [
\ {'short': 'v', 'long': 'global variables', 'fold': 0, 'stl': 0},
\ {'short': 'C', 'long': 'contants', 'fold': 0, 'stl': 0},
\ {'short': 'c', 'long': 'classes', 'fold': 0, 'stl': 1},
\ {'short': 'g', 'long': 'generators', 'fold': 0, 'stl': 0},
\ {'short': 'p', 'long': 'properties', 'fold': 0, 'stl': 0},
\ {'short': 'm', 'long': 'methods', 'fold': 0, 'stl': 1},
\ {'short': 'f', 'long': 'functions', 'fold': 0, 'stl': 1},
@@ -393,16 +570,52 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_make = tagbar#prototypes#typeinfo#new()
let type_make.ctagstype = 'make'
let type_make.kinds = [
\ {'short' : 'm', 'long' : 'macros', 'fold' : 0, 'stl' : 1}
\ {'short' : 'I', 'long' : 'makefiles', 'fold' : 0, 'stl' : 0},
\ {'short' : 'm', 'long' : 'macros', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'targets', 'fold' : 0, 'stl' : 1}
\ ]
let types.make = type_make
" Matlab {{{1
let type_matlab = tagbar#prototypes#typeinfo#new()
let type_matlab.ctagstype = 'matlab'
let type_matlab.kinds = [
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1}
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0}
\ ]
let types.matlab = type_matlab
" ObjectiveC {{{1
let type_objc = tagbar#prototypes#typeinfo#new()
let type_objc.ctagstype = 'objectivec'
let type_objc.kinds = [
\ {'short' : 'M', 'long' : 'preprocessor macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 't', 'long' : 'type aliases', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'global variables', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'class interfaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'I', 'long' : 'class implementations', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'class methods', 'fold' : 0, 'stl' : 1},
\ {'short' : 'E', 'long' : 'object fields', 'fold' : 0, 'stl' : 0},
\ {'short' : 'm', 'long' : 'object methods', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'type structures', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerations', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'properties', 'fold' : 0, 'stl' : 0},
\ {'short' : 'P', 'long' : 'protocols', 'fold' : 0, 'stl' : 0},
\ ]
let type_objc.sro = ':'
let type_objc.kind2scope = {
\ 'i' : 'interface',
\ 'I' : 'implementation',
\ 's' : 'struct',
\ 'p' : 'protocol',
\ }
let type_objc.scope2kind = {
\ 'interface' : 'i',
\ 'implementation' : 'I',
\ 'struct' : 's',
\ 'protocol' : 'p',
\ }
let types.objc = type_objc
let types.objcpp = type_objc
" Ocaml {{{1
let type_ocaml = tagbar#prototypes#typeinfo#new()
let type_ocaml.ctagstype = 'ocaml'
@@ -415,7 +628,8 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'e', 'long' : 'exceptions', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'type names', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'r', 'long' : 'structure fields', 'fold' : 0, 'stl' : 0}
\ {'short' : 'r', 'long' : 'structure fields', 'fold' : 0, 'stl' : 0},
\ {'short' : 'p', 'long' : 'signature items', 'fold' : 0, 'stl' : 0}
\ ]
let type_ocaml.sro = '.' " Not sure, is nesting even possible?
let type_ocaml.kind2scope = {
@@ -448,6 +662,22 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 's', 'long' : 'subroutines', 'fold' : 0, 'stl' : 1}
\ ]
let types.perl = type_perl
" Perl 6 {{{1
let type_perl6 = tagbar#prototypes#typeinfo#new()
let type_perl6.ctagstype = 'perl6'
let type_perl6.kinds = [
\ {'short' : 'o', 'long' : 'modules', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'packages', 'fold' : 1, 'stl' : 0},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'g', 'long' : 'grammars', 'fold' : 0, 'stl' : 0},
\ {'short' : 'm', 'long' : 'methods', 'fold' : 0, 'stl' : 1},
\ {'short' : 'r', 'long' : 'roles', 'fold' : 0, 'stl' : 1},
\ {'short' : 'u', 'long' : 'rules', 'fold' : 0, 'stl' : 0},
\ {'short' : 'b', 'long' : 'submethods', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'subroutines', 'fold' : 0, 'stl' : 1},
\ {'short' : 't', 'long' : 'tokens', 'fold' : 0, 'stl' : 0},
\ ]
let types.perl6 = type_perl6
" PHP {{{1
let type_php = tagbar#prototypes#typeinfo#new()
let type_php.ctagstype = 'php'
@@ -475,11 +705,23 @@ function! tagbar#types#uctags#init(supported_types) abort
\ 'trait' : 't',
\ }
let types.php = type_php
" Protobuf {{{1
let type_protobuf = tagbar#prototypes#typeinfo#new()
let type_protobuf.ctagstype = 'Protobuf'
let type_protobuf.kinds = [
\ {'short' : 'p', 'long' : 'packages', 'fold' : 0, 'stl' : 0},
\ {'short' : 'm', 'long' : 'messages', 'fold' : 0, 'stl' : 0},
\ {'short' : 'f', 'long' : 'fields', 'fold' : 0, 'stl' : 0},
\ {'short' : 'e', 'long' : 'enum constants', 'fold' : 0, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enum types', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'services', 'fold' : 0, 'stl' : 0},
\ ]
let types.proto = type_protobuf
" Python {{{1
let type_python = tagbar#prototypes#typeinfo#new()
let type_python.ctagstype = 'python'
let type_python.kinds = [
\ {'short' : 'i', 'long' : 'imports', 'fold' : 1, 'stl' : 0},
\ {'short' : 'i', 'long' : 'modules', 'fold' : 1, 'stl' : 0},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 1},
@@ -500,6 +742,17 @@ function! tagbar#types#uctags#init(supported_types) abort
let types.python = type_python
let types.pyrex = type_python
let types.cython = type_python
" R {{{1
let type_r = tagbar#prototypes#typeinfo#new()
let type_r.ctagstype = 'R'
let type_r.kinds = [
\ {'short' : 'l', 'long' : 'libraries', 'fold' : 1, 'stl' : 0},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'sources', 'fold' : 0, 'stl' : 0},
\ {'short' : 'g', 'long' : 'global variables', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'function variables', 'fold' : 0, 'stl' : 0},
\ ]
let types.r = type_r
" REXX {{{1
let type_rexx = tagbar#prototypes#typeinfo#new()
let type_rexx.ctagstype = 'rexx'
@@ -578,7 +831,9 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_sh = tagbar#prototypes#typeinfo#new()
let type_sh.ctagstype = 'sh'
let type_sh.kinds = [
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1}
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'a', 'long' : 'aliases', 'fold' : 0, 'stl' : 0},
\ {'short' : 's', 'long' : 'script files', 'fold' : 0, 'stl' : 0}
\ ]
let types.sh = type_sh
let types.csh = type_sh
@@ -615,7 +870,7 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'd', 'long' : 'prototypes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'cursors', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'F', 'long' : 'record fields', 'fold' : 0, 'stl' : 1},
\ {'short' : 'E', 'long' : 'record fields', 'fold' : 0, 'stl' : 1},
\ {'short' : 'L', 'long' : 'block label', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'procedures', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'subtypes', 'fold' : 0, 'stl' : 1},
@@ -638,8 +893,7 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_tcl = tagbar#prototypes#typeinfo#new()
let type_tcl.ctagstype = 'tcl'
let type_tcl.kinds = [
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'methods', 'fold' : 0, 'stl' : 1},
\ {'short' : 'n', 'long' : 'namespaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'procedures', 'fold' : 0, 'stl' : 1}
\ ]
let types.tcl = type_tcl
@@ -719,13 +973,16 @@ function! tagbar#types#uctags#init(supported_types) abort
let type_vera = tagbar#prototypes#typeinfo#new()
let type_vera.ctagstype = 'vera'
let type_vera.kinds = [
\ {'short' : 'h', 'long' : 'header files', 'fold' : 1, 'stl' : 0},
\ {'short' : 'd', 'long' : 'macros', 'fold' : 1, 'stl' : 0},
\ {'short' : 'g', 'long' : 'enums', 'fold' : 0, 'stl' : 1},
\ {'short' : 'T', 'long' : 'typedefs', 'fold' : 0, 'stl' : 0},
\ {'short' : 'i', 'long' : 'interfaces', 'fold' : 0, 'stl' : 1},
\ {'short' : 'c', 'long' : 'classes', 'fold' : 0, 'stl' : 1},
\ {'short' : 'e', 'long' : 'enumerators', 'fold' : 0, 'stl' : 0},
\ {'short' : 'm', 'long' : 'members', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 's', 'long' : 'signals', 'fold' : 0, 'stl' : 0},
\ {'short' : 't', 'long' : 'tasks', 'fold' : 0, 'stl' : 1},
\ {'short' : 'v', 'long' : 'variables', 'fold' : 0, 'stl' : 0},
\ {'short' : 'p', 'long' : 'programs', 'fold' : 0, 'stl' : 1}
@@ -750,6 +1007,7 @@ function! tagbar#types#uctags#init(supported_types) abort
\ {'short' : 'e', 'long' : 'events', 'fold' : 0, 'stl' : 1},
\ {'short' : 'f', 'long' : 'functions', 'fold' : 0, 'stl' : 1},
\ {'short' : 'm', 'long' : 'modules', 'fold' : 0, 'stl' : 1},
\ {'short' : 'b', 'long' : 'blocks', 'fold' : 0, 'stl' : 1},
\ {'short' : 'n', 'long' : 'net data types', 'fold' : 0, 'stl' : 1},
\ {'short' : 'p', 'long' : 'ports', 'fold' : 0, 'stl' : 1},
\ {'short' : 'r', 'long' : 'register data types', 'fold' : 0, 'stl' : 1},