Skip to content

Commit e8db2a2

Browse files
committed
Finish support for file type specific tags files (+bug fix)
Bug fix: :UpdateTags! didn't work because of a typo
1 parent b5e0b6b commit e8db2a2

File tree

2 files changed

+15
-9
lines changed

2 files changed

+15
-9
lines changed

autoload/xolox/easytags.vim

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,26 @@ function! xolox#easytags#autoload() " {{{2
6262
endfunction
6363

6464
function! xolox#easytags#update(silent, filter_tags, filenames) " {{{2
65-
" TODO Use save_by_filetype() when --force-language is not in effect!
6665
try
6766
let s:cached_filenames = {}
67+
let have_args = !empty(a:filenames)
6868
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)
7070
let tagsfile = xolox#easytags#get_tagsfile()
7171
let firstrun = !filereadable(tagsfile)
7272
let cmdline = s:prep_cmdline(cfile, tagsfile, firstrun, a:filenames)
7373
let output = s:run_ctags(starttime, cfile, tagsfile, firstrun, cmdline)
7474
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
7681
if cfile != ''
7782
let msg = "easytags.vim %s: Updated tags for %s in %s."
7883
call xolox#misc#timer#stop(msg, g:easytags_version, expand('%:p:~'), starttime)
79-
elseif !empty(a:filenames)
84+
elseif have_args
8085
let msg = "easytags.vim %s: Updated tags in %s."
8186
call xolox#misc#timer#stop(msg, g:easytags_version, starttime)
8287
else
@@ -185,6 +190,7 @@ function! s:run_ctags(starttime, cfile, tagsfile, firstrun, cmdline) " {{{3
185190
else
186191
call xolox#misc#timer#stop("easytags.vim %s: Created tags in %s.", g:easytags_version, a:starttime)
187192
endif
193+
return []
188194
endif
189195
endif
190196
return xolox#easytags#parse_entries(lines)
@@ -200,7 +206,7 @@ function! s:filter_merge_tags(filter_tags, tagsfile, output) " {{{3
200206
endif
201207
" Filter tags for non-existing files?
202208
if a:filter_tags
203-
call add(filters, 'filereadable(v:val[1]))')
209+
call add(filters, 'filereadable(v:val[1])')
204210
endif
205211
let num_old_entries = len(entries)
206212
if !empty(filters)
@@ -308,7 +314,7 @@ function! xolox#easytags#by_filetype(undo) " {{{2
308314
let disabled_tagsfile = global_tagsfile . '.disabled'
309315
if !a:undo
310316
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)
312318
call rename(global_tagsfile, disabled_tagsfile)
313319
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."
314320
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
327333
endtry
328334
endfunction
329335

330-
function! s:save_by_filetype(headers, entries)
336+
function! s:save_by_filetype(filter_tags, headers, entries)
331337
let filetypes = {}
332338
for entry in a:entries
333339
let ctags_ft = matchstr(entry[2], '\tlanguage:\zs\S\+')
@@ -345,7 +351,7 @@ function! s:save_by_filetype(headers, entries)
345351
if !filereadable(tagsfile)
346352
call xolox#easytags#write_tagsfile(tagsfile, a:headers, filetypes[vim_ft])
347353
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])
349355
endif
350356
endfor
351357
endfunction

plugin/easytags.vim

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ if &cp || exists('g:loaded_easytags')
1212
finish
1313
endif
1414

15-
let g:easytags_version = '2.4.5'
15+
let g:easytags_version = '2.4.6'
1616

1717
" Configuration defaults and initialization. {{{1
1818

0 commit comments

Comments
 (0)