1
0
mirror of https://github.com/gryf/tagbar.git synced 2026-05-10 16:32:58 +02:00

80 Commits

Author SHA1 Message Date
Jan Larres 6d8770f949 Version 2.6 2013-12-06 00:27:08 +13:00
Jan Larres c4963e91cc Update credits 2013-12-06 00:26:00 +13:00
Jan Larres 87bbb46e95 Open previewwin relative to Tagbar win 2013-11-30 19:28:18 +13:00
Jan Larres b4a5800f72 Always centre preview window 2013-11-30 03:31:31 +13:00
Jan Larres ba3693f977 Properly open fold when jumping to tag 2013-11-30 03:18:39 +13:00
Jan Larres 528bdc6b8d Improve preview window handling
Use psearch instead of pedit since pedit essentially reloads the file
and creates an empty undo entry. This also makes it faster.
2013-11-29 18:43:00 +13:00
Jan Larres 2dcd5260b6 Equalize windows after shrinking if necessary, closes #182 2013-11-24 01:21:44 +13:00
Jan Larres 3f28e3b073 Add a note about autocmd timing, closes #180 2013-11-22 17:19:14 +13:00
Jan Larres 915b11bd1c Close preview window when closing Tagbar 2013-11-22 16:43:06 +13:00
Jan Larres e090fe73d1 Automatically open folds in preview window 2013-11-22 16:36:54 +13:00
Jan Larres 574376d165 Add Cython/Pyrex support, closes #181 2013-11-22 14:55:50 +13:00
Jan Larres 66c56b11a7 Clean up window switching 2013-11-15 16:21:12 +13:00
Jan Larres c57dd9f7a4 Make sure QuitIfOnlyWindow also works with prevwin open 2013-11-13 16:53:52 +13:00
Jan Larres f3250b2dd1 Make preview window position configurable 2013-11-13 16:29:42 +13:00
Jan Larres 0377f19d74 Add auto-previewing mode, closes #161 2013-11-11 18:23:22 +13:00
Jan Larres 2d650b96cf Ignore preview window when quitting 2013-11-11 17:39:48 +13:00
Jan Larres 290b71e2b7 Skip preview window when jumping to tag 2013-11-11 17:12:40 +13:00
Jan Larres 78a7eeecf3 Add key to show tag in preview window 2013-11-11 00:53:45 +13:00
Jan Larres 207b8520c2 Allow ignoring specific files, closes #169 2013-11-08 17:27:34 +13:00
Jan Larres 1a2c4ec958 Rework pause functionality, closes #177
The current pause functionality simply removes all the autocommands to
stop updating Tagbar. This has the problem that at the moment the
statusline functions immediately restore the commands so pausing doesn't
work, but even if that didn't happen it would stop the statusline
functionality from working which is not desirable. The solution is to
have a reference to the paused file which will get used by the Tagbar
window, but not the statusline functions.
2013-11-06 22:33:27 +13:00
Jan Larres 0fd09344c7 Don't update during window opening, closes #179
Plugins like MiniBufExplorer can trigger an update before window
initialization has finished, leading to errors. Skip processing until
that is done.
2013-11-06 17:06:39 +13:00
Jan Larres abffaba655 Fix stupid 'if' syntax mistake 2013-11-06 14:11:16 +13:00
Jan Larres 15f9ad6e88 Check for existence of qf var before deleting
Otherwise explicit calling of QuickFixCmdPost autocmds without a
preceding QuickFixCmdPre will generate an error.
2013-11-06 13:27:16 +13:00
Jan Larres b60d08c468 Add comment why BufReadPost is needed 2013-11-05 09:16:58 +13:00
Jan Larres e5408f740f Don't process quickfix-loaded files, closes #176
Certain quickfix-commands like vimgrep have to load all searched files
into Vim and will execute the BufReadPost autocmd for all of them. Since
Tagbar doesn't need to generate tags for those files pause processing
while the command is running.

