aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPeter Odding <peter@peterodding.com>2011-08-31 23:27:53 +0200
committerPeter Odding <peter@peterodding.com>2011-08-31 23:27:53 +0200
commitd2a2cb54b84f6679c02e8634ec8db49eb368fe15 (patch)
tree1a0966d70b6c243e6be13d584302d13d6bd066b1
parent2860329687750c271135e28e24fe5fc9034c9c74 (diff)
downloadvim-easytags-d2a2cb54b84f6679c02e8634ec8db49eb368fe15.tar.gz
Make "easytags_dynamic_files" create missing tags files
Suggested by Strahinja Marković in GitHub issue #15: https://github.com/xolox/vim-easytags/issues/15
-rw-r--r--README.md8
-rw-r--r--autoload/xolox/easytags.vim20
-rw-r--r--doc/easytags.txt22
3 files changed, 23 insertions, 27 deletions
diff --git a/README.md b/README.md
index dcd69f9..07d2903 100644
--- a/README.md
+++ b/README.md
@@ -72,9 +72,9 @@ You can enable this option so that the project specific tags files are written i
:let g:easytags_dynamic_files = 1
-When you enable this option, the easytags plug-in will use the first filename returned by [tagfiles()] [tagfiles_fun] as the tags file to write. Note that `tagfiles()` is reevaluated every time the plug-in runs.
+When you enable this option, the easytags plug-in will expand the ['tags' option] [tags_opt] and use the first filename (whether the file exists or not). The tags option is reevaluated each time the plug-in runs, so the results can differ depending on the location of the current buffer or working directory.
-If you've also enabled `g:easytags_by_filetype` the project specific tags file must exist, even if it's empty; otherwise `g:easytags_by_filetype` will take precedence.
+Note that this option takes precedence over `g:easytags_by_filetype`.
### The `g:easytags_by_filetype` option
@@ -82,9 +82,9 @@ By default all tags are stored in a global tags file. When the tags file grows b
To avoid this problem you can set `g:easytags_by_filetype` to the path of an existing directory. The easytags plug-in will create separate tags files for each file type in the configured directory. These tags files are automatically registered by the easytags plug-in when the file type of a buffer is set.
-If you've also enabled `g:easytags_dynamic_files` and the project specific tags file exists, and is writable, it will take precedence. If the project specific tags file doesn't exist you can indicate you want to use project specific tags by creating it.
+Note that the `g:easytags_dynamic_files` option takes precedence over this option.
-Note that if you already have a global tags file you can create file type specific tags files from the global tags file using the command `:TagsByFileType`.
+If you already have a global tags file you can create file type specific tags files from the global tags file using the command `:TagsByFileType`.
### The `g:easytags_always_enabled` option
diff --git a/autoload/xolox/easytags.vim b/autoload/xolox/easytags.vim
index b234463..d859e4e 100644
--- a/autoload/xolox/easytags.vim
+++ b/autoload/xolox/easytags.vim
@@ -1,9 +1,9 @@
" Vim script
" Author: Peter Odding <peter@peterodding.com>
-" Last Change: August 27, 2011
+" Last Change: August 31, 2011
" URL: http://peterodding.com/code/vim/easytags/
-let g:xolox#easytags#version = '2.4.12'
+let g:xolox#easytags#version = '2.5'
" Public interface through (automatic) commands. {{{1
@@ -518,20 +518,20 @@ function! s:cache_tagged_files_in(fname, ftime, entries) " {{{3
endfunction
function! xolox#easytags#get_tagsfile() " {{{2
- " Look for a writable project specific tags file?
+ let tagsfile = ''
+ " Look for a suitable project specific tags file?
if xolox#misc#option#get('easytags_dynamic_files', 0)
- let files = tagfiles()
- if len(files) > 0 && filewritable(files[0]) == 1
- return files[0]
- endif
+ let tagsfile = xolox#misc#option#eval_tags(&tags, 1)
endif
- " Default to the global tags file.
- let tagsfile = expand(xolox#misc#option#get('easytags_file'))
" Check if a file type specific tags file is useful?
- if !empty(g:easytags_by_filetype) && index(xolox#easytags#supported_filetypes(), &ft) >= 0
+ if empty(tagsfile) && !empty(g:easytags_by_filetype) && index(xolox#easytags#supported_filetypes(), &ft) >= 0
let directory = xolox#misc#path#absolute(g:easytags_by_filetype)
let tagsfile = xolox#misc#path#merge(directory, &filetype)
endif
+ " Default to the global tags file?
+ if empty(tagsfile)
+ let tagsfile = expand(xolox#misc#option#get('easytags_file'))
+ endif
" If the tags file exists, make sure it is writable!
if filereadable(tagsfile) && filewritable(tagsfile) != 1
let message = "The tags file %s isn't writable!"
diff --git a/doc/easytags.txt b/doc/easytags.txt
index b9d768a..40e06f4 100644
--- a/doc/easytags.txt
+++ b/doc/easytags.txt
@@ -149,13 +149,12 @@ instead of the global tags file:
>
:let g:easytags_dynamic_files = 1
-When you enable this option, the easytags plug-in will use the first filename
-returned by |tagfiles()| as the tags file to write. Note that 'tagfiles()' is
-reevaluated every time the plug-in runs.
+When you enable this option, the easytags plug-in will expand the |'tags'|
+option and use the first filename (whether the file exists or not). The tags
+option is reevaluated each time the plug-in runs, so the results can differ
+depending on the location of the current buffer or working directory.
-If you've also enabled |g:easytags_by_filetype| the project specific tags file
-must exist, even if it's empty; otherwise |g:easytags_by_filetype| will take
-precedence.
+Note that this option takes precedence over |g:easytags_by_filetype|.
-------------------------------------------------------------------------------
The *g:easytags_by_filetype* option
@@ -169,14 +168,11 @@ existing directory. The easytags plug-in will create separate tags files for
each file type in the configured directory. These tags files are automatically
registered by the easytags plug-in when the file type of a buffer is set.
-If you've also enabled |g:easytags_dynamic_files| and the project specific
-tags file exists, and is writable, it will take precedence. If the project
-specific tags file doesn't exist you can indicate you want to use project
-specific tags by creating it.
+Note that the |g:easytags_dynamic_files| option takes precedence over this
+option.
-Note that if you already have a global tags file you can create file type
-specific tags files from the global tags file using the command
-':TagsByFileType'.
+If you already have a global tags file you can create file type specific tags
+files from the global tags file using the command ':TagsByFileType'.
-------------------------------------------------------------------------------
The *g:easytags_always_enabled* option