@@ -62,21 +62,26 @@ function! xolox#easytags#autoload() " {{{2
62
62
endfunction
63
63
64
64
function ! xolox#easytags#update (silent , filter_tags, filenames) " {{{2
65
- " TODO Use save_by_filetype() when --force-language is not in effect!
66
65
try
67
66
let s: cached_filenames = {}
67
+ let have_args = ! empty (a: filenames )
68
68
let starttime = xolox#misc#timer#start ()
69
- let cfile = s: check_cfile (a: silent , a: filter_tags , ! empty ( a: filenames ) )
69
+ let cfile = s: check_cfile (a: silent , a: filter_tags , have_args )
70
70
let tagsfile = xolox#easytags#get_tagsfile ()
71
71
let firstrun = ! filereadable (tagsfile)
72
72
let cmdline = s: prep_cmdline (cfile , tagsfile, firstrun, a: filenames )
73
73
let output = s: run_ctags (starttime, cfile , tagsfile, firstrun, cmdline)
74
74
if ! firstrun
75
- let num_filtered = s: filter_merge_tags (a: filter_tags , tagsfile, output)
75
+ if have_args && ! empty (g: easytags_by_filetype )
76
+ " TODO Get the headers from somewhere?!
77
+ call s: save_by_filetype (a: filter_tags , [], output)
78
+ else
79
+ let num_filtered = s: filter_merge_tags (a: filter_tags , tagsfile, output)
80
+ endif
76
81
if cfile != ' '
77
82
let msg = " easytags.vim %s: Updated tags for %s in %s."
78
83
call xolox#misc#timer#stop (msg, g: easytags_version , expand (' %:p:~' ), starttime)
79
- elseif ! empty ( a: filenames )
84
+ elseif have_args
80
85
let msg = " easytags.vim %s: Updated tags in %s."
81
86
call xolox#misc#timer#stop (msg, g: easytags_version , starttime)
82
87
else
@@ -185,6 +190,7 @@ function! s:run_ctags(starttime, cfile, tagsfile, firstrun, cmdline) " {{{3
185
190
else
186
191
call xolox#misc#timer#stop (" easytags.vim %s: Created tags in %s." , g: easytags_version , a: starttime )
187
192
endif
193
+ return []
188
194
endif
189
195
endif
190
196
return xolox#easytags#parse_entries (lines )
@@ -200,7 +206,7 @@ function! s:filter_merge_tags(filter_tags, tagsfile, output) " {{{3
200
206
endif
201
207
" Filter tags for non-existing files?
202
208
if a: filter_tags
203
- call add (filters, ' filereadable(v:val[1])) ' )
209
+ call add (filters, ' filereadable(v:val[1])' )
204
210
endif
205
211
let num_old_entries = len (entries)
206
212
if ! empty (filters)
@@ -308,7 +314,7 @@ function! xolox#easytags#by_filetype(undo) " {{{2
308
314
let disabled_tagsfile = global_tagsfile . ' .disabled'
309
315
if ! a: undo
310
316
let [headers, entries] = xolox#easytags#read_tagsfile (global_tagsfile)
311
- call s: save_by_filetype (headers, entries)
317
+ call s: save_by_filetype (0 , headers, entries)
312
318
call rename (global_tagsfile, disabled_tagsfile)
313
319
let msg = " easytags.vim %s: Finished copying tags from %s to %s! Note that your old tags file has been renamed to %s instead of deleting it, should you want to restore it."
314
320
call xolox#misc#msg#info (msg, g: easytags_version , g: easytags_file , g: easytags_by_filetype , disabled_tagsfile)
@@ -327,7 +333,7 @@ function! xolox#easytags#by_filetype(undo) " {{{2
327
333
endtry
328
334
endfunction
329
335
330
- function ! s: save_by_filetype (headers, entries)
336
+ function ! s: save_by_filetype (filter_tags, headers, entries)
331
337
let filetypes = {}
332
338
for entry in a: entries
333
339
let ctags_ft = matchstr (entry[2 ], ' \tlanguage:\zs\S\+' )
@@ -345,7 +351,7 @@ function! s:save_by_filetype(headers, entries)
345
351
if ! filereadable (tagsfile)
346
352
call xolox#easytags#write_tagsfile (tagsfile, a: headers , filetypes[vim_ft])
347
353
else
348
- call s: filter_merge_tags (0 , tagsfile, filetypes[vim_ft])
354
+ call s: filter_merge_tags (a: filter_tags , tagsfile, filetypes[vim_ft])
349
355
endif
350
356
endfor
351
357
endfunction
0 commit comments