Skip to content

Commit

Permalink
Add universal ctags support
Browse files Browse the repository at this point in the history
  • Loading branch information
Felixoid committed Mar 2, 2018
1 parent 0d8ddd0 commit f591a8f
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 1 deletion.
10 changes: 10 additions & 0 deletions ctags/puppet_u.ctags
@@ -0,0 +1,10 @@
--langdef=puppet
--map-puppet=+.pp
--regex-puppet=/^[[:space:]]*node[[:space:]]*[\'|\"]*([a-zA-Z0-9_\.\-]+)[\'|\"]*/\1/n,node/{scope=set}
--regex-puppet=/^[[:space:]]*class[[:space:]]*([a-z][a-zA-Z0-9_:\-]+)[[:space:]]*\{*/\1/c,class,classes/{scope=set}
--regex-puppet=/^[[:space:]]*define[[:space:]]*([a-z][a-zA-Z0-9_:\-]+)/\1/d,definition/{scope=set}
--regex-puppet=/^[[:space:]]*(include|require)[[:space:]]*([a-zA-Z0-9_:]+)/'\2'/i,include,includes/{scope=ref}
--regex-puppet=/^[[:space:]]*[~|\-]?>?[[:space:]]*([a-z][a-zA-Z0-9_:]+)[[:space:]]*\{[[:space:]]*(.*):/\1[\2]/r,resource/{scope=ref}
--regex-puppet=/^[[:space:]]*([\$][a-zA-Z0-9_:]+)[[:space:]]*=/\1/v,variable/{scope=ref}
--regex-puppet=/([A-Z][a-zA-Z0-9_:]+)[[:space:]]*\{/\1/f,default/
--regex-puppet=/^[[:space:]]*site[[:space:]]*([a-zA-Z0-9_\-]+)/\1/s,site/
24 changes: 23 additions & 1 deletion ftplugin/puppet_tagbar.vim
Expand Up @@ -5,6 +5,7 @@ if !exists(':Tagbar')
finish
endif

let s:ctags_version = system('ctags --version')
let g:tagbar_type_puppet = {
\ 'ctagstype': 'puppet',
\ 'kinds': [
Expand All @@ -17,5 +18,26 @@ let g:tagbar_type_puppet = {
\ 'r:Resources',
\ 'f:Defaults'
\],
\ 'deffile' : expand('<sfile>:p:h:h') . '/ctags/puppet.ctags',
\}

if s:ctags_version =~ 'Universal Ctags'
" There no sense to split objects by colon
let g:tagbar_type_puppet.sro = '__'
let g:tagbar_type_puppet.kind2scope = {
\ 'd': 'definition',
\ 'c': 'class',
\ 'r': 'resource',
\ 'i': 'include',
\ 'v': 'variable',
\}
let g:tagbar_type_puppet.scope2kind = {
\ 'definition' : 'd',
\ 'class' : 'c',
\ 'resource' : 'r',
\ 'include' : 'i',
\ 'variable' : 'v',
\}
let g:tagbar_type_puppet.deffile = expand('<sfile>:p:h:h') . '/ctags/puppet_u.ctags'
elseif s:ctags_version =~ 'Exuberant Ctags'
let g:tagbar_type_puppet.deffile = expand('<sfile>:p:h:h') . '/ctags/puppet.ctags'
endif

0 comments on commit f591a8f

Please sign in to comment.