Commit Graph

411 Commits

Author SHA1 Message Date
Bruce Weirdan
6e1f1b8c85 Added interface and trait scopes
* Added interface and trait scopes that were missing from the previous
commit.
 * Also restored fold status for classes kind to upstream value.
2017-08-20 17:24:26 +12:00
Bruce Weirdan
7ffec4539d Added php scopes and additional kinds
Added scopes, so tagbar will show the following hierarchy:
```
  namespace
    subnamespace
      ...
        class
	  property (variable)
	  ...
	  method
	  ...
```

Additional kinds added (basically the same as #283):
 * namespaces
 * use aliases (imports)
 * traits
2017-08-20 17:24:26 +12:00
Jan Larres
f20edb5a56 Rename types autoload directory 2017-08-20 17:11:37 +12:00
Jan Larres
877a4a939c Extract debug functionality into separate file 2017-08-20 17:02:36 +12:00
Jan Larres
8a1bbcb420 Create kinddict for jsctags type def
Closes #431
Closes #432
2017-08-19 18:14:21 +12:00
Jan Larres
fef0732394 Separate {ex,u}ctags definitions out into individual files 2017-08-14 21:18:02 +12:00
Jan Larres
2abcbf33f0 Extract prototypes to separate autoload files 2017-08-14 21:18:02 +12:00
AdnoC
96275e3921 Reduce code dupication in ChangeFoldLevel 2017-07-30 12:11:31 -04:00
AdnoC
e3732091bf Add ability to open or close folds a single level 2017-07-26 10:18:18 -04:00
Jolan
b7890e27ca compatibility with phpctags 2017-06-27 15:15:46 +02:00
Jan Larres
f5792732de Escape tag name when removing it from a pseudo tag's scope path 2017-06-15 17:36:38 +12:00
Jan Larres
b1c6cbc2d8 Short-circuit parent searches if tag doesn't have line number 2017-06-15 17:36:38 +12:00
Jan Larres
41ee79fc0f Escape tag search pattern with \M instead of \V
This follows the Vim manual in |tag-search|, which says that searches
are executed as if 'magic' was off.
2017-06-15 17:36:38 +12:00
Jan Larres
b9e7b51ea5 Fix jsctags config, closes #421
This seems to be different for the tern-based jsctags, and the old one
is deprecated anyway.
2017-06-15 17:35:38 +12:00
Jan Larres
87a1263f5d Don't try to restore session on 'loadview', closes #382
The view files created with the 'mkview' command run the
'SessionLoadPost' autocommand at the end, which creates problems if
Tagbar has alread been initialized. Add a new variable so that we can
detect this situation.
2017-06-05 17:24:55 +12:00
Jan Larres
959f487981 Functions create class scope in exctags, ref #397 2017-02-18 16:43:16 +13:00
Jan Larres
e089b61e25 Don't error on incorrect ctags scope info, ref #397 2017-02-18 16:32:30 +13:00
Jan Larres
9d051c1e2d Handle cases where parent is below child tag, closes #396 2017-02-12 21:39:13 +13:00
Jan Larres
aab5f214c5 Save ctags output in separate file when debugging 2017-02-11 17:40:24 +13:00
Jan Larres
68eebbb50c Update tags on CursorHold after writing
Currently the tags will always get updated immediately when writing a
file. However, for large files that can slow down the writing process
noticeably, leading to annoying pauses. This commit instead defers the
updating process to the first CursorHold/CursorHoldI event after writing
a file, which should make the process much less noticeable.

Closes #289
Closes #381
References SpaceVim/SpaceVim#129
2017-02-05 19:06:20 +13:00
Jan Larres
72a7ef378f Add name-indexed dicts of tags alongside lists
When constructing the tag tree it is often necessary to look up tags
with a certain name and other attributes at the current depth. This was
previously done with the filter() function on the list of all the
relevant tags. However, this filtering is very slow.

This commit changes the FileInfo and TagInfo objects to save added tags
in a dictionary indexed by the name of the tag in addition to the list
(which is still maintained in parallel since it is necessary for things
like sorting). This significatly speeds up tag lookup since most tags
have unique names.
2017-02-04 19:02:54 +13:00
Jan Larres
9ca422ce09 Rewrite tree construction algorithm
The current algorithm for contructing the tag tree works pretty well
even when pseudo-tags are encountered, but is quite complex, hard to
understand, and hard to tweak and optimize. This commit rewrites the
algorithm to a relatively straight-forward recursive algorithm that
makes use of placeholder pseudo-tags if required that will get replaced
if the actual tag is encountered later.
2017-02-04 18:59:06 +13:00
Jan Larres
2cc891747b Print tags in one go to improve performance
Assembling the tag information in a list and then printing it with one
":put" command is more efficient then calling :put for every line.
2017-01-29 18:23:15 +13:00
Jan Larres
ebcf4df686 Small code cleanup 2017-01-10 18:24:32 +13:00
Jan Larres
53e9cb030e Version 2.7 2017-01-09 17:26:17 +13:00
Jan Larres
1c8feee61f Skip languages that are disabled in ctags 2017-01-05 17:12:33 +13:00
Jan Larres
6c60f85938 Fix typo 2017-01-05 16:49:40 +13:00
Jan Larres
18b536ce43 Save last alt bufnr before switching buffers, closes #385
When switching buffers during the handling of the BufDelete event the
saved buffer number of the last alternate buffer will change, so we have
to save a local copy to be able to properly unset the 'tagbar_ignore'
buffer variable.
2017-01-03 15:21:10 +13:00
Martin Vuille
9f6dce3351 HandleBufDelete: Use str2nr for conversion 2016-12-27 08:05:35 -05:00
Martin Vuille
5b563a0d2d HandleBufDelete: Ignore apparent 'set nobuflisted' events 2016-12-18 11:35:00 -05:00
Jan Larres
1374077676 Always log the ctags version output 2016-12-17 18:01:49 +13:00
Jan Larres
01f57ac564 Disable autocommands when deleting Tagbar buffer in HandleOnlyWindow
This prevents infinite recursion with nested autocommands when using a
BufEnter autocommand that calls autoopen().
2016-11-07 12:45:17 +13:00
Jan Larres
e212be6a12 Resize window after opening, ref #246
This prevents an incorrect window size from being used in some edge
cases.
2016-11-05 19:22:23 +13:00
Chesley Tan
8bbbb0530e Escape filename in ShowInPreviewWin() 2016-11-03 12:57:26 -04:00
Jan Larres
1287f63545 Display filetype-specific sort in statusline, closes #292 2016-10-31 17:52:36 +13:00
Jan Larres
d2961a4677 Check for nonexistent variable, closes #357 2016-10-31 09:59:32 +13:00
Jan Larres
56bee63e17 Only jump to previous window if there is one, closes #355 2016-10-29 17:29:40 +13:00
Jan Larres
2d67896b06 Add debug statement with exit code after system() call 2016-10-24 18:13:27 +13:00
Jan Larres
bcb042da56 Improve HTML support with Universal Ctags, closes #317 2016-10-23 20:31:35 +13:00
Jan Larres
d16ec1198b Don't consider file as valid if its window is in diff mode 2016-10-23 20:09:46 +13:00
Jan Larres
a1f416edde Define mappings with <nowait> if available, closes #299 2016-10-22 02:02:27 +13:00
Jan Larres
040e8400af Print exit code when failing to run ctags 2016-10-21 17:43:47 +13:00
Anmol Sethi
b99e103258 Silent option
If the silent option is set, tagbar doesn't echo out information about
the tag the cursor is on in the tagbar window.
2016-10-19 12:58:40 +13:00
Jan Larres
b6298c0ca0 Use window ID functionality if available, ref #351
When opening the Tagbar window the window numbers can change so that
restoring the window history is not possible. Use the new window ID
functionality if it is available to make that possible.
2016-10-17 23:08:18 +13:00
Jan Larres
4d513c8a68 Also restore window history when opening Tagbar, ref #319 2016-10-16 23:19:42 +13:00
Jan Larres
23557ef97a Always restore the window history, closes #319
When we have to go to the Tagbar window to update it the knowledge of
the previous window to the one we're coming from gets lost. Save it
before switching windows so we can restore it after returning from the
Tagbar window.
2016-10-16 23:02:18 +13:00
Jan Larres
2954e405bb Merge pull request #349 from vavaka/master
flags argument added to functions responsible for window toggling
2016-10-16 12:09:29 +13:00
Jan Larres
3566907b57 Only use QuitPre functionality if supported, closes #350
The QuitPre autocommand was introduced in Vim version 7.3.544. If Vim is
older than this then don't use the HandleOnlyWindow() functionality, so
in the case of closing the last window in a tab a user will have to
close the Tagbar window themselves.
2016-10-15 20:20:03 +13:00
Jan Larres
a43068e418 Fix quit/bdelete cases properly
This commit should (hopefully) finally fix the case of users calling
':bdelete/:bwipeout' or ':quit' while Tagbar is open and just do the
right thing. See commit e4cfe8a for a more thorough description of how
it's supposed to work.
2016-10-15 20:13:28 +13:00
Jan Larres
b6a0ec00cd Only suspend Tagbar during 'grep' qf commands, closes #347 2016-10-12 14:16:37 +13:00
vavaka
11cdebab2a flags argument added to functions responsible for window toggling 2016-10-11 13:41:01 +06:00
Jan Larres
0bb6499548 Rename QuitIfOnlyWindow since it's no longer accurate 2016-10-10 21:51:14 +13:00
Jan Larres
e4cfe8add5 Properly handle closing the last file window, closes #345
When a window that is displaying a normal file gets closed with a :quit,
:bdelete or other command, Tagbar may end up as the only visible window
left, which isn't very useful. Previously Tagbar would just quit in such
a situation (unless there was more than one tab), but that is rather
non-intuitive.

The change in this commit introduces a mechanism that should hopefully
handle such a case properly based on which command was executed, and do
exactly what a user would expect:

- In the ':quit' case, it will close the current tabpage including
  Tagbar unless it was the only tabpage, in which case it will quit Vim.
- In the ':bdelete/:bwipeout' case, it will delete the Tagbar buffer and
  then reopen Tagbar once the buffer that Vim switched to is being
  displayed.
2016-10-09 21:03:01 +13:00
Jan Larres
497e963bc4 Separate buffer- and window-local options 2016-10-09 19:02:26 +13:00
Martin Vuille
321fdd4fd1 Don't close new tab 2016-09-28 06:20:25 -04:00
Martin Vuille
b1e1063b37 Clean-up for pull request 2016-09-24 18:40:44 -04:00
Martin Vuille
1e5b704e09 Give each tab its own tagbar instance data 2016-09-24 17:49:35 -04:00
Martin Vuille
7c56066685 Give each tab its own tagbar buffer 2016-09-24 17:48:52 -04:00
Martin Vuille
7e35a40715 Separate shared and per-tagbar instance data 2016-09-24 17:45:07 -04:00
Jan Larres
2955f71856 Try to jump to the right tag column, closes #326 2016-09-25 00:24:04 +12:00
Joe Grasse
d61ca60d1c Verify that window number is valid before switching to it 2016-09-23 15:32:35 +12:00
Jan Larres
9a75c110b7 Don't choke when run from netrw, closes #291 2016-09-20 23:30:18 +12:00
Jan Larres
b7f147aabc Remove redundant SetStatusLine argument, ref #335
Thank you to @jpmv27 for spotting this.
2016-09-19 23:10:10 +12:00
Jan Larres
61ba5ba578 Merge pull request #333 from jpmv27/case_insensitive_sort_option
Add case-insensitive sort option
2016-09-19 23:04:02 +12:00
Jan Larres
71e56f5ea4 Merge pull request #334 from jpmv27/restore_cursor_tag_toggle_hide
Keep cursor on same tag when toggle hide non-public
2016-09-17 20:40:43 +12:00
Jan Larres
03592c0112 Update the statusline at the end of AutoUpdate(), closes #330 2016-09-13 22:45:52 +12:00
Jan Larres
2438a92cb9 Merge pull request #338 from alejandrogallo/master
Add asymptote support as a c clone
2016-09-12 12:52:18 +12:00
Jan Larres
d841db9f49 Fix file-scope tags in uctags, closes #314 2016-09-12 12:39:12 +12:00
Alejandro Gallo
61de1fe0d6 Add asymptote support as a c clone 2016-09-10 17:22:30 +02:00
Jan Larres
35ee5a91f9 Fix Python member functions with Universal Ctags, closes #306 2016-09-10 21:02:09 +12:00
Martin Vuille
f8587f106c Keep cursor on same tag when toggle hide non-public 2016-08-27 18:21:06 -04:00
Martin Vuille
7fbd1ad375 Add case-insensitive sort option 2016-08-27 18:14:10 -04:00
Jan Larres
7b36c46d17 Change mentions of GNU ctags to BSD ctags 2015-06-19 11:42:35 +12:00
Dmytro Konstantinov
d01d7e7546 Fixed compatibility with Universal Ctags
This commit fixes tagbar compatibility issues with the
[universal-ctags](/universal-ctags/ctags), which is the most active and
consistently updated fork of the old exuberant ctags.
2015-06-11 11:31:08 +01:00
Dan Church
40be9a2e5f Suppress status-line output when executing shell
Failing to suppress output can cause problems in some environments,
especially if the shell command fails or does something else spooky.

Example where failing to suppress the shell command causes issues with
[vim-airline](https://github.com/bling/vim-airline) with the tagbar
extension enabled:

![](http://i.imgur.com/ciigs8C.png)

Here's another example:

![](http://i.imgur.com/cl96sI8.png)

Both were taken using uxterm in Linux.
2015-04-24 17:44:58 -05:00
Jan Larres
c6b473f559 Handle wrong rtp more gracefully
If the runtimepath has been set incorrectly and the autoload file is
getting loaded by something, then the code won't be able to load the
"plugin" file. Print a warning message and stop loading the file instead
of throwing lots of errors.
2015-04-05 20:14:56 +12:00
Jan Larres
8a8e85436d Merge pull request #258 from michaeltanner/master
Adds CUDA support (identical to C++)
2015-04-05 19:30:24 +12:00
Jan Larres
3634e7ab4f Support 'kind' field with name, ref #254 2015-03-17 19:35:42 +13:00
Jan Larres
eb392a4502 Check for fish instead of resetting shell unconditionally 2015-02-23 15:14:35 +13:00
Jan Larres
a284cd0091 Always log ctags output when execution fails 2015-02-16 18:49:07 +13:00
Michael Tanner
c21176d8da Adds CUDA support (identical to C++) 2015-02-08 21:27:38 +00:00
Jan Larres
00dfa82b00 Fix prefix for tags with both access and file fields 2015-02-02 16:30:10 +13:00
Yecheng Fu
e62d3444e9 add '-' flag before static functions in c 2015-02-02 16:21:10 +13:00
Jan Larres
04bb728039 Replace help mapping in short help, closes #245 2015-01-26 12:37:53 +13:00
Jan Larres
fcac7f2936 Don't try to jump to winnr 0, ref #244 2015-01-13 22:32:30 +13:00
Jan Larres
4fa15349c5 Small cleanups 2014-12-10 15:34:14 +13:00
Jan Larres
f9c5f24576 Don't skip over closed folds with zk 2014-11-26 14:52:54 +13:00
Jan Larres
df09799372 Add mappings for moving through folds, closes #224 2014-11-09 17:33:42 +13:00
Jan Larres
f933907afa Add option to arrange Tagbar window vertically 2014-11-08 21:30:17 +13:00
Jan Larres
5283bc834a Reprocess files if filetype changes, closes #228 2014-11-02 17:44:38 +13:00
Jan Larres
5d1ae684a1 Better JavaScript ctags config, courtesy of David Fishburn 2014-10-28 16:49:16 +13:00
Jan Larres
5c33e09d68 Add simple inspect() debug function 2014-10-27 22:38:59 +13:00
Jan Larres
251c774431 Don't assume all types define 'ctagstype' 2014-10-27 22:37:17 +13:00
Jan Larres
37400d9950 Make errors less fatal, closes #215
Instead of using 'echoerr' and essentially breaking the plugin after
that problems are now reported as warnings with 'echomsg'. They will
also only be shown once for a particular problem.
2014-10-27 22:35:19 +13:00
Jan Larres
64e935fe58 Small preview window improvements, ref #161 2014-10-14 15:59:29 +13:00
Jan Larres
b54d8d64f1 Handle unloaded buffers when getting prototype, closes #222 2014-10-14 11:19:08 +13:00
Jan Larres
76f16f891b Return pattern for prototype if linenr is not available, closes #219 2014-10-11 18:37:21 +13:00
Jan Larres
032fd1fbb3 Reset 'shell' to improve compatibility 2014-10-09 11:31:19 +13:00
Jan Larres
59c9b7ce1c Don't skip over unmodifiable buffers, closes #213
Skipping over unmodifiable buffers when checking for Tagbar being the
last window got introduced in #117, but I don't think it is actually
necessary.
2014-06-25 18:43:09 +12:00
Jan Larres
5e392c1b8d Add inline help for toggleautoclose mapping 2014-06-25 17:58:36 +12:00
Jan Larres
ca1c9ee2e2 Add mapping to toggle autoclose option
The current tagbar_autoclose state will be displayed in the statusline.
Also change the "hide nonpublic" flag to "v" to match the mapping and
properly document the statusline flags.
2014-06-25 17:52:43 +12:00
dogura
a9ec78aa5b specify a option is disable append mode
Because append mode is not allow that to output result on stdout.
2014-05-01 14:33:31 +09:00
Jan Larres
ae46cc025b Better mapping init, closes #203
If someone already has a function that includes "JumpToTag" in its name
then the current method of detecting whether mappings should be
initialized would fail. Use a buffer-local variable instead.
2014-04-05 19:09:09 +13:00
Jan Larres
0181f1d0cd Log typeinfo of newly processed file 2014-04-04 18:37:47 +13:00
Jan Larres
a5220adc9a Better fileinfo removal logging 2014-04-04 01:08:12 +13:00
Jan Larres
fabae6a11d Log fileinfo removal 2014-04-04 01:01:53 +13:00
Jan Larres
2bc6e96ae4 Rename debug log function 2014-04-04 00:39:26 +13:00
Jan Larres
8a139e0576 Better timestamps 2014-04-04 00:31:27 +13:00
Jan Larres
be46ee5988 Don't remove fileinfo on BufUnload
If 'hidden' is not set then BufUnload is called every time a buffer
would get hidden, removing the fileinfo. This causes unnecessary ctags
processing of files.
2014-04-01 00:53:18 +13:00
Jan Larres
b2c5f0b928 Keep cursor on current tag when sorting, closes #200 2014-03-22 01:09:30 +13:00
Jan Larres
fdceb4ea71 Add ? as help key, closes #194 2014-02-28 13:51:48 +13:00
Jan Larres
3fdefbaa47 Add documentation for hide_nonpublic
Also indicate in the statusline if non-public tags are currently hidden.
2014-02-10 17:10:43 +13:00
Jan Larres
368d37ed45 Allow hiding non-public tags, closes #186 2014-02-05 18:08:04 +13:00
Jan Larres
13d4cfcc2c Remove some duplication 2014-02-05 15:30:19 +13:00
Jan Larres
42ce2919a3 Allow configuring zoom, closes #189 2014-02-04 18:00:27 +13:00
Jan Larres
836a39af8f Jump to correct window even after opening preview window 2014-02-01 21:17:00 +13:00
Jan Larres
0ead3332a9 Extract GetFileWinnr() function 2014-02-01 20:49:11 +13:00
Jan Larres
e872e67641 Version 2.6.1 2014-01-23 23:17:00 +13:00
Jan Larres
b610fb2f5d Restore previous window, closes #190 2014-01-21 15:59:51 +13:00
Jan Larres
ace45adc51 Don't let ctags sort tags, closes #187
Ctags seems to call an external 'sort' which can apparently fail in some
cases with Cygwin. Since we sort the tags ourselves anyway just disable
it.
2013-12-25 19:07:31 +13:00
Jan Larres
88d7464079 Close prevwin when jumping to tag, closes #184 2013-12-19 11:54:59 +13:00
Jan Larres
dbc05b24a3 Fix getCurrent() call for kind headers, closes #185 2013-12-09 16:30:38 +13:00
Jan Larres
6d8770f949 Version 2.6 2013-12-06 00:27:08 +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
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
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
4801c897f8 Try expanding a terminal if configured 2013-08-30 16:57:27 +12:00