Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Added `easytags_ignored_filetypes` option

While writing a LaTeX document I found out that Exuberant Ctags was
corrupting my tags file by writing invalid entries. Because half my
self-developed Vim plug-ins deal with Exuberant Ctags integration
which I use constantly this broke my whole environment :-)

Since the main point of easytags.vim is to fully automate tags
generation, corrupt files that need to be repaired by hand are
unacceptable. Therefor I've added an option to enable ignoring selected
file types and defined the default to exclude `*.tex` files.

If you disagree with me, feel free to set the option
`easytags_ignored_filetypes` to an empty string,
in which case no file types will be ignored.
  • Loading branch information...
commit 6dd0b7a882d8102f5cff1b2acc927b91cc03e514 1 parent 65ad69a
@xolox authored
Showing with 12 additions and 7 deletions.
  1. +7 −6 autoload.vim
  2. +5 −1 easytags.vim
View
13 autoload.vim
@@ -1,6 +1,6 @@
" Vim script
" Maintainer: Peter Odding <peter@peterodding.com>
-" Last Change: June 6, 2010
+" Last Change: June 9, 2010
" URL: http://peterodding.com/code/vim/easytags
function! easytags#autoload() " {{{1
@@ -34,8 +34,9 @@ endfunction
function! easytags#update_cmd(filter_invalid_tags) " {{{1
try
- let supported_filetype = index(easytags#supported_filetypes(), &ft) >= 0
- if supported_filetype || a:filter_invalid_tags
+ let ft_supported = index(easytags#supported_filetypes(), &ft) >= 0
+ let ft_ignored = g:easytags_ignored_filetypes != '' && &ft =~ g:easytags_ignored_filetypes
+ if (ft_supported && !ft_ignored) || a:filter_invalid_tags
let start = xolox#timer#start()
let tagsfile = easytags#get_tagsfile()
let filename = expand('%:p')
@@ -48,7 +49,7 @@ function! easytags#update_cmd(filter_invalid_tags) " {{{1
let start_filter = xolox#timer#start()
let lines = readfile(tagsfile)
let filters = []
- if supported_filetype
+ if ft_supported && !ft_ignored
let filename_pattern = '\s' . xolox#escape#pattern(filename) . '\s'
call add(filters, 'v:val !~ filename_pattern')
endif
@@ -64,12 +65,12 @@ function! easytags#update_cmd(filter_invalid_tags) " {{{1
endif
call xolox#timer#stop(start_filter, "easytags.vim: Filtered tags file in %s second(s)")
endif
- if supported_filetype
+ if ft_supported && !ft_ignored
call add(command, '--language-force=' . easytags#to_ctags_ft(&ft))
call add(command, shellescape(filename))
let listing = system(join(command))
if v:shell_error
- throw "Failed to update tags file!"
+ throw "Failed to update tags file! (Ctags output: `" . listing . "')"
endif
endif
call xolox#timer#stop(start, "easytags.vim: Updated tags in %s second(s)")
View
6 easytags.vim
@@ -1,6 +1,6 @@
" Vim plug-in
" Maintainer: Peter Odding <peter@peterodding.com>
-" Last Change: June 6, 2010
+" Last Change: June 8, 2010
" URL: http://peterodding.com/code/vim/easytags
" Requires: Exuberant Ctags (http://ctags.sf.net)
" License: MIT
@@ -36,6 +36,10 @@ if !exists('g:easytags_on_cursorhold')
let g:easytags_on_cursorhold = 1
endif
+if !exists('g:easytags_ignored_filetypes')
+ let g:easytags_ignored_filetypes = '^tex$'
+endif
+
" Before sourcing the rest of the plug-in first check that the location of the
" "Exuberant Ctags" program has been configured or that the program exists in
" one of its default locations.
Please sign in to comment.
Something went wrong with that request. Please try again.