From 6dd0b7a882d8102f5cff1b2acc927b91cc03e514 Mon Sep 17 00:00:00 2001 From: Peter Odding Date: Wed, 9 Jun 2010 08:01:39 +0200 Subject: 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. --- autoload.vim | 13 +++++++------ easytags.vim | 6 +++++- 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 -" 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 -" 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. -- cgit v1.2.3