annotate plugin/gutentags.vim @ 85:0424970d81f8

Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
author Ludovic Chabant <ludovic@chabant.com>
date Fri, 09 Oct 2015 15:28:39 -0700
parents 208130c6245e
children 073e63cc0456
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
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
44 if !exists('g:gutentags_modules')
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
45 let g:gutentags_modules = ['ctags']
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
46 endif
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
47
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
48 if !exists('g:gutentags_project_root')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
49 let g:gutentags_project_root = []
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
50 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
51 let g:gutentags_project_root += ['.git', '.hg', '.svn', '.bzr', '_darcs', '_FOSSIL_', '.fslckout']
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
52
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
53 if !exists('g:gutentags_exclude')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
54 let g:gutentags_exclude = []
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
55 endif
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
56
85
0424970d81f8 Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
Ludovic Chabant <ludovic@chabant.com>
parents: 78
diff changeset
57 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
58 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
59 endif
0424970d81f8 Add a `g:gutentags_resolve_symlinks` option to resolve symlinks at setup time.
Ludovic Chabant <ludovic@chabant.com>
parents: 78
diff changeset
60
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
61 if !exists('g:gutentags_generate_on_new')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
62 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
63 endif
b8f23bf7b20f Ability to (re)generate tags when opening a new project.
Ludovic Chabant <ludovic@chabant.com>
parents: 11
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_missing')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
66 let g:gutentags_generate_on_missing = 1
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
67 endif
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
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_write')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
70 let g:gutentags_generate_on_write = 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_cache_dir')
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
74 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
75 else
76
fa749380e05a Make sure we expand the cache directory before we auto-create it.
Ludovic Chabant <ludovic@chabant.com>
parents: 75
diff changeset
76 " 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
77 " 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
78 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
79 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
80 endif
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
81
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
82 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
83 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
84 endif
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
85
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
86 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
87 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
88 endif
d48b0e48283b Add support for storing tags files out of the way.
Ludovic Chabant <ludovic@chabant.com>
parents: 16
diff changeset
89
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
90 if has('win32')
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
91 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
92 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
93 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
94 else
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/unix/'
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 = '.sh'
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
98 endif
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
99
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
100 " }}}
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
101
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
102 " Gutentags Setup {{{
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
103
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
104 augroup gutentags_detect
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
105 autocmd!
41
99328cb71e75 Refactor Gutentags so functionality can be implemented in "modules".
Ludovic Chabant <ludovic@chabant.com>
parents: 40
diff changeset
106 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
107 autocmd VimEnter * if expand('<amatch>')==''|call gutentags#setup_gutentags()|endif
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
108 augroup end
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
109
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
110 " }}}
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
111
3
60adce96ac2d Lots of changes:
Ludovic Chabant <ludovic@chabant.com>
parents: 0
diff changeset
112 " Toggles and Miscellaneous Commands {{{
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
113
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
114 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
115
46
c0f56e4d52bd Make a bunch of advanced commands opt-in only.
Ludovic Chabant <ludovic@chabant.com>
parents: 41
diff changeset
116 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
117 command! GutentagsToggleEnabled :let g:gutentags_enabled=!g:gutentags_enabled
54
50d2a7cbf7c8 Fix the `GutentagsToggleTrace` command.
Ludovic Chabant <ludovic@chabant.com>
parents: 51
diff changeset
118 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
119 endif
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
120
22
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
121 if g:gutentags_debug
4e1b0253f71a Renamed project to "Gutentags" (thanks Sylvain!).
Ludovic Chabant <ludovic@chabant.com>
parents: 21
diff changeset
122 command! GutentagsToggleFake :call gutentags#fake()
10
b853ad0e7afd Only define `:AutotagsToggleFake` if debug mode is on.
Ludovic Chabant <ludovic@chabant.com>
parents: 9
diff changeset
123 endif
b853ad0e7afd Only define `:AutotagsToggleFake` if debug mode is on.
Ludovic Chabant <ludovic@chabant.com>
parents: 9
diff changeset
124
0
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
125 " }}}
a3a37124558b Initial commit.
Ludovic Chabant <ludovic@chabant.com>
parents:
diff changeset
126