There doesn't seem to be a better way to find out whether vimgrep is
running than to set a temporary variable with the QuickFixCmdPre/Post
autocmds, see also
https://groups.google.com/forum/#!topic/vim_use/sUj5MFGmwD8
2013-11-04 22:51:38 +13:00
Jan Larres 85c198ba57 Always properly shrink window, closes #172
Closing Tagbar with :q instead of the provided commands and mappings
would bypass the Vim application window shrinking logic. Install an
autocommand that checks for this situation.
2013-11-04 22:30:17 +13:00
Jan Larres 2e2ba2eab2 Use standard highlight group if syntax is disabled
This prevents an error message about a non-existent highlighting group
when trying to match the tag pattern.
2013-11-02 21:51:15 +13:00
Jan Larres fd79a17189 Merge pull request #175 from typekpb/patch-1
fix site url in README.md (com -> io)
2013-09-30 03:02:45 -07:00
Peter Butkovic ae4bbcdaaf fix site url in README.md (com -> io)
due to: https://github.com/blog/1452-new-github-pages-domain-github-io
2013-09-30 09:10:29 +02:00
Jan Larres 3c37ddcc14 Handle invalid ctags line numbers, closes #119 2013-09-19 12:36:41 +12:00
Jan Larres 5566cb34d5 Don't force processing on BufReadPost, closes #170
This prevents files being processed twice unnecessarily, once for
FileType and once for BufReadPost. All cases where BufReadPost is called
without FileType should be covered by the checks in AutoUpdate().
2013-09-18 17:44:52 +12:00
Jan Larres 97d7b04bdd Add xterm-resize reference 2013-08-30 17:20:51 +12:00
Jan Larres 4801c897f8 Try expanding a terminal if configured 2013-08-30 16:57:27 +12:00
Jan Larres 24efd12f50 Add option to show line numbers, closes #146 2013-08-24 21:45:10 +12:00
Jan Larres fec9b2a1ab Add status_func documentation 2013-08-24 21:25:54 +12:00
Jan Larres 56cd34830d Remove deprecated GenerateStatusline() function 2013-08-24 20:50:27 +12:00
Jan Larres 0b14e28719 Merge branch 'stltest' 2013-08-24 19:17:13 +12:00
Jan Larres 225fcaa3ce Log ctags version 2013-08-24 18:38:04 +12:00
Jan Larres dab8d99fb8 Print message if no tags have been found in file 2013-08-24 17:57:33 +12:00
Jan Larres a566f7141f Echo message if ctags output is empty 2013-08-24 17:40:12 +12:00
Jan Larres 7ef2dd0ef1 Log error messages with ctags output 2013-08-23 18:02:24 +12:00
Jan Larres 84d65042fa Remove commented out statusline calls 2013-08-22 19:06:28 +12:00
Jan Larres c37d783d4f Make keybindings configurable, closes #159 2013-08-22 17:38:31 +12:00
Jan Larres 7ec151a7a9 Better quickhelp syntax highlighting 2013-08-22 17:01:19 +12:00
Jan Larres e97d2c00ad Simplify option initialization 2013-08-22 13:16:46 +12:00
Jan Larres 57acb383b6 Statusline tweaks 2013-08-21 18:28:40 +12:00
Jan Larres 495e5fcb08 Allow customizing the statusline 2013-08-21 17:50:03 +12:00
Jan Larres 746771801c Log exact shell command for debug 2013-08-21 02:44:31 +12:00
Jan Larres 824767bc48 Small debug clarification in docs 2013-08-20 00:40:21 +12:00
Jan Larres 57ee79bd4c Mention the wiki in the README 2013-07-30 16:02:35 +12:00
Jan Larres a217435f50 Remove autocmds when not needed, closes #153
When the Tagbar window gets closed and the statusline functionality is
not in use, remove the autocommands to prevent unnecessary ctags calls.
2013-07-30 11:38:46 +12:00
Jan Larres 2bacadf716 Merge pull request #157 from mmcclimon/doc_fontchars
Fix for confusing font character example.
2013-07-22 16:29:36 -07:00
Michael McClimon e4fda667f9 Fix for confusing font character example. 2013-07-22 11:47:45 -04:00
Jan Larres 5732ce9bd6 Simplify sort method 2013-07-17 16:50:02 +12:00
Jan Larres f36e0d3d39 Always correctly show sort order 2013-07-17 16:49:22 +12:00
Jan Larres dacf4f273e Add Tagbar command as alias for TagbarToggle, closes #151 2013-06-25 18:12:25 +12:00
Jan Larres 82a932406f Make autoshowtag more flexible, closes #152 2013-06-25 16:33:36 +12:00
Jan Larres 2ebd2a1392 Escape quotes in path filters, closes #150 2013-06-03 17:38:02 +12:00
Jan Larres ca02374f40 Merge pull request #147 from zhaocai/master
Export tagbar#currentfile() function
2013-06-02 21:56:10 -07:00
Jan Larres a93fb868d8 Restore windows properly after zooming 2013-05-20 15:18:57 +12:00
Zhao Cai 070a75cb04 Export tagbar#currentfile() function 2013-05-15 08:00:08 -04:00
Jan Larres 24915dbe24 Handle non-existent project autocmds properly, closes #145 2013-05-06 18:49:19 +12:00
Jan Larres f5435678fb Expand deffile path 2013-04-30 10:12:02 +12:00
Jan Larres 3ecdb5028d Try to distinguish between equal alternative tags, closes #139 2013-04-29 16:49:17 +12:00
Jan Larres d0d307c9bd Convert remaining call to CreateTypeKinddict(), closes #142 2013-04-26 19:33:00 +12:00
Jan Larres f0f9d66465 Move tests into separate repository 2013-04-24 15:57:22 +12:00
Jan Larres e6e084e8b0 Re-enable BufReadPost event 2013-04-24 12:10:33 +12:00
Jan Larres cde257b1bc Merge branch 'inkarkat-enh-syntax' 2013-04-24 11:33:40 +12:00
Jan Larres 54b28e4988 Fix TagbarScope pattern 2013-04-24 11:33:30 +12:00
Jan Larres 7c0d8675b5 Make createKinddict() an instance method 2013-04-24 10:45:46 +12:00
Jan Larres acca348959 Allow project-specific type config 2013-04-24 10:45:46 +12:00
Jan Larres 1c605bd958 Merge pull request #135 from darcyparker/issue133_ctagsbin
Improved `s:EscapeCtagsCmd()` for windows `cmd.exe` to eliminate issues when `a:ctags_bin` calls a batch file that uses `%~dp0`.
2013-04-23 04:19:09 -07:00
Ingo Karkat 2665695f57 FIX: Avoid matching public / private methods as TagbarKind.
When g:tagbar_iconchars = ['+', '-'] (default on Windows), and viewing a filetype (e.g. java) that has visibility information (i.e. the [-+#] sigils), the method is mistakenly highlighted as TagbarKind. Restrict its matches to when the sigil is at the beginning of the line to avoid the false matches at the indented method tags.
2013-04-12 21:22:27 +02:00
Ingo Karkat 32b5b15b52 FIX: Avoid that the sigils used for highlighting match inside a tag.
When there's a tag e.g. "foo-bar", the "-bar" part is matched as TagbarKind. Add a zero-width condition to all sigil patterns that allow only whitespace characters before the sigil.
2013-04-12 21:14:23 +02:00
Ingo Karkat 87d293206b Simplify conversion of g:tagbar_iconchars into regexp.
With join() and escape(), the steps can be simplified.
2013-04-12 20:48:08 +02:00
Darcy Parker 93f2b68166 Removed unnecessary | around 'shell' 2013-04-08 09:21:15 -04:00
Jan Larres db9404ca1a Add tests to repository 2013-04-06 00:59:14 +13:00
Jan Larres b6f47e4020 Simplify getusertypes() function 2013-04-05 11:57:57 +13:00
Jan Larres ec0eb883dc Recognize racket as scheme, closes #134 2013-04-04 19:06:42 +13:00
Darcy Parker d0df97040b Improved s:EscapeCtagsCmd() for windows cmd.exe to eliminate issues when
a:ctags_bin calls a batch file that uses %~dp0. Changes include:
- Enable ctags_args to be a list
- Changed default ctags_args to be a list to improve robustness of
  s:EscapeCtagsCmd()
- Do not escape 0th argument of ctags_cmd for cmd.exe when it is not
  necessary because otherwise batch files may not return expected value
  for %~dp0
- Updated tagbar documentation about string and list value types for
  ctags_args
See https://github.com/majutsushi/tagbar/issues/133
2013-04-02 17:57:30 -04:00
5 changed files with 963 additions and 439 deletions
+4 -1
View File
@@ -3,8 +3,11 @@
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.
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
+693 -357
View File
File diff suppressed because it is too large Load Diff
+196 -13
View File
@@ -3,7 +3,7 @@
Author: Jan Larres <jan@majutsushi.net>
Licence: Vim licence, see |license|
Homepage: http://majutsushi.github.com/tagbar/
Version: 2.5
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|
@@ -261,14 +262,15 @@ 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 fjc".
:TagbarTogglePause *:TagbarTogglePause*
Freezes/Unfreezes the Tagbar window. Stops the contents of the window
Freezes/Unfreezes the Tagbar window. Stops the contents of the window
from changing when a different source file is selected.
:TagbarSetFoldlevel[!] {number} *:TagbarSetFoldlevel*
@@ -298,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.
@@ -308,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*
@@ -443,12 +473,31 @@ 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:
>
@@ -492,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)
<
@@ -501,17 +550,50 @@ 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_previewwin_pos*
g:tagbar_previewwin_pos~
Default: topleft
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_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~
@@ -535,6 +617,33 @@ 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*
@@ -663,6 +772,18 @@ 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*
@@ -793,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
@@ -961,6 +1101,30 @@ 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:
@@ -1067,6 +1231,20 @@ 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
@@ -1219,11 +1397,16 @@ 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
+54 -49
View File
@@ -4,7 +4,7 @@
" Author: Jan Larres <jan@majutsushi.net>
" Licence: Vim licence
" Website: http://majutsushi.github.com/tagbar/
" Version: 2.5
" 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,49 +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_indent')
let g:tagbar_indent = 2
endif
if !exists('g:tagbar_show_visibility')
let g:tagbar_show_visibility = 1
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' &&
@@ -95,13 +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_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!
@@ -109,6 +113,7 @@ 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('fcj')
@@ -119,7 +124,7 @@ command! -nargs=? TagbarCurrentTag echo tagbar#currenttag('%s', 'No current t
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#PauseAutocommands()
command! -nargs=0 TagbarTogglePause call tagbar#toggle_pause()
" Modeline {{{1
" vim: ts=8 sw=4 sts=4 et foldenable foldmethod=marker foldcolumn=1
+16 -19
View File
@@ -3,48 +3,45 @@
" Author: Jan Larres <jan@majutsushi.net>
" Licence: Vim licence
" Website: http://majutsushi.github.com/tagbar/
" Version: 2.5
" 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 . ' ]\)\@<=+\([^-+# ]\)\@='
let s:pattern = '\(\S\@<![' . s:ics . ' ]\)\@<=+\([^-+# ]\)\@='
execute "syntax match TagbarVisibilityPublic '" . s:pattern . "'"
let s:pattern = '\([' . s:ic . s:io . ' ]\)\@<=#\([^-+# ]\)\@='
let s:pattern = '\(\S\@<![' . s:ics . ' ]\)\@<=#\([^-+# ]\)\@='
execute "syntax match TagbarVisibilityProtected '" . s:pattern . "'"
let s:pattern = '\([' . s:ic . s:io . ' ]\)\@<=-\([^-+# ]\)\@='
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