mirror of
https://github.com/gryf/tagbar.git
synced 2026-05-10 16:32:58 +02:00
Compare commits
145 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 6d8770f949 | |||
| c4963e91cc | |||
| 87bbb46e95 | |||
| b4a5800f72 | |||
| ba3693f977 | |||
| 528bdc6b8d | |||
| 2dcd5260b6 | |||
| 3f28e3b073 | |||
| 915b11bd1c | |||
| e090fe73d1 | |||
| 574376d165 | |||
| 66c56b11a7 | |||
| c57dd9f7a4 | |||
| f3250b2dd1 | |||
| 0377f19d74 | |||
| 2d650b96cf | |||
| 290b71e2b7 | |||
| 78a7eeecf3 | |||
| 207b8520c2 | |||
| 1a2c4ec958 | |||
| 0fd09344c7 | |||
| abffaba655 | |||
| 15f9ad6e88 | |||
| b60d08c468 | |||
| e5408f740f | |||
| 85c198ba57 | |||
| 2e2ba2eab2 | |||
| fd79a17189 | |||
| ae4bbcdaaf | |||
| 3c37ddcc14 | |||
| 5566cb34d5 | |||
| 97d7b04bdd | |||
| 4801c897f8 | |||
| 24efd12f50 | |||
| fec9b2a1ab | |||
| 56cd34830d | |||
| 0b14e28719 | |||
| 225fcaa3ce | |||
| dab8d99fb8 | |||
| a566f7141f | |||
| 7ef2dd0ef1 | |||
| 84d65042fa | |||
| c37d783d4f | |||
| 7ec151a7a9 | |||
| e97d2c00ad | |||
| 57acb383b6 | |||
| 495e5fcb08 | |||
| 746771801c | |||
| 824767bc48 | |||
| 57ee79bd4c | |||
| a217435f50 | |||
| 2bacadf716 | |||
| e4fda667f9 | |||
| 5732ce9bd6 | |||
| f36e0d3d39 | |||
| dacf4f273e | |||
| 82a932406f | |||
| 2ebd2a1392 | |||
| ca02374f40 | |||
| a93fb868d8 | |||
| 070a75cb04 | |||
| 24915dbe24 | |||
| f5435678fb | |||
| 3ecdb5028d | |||
| d0d307c9bd | |||
| f0f9d66465 | |||
| e6e084e8b0 | |||
| cde257b1bc | |||
| 54b28e4988 | |||
| 7c0d8675b5 | |||
| acca348959 | |||
| 1c605bd958 | |||
| 2665695f57 | |||
| 32b5b15b52 | |||
| 87d293206b | |||
| 93f2b68166 | |||
| db9404ca1a | |||
| b6f47e4020 | |||
| ec0eb883dc | |||
| d0df97040b | |||
| dec1f840fb | |||
| 11f8479593 | |||
| 77a318b10e | |||
| c1c7d962af | |||
| aa190a87fa | |||
| 80dfccf09d | |||
| be00efa703 | |||
| cc222f5d8c | |||
| 852c6dac69 | |||
| 0bce914578 | |||
| 59bb2a4355 | |||
| 4ca7a0c636 | |||
| f801147c2e | |||
| 9ec7d1db4c | |||
| 9bbd0098c5 | |||
| 5816ce0c5a | |||
| 3f03aa3013 | |||
| 0224d32eb9 | |||
| 987569e7dd | |||
| a444c62066 | |||
| 1181325968 | |||
| 1f0c0a3a8e | |||
| ad8783961d | |||
| bccdc7a48d | |||
| 2b1f655063 | |||
| 17d199f584 | |||
| feebffcd2a | |||
| 7d836e0c53 | |||
| 0ab07ac566 | |||
| 576d6e6dea | |||
| df341841ec | |||
| 15eddce14f | |||
| e88b81c4f5 | |||
| 19695b87b0 | |||
| 568ef5fd25 | |||
| e635a23cf5 | |||
| 2fee7677d5 | |||
| cd0e20f93b | |||
| ee700817d5 | |||
| 67dc2a3b06 | |||
| 63e689b647 | |||
| ba6eb10e49 | |||
| d39a767486 | |||
| a34acf4f63 | |||
| 6483a0edd1 | |||
| 757358349e | |||
| 04e40e09c1 | |||
| ba7d6b3e8e | |||
| 4569779601 | |||
| 7d1ba97603 | |||
| b1c7f5f792 | |||
| b19c1d8524 | |||
| 8b5ba2ad66 | |||
| 25f43b9e88 | |||
| f6acd740d7 | |||
| bff765b957 | |||
| f2c072dbb9 | |||
| e321d85548 | |||
| f3c1a93017 | |||
| e690a5e97d | |||
| 052bc7972b | |||
| f1c6d8c780 | |||
| 1757b33da7 | |||
| 427d709f61 | |||
| 49d39cae6c |
@@ -1,7 +0,0 @@
|
||||
Tagbar is a vim plugin for browsing the tags of source code files. It provides
|
||||
a sidebar that displays the ctags-generated tags of the current file, ordered
|
||||
by their scope. This means that for example methods in C++ are displayed under
|
||||
the class they are defined in.
|
||||
|
||||
Check out the homepage at http://majutsushi.github.com/tagbar/ for more
|
||||
information.
|
||||
@@ -0,0 +1,19 @@
|
||||
# Overview
|
||||
|
||||
Tagbar is a vim plugin for browsing the tags of source code files.
|
||||
It provides a sidebar that displays the ctags-generated tags of the current file, ordered by their scope. This means that for example methods in C++ are displayed under the class they are defined in.
|
||||
|
||||
Check out the homepage at http://majutsushi.github.io/tagbar/ for more information.
|
||||
|
||||
# Support for additional filetypes
|
||||
|
||||
For filetypes that are not supported by Exuberant Ctags check out [the wiki](https://github.com/majutsushi/tagbar/wiki) to see whether other projects offer support for them and how to use them. Please add any other projects/configurations that you find or create yourself so that others can benefit from them, too.
|
||||
|
||||
# Important: If the file structure is displayed wrong
|
||||
|
||||
If you notice that there are some errors in the way your file's structure is displayed in Tagbar, please make sure that the bug is actually in Tagbar before you report a bug. Since Tagbar uses [exuberant-ctags](http://ctags.sourceforge.net/) and compatible programs to do the actual file parsing, it is likely that the bug is actually in one of those programs instead.
|
||||
|
||||
There is an example in `:h tagbar-issues` about how to run ctags manually so you can determine where the bug actually is. If the bug is actually in ctags, please report it on their website instead, as there is nothing I can do about it in Tagbar. Thank you!
|
||||
|
||||
You can also have a look at ctags bugs that have previously been filed on Tagbar here:
|
||||
https://github.com/majutsushi/tagbar/issues?labels=ctags-bug&page=1&state=closed
|
||||
+1121
-552
File diff suppressed because it is too large
Load Diff
+304
-46
@@ -3,7 +3,7 @@
|
||||
Author: Jan Larres <jan@majutsushi.net>
|
||||
Licence: Vim licence, see |license|
|
||||
Homepage: http://majutsushi.github.com/tagbar/
|
||||
Version: 2.4.1
|
||||
Version: 2.6
|
||||
|
||||
==============================================================================
|
||||
Contents *tagbar* *tagbar-contents*
|
||||
@@ -21,6 +21,7 @@ Contents *tagbar* *tagbar-contents*
|
||||
Highlight colours ............. |tagbar-highlight|
|
||||
Automatically opening Tagbar .. |tagbar-autoopen|
|
||||
Show current tag in statusline |tagbar-statusline|
|
||||
Ignoring specific files ....... |tagbar-ignore|
|
||||
6. Extending Tagbar ................ |tagbar-extend|
|
||||
7. Troubleshooting & Known issues .. |tagbar-issues|
|
||||
8. History ......................... |tagbar-history|
|
||||
@@ -61,7 +62,7 @@ Then Tagbar would display the tag information like so:
|
||||
<
|
||||
This example shows several important points. First, the tags are listed
|
||||
indented below the scope they are defined in. Second, the type of a scope is
|
||||
listed after its name and a colon. Third, tags for which the access/visibility
|
||||
listed after its name and a colon. Third, tags for which the visibility
|
||||
information is known are prefixed with a symbol indicating that.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
@@ -194,6 +195,13 @@ You can also use |:TagbarOpenAutoClose| to open the Tagbar window, jump to it
|
||||
and have it close automatically on tag selection regardless of the
|
||||
|g:tagbar_autoclose| setting.
|
||||
|
||||
Pausing the Tagbar window~
|
||||
Use |:TagbarTogglePause| to toggle freezing the Tagbar window on its currently
|
||||
displayed file. Freezing the window stops the Tagbar contents from changing
|
||||
when switching to a different source file. All Tagbar functionality continues
|
||||
to work as expected. Unfreezing the window will cause it to load the current
|
||||
source file.
|
||||
|
||||
Jumping to tags~
|
||||
When you're inside the Tagbar window you can jump to the definition of a tag
|
||||
by moving the cursor to a tag and pressing <Enter> or double-clicking on it
|
||||
@@ -223,11 +231,12 @@ strange things will happen. This is unfortunately unavoidable.
|
||||
|
||||
Displaying the prototype of a tag~
|
||||
Tagbar can display the prototype of a tag. More precisely it can display the
|
||||
line in which the tag is defined. This can be done by either pressing <Space>
|
||||
when on a tag or hovering over a tag with the mouse. In the former case the
|
||||
prototype will be displayed in the command line |Command-line|, in the latter
|
||||
case it will be displayed in a pop-up window. The prototype will also be
|
||||
displayed when the cursor stays on a tag for 'updatetime' milliseconds.
|
||||
line(s) in which the tag is defined. This can be done by either pressing
|
||||
<Space> when on a tag or hovering over a tag with the mouse. In the former
|
||||
case the prototype will be displayed in the |Command-line|, in the latter case
|
||||
it will be displayed in a pop-up window. The prototype will also be displayed
|
||||
if the cursor stays on a tag for 'updatetime' milliseconds. In that case the
|
||||
prototype may be abbreviated in order to avoid |hit-enter| prompts.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
COMMANDS *tagbar-commands*
|
||||
@@ -241,7 +250,8 @@ COMMANDS *tagbar-commands*
|
||||
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')
|
||||
set to 1, but doesn't imply 'f'), but only if the Tagbar window was
|
||||
opened using this command.
|
||||
|
||||
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
|
||||
@@ -252,11 +262,16 @@ COMMANDS *tagbar-commands*
|
||||
Close the Tagbar window if it is open.
|
||||
|
||||
:TagbarToggle *:TagbarToggle*
|
||||
Open the Tagbar window if it is closed or close it if it is open.
|
||||
:Tagbar
|
||||
Open the Tagbar window if it is closed, or close it if it is open.
|
||||
|
||||
:TagbarOpenAutoClose *:TagbarOpenAutoClose*
|
||||
Open the Tagbar window, jump to it and close it on tag selection. This is
|
||||
an alias for ":TagbarOpen fc".
|
||||
an alias for ":TagbarOpen fjc".
|
||||
|
||||
:TagbarTogglePause *:TagbarTogglePause*
|
||||
Freezes/Unfreezes the Tagbar window. Stops the contents of the window
|
||||
from changing when a different source file is selected.
|
||||
|
||||
:TagbarSetFoldlevel[!] {number} *:TagbarSetFoldlevel*
|
||||
Set the foldlevel of the tags of the current file to {number}. The
|
||||
@@ -269,6 +284,10 @@ COMMANDS *tagbar-commands*
|
||||
Open the parent folds of the current tag in the file window as much as
|
||||
needed for the tag to be visible in the Tagbar window.
|
||||
|
||||
:TagbarCurrentTag [{flags}] *:TagbarCurrentTag*
|
||||
Echo the current tag in the command line. For {flags} see
|
||||
|tagbar-statusline|.
|
||||
|
||||
:TagbarGetTypeConfig {filetype} *:TagbarGetTypeConfig*
|
||||
Paste the Tagbar configuration of the vim filetype {filetype} at the
|
||||
current cursor position (provided that filetype is supported by Tagbar)
|
||||
@@ -281,6 +300,8 @@ COMMANDS *tagbar-commands*
|
||||
Start debug mode. This will write debug messages to file [logfile] while
|
||||
using Tagbar. If no argument is given "tagbardebug.log" in the current
|
||||
directory is used. Note: an existing file will be overwritten!
|
||||
Note also that it is usually necessary to call this command before loading
|
||||
a file that creates problems in order to get all of the needed data.
|
||||
|
||||
:TagbarDebugEnd *:TagbarDebugEnd*
|
||||
End debug mode, debug messages will no longer be written to the logfile.
|
||||
@@ -291,27 +312,53 @@ KEY MAPPINGS *tagbar-keys*
|
||||
The following mappings are valid in the Tagbar window:
|
||||
|
||||
<F1> Display key mapping help.
|
||||
Map option: tagbar_map_help
|
||||
<CR>/<Enter> Jump to the tag under the cursor. Doesn't work for pseudo-tags
|
||||
or generic headers.
|
||||
Map option: tagbar_map_jump
|
||||
p Jump to the tag under the cursor, but stay in the Tagbar window.
|
||||
Map option: tagbar_map_preview
|
||||
P Open the tag in a |preview-window|.
|
||||
Map option: tagbar_map_previewwin
|
||||
<LeftMouse> When on a fold icon, open or close the fold depending on the
|
||||
current state.
|
||||
<2-LeftMouse> Same as <CR>. See |g:tagbar_singleclick| if you want to use a
|
||||
single- instead of a double-click.
|
||||
<C-N> Go to the next top-level tag.
|
||||
Map option: tagbar_map_nexttag
|
||||
<C-P> Go to the previous top-level tag.
|
||||
Map option: tagbar_map_prevtag
|
||||
<Space> Display the prototype of the current tag (i.e. the line defining
|
||||
it) in the command line.
|
||||
Map option: tagbar_map_showproto
|
||||
+/zo Open the fold under the cursor.
|
||||
Map option: tagbar_map_openfold
|
||||
-/zc Close the fold under the cursor or the current one if there is
|
||||
no fold under the cursor.
|
||||
Map option: tagbar_map_closefold
|
||||
o/za Toggle the fold under the cursor or the current one if there is
|
||||
no fold under the cursor.
|
||||
Map option: tagbar_map_togglefold
|
||||
*/zR Open all folds by setting foldlevel to 99.
|
||||
Map option: tagbar_map_openallfolds
|
||||
=/zM Close all folds by setting foldlevel to 0.
|
||||
<C-N> Go to the next top-level tag.
|
||||
<C-P> Go to the previous top-level tag.
|
||||
Map option: tagbar_map_closeallfolds
|
||||
s Toggle sort order between name and file order.
|
||||
Map option: tagbar_map_togglesort
|
||||
x Toggle zooming the window.
|
||||
Map option: tagbar_map_zoomwin
|
||||
q Close the Tagbar window.
|
||||
Map option: tagbar_map_close
|
||||
|
||||
These mappings can be redefined with the given map options. The argument can
|
||||
be either a string or a |List| of strings. In the latter case the
|
||||
functionality will be assigned to all of the keys in the list. For example, if
|
||||
you want to remap the sort toggling functionality to "r":
|
||||
>
|
||||
let g:tagbar_map_togglesort = "r"
|
||||
<
|
||||
See |key-notation| for how to write special keys like <Space> or the keypad
|
||||
keys.
|
||||
|
||||
==============================================================================
|
||||
5. Configuration *tagbar-configuration*
|
||||
@@ -402,12 +449,55 @@ Example:
|
||||
let g:tagbar_compact = 1
|
||||
<
|
||||
|
||||
*g:tagbar_indent*
|
||||
g:tagbar_indent~
|
||||
Default: 2
|
||||
|
||||
The number of spaces by which each level is indented. This allows making the
|
||||
display more compact or more spacious.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_indent = 1
|
||||
<
|
||||
|
||||
*g:tagbar_show_visibility*
|
||||
g:tagbar_show_visibility~
|
||||
Default: 1
|
||||
|
||||
Show the visibility symbols (public/protected/private) to the left of the tag
|
||||
name.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_show_visibility = 0
|
||||
<
|
||||
|
||||
*g:tagbar_show_linenumbers*
|
||||
g:tagbar_show_linenumbers~
|
||||
Default: 0
|
||||
|
||||
Whether line numbers should be shown in the Tagbar window.
|
||||
|
||||
Possible values are:
|
||||
0: Don't show any line numbers.
|
||||
1: Show absolute line numbers.
|
||||
2: Show relative line numbers.
|
||||
-1: Use the global line number settings.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_show_linenumbers = 2
|
||||
<
|
||||
|
||||
*g:tagbar_expand*
|
||||
g:tagbar_expand~
|
||||
Default: 0
|
||||
|
||||
If this option is set the Vim window will be expanded by the width of the
|
||||
Tagbar window if using a GUI version of Vim.
|
||||
If this option is set to 1 the Vim window will be expanded by the width of the
|
||||
Tagbar window if using a GUI version of Vim. Setting it to 2 will also try
|
||||
expanding a terminal, but note that this is not supported by all terminals.
|
||||
See also |xterm-resize|.
|
||||
|
||||
Example:
|
||||
>
|
||||
@@ -451,7 +541,7 @@ Examples (don't worry if some of the characters aren't displayed correctly,
|
||||
just choose other characters in that case):
|
||||
>
|
||||
let g:tagbar_iconchars = ['â–¶', 'â–Ľ'] (default on Linux and Mac OS X)
|
||||
let g:tagbar_iconchars = ['â–ľ', 'â–¸']
|
||||
let g:tagbar_iconchars = ['â–¸', 'â–ľ']
|
||||
let g:tagbar_iconchars = ['â–·', 'â—˘']
|
||||
let g:tagbar_iconchars = ['+', '-'] (default on Windows)
|
||||
<
|
||||
@@ -460,32 +550,55 @@ just choose other characters in that case):
|
||||
g:tagbar_autoshowtag~
|
||||
Default: 0
|
||||
|
||||
If this variable is set and the current tag is inside of a closed fold then
|
||||
the folds will be opened as much as needed for the tag to be visible so it can
|
||||
be highlighted. If it is not set then the folds won't be opened and the parent
|
||||
tag will be highlighted instead. You can use the |:TagbarShowTag| command to
|
||||
open the folds manually.
|
||||
If this variable is set to 1 and the current tag is inside of a closed fold
|
||||
then the folds will be opened as much as needed for the tag to be visible so
|
||||
it can be highlighted. If it is set to 0 then the folds will only be opened
|
||||
when opening the Tagbar window and the current tag is insided a closed fold,
|
||||
otherwise the folds won't be opened and the parent tag will be highlighted
|
||||
instead. If it is set to 2 then the folds will never be opened automatically.
|
||||
|
||||
You can use the |:TagbarShowTag| command to open the folds manually.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_autoshowtag = 1
|
||||
<
|
||||
|
||||
*g:tagbar_updateonsave_maxlines*
|
||||
g:tagbar_updateonsave_maxlines~
|
||||
Default: 5000
|
||||
*g:tagbar_previewwin_pos*
|
||||
g:tagbar_previewwin_pos~
|
||||
Default: topleft
|
||||
|
||||
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.
|
||||
The position of the preview window. Valid values are the window splitting
|
||||
commands that are described starting from |:vertical|. Set it to an empty
|
||||
string to use the options 'splitbelow' and 'splitright'.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_updateonsave_maxlines = 10000
|
||||
let g:tagbar_previewwin_pos = "aboveleft"
|
||||
<
|
||||
If you want to disable line numbers in the preview window put something like
|
||||
this into your vimrc:
|
||||
>
|
||||
autocmd BufWinEnter * if &previewwindow | setlocal nonumber | endif
|
||||
<
|
||||
|
||||
*g:tagbar_autopreview*
|
||||
g:tagbar_autopreview~
|
||||
Default: 0
|
||||
|
||||
If this variable is set to 1 then moving the cursor in the Tagbar window will
|
||||
automatically show the current tag in the preview window.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_autopreview = 1
|
||||
<
|
||||
|
||||
*g:tagbar_updateonsave_maxlines*
|
||||
g:tagbar_updateonsave_maxlines~
|
||||
|
||||
Deprecated. Tagbar will now always get updated when the file is being saved.
|
||||
|
||||
|
||||
*g:tagbar_systemenc*
|
||||
g:tagbar_systemenc~
|
||||
@@ -496,12 +609,41 @@ system is different from the one set in Vim, i.e. the 'encoding' option. For
|
||||
example, if you use a Simplified Chinese Windows version that has a system
|
||||
encoding of "cp936", and you have set 'encoding' to "utf-8", then you would
|
||||
have to set this variable to "cp936".
|
||||
Note that this requires Vim to be compiled with the |+multi_byte| and (unless
|
||||
your encoding is latin1) |+iconv| features to work.
|
||||
|
||||
Example:
|
||||
>
|
||||
let g:tagbar_systemenc = 'cp936'
|
||||
<
|
||||
|
||||
*g:tagbar_status_func*
|
||||
g:tagbar_status_func~
|
||||
Default: undefined
|
||||
|
||||
This is the name of a function whose return value will be used to draw the
|
||||
statusline of the Tagbar window.
|
||||
|
||||
The function has to take three arguments:
|
||||
1. current: Whether Tagbar is the current window; 0 or 1.
|
||||
2. sort: The sort order of the tags; 'Name' if they are sorted by name and
|
||||
'Order' if they are sorted by their order of appearance in the file.
|
||||
3. fname: The name of the file that the tags belong to.
|
||||
|
||||
In order to avoid possible future additions to the arguments resulting in an
|
||||
error it is recommended to add an additional vararg to the signature (see
|
||||
|a:0|).
|
||||
|
||||
Here is an example that, when put into your vimrc, will emulate Tagbar's
|
||||
default statusline:
|
||||
>
|
||||
function! TagbarStatusFunc(current, sort, fname, ...) abort
|
||||
let colour = a:current ? '%#StatusLine#' : '%#StatusLineNC#'
|
||||
return colour . '[' . a:sort . '] ' . a:fname
|
||||
endfunction
|
||||
let g:tagbar_status_func = 'TagbarStatusFunc'
|
||||
<
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
HIGHLIGHT COLOURS *tagbar-highlight*
|
||||
|
||||
@@ -535,14 +677,14 @@ TagbarFoldIcon
|
||||
TagbarHighlight
|
||||
The colour that is used for automatically highlighting the current tag.
|
||||
|
||||
TagbarAccessPublic
|
||||
The "public" visibility/access symbol.
|
||||
TagbarVisibilityPublic
|
||||
The "public" visibility symbol.
|
||||
|
||||
TagbarAccessProtected
|
||||
The "protected" visibility/access symbol.
|
||||
TagbarVisibilityProtected
|
||||
The "protected" visibility symbol.
|
||||
|
||||
TagbarAccessPrivate
|
||||
The "private" visibility/access symbol.
|
||||
TagbarVisibilityPrivate
|
||||
The "private" visibility symbol.
|
||||
|
||||
If you want to change any of those colours put a line like the following in
|
||||
your vimrc:
|
||||
@@ -602,7 +744,8 @@ you want to, by calling the tagbar#currenttag() function. The current tag is
|
||||
exactly the same as would be highlighted in the Tagbar window if it is open.
|
||||
It is defined as the nearest tag upwards in the file starting from the cursor
|
||||
position. This means that for example in a function it should usually be the
|
||||
name of the function.
|
||||
name of the function. You can define which tags will be shown in this manner,
|
||||
read |tagbar-extend| (especially the "kinds" entry) on how to do that.
|
||||
|
||||
The function has the following signature:
|
||||
|
||||
@@ -617,10 +760,29 @@ tagbar#currenttag({format}, {default} [, {flags}])
|
||||
's' If the tag is a function, the complete signature will be shown,
|
||||
otherwise just "()" will be appended to distinguish functions from
|
||||
other tags.
|
||||
'p' Display the raw prototype instead of the parsed tag. This can be
|
||||
useful in cases where ctags doesn't report some information, like
|
||||
the signature. Note that this can get quite long.
|
||||
|
||||
For example, if you put the following into your statusline: >
|
||||
%{tagbar#currenttag('[%s] ', '')}
|
||||
< then the function "myfunc" will be show as "[myfunc()] ".
|
||||
%{tagbar#currenttag('[%s] ','')}
|
||||
< then the function "myfunc" will be shown as "[myfunc()] ".
|
||||
|
||||
Note that if there is an error when processing the current file no error
|
||||
message will be shown in order to not disrupt the statusline. If the function
|
||||
doesn't seem to work right open the Tagbar window to see any error messages.
|
||||
|
||||
------------------------------------------------------------------------------
|
||||
IGNORING SPECIFIC FILES *tagbar-ignore*
|
||||
|
||||
You can ignore specific files by setting the |buffer-variable|
|
||||
"b:tagbar_ignore" to 1. This is best done with an |autocommand|:
|
||||
>
|
||||
autocmd BufNewFile,BufReadPost foo.cpp let b:tagbar_ignore = 1
|
||||
<
|
||||
Note that autocommands are order-sensitive, so make sure that this autocommand
|
||||
gets defined before the ones that Tagbar defines so the variable will get
|
||||
found at the right time.
|
||||
|
||||
==============================================================================
|
||||
6. Extending Tagbar *tagbar-extend*
|
||||
@@ -651,10 +813,9 @@ support package for the language. Some tips on how to write such a program are
|
||||
given at the end of this section.
|
||||
|
||||
Before writing your own extension have a look at the wiki
|
||||
(https://github.com/majutsushi/tagbar/wiki/Support-for-additional-filetypes)
|
||||
or try googling for existing ones. If you do end up creating your own
|
||||
extension please consider adding it to the wiki so that others will be able to
|
||||
use it, too.
|
||||
(https://github.com/majutsushi/tagbar/wiki) or try googling for existing ones.
|
||||
If you do end up creating your own extension please consider adding it to the
|
||||
wiki so that others can benefit from it, too.
|
||||
|
||||
Every type definition in Tagbar is a dictionary with the following keys:
|
||||
|
||||
@@ -753,6 +914,25 @@ ctagsargs: The arguments to be passed to the filetype-specific ctags program
|
||||
program output its data on stdout. Not used for the normal ctags
|
||||
program.
|
||||
|
||||
The value of ctagsargs may be a |List| of strings (a string for
|
||||
each argument), or a single string (|expr-string|) of all the
|
||||
arguments.
|
||||
|
||||
When the value of ctagsargs is a list, tagbar.vim takes care of
|
||||
escaping each argument in the list as required for the current
|
||||
'shell' type.
|
||||
|
||||
When the value of ctagsargs is a string, it must be properly
|
||||
escaped (if required by the current shell type). The reason
|
||||
tagbar.vim does not attempt to escape the string in this case is
|
||||
because if there is a space, it is ambiguous as to whether the
|
||||
space is delimiting an argument or included in the argument. To
|
||||
avoid this amiguity, tagbar.vim expects the string to be already
|
||||
escaped as required.
|
||||
|
||||
If special escaping is required for different OS shell types or if
|
||||
in doubt, then it is recommended to define ctagsargs with a List.
|
||||
|
||||
|
||||
You then have to assign this dictionary to a variable in your vimrc with the
|
||||
name
|
||||
@@ -916,6 +1096,35 @@ that.
|
||||
Tagbar should now be able to show the sections and other tags from LaTeX
|
||||
files.
|
||||
|
||||
Note: As of 2012-05-05 the ctags development version contains an improved
|
||||
LaTeX parser that works better than the example configuration presented here.
|
||||
So if you are using a development build newer than that or a stable version
|
||||
newer than 5.8 you should use the built-in support instead of this example.
|
||||
|
||||
Project-specific configuration~
|
||||
|
||||
In addition to the normal global configuration it is also possible to have
|
||||
project-specific settings. This is mostly useful for additional ctags options,
|
||||
like for example macros to ignore. Or maybe you want to do things like folding
|
||||
certain tag kinds in some projects.
|
||||
|
||||
In order to use this feature you need to create User |autocommand|s in an
|
||||
augroup called "TagbarProjects" and have it create a buffer-local variable
|
||||
called "b:tagbar_type". This variable has to hold a type definition just like
|
||||
the normal ones described in this chapter. This definition will then be
|
||||
applied only to the files matched by the autocommand.
|
||||
|
||||
Note that there can be multiple definitions of the augroup with their own
|
||||
autocommands (for example in separate project directories); they will get
|
||||
merged automatically by Vim.
|
||||
|
||||
Example:
|
||||
>
|
||||
augroup TagbarProjects
|
||||
autocmd User ~/myproject/*.c let b:tagbar_type = {'deffile' : '~/myproject/ctags.cnf'}
|
||||
augroup END
|
||||
<
|
||||
|
||||
Writing your own tag-generating program~
|
||||
If you want to write your own program for generating tags then here are some
|
||||
imporant tips to get it to integrate well with Tagbar:
|
||||
@@ -936,9 +1145,9 @@ imporant tips to get it to integrate well with Tagbar:
|
||||
* line: The line number of the tag.
|
||||
* column: The column number of the tag.
|
||||
* signature: The signature of a function.
|
||||
* access: Visibility/access information of a tag; the values
|
||||
"public", "protected" and "private" will be denoted with
|
||||
a special symbol in Tagbar.
|
||||
* access: Visibility information of a tag; the values "public",
|
||||
"protected" and "private" will be denoted with a special
|
||||
symbol in Tagbar.
|
||||
|
||||
In addition fields that describe the surrounding scope of the tag are
|
||||
supported if they are specified in the type configuration as explained at
|
||||
@@ -1022,6 +1231,47 @@ file.
|
||||
==============================================================================
|
||||
8. History *tagbar-history*
|
||||
|
||||
2.6 (2013-12-06)
|
||||
- Added possibility to show tags in the preview window, either manually or
|
||||
automatically.
|
||||
- Allow customizing the statusline, see :help g:tagbar_status_func.
|
||||
- Type configuration can now be project-specific.
|
||||
- The keybindings in the Tagbar window are now configurable.
|
||||
- Improvements to Ctags execution on Windows, thanks to Darcy Parker.
|
||||
- Added function tagbar#currentfile() that returns the path to the file
|
||||
currently being displayed in Tagbar, thanks to Zhao Cai.
|
||||
- Added a :Tagbar command as an alias for :TagbarToggle.
|
||||
- Added an way to ignore specific files in case they create problems.
|
||||
- Optionally show line numbers in the Tagbar window.
|
||||
- The usual bunch of small improvements and bugfixes.
|
||||
|
||||
2.5 (2013-03-25)
|
||||
- New command :TagbarTogglePause to freeze Tagbar in its current state so
|
||||
you can switch to other files while keeping the old information
|
||||
displayed for reference. (Kian Ryan)
|
||||
- New command :TagbarCurrentTag which reports the same information as
|
||||
currenttag().
|
||||
- New option tagbar_indent to configure the indentation depth of the tags.
|
||||
- New option tagbar_show_visibility to allow disabling the visibility
|
||||
symbols.
|
||||
- Files are now cached locally to avoid additional slowdowns for slow
|
||||
connections. This also makes it possible to use Tagbar with files
|
||||
accessed through Netrw.
|
||||
- Execute ctags again even if the previous run reported errors, in case it
|
||||
was a parse error that has since been fixed. If the error persists,
|
||||
don't display it again.
|
||||
- Improved window switching and Vim exit behaviours. (Techlive Zheng)
|
||||
- The currenttag() function now can show the prototype instead of the
|
||||
actual tag, which can be useful in some cases where ctags doesn't report
|
||||
all the interesting information.
|
||||
- The prototype shown in the tooltip or command line should now always be
|
||||
complete, even if it is spread out over more than one line in the source
|
||||
file.
|
||||
- The TagbarAccessPublic etc. highlight groups have been renamed to
|
||||
TagbarVisibilityPublic etc. to keep them in line with standard
|
||||
terminology. The old names are still supported.
|
||||
- Various smaller improvements and bugfixes.
|
||||
|
||||
2.4.1 (2012-07-16)
|
||||
- Fixed some bugs related to the currenttag() function when it was called
|
||||
before the rest of the plugin was loaded. Also fail silently in case
|
||||
@@ -1147,14 +1397,22 @@ software.
|
||||
The folding technique was inspired by NERDTree by Martin Grenfell.
|
||||
|
||||
Thanks to the following people for code contributions, feature suggestions etc:
|
||||
Peter Butkovic
|
||||
Zhao Cai
|
||||
Jan Christoph Ebersbach
|
||||
Vadim Fint
|
||||
Leandro Freitas
|
||||
Ingo Karkat
|
||||
Michael McClimon
|
||||
Seth Milliken
|
||||
Kien N
|
||||
Darcy Parker
|
||||
pielgrzym
|
||||
Taybin Rutkin
|
||||
Kian Ryan
|
||||
John Szakmeister
|
||||
Ville Valkonen
|
||||
Techlive Zheng
|
||||
|
||||
==============================================================================
|
||||
vim: tw=78 ts=8 sw=4 sts=4 et ft=help
|
||||
|
||||
+57
-46
@@ -4,7 +4,7 @@
|
||||
" Author: Jan Larres <jan@majutsushi.net>
|
||||
" Licence: Vim licence
|
||||
" Website: http://majutsushi.github.com/tagbar/
|
||||
" Version: 2.4.1
|
||||
" Version: 2.6
|
||||
" Note: This plugin was heavily inspired by the 'Taglist' plugin by
|
||||
" Yegappan Lakshmanan and uses a small amount of code from it.
|
||||
"
|
||||
@@ -42,41 +42,35 @@ if v:version == 700 && !has('patch167')
|
||||
finish
|
||||
endif
|
||||
|
||||
if !exists('g:tagbar_left')
|
||||
let g:tagbar_left = 0
|
||||
endif
|
||||
function! s:init_var(var, value) abort
|
||||
if !exists('g:tagbar_' . a:var)
|
||||
execute 'let g:tagbar_' . a:var . ' = ' . string(a:value)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
if !exists('g:tagbar_width')
|
||||
let g:tagbar_width = 40
|
||||
endif
|
||||
let s:options = [
|
||||
\ ['autoclose', 0],
|
||||
\ ['autofocus', 0],
|
||||
\ ['autopreview', 0],
|
||||
\ ['autoshowtag', 0],
|
||||
\ ['compact', 0],
|
||||
\ ['expand', 0],
|
||||
\ ['foldlevel', 99],
|
||||
\ ['indent', 2],
|
||||
\ ['left', 0],
|
||||
\ ['previewwin_pos', 'topleft'],
|
||||
\ ['show_visibility', 1],
|
||||
\ ['show_linenumbers', 0],
|
||||
\ ['singleclick', 0],
|
||||
\ ['sort', 1],
|
||||
\ ['systemenc', &encoding],
|
||||
\ ['width', 40],
|
||||
\ ]
|
||||
|
||||
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
|
||||
for [opt, val] in s:options
|
||||
call s:init_var(opt, val)
|
||||
endfor
|
||||
unlet s:options
|
||||
|
||||
if !exists('g:tagbar_iconchars')
|
||||
if has('multi_byte') && has('unix') && &encoding == 'utf-8' &&
|
||||
@@ -87,17 +81,31 @@ if !exists('g:tagbar_iconchars')
|
||||
endif
|
||||
endif
|
||||
|
||||
if !exists('g:tagbar_autoshowtag')
|
||||
let g:tagbar_autoshowtag = 0
|
||||
endif
|
||||
let s:keymaps = [
|
||||
\ ['jump', '<CR>'],
|
||||
\ ['preview', 'p'],
|
||||
\ ['previewwin', 'P'],
|
||||
\ ['nexttag', '<C-N>'],
|
||||
\ ['prevtag', '<C-P>'],
|
||||
\ ['showproto', '<Space>'],
|
||||
\
|
||||
\ ['openfold', ['+', '<kPlus>', 'zo']],
|
||||
\ ['closefold', ['-', '<kMinus>', 'zc']],
|
||||
\ ['togglefold', ['o', 'za']],
|
||||
\ ['openallfolds', ['*', '<kMultiply>', 'zR']],
|
||||
\ ['closeallfolds', ['=', 'zM']],
|
||||
\
|
||||
\ ['togglesort', 's'],
|
||||
\ ['zoomwin', 'x'],
|
||||
\ ['close', 'q'],
|
||||
\ ['help', '<F1>'],
|
||||
\ ]
|
||||
|
||||
if !exists('g:tagbar_updateonsave_maxlines')
|
||||
let g:tagbar_updateonsave_maxlines = 5000
|
||||
endif
|
||||
|
||||
if !exists('g:tagbar_systemenc')
|
||||
let g:tagbar_systemenc = &encoding
|
||||
endif
|
||||
for [map, key] in s:keymaps
|
||||
call s:init_var('map_' . map, key)
|
||||
unlet key
|
||||
endfor
|
||||
unlet s:keymaps
|
||||
|
||||
augroup TagbarSession
|
||||
autocmd!
|
||||
@@ -105,15 +113,18 @@ augroup TagbarSession
|
||||
augroup END
|
||||
|
||||
" Commands {{{1
|
||||
command! -nargs=0 Tagbar call tagbar#ToggleWindow()
|
||||
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 TagbarOpenAutoClose call tagbar#OpenWindow('fcj')
|
||||
command! -nargs=0 TagbarClose call tagbar#CloseWindow()
|
||||
command! -nargs=1 -bang TagbarSetFoldlevel call tagbar#SetFoldLevel(<args>, <bang>0)
|
||||
command! -nargs=0 TagbarShowTag call tagbar#OpenParents()
|
||||
command! -nargs=0 TagbarShowTag call tagbar#highlighttag(1, 1)
|
||||
command! -nargs=? TagbarCurrentTag echo tagbar#currenttag('%s', 'No current tag', <f-args>)
|
||||
command! -nargs=1 TagbarGetTypeConfig call tagbar#gettypeconfig(<f-args>)
|
||||
command! -nargs=? TagbarDebug call tagbar#StartDebug(<f-args>)
|
||||
command! -nargs=0 TagbarDebugEnd call tagbar#StopDebug()
|
||||
command! -nargs=0 TagbarTogglePause call tagbar#toggle_pause()
|
||||
|
||||
" Modeline {{{1
|
||||
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
|
||||
|
||||
+22
-22
@@ -3,48 +3,45 @@
|
||||
" Author: Jan Larres <jan@majutsushi.net>
|
||||
" Licence: Vim licence
|
||||
" Website: http://majutsushi.github.com/tagbar/
|
||||
" Version: 2.4.1
|
||||
" Version: 2.6
|
||||
|
||||
scriptencoding utf-8
|
||||
|
||||
if exists("b:current_syntax")
|
||||
finish
|
||||
finish
|
||||
endif
|
||||
|
||||
let s:ic = g:tagbar_iconchars[0]
|
||||
if s:ic =~ '[]^\\-]'
|
||||
let s:ic = '\' . s:ic
|
||||
endif
|
||||
let s:io = g:tagbar_iconchars[1]
|
||||
if s:io =~ '[]^\\-]'
|
||||
let s:io = '\' . s:io
|
||||
endif
|
||||
|
||||
let s:pattern = '\([' . s:ic . s:io . '] \)\@<=[^-+: ]\+[^:]\+$'
|
||||
let s:ics = escape(join(g:tagbar_iconchars, ''), ']^\-')
|
||||
let s:pattern = '\(^[' . s:ics . '] \?\)\@<=[^-+: ]\+[^:]\+$'
|
||||
execute "syntax match TagbarKind '" . s:pattern . "'"
|
||||
|
||||
let s:pattern = '\([' . s:ic . s:io . '][-+# ]\)\@<=[^*]\+\(\*\?\(([^)]\+)\)\? :\)\@='
|
||||
let s:pattern = '\(\S\@<![' . s:ics . '][-+# ]\?\)\@<=[^*(]\+\(\*\?\(([^)]\+)\)\? :\)\@='
|
||||
execute "syntax match TagbarScope '" . s:pattern . "'"
|
||||
|
||||
let s:pattern = '[' . s:ic . s:io . ']\([-+# ]\)\@='
|
||||
let s:pattern = '\S\@<![' . s:ics . ']\([-+# ]\?\)\@='
|
||||
execute "syntax match TagbarFoldIcon '" . s:pattern . "'"
|
||||
|
||||
let s:pattern = '\([' . s:ic . s:io . ' ]\)\@<=+\([^-+# ]\)\@='
|
||||
execute "syntax match TagbarAccessPublic '" . s:pattern . "'"
|
||||
let s:pattern = '\([' . s:ic . s:io . ' ]\)\@<=#\([^-+# ]\)\@='
|
||||
execute "syntax match TagbarAccessProtected '" . s:pattern . "'"
|
||||
let s:pattern = '\([' . s:ic . s:io . ' ]\)\@<=-\([^-+# ]\)\@='
|
||||
execute "syntax match TagbarAccessPrivate '" . s:pattern . "'"
|
||||
let s:pattern = '\(\S\@<![' . s:ics . ' ]\)\@<=+\([^-+# ]\)\@='
|
||||
execute "syntax match TagbarVisibilityPublic '" . s:pattern . "'"
|
||||
let s:pattern = '\(\S\@<![' . s:ics . ' ]\)\@<=#\([^-+# ]\)\@='
|
||||
execute "syntax match TagbarVisibilityProtected '" . s:pattern . "'"
|
||||
let s:pattern = '\(\S\@<![' . s:ics . ' ]\)\@<=-\([^-+# ]\)\@='
|
||||
execute "syntax match TagbarVisibilityPrivate '" . s:pattern . "'"
|
||||
|
||||
unlet s:pattern
|
||||
|
||||
syntax match TagbarHelp '^".*' contains=TagbarHelpKey,TagbarHelpTitle
|
||||
syntax match TagbarHelpKey '" \zs.*\ze:' contained
|
||||
syntax match TagbarHelpTitle '" \zs-\+ \w\+ -\+' contained
|
||||
|
||||
syntax match TagbarNestedKind '^\s\+\[[^]]\+\]$'
|
||||
syntax match TagbarComment '^".*'
|
||||
syntax match TagbarType ' : \zs.*'
|
||||
syntax match TagbarSignature '(.*)'
|
||||
syntax match TagbarPseudoID '\*\ze :'
|
||||
|
||||
highlight default link TagbarComment Comment
|
||||
highlight default link TagbarHelp Comment
|
||||
highlight default link TagbarHelpKey Identifier
|
||||
highlight default link TagbarHelpTitle PreProc
|
||||
highlight default link TagbarKind Identifier
|
||||
highlight default link TagbarNestedKind TagbarKind
|
||||
highlight default link TagbarScope Title
|
||||
@@ -57,6 +54,9 @@ highlight default link TagbarHighlight Search
|
||||
highlight default TagbarAccessPublic guifg=Green ctermfg=Green
|
||||
highlight default TagbarAccessProtected guifg=Blue ctermfg=Blue
|
||||
highlight default TagbarAccessPrivate guifg=Red ctermfg=Red
|
||||
highlight default link TagbarVisibilityPublic TagbarAccessPublic
|
||||
highlight default link TagbarVisibilityProtected TagbarAccessProtected
|
||||
highlight default link TagbarVisibilityPrivate TagbarAccessPrivate
|
||||
|
||||
let b:current_syntax = "tagbar"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user