annotate plugin/gutentags.vim @ 88:073e63cc0456

Add `gutentags_enabled_user_func` callback.
author Ludovic Chabant <ludovic@chabant.com>
date Tue, 24 Nov 2015 21:47:26 -0800
parents 0424970d81f8
children 8bf96f9f649c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
1 " gutentags.vim - Automatic ctags management for Vim
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
2 " Maintainer: Ludovic Chabant <http://ludovic.chabant.com>
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
3 " Version: 0.0.1
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
4
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
5 " Globals {{{
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
6
51
fa250d179090 Lower the version requirement a bit since it seem to actually work on 7.3.
Ludovic Chabant <ludovic@chabant.com>
parents: 50
diff changeset
7 if v:version < 700
fa250d179090 Lower the version requirement a bit since it seem to actually work on 7.3.
Ludovic Chabant <ludovic@chabant.com>
parents: 50
diff changeset
8 echoerr "gutentags: this plugin requires vim >= 7.0."
50
ea7780912296 Check for Vim 7.4 since bug reports indicate Gutentags may not work in 7.3.
Ludovic Chabant <ludovic@chabant.com>
parents: 46
diff changeset
9 finish
ea7780912296 Check for Vim 7.4 since bug reports indicate Gutentags may not work in 7.3.
Ludovic Chabant <ludovic@chabant.com>
parents: 46
diff changeset
10 endif
ea7780912296 Check for Vim 7.4 since bug reports indicate Gutentags may not work in 7.3.
Ludovic Chabant <ludovic@chabant.com>
parents: 46
diff changeset
11
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
12 if !exists('g:gutentags_debug')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
13 let g:gutentags_debug = 0
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
14 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
15
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
16 if (exists('g:loaded_gutentags') || &cp) && !g:gutentags_debug
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
17 finish
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
18 endif
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
19 if (exists('g:loaded_gutentags') && g:gutentags_debug)
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
20 echom "Reloaded gutentags."
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
21 endif
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
22 let g:loaded_gutentags = 1
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
23
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
24 if !exists('g:gutentags_trace')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
25 let g:gutentags_trace = 0
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
26 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
27
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
28 if !exists('g:gutentags_fake')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
29 let g:gutentags_fake = 0
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
30 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
31
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
32 if !exists('g:gutentags_background_update')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
33 let g:gutentags_background_update = 1
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
34 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
35
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
36 if !exists('g:gutentags_pause_after_update')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
37 let g:gutentags_pause_after_update = 0
11
478638833c3b Fix Win32 update script, add option to pause it.
Ludovic Chabant <ludovic@chabant.com>
parents: 10
diff changeset
38 endif
478638833c3b Fix Win32 update script, add option to pause it.
Ludovic Chabant <ludovic@chabant.com>
parents: 10
diff changeset
39
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
40 if !exists('g:gutentags_enabled')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
41 let g:gutentags_enabled = 1
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
42 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
43
88
073e63cc0456 Add `gutentags_enabled_user_func` callback.
Ludovic Chabant <ludovic@chabant.com>
parents: 85
diff changeset
44 if !exists('g:gutentags_enabled_user_func')
073e63cc0456 Add `gutentags_enabled_user_func` callback.
Ludovic Chabant <ludovic@chabant.com>
parents: 85
diff changeset
45 let g:gutentags_enabled_user_func = ''
073e63cc0456 Add `gutentags_enabled_user_func` callback.
Ludovic Chabant <ludovic@chabant.com>
parents: 85
diff changeset
46 endif
073e63cc0456 Add `gutentags_enabled_user_func` callback.
Ludovic Chabant <ludovic@chabant.com>
parents: 85
diff changeset
47
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
48 if !exists('g:gutentags_modules')
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
49 let g:gutentags_modules = ['ctags']
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
51
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
52 if !exists('g:gutentags_project_root')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
53 let g:gutentags_project_root = []
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
54 endif
77
892da510cdd2 Add default project root markers for Fossil (https://www.fossil-scm.org)
pitchforks <pitchforks@users.noreply.github.com>
parents: 54
diff changeset
55 let g:gutentags_project_root += ['.git', '.hg', '.svn', '.bzr', '_darcs', '_FOSSIL_', '.fslckout']
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
56
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
57 if !exists('g:gutentags_exclude')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
58 let g:gutentags_exclude = []
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
59 endif
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
60
85
0424970d81f8 Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
Ludovic Chabant <ludovic@chabant.com>
parents: 78
diff changeset
61 if !exists('g:gutentags_resolve_symlinks')
0424970d81f8 Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
Ludovic Chabant <ludovic@chabant.com>
parents: 78
diff changeset
62 let g:gutentags_resolve_symlinks = 0
0424970d81f8 Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
Ludovic Chabant <ludovic@chabant.com>
parents: 78
diff changeset
63 endif
0424970d81f8 Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
Ludovic Chabant <ludovic@chabant.com>
parents: 78
diff changeset
64
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
65 if !exists('g:gutentags_generate_on_new')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
66 let g:gutentags_generate_on_new = 1
14
b8f23bf7b20f Ability to (re)generate tags when opening a new project.
Ludovic Chabant <ludovic@chabant.com>
parents: 11
diff changeset
67 endif
b8f23bf7b20f Ability to (re)generate tags when opening a new project.
Ludovic Chabant <ludovic@chabant.com>
parents: 11
diff changeset
68
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
69 if !exists('g:gutentags_generate_on_missing')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
70 let g:gutentags_generate_on_missing = 1
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
71 endif
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
72
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
73 if !exists('g:gutentags_generate_on_write')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
74 let g:gutentags_generate_on_write = 1
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
75 endif
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
76
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
77 if !exists('g:gutentags_cache_dir')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
78 let g:gutentags_cache_dir = ''
19
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
79 else
76
fa749380e05a Make sure we expand the cache directory before we auto-create it.
Ludovic Chabant <ludovic@chabant.com>
parents: 75
diff changeset
80 " Make sure we get an absolute/resolved path (e.g. expanding `~/`), and
fa749380e05a Make sure we expand the cache directory before we auto-create it.
Ludovic Chabant <ludovic@chabant.com>
parents: 75
diff changeset
81 " strip any trailing slash.
fa749380e05a Make sure we expand the cache directory before we auto-create it.
Ludovic Chabant <ludovic@chabant.com>
parents: 75
diff changeset
82 let g:gutentags_cache_dir = fnamemodify(g:gutentags_cache_dir, ':p')
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
83 let g:gutentags_cache_dir = fnamemodify(g:gutentags_cache_dir, ':s?[/\\]$??')
19
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
84 endif
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
85
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
86 if !exists('g:gutentags_define_advanced_commands')
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
87 let g:gutentags_define_advanced_commands = 0
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
88 endif
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
89
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
90 if g:gutentags_cache_dir != '' && !isdirectory(g:gutentags_cache_dir)
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
91 call mkdir(g:gutentags_cache_dir, 'p')
19
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
92 endif
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
93
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
94 if has('win32')
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
95 let g:gutentags_plat_dir = expand('<sfile>:h:h:p') . "\\plat\\win32\\"
75
d12543f11eb9 Move the default `-R` option to an overridable "global" options file.
Ludovic Chabant <ludovic@chabant.com>
parents: 54
diff changeset
96 let g:gutentags_res_dir = expand('<sfile>:h:h:p') . "\\res\\"
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
97 let g:gutentags_script_ext = '.cmd'
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
98 else
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
99 let g:gutentags_plat_dir = expand('<sfile>:h:h:p') . '/plat/unix/'
75
d12543f11eb9 Move the default `-R` option to an overridable "global" options file.
Ludovic Chabant <ludovic@chabant.com>
parents: 54
diff changeset
100 let g:gutentags_res_dir = expand('<sfile>:h:h:p') . '/res/'
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
101 let g:gutentags_script_ext = '.sh'
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
102 endif
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
104 " }}}
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
106 " Gutentags Setup {{{
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
107
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
108 augroup gutentags_detect
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109 autocmd!
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
110 autocmd BufNewFile,BufReadPost * call gutentags#setup_gutentags()
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
111 autocmd VimEnter * if expand('<amatch>')==''|call gutentags#setup_gutentags()|endif
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
112 augroup end
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
114 " }}}
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
115
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
116 " Toggles and Miscellaneous Commands {{{
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
117
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
118 command! GutentagsUnlock :call gutentags#delete_lock_files()
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
119
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
120 if g:gutentags_define_advanced_commands
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
121 command! GutentagsToggleEnabled :let g:gutentags_enabled=!g:gutentags_enabled
54
50d2a7cbf7c8 Fix the `GutentagsToggleTrace` command.
Ludovic Chabant <ludovic@chabant.com>
parents: 51
diff changeset
122 command! GutentagsToggleTrace :call gutentags#toggletrace()
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
123 endif
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
124
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
125 if g:gutentags_debug
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
126 command! GutentagsToggleFake :call gutentags#fake()
10
b853ad0e7afd Only define `:AutotagsToggleFake` if debug mode is on.
Ludovic Chabant <ludovic@chabant.com>
parents: 9
diff changeset
127 endif
b853ad0e7afd Only define `:AutotagsToggleFake` if debug mode is on.
Ludovic Chabant <ludovic@chabant.com>
parents: 9
diff changeset
128
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
129 " }}}
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
130