aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Odding <peter@peterodding.com>2010-06-09 08:01:39 +0200
committerPeter Odding <peter@peterodding.com>2010-06-09 08:01:39 +0200
commit6dd0b7a882d8102f5cff1b2acc927b91cc03e514 (patch)
treec358e86e0d2c364df2981004589b5701a7f77325
parent65ad69ac288eaa70b1469739ce6ea601ab852a2e (diff)
downloadvim-easytags-6dd0b7a882d8102f5cff1b2acc927b91cc03e514.tar.gz
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.
-rw-r--r--autoload.vim13
-rw-r--r--easytags.vim6
2 files changed, 12 insertions, 7 deletions
diff --git a/autoload.vim b/autoload.vim
index 4ec3f2a..80b4800 100644
--- a/autoload.vim
+++ b/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)")
diff --git a/easytags.vim b/easytags.vim
index 31bf9d0..9373d9a 100644
--- a/easytags.vim
+++ b/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.