Add option to print the tag linenumber in the tagbar window (#684)

* Add option to print the tag linenumber in the tagbar window

* Update documentation markup

* Change variable name to g:tagbar_show_tag_linenumbers to be more consistent with other variables

* Fix documentation
This commit is contained in:
raven42 2020-10-27 08:37:33 -05:00 committed by GitHub
parent bc48b8b84b
commit 0d1c6442d9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 44 additions and 6 deletions

View File

@ -2193,7 +2193,14 @@ function! s:HighlightTag(openfolds, ...) abort
call winline()
let foldpat = '[' . g:tagbar#icon_open . g:tagbar#icon_closed . ' ]'
let pattern = '/^\%' . tagline . 'l\s*' . foldpat . '[-+# ]\?\zs[^( ]\+\ze/'
" If printing the line number of the tag to the left, and the tag is
" visible (I.E. parent isn't folded)
if g:tagbar_show_tag_linenumbers == 2 && tagline == tag.tline
let pattern = '/^\%' . tagline . 'l\s*' . foldpat . '[-+# ]\[line [0-9]*\] \?\zs[^( ]\+\ze/'
else
let pattern = '/^\%' . tagline . 'l\s*' . foldpat . '[-+# ]\?\zs[^( ]\+\ze/'
endif
call tagbar#debug#log("Highlight pattern: '" . pattern . "'")
if hlexists('TagbarHighlight') " Safeguard in case syntax highlighting is disabled
execute 'match TagbarHighlight ' . pattern

View File

@ -34,8 +34,15 @@ function! s:strfmt() abort dict
let scope = s:maybe_map_scope(typeinfo.kind2scope[self.fields.kind])
let suffix .= ' : ' . scope
endif
let prefix = self._getPrefix()
return self._getPrefix() . self.name . suffix
if g:tagbar_show_tag_linenumbers == 1
let suffix .= ' [line ' . self.fields.line . ']'
elseif g:tagbar_show_tag_linenumbers == 2
let prefix .= '[line ' . self.fields.line . '] '
endif
return prefix . self.name . suffix
endfunction
" s:str() {{{1

View File

@ -20,8 +20,15 @@ function! s:strfmt() abort dict
if has_key(typeinfo.kind2scope, self.fields.kind)
let suffix .= ' : ' . typeinfo.kind2scope[self.fields.kind]
endif
let prefix = self._getPrefix()
return self._getPrefix() . self.name . '*' . suffix
if g:tagbar_show_tag_linenumbers == 1
let suffix .= ' [line ' . self.fields.line . ']'
elseif g:tagbar_show_tag_linenumbers == 2
let prefix .= '[line ' . self.fields.line . '] '
endif
return prefix . self.name . '*' . suffix
endfunction
" s:add_snr() {{{1

View File

@ -670,7 +670,7 @@ name.
Example:
>
let g:tagbar_show_visibility = 0
<
*g:tagbar_visibility_symbols*
g:tagbar_visibility_symbols
Default: { 'public' : '+', 'protected' : '#', 'private' : '-' }
@ -685,7 +685,7 @@ Example:
\ 'protected' : '#',
\ 'private' : '-'
\ }
<
*g:tagbar_show_linenumbers*
g:tagbar_show_linenumbers~
Default: 0
@ -702,7 +702,23 @@ Example:
>
let g:tagbar_show_linenumbers = 2
<
*g:tagbar_show_tag_linenumbers*
g:tagbar_show_tag_linenumbers~
Default: 0
This option allows printing the tag line number next to the tag in the tagbar
window. It can be set to the following values:
0 - The line number will not be printed
1 - The line number will be printed to the right of the tag >
Example: function1(int i) [line 42]
<
2 - The line number will be printed to the left of the tag >
Example: [line 42] function1(int i)
<
Example:
>
let g:tagbar_show_tag_linenumbers = 1
<
*g:tagbar_hide_nonpublic*
g:tagbar_hide_nonpublic~
Default: 0

View File

@ -96,13 +96,14 @@ function! s:setup_options() abort
\ ['hide_nonpublic', 0],
\ ['height', 10],
\ ['indent', 2],
\ ['scopestrs', {}],
\ ['left', 0],
\ ['position', default_pos],
\ ['previewwin_pos', previewwin_pos],
\ ['scopestrs', {}],
\ ['show_balloon', 1],
\ ['show_visibility', 1],
\ ['show_linenumbers', 0],
\ ['show_tag_linenumbers', 0],
\ ['singleclick', 0],
\ ['sort', 1],
\ ['systemenc', &encoding],