mirror of
https://github.com/gryf/.vim.git
synced 2025-12-17 11:30:29 +01:00
Added calendar plugin, update of tagbar
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
" Author: Jan Larres <jan@majutsushi.net>
|
" Author: Jan Larres <jan@majutsushi.net>
|
||||||
" Licence: Vim licence
|
" Licence: Vim licence
|
||||||
" Website: http://majutsushi.github.com/tagbar/
|
" Website: http://majutsushi.github.com/tagbar/
|
||||||
" Version: 2.1
|
" Version: 2.2
|
||||||
" Note: This plugin was heavily inspired by the 'Taglist' plugin by
|
" Note: This plugin was heavily inspired by the 'Taglist' plugin by
|
||||||
" Yegappan Lakshmanan and uses a small amount of code from it.
|
" Yegappan Lakshmanan and uses a small amount of code from it.
|
||||||
"
|
"
|
||||||
@@ -18,19 +18,12 @@
|
|||||||
" use of this software.
|
" use of this software.
|
||||||
" ============================================================================
|
" ============================================================================
|
||||||
|
|
||||||
if &cp || exists('g:loaded_tagbar')
|
scriptencoding utf-8
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
" Initialization {{{1
|
" Initialization {{{1
|
||||||
|
|
||||||
" Basic init {{{2
|
" Basic init {{{2
|
||||||
|
|
||||||
if v:version < 700
|
|
||||||
echomsg 'Tagbar: Vim version is too old, Tagbar requires at least 7.0'
|
|
||||||
finish
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_ctags_bin')
|
if !exists('g:tagbar_ctags_bin')
|
||||||
if executable('ctags-exuberant')
|
if executable('ctags-exuberant')
|
||||||
let g:tagbar_ctags_bin = 'ctags-exuberant'
|
let g:tagbar_ctags_bin = 'ctags-exuberant'
|
||||||
@@ -38,6 +31,12 @@ if !exists('g:tagbar_ctags_bin')
|
|||||||
let g:tagbar_ctags_bin = 'exuberant-ctags'
|
let g:tagbar_ctags_bin = 'exuberant-ctags'
|
||||||
elseif executable('exctags')
|
elseif executable('exctags')
|
||||||
let g:tagbar_ctags_bin = 'exctags'
|
let g:tagbar_ctags_bin = 'exctags'
|
||||||
|
elseif has('macunix') && executable('/usr/local/bin/ctags')
|
||||||
|
" Homebrew default location
|
||||||
|
let g:tagbar_ctags_bin = '/usr/local/bin/ctags'
|
||||||
|
elseif has('macunix') && executable('/opt/local/bin/ctags')
|
||||||
|
" Macports default location
|
||||||
|
let g:tagbar_ctags_bin = '/opt/local/bin/ctags'
|
||||||
elseif executable('ctags')
|
elseif executable('ctags')
|
||||||
let g:tagbar_ctags_bin = 'ctags'
|
let g:tagbar_ctags_bin = 'ctags'
|
||||||
elseif executable('ctags.exe')
|
elseif executable('ctags.exe')
|
||||||
@@ -49,7 +48,14 @@ if !exists('g:tagbar_ctags_bin')
|
|||||||
finish
|
finish
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
|
" reset 'wildignore' temporarily in case *.exe is included in it
|
||||||
|
let wildignore_save = &wildignore
|
||||||
|
set wildignore&
|
||||||
|
|
||||||
let g:tagbar_ctags_bin = expand(g:tagbar_ctags_bin)
|
let g:tagbar_ctags_bin = expand(g:tagbar_ctags_bin)
|
||||||
|
|
||||||
|
let &wildignore = wildignore_save
|
||||||
|
|
||||||
if !executable(g:tagbar_ctags_bin)
|
if !executable(g:tagbar_ctags_bin)
|
||||||
echomsg 'Tagbar: Exuberant ctags not found in specified place,'
|
echomsg 'Tagbar: Exuberant ctags not found in specified place,'
|
||||||
\ 'skipping plugin'
|
\ 'skipping plugin'
|
||||||
@@ -67,52 +73,6 @@ if s:ftype_out !~# 'detection:ON'
|
|||||||
endif
|
endif
|
||||||
unlet s:ftype_out
|
unlet s:ftype_out
|
||||||
|
|
||||||
let g:loaded_tagbar = 1
|
|
||||||
|
|
||||||
if !exists('g:tagbar_left')
|
|
||||||
let g:tagbar_left = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_width')
|
|
||||||
let g:tagbar_width = 40
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_autoclose')
|
|
||||||
let g:tagbar_autoclose = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_autofocus')
|
|
||||||
let g:tagbar_autofocus = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_sort')
|
|
||||||
let g:tagbar_sort = 1
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_compact')
|
|
||||||
let g:tagbar_compact = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_expand')
|
|
||||||
let g:tagbar_expand = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_foldlevel')
|
|
||||||
let g:tagbar_foldlevel = 99
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_usearrows')
|
|
||||||
let g:tagbar_usearrows = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_autoshowtag')
|
|
||||||
let g:tagbar_autoshowtag = 0
|
|
||||||
endif
|
|
||||||
|
|
||||||
if !exists('g:tagbar_systemenc')
|
|
||||||
let g:tagbar_systemenc = &encoding
|
|
||||||
endif
|
|
||||||
|
|
||||||
if has('multi_byte') && has('unix') && &encoding == 'utf-8' &&
|
if has('multi_byte') && has('unix') && &encoding == 'utf-8' &&
|
||||||
\ (empty(&termencoding) || &termencoding == 'utf-8')
|
\ (empty(&termencoding) || &termencoding == 'utf-8')
|
||||||
let s:icon_closed = '▶'
|
let s:icon_closed = '▶'
|
||||||
@@ -136,7 +96,9 @@ let s:access_symbols = {
|
|||||||
\ 'private' : '-'
|
\ 'private' : '-'
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
autocmd SessionLoadPost * nested call s:RestoreSession()
|
let g:loaded_tagbar = 1
|
||||||
|
|
||||||
|
let s:last_highlight_tline = 0
|
||||||
|
|
||||||
" s:InitTypes() {{{2
|
" s:InitTypes() {{{2
|
||||||
function! s:InitTypes()
|
function! s:InitTypes()
|
||||||
@@ -861,22 +823,28 @@ function! s:RestoreSession()
|
|||||||
call s:InitWindow(g:tagbar_autoclose)
|
call s:InitWindow(g:tagbar_autoclose)
|
||||||
|
|
||||||
" Leave the Tagbar window and come back so the update event gets triggered
|
" Leave the Tagbar window and come back so the update event gets triggered
|
||||||
execute 'wincmd p'
|
wincmd p
|
||||||
execute tagbarwinnr . 'wincmd w'
|
execute tagbarwinnr . 'wincmd w'
|
||||||
|
|
||||||
if !in_tagbar
|
if !in_tagbar
|
||||||
execute 'wincmd p'
|
wincmd p
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" s:MapKeys() {{{2
|
" s:MapKeys() {{{2
|
||||||
function! s:MapKeys()
|
function! s:MapKeys()
|
||||||
nnoremap <script> <silent> <buffer> <CR> :call <SID>JumpToTag(0)<CR>
|
|
||||||
nnoremap <script> <silent> <buffer> <2-LeftMouse>
|
nnoremap <script> <silent> <buffer> <2-LeftMouse>
|
||||||
\ :call <SID>JumpToTag(0)<CR>
|
\ :call <SID>JumpToTag(0)<CR>
|
||||||
nnoremap <script> <silent> <buffer> p :call <SID>JumpToTag(1)<CR>
|
|
||||||
nnoremap <script> <silent> <buffer> <LeftRelease>
|
nnoremap <script> <silent> <buffer> <LeftRelease>
|
||||||
\ <LeftRelease>:call <SID>CheckMouseClick()<CR>
|
\ <LeftRelease>:call <SID>CheckMouseClick()<CR>
|
||||||
|
|
||||||
|
inoremap <script> <silent> <buffer> <2-LeftMouse>
|
||||||
|
\ <C-o>:call <SID>JumpToTag(0)<CR>
|
||||||
|
inoremap <script> <silent> <buffer> <LeftRelease>
|
||||||
|
\ <LeftRelease><C-o>:call <SID>CheckMouseClick()<CR>
|
||||||
|
|
||||||
|
nnoremap <script> <silent> <buffer> <CR> :call <SID>JumpToTag(0)<CR>
|
||||||
|
nnoremap <script> <silent> <buffer> p :call <SID>JumpToTag(1)<CR>
|
||||||
nnoremap <script> <silent> <buffer> <Space> :call <SID>ShowPrototype()<CR>
|
nnoremap <script> <silent> <buffer> <Space> :call <SID>ShowPrototype()<CR>
|
||||||
|
|
||||||
nnoremap <script> <silent> <buffer> + :call <SID>OpenFold()<CR>
|
nnoremap <script> <silent> <buffer> + :call <SID>OpenFold()<CR>
|
||||||
@@ -914,7 +882,11 @@ function! s:CreateAutocommands()
|
|||||||
autocmd BufUnload __Tagbar__ call s:CleanUp()
|
autocmd BufUnload __Tagbar__ call s:CleanUp()
|
||||||
autocmd CursorHold __Tagbar__ call s:ShowPrototype()
|
autocmd CursorHold __Tagbar__ call s:ShowPrototype()
|
||||||
|
|
||||||
autocmd BufEnter,CursorHold * call
|
autocmd BufWritePost *
|
||||||
|
\ if line('$') < g:tagbar_updateonsave_maxlines |
|
||||||
|
\ call s:AutoUpdate(fnamemodify(expand('<afile>'), ':p')) |
|
||||||
|
\ endif
|
||||||
|
autocmd BufEnter,CursorHold,FileType * call
|
||||||
\ s:AutoUpdate(fnamemodify(expand('<afile>'), ':p'))
|
\ s:AutoUpdate(fnamemodify(expand('<afile>'), ':p'))
|
||||||
autocmd BufDelete * call
|
autocmd BufDelete * call
|
||||||
\ s:CleanupFileinfo(fnamemodify(expand('<afile>'), ':p'))
|
\ s:CleanupFileinfo(fnamemodify(expand('<afile>'), ':p'))
|
||||||
@@ -968,6 +940,10 @@ endfunction
|
|||||||
|
|
||||||
" s:CheckExCtagsVersion() {{{2
|
" s:CheckExCtagsVersion() {{{2
|
||||||
function! s:CheckExCtagsVersion(output)
|
function! s:CheckExCtagsVersion(output)
|
||||||
|
if a:output =~ 'Exuberant Ctags Development'
|
||||||
|
return 1
|
||||||
|
endif
|
||||||
|
|
||||||
let matchlist = matchlist(a:output, '\vExuberant Ctags (\d+)\.(\d+)')
|
let matchlist = matchlist(a:output, '\vExuberant Ctags (\d+)\.(\d+)')
|
||||||
let major = matchlist[1]
|
let major = matchlist[1]
|
||||||
let minor = matchlist[2]
|
let minor = matchlist[2]
|
||||||
@@ -1097,6 +1073,7 @@ function! s:BaseTag.closeFold() dict
|
|||||||
elseif self.isFoldable() && !self.isFolded()
|
elseif self.isFoldable() && !self.isFolded()
|
||||||
" Tag is parent of a scope and is not folded
|
" Tag is parent of a scope and is not folded
|
||||||
let self.fileinfo.tagfolds[self.fields.kind][self.fullpath] = 1
|
let self.fileinfo.tagfolds[self.fields.kind][self.fullpath] = 1
|
||||||
|
let newline = self.tline
|
||||||
elseif !empty(self.parent)
|
elseif !empty(self.parent)
|
||||||
" Tag is normal child, so close parent
|
" Tag is normal child, so close parent
|
||||||
let parent = self.parent
|
let parent = self.parent
|
||||||
@@ -1396,12 +1373,20 @@ function! s:ToggleWindow()
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" s:OpenWindow() {{{2
|
" s:OpenWindow() {{{2
|
||||||
function! s:OpenWindow(autoclose)
|
function! s:OpenWindow(flags)
|
||||||
" If the tagbar window is already open jump to it
|
let autofocus = a:flags =~# 'f'
|
||||||
|
let jump = a:flags =~# 'j'
|
||||||
|
let autoclose = a:flags =~# 'c'
|
||||||
|
|
||||||
|
" If the tagbar window is already open check jump flag
|
||||||
|
" Also set the autoclose flag if requested
|
||||||
let tagbarwinnr = bufwinnr('__Tagbar__')
|
let tagbarwinnr = bufwinnr('__Tagbar__')
|
||||||
if tagbarwinnr != -1
|
if tagbarwinnr != -1
|
||||||
if winnr() != tagbarwinnr
|
if winnr() != tagbarwinnr && jump
|
||||||
execute tagbarwinnr . 'wincmd w'
|
execute tagbarwinnr . 'wincmd w'
|
||||||
|
if autoclose
|
||||||
|
let w:autoclose = autoclose
|
||||||
|
endif
|
||||||
endif
|
endif
|
||||||
return
|
return
|
||||||
endif
|
endif
|
||||||
@@ -1422,16 +1407,21 @@ function! s:OpenWindow(autoclose)
|
|||||||
let s:window_expanded = 1
|
let s:window_expanded = 1
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
let eventignore_save = &eventignore
|
||||||
|
set eventignore=all
|
||||||
|
|
||||||
let openpos = g:tagbar_left ? 'topleft vertical ' : 'botright vertical '
|
let openpos = g:tagbar_left ? 'topleft vertical ' : 'botright vertical '
|
||||||
exe 'silent keepalt ' . openpos . g:tagbar_width . 'split ' . '__Tagbar__'
|
exe 'silent keepalt ' . openpos . g:tagbar_width . 'split ' . '__Tagbar__'
|
||||||
|
|
||||||
call s:InitWindow(a:autoclose)
|
let &eventignore = eventignore_save
|
||||||
|
|
||||||
execute 'wincmd p'
|
call s:InitWindow(autoclose)
|
||||||
|
|
||||||
|
wincmd p
|
||||||
|
|
||||||
" Jump back to the tagbar window if autoclose or autofocus is set. Can't
|
" Jump back to the tagbar window if autoclose or autofocus is set. Can't
|
||||||
" just stay in it since it wouldn't trigger the update event
|
" just stay in it since it wouldn't trigger the update event
|
||||||
if g:tagbar_autoclose || a:autoclose || g:tagbar_autofocus
|
if g:tagbar_autoclose || autofocus || g:tagbar_autofocus
|
||||||
let tagbarwinnr = bufwinnr('__Tagbar__')
|
let tagbarwinnr = bufwinnr('__Tagbar__')
|
||||||
execute tagbarwinnr . 'wincmd w'
|
execute tagbarwinnr . 'wincmd w'
|
||||||
endif
|
endif
|
||||||
@@ -1451,19 +1441,27 @@ function! s:InitWindow(autoclose)
|
|||||||
setlocal nowrap
|
setlocal nowrap
|
||||||
setlocal winfixwidth
|
setlocal winfixwidth
|
||||||
setlocal textwidth=0
|
setlocal textwidth=0
|
||||||
|
setlocal nocursorline
|
||||||
|
setlocal nocursorcolumn
|
||||||
|
|
||||||
if exists('+relativenumber')
|
if exists('+relativenumber')
|
||||||
setlocal norelativenumber
|
setlocal norelativenumber
|
||||||
endif
|
endif
|
||||||
|
|
||||||
setlocal nofoldenable
|
setlocal nofoldenable
|
||||||
|
setlocal foldcolumn=0
|
||||||
" Reset fold settings in case a plugin set them globally to something
|
" Reset fold settings in case a plugin set them globally to something
|
||||||
" expensive. Apparently 'foldexpr' gets executed even if 'foldenable' is
|
" expensive. Apparently 'foldexpr' gets executed even if 'foldenable' is
|
||||||
" off, and then for every appended line (like with :put).
|
" off, and then for every appended line (like with :put).
|
||||||
setlocal foldmethod&
|
setlocal foldmethod&
|
||||||
setlocal foldexpr&
|
setlocal foldexpr&
|
||||||
|
|
||||||
setlocal statusline=%!TagbarGenerateStatusline()
|
" Earlier versions have a bug in local, evaluated statuslines
|
||||||
|
if v:version > 701 || (v:version == 701 && has('patch097'))
|
||||||
|
setlocal statusline=%!TagbarGenerateStatusline()
|
||||||
|
else
|
||||||
|
setlocal statusline=Tagbar
|
||||||
|
endif
|
||||||
|
|
||||||
" Script-local variable needed since compare functions can't
|
" Script-local variable needed since compare functions can't
|
||||||
" take extra arguments
|
" take extra arguments
|
||||||
@@ -1506,6 +1504,7 @@ function! s:CloseWindow()
|
|||||||
if winbufnr(2) != -1
|
if winbufnr(2) != -1
|
||||||
" Other windows are open, only close the tagbar one
|
" Other windows are open, only close the tagbar one
|
||||||
close
|
close
|
||||||
|
wincmd p
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
" Go to the tagbar window, close it and then come back to the
|
" Go to the tagbar window, close it and then come back to the
|
||||||
@@ -1671,7 +1670,11 @@ function! s:ExecuteCtagsOnFile(fname, ftype)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
if has_key(typeinfo, 'ctagsbin')
|
if has_key(typeinfo, 'ctagsbin')
|
||||||
|
" reset 'wildignore' temporarily in case *.exe is included in it
|
||||||
|
let wildignore_save = &wildignore
|
||||||
|
set wildignore&
|
||||||
let ctags_bin = expand(typeinfo.ctagsbin)
|
let ctags_bin = expand(typeinfo.ctagsbin)
|
||||||
|
let &wildignore = wildignore_save
|
||||||
else
|
else
|
||||||
let ctags_bin = g:tagbar_ctags_bin
|
let ctags_bin = g:tagbar_ctags_bin
|
||||||
endif
|
endif
|
||||||
@@ -1721,7 +1724,7 @@ function! s:ParseTagline(part1, part2, typeinfo, fileinfo)
|
|||||||
let dollar = ''
|
let dollar = ''
|
||||||
endif
|
endif
|
||||||
let pattern = strpart(pattern, start, end - start)
|
let pattern = strpart(pattern, start, end - start)
|
||||||
let taginfo.pattern = '\V\^' . pattern . dollar
|
let taginfo.pattern = '\V\^\C' . pattern . dollar
|
||||||
let prototype = substitute(pattern, '^[[:space:]]\+', '', '')
|
let prototype = substitute(pattern, '^[[:space:]]\+', '', '')
|
||||||
let prototype = substitute(prototype, '[[:space:]]\+$', '', '')
|
let prototype = substitute(prototype, '[[:space:]]\+$', '', '')
|
||||||
let taginfo.prototype = prototype
|
let taginfo.prototype = prototype
|
||||||
@@ -1758,7 +1761,13 @@ function! s:ParseTagline(part1, part2, typeinfo, fileinfo)
|
|||||||
let taginfo.fileinfo = a:fileinfo
|
let taginfo.fileinfo = a:fileinfo
|
||||||
|
|
||||||
" Needed for folding
|
" Needed for folding
|
||||||
call taginfo.initFoldState()
|
try
|
||||||
|
call taginfo.initFoldState()
|
||||||
|
catch /^Vim(\a\+):E716:/ " 'Key not present in Dictionary'
|
||||||
|
" The tag has a 'kind' that doesn't exist in the type definition
|
||||||
|
echoerr 'Your ctags and Tagbar configurations are out of sync!'
|
||||||
|
\ 'Please read '':help tagbar-extend''.'
|
||||||
|
endtry
|
||||||
|
|
||||||
return taginfo
|
return taginfo
|
||||||
endfunction
|
endfunction
|
||||||
@@ -2067,7 +2076,7 @@ function! s:RenderContent(...)
|
|||||||
" Delete empty lines at the end of the buffer
|
" Delete empty lines at the end of the buffer
|
||||||
for linenr in range(line('$'), 1, -1)
|
for linenr in range(line('$'), 1, -1)
|
||||||
if getline(linenr) =~ '^$'
|
if getline(linenr) =~ '^$'
|
||||||
execute linenr . 'delete _'
|
execute 'silent ' . linenr . 'delete _'
|
||||||
else
|
else
|
||||||
break
|
break
|
||||||
endif
|
endif
|
||||||
@@ -2090,6 +2099,9 @@ function! s:RenderContent(...)
|
|||||||
" window by jumping to the top after drawing
|
" window by jumping to the top after drawing
|
||||||
execute 1
|
execute 1
|
||||||
call winline()
|
call winline()
|
||||||
|
|
||||||
|
" Invalidate highlight cache from old file
|
||||||
|
let s:last_highlight_tline = 0
|
||||||
endif
|
endif
|
||||||
|
|
||||||
let &lazyredraw = lazyredraw_save
|
let &lazyredraw = lazyredraw_save
|
||||||
@@ -2128,9 +2140,22 @@ function! s:PrintKinds(typeinfo, fileinfo)
|
|||||||
let tag.tline = curline
|
let tag.tline = curline
|
||||||
let a:fileinfo.tline[curline] = tag
|
let a:fileinfo.tline[curline] = tag
|
||||||
|
|
||||||
|
" Print children
|
||||||
if tag.isFoldable() && !tag.isFolded()
|
if tag.isFoldable() && !tag.isFolded()
|
||||||
for childtag in tag.children
|
for ckind in a:typeinfo.kinds
|
||||||
call s:PrintTag(childtag, 1, a:fileinfo, a:typeinfo)
|
let childtags = filter(copy(tag.children),
|
||||||
|
\ 'v:val.fields.kind ==# ckind.short')
|
||||||
|
if len(childtags) > 0
|
||||||
|
" Print 'kind' header of following children
|
||||||
|
if !has_key(a:typeinfo.kind2scope, ckind.short)
|
||||||
|
silent put =' [' . ckind.long . ']'
|
||||||
|
let a:fileinfo.tline[line('.')] = tag
|
||||||
|
endif
|
||||||
|
for childtag in childtags
|
||||||
|
call s:PrintTag(childtag, 1,
|
||||||
|
\ a:fileinfo, a:typeinfo)
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -2196,8 +2221,21 @@ function! s:PrintTag(tag, depth, fileinfo, typeinfo)
|
|||||||
|
|
||||||
" Recursively print children
|
" Recursively print children
|
||||||
if a:tag.isFoldable() && !a:tag.isFolded()
|
if a:tag.isFoldable() && !a:tag.isFolded()
|
||||||
for childtag in a:tag.children
|
for ckind in a:typeinfo.kinds
|
||||||
call s:PrintTag(childtag, a:depth + 1, a:fileinfo, a:typeinfo)
|
let childtags = filter(copy(a:tag.children),
|
||||||
|
\ 'v:val.fields.kind ==# ckind.short')
|
||||||
|
if len(childtags) > 0
|
||||||
|
" Print 'kind' header of following children
|
||||||
|
if !has_key(a:typeinfo.kind2scope, ckind.short)
|
||||||
|
silent put =' ' . repeat(' ', a:depth * 2) .
|
||||||
|
\ '[' . ckind.long . ']'
|
||||||
|
let a:fileinfo.tline[line('.')] = a:tag
|
||||||
|
endif
|
||||||
|
for childtag in childtags
|
||||||
|
call s:PrintTag(childtag, a:depth + 1,
|
||||||
|
\ a:fileinfo, a:typeinfo)
|
||||||
|
endfor
|
||||||
|
endif
|
||||||
endfor
|
endfor
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
@@ -2266,6 +2304,15 @@ function! s:HighlightTag()
|
|||||||
let tagline = tag.tline
|
let tagline = tag.tline
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
" Don't highlight the tag again if it's the same one as last time.
|
||||||
|
" This prevents the Tagbar window from jumping back after scrolling with
|
||||||
|
" the mouse.
|
||||||
|
if tagline == s:last_highlight_tline
|
||||||
|
return
|
||||||
|
else
|
||||||
|
let s:last_highlight_tline = tagline
|
||||||
|
endif
|
||||||
|
|
||||||
let eventignore_save = &eventignore
|
let eventignore_save = &eventignore
|
||||||
set eventignore=all
|
set eventignore=all
|
||||||
|
|
||||||
@@ -2320,10 +2367,13 @@ function! s:JumpToTag(stay_in_tagbar)
|
|||||||
|
|
||||||
let tagbarwinnr = winnr()
|
let tagbarwinnr = winnr()
|
||||||
|
|
||||||
|
let eventignore_save = &eventignore
|
||||||
|
set eventignore=all
|
||||||
|
|
||||||
" This elaborate construct will try to switch to the correct
|
" This elaborate construct will try to switch to the correct
|
||||||
" buffer/window; if the buffer isn't currently shown in a window it will
|
" buffer/window; if the buffer isn't currently shown in a window it will
|
||||||
" open it in the first window with a non-special buffer in it
|
" open it in the first window with a non-special buffer in it
|
||||||
execute 'wincmd p'
|
wincmd p
|
||||||
let filebufnr = bufnr(taginfo.fileinfo.fpath)
|
let filebufnr = bufnr(taginfo.fileinfo.fpath)
|
||||||
if bufnr('%') != filebufnr
|
if bufnr('%') != filebufnr
|
||||||
let filewinnr = bufwinnr(filebufnr)
|
let filewinnr = bufwinnr(filebufnr)
|
||||||
@@ -2341,7 +2391,7 @@ function! s:JumpToTag(stay_in_tagbar)
|
|||||||
" To make ctrl-w_p work we switch between the Tagbar window and the
|
" To make ctrl-w_p work we switch between the Tagbar window and the
|
||||||
" correct window once
|
" correct window once
|
||||||
execute tagbarwinnr . 'wincmd w'
|
execute tagbarwinnr . 'wincmd w'
|
||||||
execute 'wincmd p'
|
wincmd p
|
||||||
endif
|
endif
|
||||||
|
|
||||||
" Mark current position so it can be jumped back to
|
" Mark current position so it can be jumped back to
|
||||||
@@ -2352,6 +2402,31 @@ function! s:JumpToTag(stay_in_tagbar)
|
|||||||
" with the same name are defined in different scopes (e.g. classes)
|
" with the same name are defined in different scopes (e.g. classes)
|
||||||
execute taginfo.fields.line
|
execute taginfo.fields.line
|
||||||
|
|
||||||
|
" If the file has been changed but not saved, the tag may not be on the
|
||||||
|
" saved line anymore, so search for it in the vicinity of the saved line
|
||||||
|
if match(getline('.'), taginfo.pattern) == -1
|
||||||
|
let interval = 1
|
||||||
|
let forward = 1
|
||||||
|
while search(taginfo.pattern, 'W' . forward ? '' : 'b') == 0
|
||||||
|
if !forward
|
||||||
|
if interval > line('$')
|
||||||
|
break
|
||||||
|
else
|
||||||
|
let interval = interval * 2
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
let forward = !forward
|
||||||
|
endwhile
|
||||||
|
endif
|
||||||
|
|
||||||
|
" If the tag is on a different line after unsaved changes update the tag
|
||||||
|
" and file infos/objects
|
||||||
|
let curline = line('.')
|
||||||
|
if taginfo.fields.line != curline
|
||||||
|
let taginfo.fields.line = curline
|
||||||
|
let taginfo.fileinfo.fline[curline] = taginfo
|
||||||
|
endif
|
||||||
|
|
||||||
" Center the tag in the window
|
" Center the tag in the window
|
||||||
normal! z.
|
normal! z.
|
||||||
|
|
||||||
@@ -2361,6 +2436,8 @@ function! s:JumpToTag(stay_in_tagbar)
|
|||||||
|
|
||||||
redraw
|
redraw
|
||||||
|
|
||||||
|
let &eventignore = eventignore_save
|
||||||
|
|
||||||
if a:stay_in_tagbar
|
if a:stay_in_tagbar
|
||||||
call s:HighlightTag()
|
call s:HighlightTag()
|
||||||
execute tagbarwinnr . 'wincmd w'
|
execute tagbarwinnr . 'wincmd w'
|
||||||
@@ -2788,6 +2865,8 @@ function! s:CheckMouseClick()
|
|||||||
call s:CloseFold()
|
call s:CloseFold()
|
||||||
elseif (match(line, s:icon_closed . '[-+ ]') + 1) == curcol
|
elseif (match(line, s:icon_closed . '[-+ ]') + 1) == curcol
|
||||||
call s:OpenFold()
|
call s:OpenFold()
|
||||||
|
elseif g:tagbar_singleclick
|
||||||
|
call s:JumpToTag(0)
|
||||||
endif
|
endif
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
@@ -2818,13 +2897,31 @@ function! TagbarGenerateStatusline()
|
|||||||
return text
|
return text
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" Commands {{{1
|
" Autoload functions {{{1
|
||||||
command! -nargs=0 TagbarToggle call s:ToggleWindow()
|
function! tagbar#ToggleWindow()
|
||||||
command! -nargs=0 TagbarOpen call s:OpenWindow(0)
|
call s:ToggleWindow()
|
||||||
command! -nargs=0 TagbarOpenAutoClose call s:OpenWindow(1)
|
endfunction
|
||||||
command! -nargs=0 TagbarClose call s:CloseWindow()
|
|
||||||
command! -nargs=1 TagbarSetFoldlevel call s:SetFoldLevel(<args>)
|
function! tagbar#OpenWindow(...)
|
||||||
command! -nargs=0 TagbarShowTag call s:OpenParents()
|
let flags = a:0 > 0 ? a:1 : ''
|
||||||
|
call s:OpenWindow(flags)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! tagbar#CloseWindow()
|
||||||
|
call s:CloseWindow()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! tagbar#SetFoldLevel(...)
|
||||||
|
call s:SetFoldLevel(a:1)
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! tagbar#OpenParents()
|
||||||
|
call s:OpenParents()
|
||||||
|
endfunction
|
||||||
|
|
||||||
|
function! tagbar#RestoreSession()
|
||||||
|
call s:RestoreSession()
|
||||||
|
endfunction
|
||||||
|
|
||||||
" Modeline {{{1
|
" Modeline {{{1
|
||||||
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
|
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
|
||||||
147
doc/tagbar.txt
147
doc/tagbar.txt
@@ -3,7 +3,7 @@
|
|||||||
Author: Jan Larres <jan@majutsushi.net>
|
Author: Jan Larres <jan@majutsushi.net>
|
||||||
Licence: Vim licence, see |license|
|
Licence: Vim licence, see |license|
|
||||||
Homepage: http://majutsushi.github.com/tagbar/
|
Homepage: http://majutsushi.github.com/tagbar/
|
||||||
Version: 2.1
|
Version: 2.2
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
Contents *tagbar* *tagbar-contents*
|
Contents *tagbar* *tagbar-contents*
|
||||||
@@ -21,7 +21,7 @@ Contents *tagbar* *tagbar-contents*
|
|||||||
Highlight colours ............. |tagbar-highlight|
|
Highlight colours ............. |tagbar-highlight|
|
||||||
Automatically opening Tagbar .. |tagbar-autoopen|
|
Automatically opening Tagbar .. |tagbar-autoopen|
|
||||||
6. Extending Tagbar ................ |tagbar-extend|
|
6. Extending Tagbar ................ |tagbar-extend|
|
||||||
7. Bugs and limitations ............ |tagbar-bugs|
|
7. Troubleshooting & Known issues .. |tagbar-issues|
|
||||||
8. History ......................... |tagbar-history|
|
8. History ......................... |tagbar-history|
|
||||||
9. Todo ............................ |tagbar-todo|
|
9. Todo ............................ |tagbar-todo|
|
||||||
10. Credits ......................... |tagbar-credits|
|
10. Credits ......................... |tagbar-credits|
|
||||||
@@ -113,11 +113,7 @@ with doctorjs/jsctags and will use that if present, other programs require
|
|||||||
some configuration (see |tagbar-extend|). If a program does not work even with
|
some configuration (see |tagbar-extend|). If a program does not work even with
|
||||||
correct configuration please contact me.
|
correct configuration please contact me.
|
||||||
|
|
||||||
Note: jsctags has to be newer than 2011-01-06 since it needs the "-f" option
|
Note: Please check |tagbar-issues| for some possible issues with jsctags.
|
||||||
to work. Also, the output of jsctags seems to be a bit unreliable at the
|
|
||||||
moment (especially regarding line numbers), so if you notice some strange
|
|
||||||
behaviour with it please run it manually in a terminal to check whether the
|
|
||||||
bug is in jsctags or Tagbar.
|
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
2. Requirements *tagbar-requirements*
|
2. Requirements *tagbar-requirements*
|
||||||
@@ -229,9 +225,22 @@ displayed when the cursor stays on a tag for 'updatetime' milliseconds.
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
COMMANDS *tagbar-commands*
|
COMMANDS *tagbar-commands*
|
||||||
|
|
||||||
:TagbarOpen
|
:TagbarOpen [{flags}]
|
||||||
Open the Tagbar if it is closed. In case it is already open jump to it.
|
Open the Tagbar window if it is closed.
|
||||||
|
|
||||||
|
Additional behaviour can be specified with the optional {flags} argument.
|
||||||
|
It is a string which can contain these character flags:
|
||||||
|
'f' Jump to Tagbar window when opening (just as if |g:tagbar_autofocus|
|
||||||
|
were set to 1)
|
||||||
|
'j' Jump to Tagbar window if already open
|
||||||
|
'c' Close Tagbar on tag selection (just as if |g:tagbar_autoclose| were
|
||||||
|
set to 1, but doesn't imply 'f')
|
||||||
|
|
||||||
|
For example, the following command would always jump to the Tagbar window,
|
||||||
|
opening it first if necessary, but keep it open after selecting a tag
|
||||||
|
(unless |g:tagbar_autoclose| is set): >
|
||||||
|
:TagbarOpen fj
|
||||||
|
<
|
||||||
:TagbarClose
|
:TagbarClose
|
||||||
Close the Tagbar window if it is open.
|
Close the Tagbar window if it is open.
|
||||||
|
|
||||||
@@ -239,11 +248,11 @@ COMMANDS *tagbar-commands*
|
|||||||
Open the Tagbar window if it is closed or close it if it is open.
|
Open the Tagbar window if it is closed or close it if it is open.
|
||||||
|
|
||||||
:TagbarOpenAutoClose
|
:TagbarOpenAutoClose
|
||||||
Open the Tagbar window and close it on tag selection, regardless of the
|
Open the Tagbar window, jump to it and close it on tag selection. This is
|
||||||
setting of |g:tagbar_autoclose|. If it was already open jump to it.
|
an alias for ":TagbarOpen fc".
|
||||||
|
|
||||||
:TagbarSetFoldlevel [number]
|
:TagbarSetFoldlevel {number}
|
||||||
Set the foldlevel of the tags of the current file to [number]. The
|
Set the foldlevel of the tags of the current file to {number}. The
|
||||||
foldlevel of tags in other files remains unaffected. Works in the same way
|
foldlevel of tags in other files remains unaffected. Works in the same way
|
||||||
as 'foldlevel'.
|
as 'foldlevel'.
|
||||||
|
|
||||||
@@ -254,7 +263,7 @@ COMMANDS *tagbar-commands*
|
|||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
KEY MAPPINGS *tagbar-keys*
|
KEY MAPPINGS *tagbar-keys*
|
||||||
|
|
||||||
These mappings are valid in the Tagbar window:
|
The following mappings are valid in the Tagbar window:
|
||||||
|
|
||||||
<F1> Display key mapping help.
|
<F1> Display key mapping help.
|
||||||
<CR>/<Enter> Jump to the tag under the cursor. Doesn't work for pseudo-tags
|
<CR>/<Enter> Jump to the tag under the cursor. Doesn't work for pseudo-tags
|
||||||
@@ -262,7 +271,8 @@ These mappings are valid in the Tagbar window:
|
|||||||
p Jump to the tag under the cursor, but stay in the Tagbar window.
|
p Jump to the tag under the cursor, but stay in the Tagbar window.
|
||||||
<LeftMouse> When on a fold icon, open or close the fold depending on the
|
<LeftMouse> When on a fold icon, open or close the fold depending on the
|
||||||
current state.
|
current state.
|
||||||
<2-LeftMouse> Same as <CR>.
|
<2-LeftMouse> Same as <CR>. See |g:tagbar_singleclick| if you want to use a
|
||||||
|
single- instead of a double-click.
|
||||||
<Space> Display the prototype of the current tag (i.e. the line defining
|
<Space> Display the prototype of the current tag (i.e. the line defining
|
||||||
it) in the command line.
|
it) in the command line.
|
||||||
+/zo Open the fold under the cursor.
|
+/zo Open the fold under the cursor.
|
||||||
@@ -321,7 +331,7 @@ g:tagbar_autoclose~
|
|||||||
Default: 0
|
Default: 0
|
||||||
|
|
||||||
If you set this option the Tagbar window will automatically close when you
|
If you set this option the Tagbar window will automatically close when you
|
||||||
jump to a tag.
|
jump to a tag. This implies |g:tagbar_autofocus|.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
>
|
>
|
||||||
@@ -379,6 +389,18 @@ Example:
|
|||||||
let g:tagbar_expand = 1
|
let g:tagbar_expand = 1
|
||||||
<
|
<
|
||||||
|
|
||||||
|
*g:tagbar_singleclick*
|
||||||
|
g:tagbar_singleclick~
|
||||||
|
Default: 0
|
||||||
|
|
||||||
|
If this option is set then a single- instead of a double-click is used to jump
|
||||||
|
to the tag definition.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
>
|
||||||
|
let g:tagbar_singleclick = 1
|
||||||
|
<
|
||||||
|
|
||||||
*g:tagbar_foldlevel*
|
*g:tagbar_foldlevel*
|
||||||
g:tagbar_foldlevel~
|
g:tagbar_foldlevel~
|
||||||
Default: 99
|
Default: 99
|
||||||
@@ -423,6 +445,22 @@ Example:
|
|||||||
let g:tagbar_autoshowtag = 1
|
let g:tagbar_autoshowtag = 1
|
||||||
<
|
<
|
||||||
|
|
||||||
|
*g:tagbar_updateonsave_maxlines*
|
||||||
|
g:tagbar_updateonsave_maxlines~
|
||||||
|
Default: 5000
|
||||||
|
|
||||||
|
If the current file has fewer lines than the value of this variable, Tagbar
|
||||||
|
will update immediately after saving the file. If it is longer then the update
|
||||||
|
will only happen on the |CursorHold| event and when switching buffers (or
|
||||||
|
windows). This is to prevent the time it takes to save a large file from
|
||||||
|
becoming annoying in case you have a slow computer. If you have a fast
|
||||||
|
computer you can set it to a higher value.
|
||||||
|
|
||||||
|
Example:
|
||||||
|
>
|
||||||
|
let g:tagbar_updateonsave_maxlines = 10000
|
||||||
|
<
|
||||||
|
|
||||||
*g:tagbar_systemenc*
|
*g:tagbar_systemenc*
|
||||||
g:tagbar_systemenc~
|
g:tagbar_systemenc~
|
||||||
Default: value of 'encoding'
|
Default: value of 'encoding'
|
||||||
@@ -450,6 +488,9 @@ TagbarComment
|
|||||||
TagbarKind
|
TagbarKind
|
||||||
The header of generic "kinds" like "functions" and "variables".
|
The header of generic "kinds" like "functions" and "variables".
|
||||||
|
|
||||||
|
TagbarNestedKind
|
||||||
|
The "kind" headers in square brackets inside of scopes.
|
||||||
|
|
||||||
TagbarScope
|
TagbarScope
|
||||||
Tags that define a scope like classes, structs etc.
|
Tags that define a scope like classes, structs etc.
|
||||||
|
|
||||||
@@ -511,6 +552,16 @@ existing types and to add completely new types. A complete configuration
|
|||||||
consists of a type definition for Tagbar in your |vimrc| and optionally a
|
consists of a type definition for Tagbar in your |vimrc| and optionally a
|
||||||
language definition for ctags in case you want to add a new language.
|
language definition for ctags in case you want to add a new language.
|
||||||
|
|
||||||
|
Before writing your own extension try googling for already existing ones. For
|
||||||
|
example, here is one for Scala:
|
||||||
|
http://latestbuild.net/scala-ctags-and-vim-tagbar
|
||||||
|
Since those aren't "canonical" configurations and are somewhat subjective they
|
||||||
|
probably won't be included in Tagbar, but it is easy enough to just copy&paste
|
||||||
|
them into your own setup. Note that you don't have to modify Tagbar directly
|
||||||
|
like the article suggests, you can just put the configuration into your
|
||||||
|
|vimrc| (see below for more details).
|
||||||
|
|
||||||
|
|
||||||
Every type definition in Tagbar is a dictionary with the following keys:
|
Every type definition in Tagbar is a dictionary with the following keys:
|
||||||
|
|
||||||
ctagstype: The name of the language as recognized by ctags. Use the command >
|
ctagstype: The name of the language as recognized by ctags. Use the command >
|
||||||
@@ -535,7 +586,7 @@ kinds: A list of the "language kinds" that should be listed in Tagbar,
|
|||||||
< would list all the function definitions in a file under the header
|
< would list all the function definitions in a file under the header
|
||||||
"functions" and fold them.
|
"functions" and fold them.
|
||||||
sro: The scope resolution operator. For example, in C++ it is "::" and
|
sro: The scope resolution operator. For example, in C++ it is "::" and
|
||||||
in Java it is ".". If in doubt run ctags as shown above and check
|
in Java it is ".". If in doubt run ctags as shown below and check
|
||||||
the output.
|
the output.
|
||||||
kind2scope: A dictionary describing the mapping of tag kinds (in their
|
kind2scope: A dictionary describing the mapping of tag kinds (in their
|
||||||
one-character representation) to the scopes their children will
|
one-character representation) to the scopes their children will
|
||||||
@@ -552,8 +603,8 @@ kind2scope: A dictionary describing the mapping of tag kinds (in their
|
|||||||
private:
|
private:
|
||||||
int var;
|
int var;
|
||||||
};
|
};
|
||||||
< We then run ctags in the followin way: >
|
< We then run ctags in the following way: >
|
||||||
ctags -f - --format=2 --excmd=pattern --fields=nksazSmt --extra= test.cpp
|
ctags -f - --format=2 --excmd=pattern --extra= --fields=nksaSmt test.cpp
|
||||||
< Then the output for the variable "var" would look like this: >
|
< Then the output for the variable "var" would look like this: >
|
||||||
var tmp.cpp /^ int var;$/;" kind:m line:11 class:Foo access:private
|
var tmp.cpp /^ int var;$/;" kind:m line:11 class:Foo access:private
|
||||||
< This shows that the scope name for an entry in a C++ class is
|
< This shows that the scope name for an entry in a C++ class is
|
||||||
@@ -614,7 +665,8 @@ and vim will display the file type of the current buffer.
|
|||||||
|
|
||||||
Example: C++~
|
Example: C++~
|
||||||
Here is a complete example that shows the default configuration for C++ as
|
Here is a complete example that shows the default configuration for C++ as
|
||||||
used in Tagbar.
|
used in Tagbar. This is just for illustration purposes since user
|
||||||
|
configurations will usually be less complicated.
|
||||||
>
|
>
|
||||||
let g:tagbar_type_cpp = {
|
let g:tagbar_type_cpp = {
|
||||||
\ 'ctagstype' : 'c++',
|
\ 'ctagstype' : 'c++',
|
||||||
@@ -676,7 +728,7 @@ the order of enums and typedefs, you would do it like this:
|
|||||||
\ ]
|
\ ]
|
||||||
\ }
|
\ }
|
||||||
<
|
<
|
||||||
Compare with the complete example above to see the exact change.
|
Compare with the complete example above to see the difference.
|
||||||
|
|
||||||
Adding a definition for a new language/file type~
|
Adding a definition for a new language/file type~
|
||||||
In order to be able to add a new language to Tagbar you first have to create a
|
In order to be able to add a new language to Tagbar you first have to create a
|
||||||
@@ -756,14 +808,32 @@ Tagbar should now be able to show the sections and other tags from LaTeX
|
|||||||
files.
|
files.
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
7. Bugs and limitations *tagbar-bugs*
|
7. Troubleshooting & Known issues *tagbar-issues*
|
||||||
|
|
||||||
|
As a general rule, if the tag information displayed by Tagbar is wrong (for
|
||||||
|
example, a method doesn't show up or is in the wrong place) you should first
|
||||||
|
try running ctags manually to see whether ctags reports the wrong information
|
||||||
|
or whether that information is correct and Tagbar does something wrong. To run
|
||||||
|
ctags manually execute the following command in a terminal:
|
||||||
|
>
|
||||||
|
ctags -f - --format=2 --excmd=pattern --extra= --fields=nksaSmt myfile
|
||||||
|
<
|
||||||
|
If you set the |g:tagbar_ctags_bin| variable you probably have to use the same
|
||||||
|
value here instead of simply "ctags".
|
||||||
|
|
||||||
|
|
||||||
|
- jsctags has to be newer than 2011-01-06 since it needs the "-f" option to
|
||||||
|
work. Also, the output of jsctags seems to be a bit unreliable at the
|
||||||
|
moment (especially regarding line numbers), so if you notice some strange
|
||||||
|
behaviour with it please run it manually in a terminal to check whether
|
||||||
|
the bug is in jsctags or Tagbar.
|
||||||
|
|
||||||
- Nested pseudo-tags cannot be properly parsed since only the direct parent
|
- Nested pseudo-tags cannot be properly parsed since only the direct parent
|
||||||
scope of a tag gets assigned a type, the type of the grandparents is not
|
scope of a tag gets assigned a type, the type of the grandparents is not
|
||||||
reported by ctags (assuming the grandparents don't have direct, real
|
reported by ctags (assuming the grandparents don't have direct, real
|
||||||
children).
|
children).
|
||||||
|
|
||||||
For example, if we have a C++ with the following content:
|
For example, if we have a C++ file with the following content:
|
||||||
>
|
>
|
||||||
foo::Bar::init()
|
foo::Bar::init()
|
||||||
{
|
{
|
||||||
@@ -804,6 +874,23 @@ files.
|
|||||||
==============================================================================
|
==============================================================================
|
||||||
8. History *tagbar-history*
|
8. History *tagbar-history*
|
||||||
|
|
||||||
|
2.2 (2011-11-26)
|
||||||
|
- Small incompatible change: TagbarOpen now doesn't jump to the Tagbar
|
||||||
|
window anymore if it is already open. Use "TagbarOpen j" instead or see
|
||||||
|
its documentation for more options.
|
||||||
|
- Tags inside of scopes now have a header displaying their "kind".
|
||||||
|
- The Tagbar contents are now immediately updated on save for files
|
||||||
|
smaller than a configurable size.
|
||||||
|
- Tagbar can now be configured to jump to a tag with only a single-click
|
||||||
|
instead of a double-click.
|
||||||
|
- Most of the script has been moved to the |autoload| directory, so Vim
|
||||||
|
startup should be faster (thanks to Kien N).
|
||||||
|
- Jumping to tags should work most of the time even if the file has been
|
||||||
|
modified and not saved.
|
||||||
|
- If Ctags has been installed into the default location using Homebrew or
|
||||||
|
MacPorts it should now be found automatically.
|
||||||
|
- Several bugfixes.
|
||||||
|
|
||||||
2.1 (2011-05-29)
|
2.1 (2011-05-29)
|
||||||
- Make Tagbar work in (hopefully) all cases under Windows
|
- Make Tagbar work in (hopefully) all cases under Windows
|
||||||
- Handle cases where 'encoding' is different from system encoding, for
|
- Handle cases where 'encoding' is different from system encoding, for
|
||||||
@@ -883,13 +970,13 @@ software.
|
|||||||
|
|
||||||
The folding technique was inspired by NERDTree by Martin Grenfell.
|
The folding technique was inspired by NERDTree by Martin Grenfell.
|
||||||
|
|
||||||
Taybin Rutkin:
|
Thanks to the following people for code contributions, feature suggestions etc:
|
||||||
- Contributed tagbar_autofocus option
|
Jan Christoph Ebersbach
|
||||||
Seth Milliken:
|
Leandro Freitas
|
||||||
- Contributed folding keybindings that resemble the built-in ones
|
Seth Milliken
|
||||||
|
Kien N
|
||||||
Thanks to the following people for feature suggestions etc: Jan Christoph
|
pielgrzym
|
||||||
Ebersbach, pielgrzym
|
Taybin Rutkin
|
||||||
|
|
||||||
==============================================================================
|
==============================================================================
|
||||||
vim: tw=78 ts=8 sw=8 sts=8 noet ft=help
|
vim: tw=78 ts=8 sw=8 sts=8 noet ft=help
|
||||||
|
|||||||
4
doc/tags
4
doc/tags
@@ -413,8 +413,10 @@ g:tagbar_ctags_bin tagbar.txt /*g:tagbar_ctags_bin*
|
|||||||
g:tagbar_expand tagbar.txt /*g:tagbar_expand*
|
g:tagbar_expand tagbar.txt /*g:tagbar_expand*
|
||||||
g:tagbar_foldlevel tagbar.txt /*g:tagbar_foldlevel*
|
g:tagbar_foldlevel tagbar.txt /*g:tagbar_foldlevel*
|
||||||
g:tagbar_left tagbar.txt /*g:tagbar_left*
|
g:tagbar_left tagbar.txt /*g:tagbar_left*
|
||||||
|
g:tagbar_singleclick tagbar.txt /*g:tagbar_singleclick*
|
||||||
g:tagbar_sort tagbar.txt /*g:tagbar_sort*
|
g:tagbar_sort tagbar.txt /*g:tagbar_sort*
|
||||||
g:tagbar_systemenc tagbar.txt /*g:tagbar_systemenc*
|
g:tagbar_systemenc tagbar.txt /*g:tagbar_systemenc*
|
||||||
|
g:tagbar_updateonsave_maxlines tagbar.txt /*g:tagbar_updateonsave_maxlines*
|
||||||
g:tagbar_usearrows tagbar.txt /*g:tagbar_usearrows*
|
g:tagbar_usearrows tagbar.txt /*g:tagbar_usearrows*
|
||||||
g:tagbar_width tagbar.txt /*g:tagbar_width*
|
g:tagbar_width tagbar.txt /*g:tagbar_width*
|
||||||
g:vimwiki_CJK_length vimwiki.txt /*g:vimwiki_CJK_length*
|
g:vimwiki_CJK_length vimwiki.txt /*g:vimwiki_CJK_length*
|
||||||
@@ -921,7 +923,6 @@ surround-targets surround.txt /*surround-targets*
|
|||||||
surround.txt surround.txt /*surround.txt*
|
surround.txt surround.txt /*surround.txt*
|
||||||
tagbar tagbar.txt /*tagbar*
|
tagbar tagbar.txt /*tagbar*
|
||||||
tagbar-autoopen tagbar.txt /*tagbar-autoopen*
|
tagbar-autoopen tagbar.txt /*tagbar-autoopen*
|
||||||
tagbar-bugs tagbar.txt /*tagbar-bugs*
|
|
||||||
tagbar-commands tagbar.txt /*tagbar-commands*
|
tagbar-commands tagbar.txt /*tagbar-commands*
|
||||||
tagbar-configuration tagbar.txt /*tagbar-configuration*
|
tagbar-configuration tagbar.txt /*tagbar-configuration*
|
||||||
tagbar-contents tagbar.txt /*tagbar-contents*
|
tagbar-contents tagbar.txt /*tagbar-contents*
|
||||||
@@ -932,6 +933,7 @@ tagbar-highlight tagbar.txt /*tagbar-highlight*
|
|||||||
tagbar-history tagbar.txt /*tagbar-history*
|
tagbar-history tagbar.txt /*tagbar-history*
|
||||||
tagbar-installation tagbar.txt /*tagbar-installation*
|
tagbar-installation tagbar.txt /*tagbar-installation*
|
||||||
tagbar-intro tagbar.txt /*tagbar-intro*
|
tagbar-intro tagbar.txt /*tagbar-intro*
|
||||||
|
tagbar-issues tagbar.txt /*tagbar-issues*
|
||||||
tagbar-keys tagbar.txt /*tagbar-keys*
|
tagbar-keys tagbar.txt /*tagbar-keys*
|
||||||
tagbar-other tagbar.txt /*tagbar-other*
|
tagbar-other tagbar.txt /*tagbar-other*
|
||||||
tagbar-pseudotags tagbar.txt /*tagbar-pseudotags*
|
tagbar-pseudotags tagbar.txt /*tagbar-pseudotags*
|
||||||
|
|||||||
1328
plugin/calendar.vim
Normal file
1328
plugin/calendar.vim
Normal file
File diff suppressed because it is too large
Load Diff
111
plugin/tagbar.vim
Normal file
111
plugin/tagbar.vim
Normal file
@@ -0,0 +1,111 @@
|
|||||||
|
" ============================================================================
|
||||||
|
" File: tagbar.vim
|
||||||
|
" Description: List the current file's tags in a sidebar, ordered by class etc
|
||||||
|
" Author: Jan Larres <jan@majutsushi.net>
|
||||||
|
" Licence: Vim licence
|
||||||
|
" Website: http://majutsushi.github.com/tagbar/
|
||||||
|
" Version: 2.2
|
||||||
|
" Note: This plugin was heavily inspired by the 'Taglist' plugin by
|
||||||
|
" Yegappan Lakshmanan and uses a small amount of code from it.
|
||||||
|
"
|
||||||
|
" Original taglist copyright notice:
|
||||||
|
" Permission is hereby granted to use and distribute this code,
|
||||||
|
" with or without modifications, provided that this copyright
|
||||||
|
" notice is copied with it. Like anything else that's free,
|
||||||
|
" taglist.vim is provided *as is* and comes with no warranty of
|
||||||
|
" any kind, either expressed or implied. In no event will the
|
||||||
|
" copyright holder be liable for any damamges resulting from the
|
||||||
|
" use of this software.
|
||||||
|
" ============================================================================
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
|
if &cp || exists('g:loaded_tagbar')
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
" Basic init {{{1
|
||||||
|
|
||||||
|
if v:version < 700
|
||||||
|
echohl WarningMsg
|
||||||
|
echomsg 'Tagbar: Vim version is too old, Tagbar requires at least 7.0'
|
||||||
|
echohl None
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if v:version == 700 && !has('patch167')
|
||||||
|
echohl WarningMsg
|
||||||
|
echomsg 'Tagbar: Vim versions lower than 7.0.167 have a bug'
|
||||||
|
\ 'that prevents this version of Tagbar from working.'
|
||||||
|
\ 'Please use the alternate version posted on the website.'
|
||||||
|
echohl None
|
||||||
|
finish
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_left')
|
||||||
|
let g:tagbar_left = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_width')
|
||||||
|
let g:tagbar_width = 40
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_autoclose')
|
||||||
|
let g:tagbar_autoclose = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_autofocus')
|
||||||
|
let g:tagbar_autofocus = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_sort')
|
||||||
|
let g:tagbar_sort = 1
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_compact')
|
||||||
|
let g:tagbar_compact = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_expand')
|
||||||
|
let g:tagbar_expand = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_singleclick')
|
||||||
|
let g:tagbar_singleclick = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_foldlevel')
|
||||||
|
let g:tagbar_foldlevel = 99
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_usearrows')
|
||||||
|
let g:tagbar_usearrows = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_autoshowtag')
|
||||||
|
let g:tagbar_autoshowtag = 0
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_updateonsave_maxlines')
|
||||||
|
let g:tagbar_updateonsave_maxlines = 5000
|
||||||
|
endif
|
||||||
|
|
||||||
|
if !exists('g:tagbar_systemenc')
|
||||||
|
let g:tagbar_systemenc = &encoding
|
||||||
|
endif
|
||||||
|
|
||||||
|
augroup TagbarSession
|
||||||
|
autocmd!
|
||||||
|
autocmd SessionLoadPost * nested call tagbar#RestoreSession()
|
||||||
|
augroup END
|
||||||
|
|
||||||
|
" Commands {{{1
|
||||||
|
command! -nargs=0 TagbarToggle call tagbar#ToggleWindow()
|
||||||
|
command! -nargs=? TagbarOpen call tagbar#OpenWindow(<f-args>)
|
||||||
|
command! -nargs=0 TagbarOpenAutoClose call tagbar#OpenWindow('fc')
|
||||||
|
command! -nargs=0 TagbarClose call tagbar#CloseWindow()
|
||||||
|
command! -nargs=1 TagbarSetFoldlevel call tagbar#SetFoldLevel(<args>)
|
||||||
|
command! -nargs=0 TagbarShowTag call tagbar#OpenParents()
|
||||||
|
|
||||||
|
" Modeline {{{1
|
||||||
|
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
|
||||||
@@ -3,7 +3,9 @@
|
|||||||
" Author: Jan Larres <jan@majutsushi.net>
|
" Author: Jan Larres <jan@majutsushi.net>
|
||||||
" Licence: Vim licence
|
" Licence: Vim licence
|
||||||
" Website: http://majutsushi.github.com/tagbar/
|
" Website: http://majutsushi.github.com/tagbar/
|
||||||
" Version: 2.1
|
" Version: 2.2
|
||||||
|
|
||||||
|
scriptencoding utf-8
|
||||||
|
|
||||||
if exists("b:current_syntax")
|
if exists("b:current_syntax")
|
||||||
finish
|
finish
|
||||||
@@ -39,22 +41,26 @@ else
|
|||||||
syntax match TagbarAccessPrivate '\([-+ ]\)\@<=-\([^-+# ]\)\@='
|
syntax match TagbarAccessPrivate '\([-+ ]\)\@<=-\([^-+# ]\)\@='
|
||||||
endif
|
endif
|
||||||
|
|
||||||
syntax match TagbarComment '^".*'
|
syntax match TagbarNestedKind '^\s\+\[[^]]\+\]$'
|
||||||
syntax match TagbarType ' : \zs.*'
|
syntax match TagbarComment '^".*'
|
||||||
syntax match TagbarSignature '(.*)'
|
syntax match TagbarType ' : \zs.*'
|
||||||
syntax match TagbarPseudoID '\*\ze :'
|
syntax match TagbarSignature '(.*)'
|
||||||
|
syntax match TagbarPseudoID '\*\ze :'
|
||||||
|
|
||||||
highlight default link TagbarComment Comment
|
highlight default link TagbarComment Comment
|
||||||
highlight default link TagbarKind Identifier
|
highlight default link TagbarKind Identifier
|
||||||
highlight default link TagbarScope Title
|
highlight default link TagbarNestedKind TagbarKind
|
||||||
highlight default link TagbarType Type
|
highlight default link TagbarScope Title
|
||||||
highlight default link TagbarSignature SpecialKey
|
highlight default link TagbarType Type
|
||||||
highlight default link TagbarPseudoID NonText
|
highlight default link TagbarSignature SpecialKey
|
||||||
highlight default link TagbarFoldIcon Statement
|
highlight default link TagbarPseudoID NonText
|
||||||
highlight default link TagbarHighlight Search
|
highlight default link TagbarFoldIcon Statement
|
||||||
|
highlight default link TagbarHighlight Search
|
||||||
|
|
||||||
highlight default TagbarAccessPublic guifg=Green ctermfg=Green
|
highlight default TagbarAccessPublic guifg=Green ctermfg=Green
|
||||||
highlight default TagbarAccessProtected guifg=Blue ctermfg=Blue
|
highlight default TagbarAccessProtected guifg=Blue ctermfg=Blue
|
||||||
highlight default TagbarAccessPrivate guifg=Red ctermfg=Red
|
highlight default TagbarAccessPrivate guifg=Red ctermfg=Red
|
||||||
|
|
||||||
let b:current_syntax = "tagbar"
|
let b:current_syntax = "tagbar"
|
||||||
|
|
||||||
|
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
|
||||||
|
|||||||
Reference in New Issue
Block a user