@@ -23,50 +23,58 @@ if !exists("g:auto_ctags_tags_name")
23
23
let g: auto_ctags_tags_name = ' tags'
24
24
endif
25
25
26
- let s: ctags_cmd = ' ctags'
27
- let s: ctags_opt = ' --tag-relative'
28
- let s: ctags_create = 0
29
- for s: directory in g: auto_ctags_directory_list
30
- if isdirectory (s: directory )
31
- let s: tags_name = s: directory .' /' .g: auto_ctags_tags_name
32
- " "silent! execute 'set tags+='.s:tags_name
33
- let s: ctags_opt = s: ctags_opt .' -f ' .s: tags_name
34
- let s: ctags_create = 1
35
- endif
36
- if s: ctags_create > 0
37
- break
26
+ if ! exists (" g:auto_ctags_tags_args" )
27
+ let g: auto_ctags_tags_args = ' --tag-relative --recurse --sort=yes'
28
+ endif
29
+
30
+ function ! s: get_ctags_path ()
31
+ let s: path = ' '
32
+
33
+ for s: directory in g: auto_ctags_directory_list
34
+ if isdirectory (s: directory )
35
+ let s: path = s: directory .' /' .g: auto_ctags_tags_name
36
+ break
37
+ endif
38
+ endfor
39
+
40
+ return s: path
41
+ endfunction
42
+
43
+ function ! s: get_ctags_cmd ()
44
+ let s: ctags_cmd = ' '
45
+
46
+ let s: tags_name = s: get_ctags_path ()
47
+ if len (s: tags_name ) > 0
48
+ let s: ctags_cmd = ' ctags ' .g: auto_ctags_tags_args .' -f ' .s: tags_name
38
49
endif
39
- endfor
40
50
41
- function ! s: ctags (opt , redraw )
51
+ return s: ctags_cmd
52
+ endfunction
42
53
43
- if s: ctags_create > 0
44
- silent ! execute ' !' .s: ctags_cmd .' ' .s: ctags_opt .' ' .a: opt .' 2>/dev/null &'
54
+ function ! s: ctags (recreate)
55
+ if a: recreate > 0
56
+ silent ! execute ' !rm ' .s: get_ctags_path ().' 2>/dev/null'
45
57
endif
46
58
47
- if a: redraw > 0
48
- redraw !
59
+ let s: cmd = s: get_ctags_cmd ()
60
+ if len (s: cmd ) > 0
61
+ silent ! execute ' !' .s: cmd .' 2>/dev/null &'
49
62
endif
50
- endfunction
51
63
52
- function ! s: ctags_delete ()
53
- silent ! execute ' !rm ' . s: tags_name . ' 2>/dev/null '
54
- redraw !
64
+ if a: recreate > 0
65
+ redraw !
66
+ endif
55
67
endfunction
56
68
57
69
if g: auto_ctags > 0
58
70
augroup auto_ctags
59
71
autocmd !
60
- autocmd BufReadPre * call <SID> ctags (' ' , 0 )
72
+ autocmd BufReadPre * call <SID> ctags (0 )
61
73
augroup END
62
74
endif
63
75
64
76
if ! exists (" :Ctags" )
65
- command -nargs =0 Ctags call <SID> ctags (' ' , 1 )
66
- endif
67
-
68
- if ! exists (" :CtagsDelete" )
69
- command -nargs =0 CtagsDelete call <SID> ctags_delete ()
77
+ command -nargs =0 Ctags call <SID> ctags (1 )
70
78
endif
71
79
72
80
let &cpo = s: save_cpo
0 commit comments