Skip to content
This repository
Browse code

Improve easytags_dynamic_files implementation (best of both worlds?)

Some users want the plug-in to use existing project specific tags files
but fall back to the global tags file or a file type specific tags file
if a project specific tags file does not exist. Other users want the
plug-in to automatically create project specific tags files. Both are
reasonable options to have. I hope with this change we can all
be happy :-) (see also issue #15 and issue #16 on GitHub).
  • Loading branch information...
commit fae8ddd3b6cdf823113ed2a911daa7d319885f7a 1 parent ef7c6f8
Peter Odding authored September 05, 2011
11  README.md
Source Rendered
@@ -64,17 +64,16 @@ A leading `~` in the `g:easytags_file` variable is expanded to your current home
64 64
 
65 65
 ### The `g:easytags_dynamic_files` option
66 66
 
67  
-By default `:UpdateTags` only writes to the global tags file. If you use the following setting to enable project specific tags files:
  67
+By default `:UpdateTags` only writes to the global tags file, but it can be configured to look for project specific tags files by adding the following lines to your [vimrc script] [vimrc]:
68 68
 
69 69
     :set tags=./tags;
70  
-
71  
-You can enable this option so that the project specific tags files are written instead of the global tags file:
72  
-
73 70
     :let g:easytags_dynamic_files = 1
74 71
 
75  
-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.
  72
+You can change the name of the tags file, the important thing is that it's relative to your working directory or the buffer (using a leading `./`). When `g:easytags_dynamic_files` is set to 1 the easytags plug-in will write to the first existing tags file seen by Vim (based on the ['tags' option] [tags_opt]). In other words: If a project specific tags file is found it will be used, otherwise the plug-in falls back to the global tags file (or a file type specific tags file).
  73
+
  74
+If you set `g:easytags_dynamic_files` to 2 the easytags plug-in will automatically create project specific tags based on the first name in the 'tags' option. This disables the global tags file and file type specific tags files.
76 75
 
77  
-Note that this option takes precedence over `g:easytags_by_filetype`.
  76
+The ['tags' option] [tags_opt] is reevaluated each time the plug-in runs, so which tags file is selected can differ depending on the buffer and working directory.
78 77
 
79 78
 ### The `g:easytags_by_filetype` option
80 79
 
7  autoload/xolox/easytags.vim
@@ -3,7 +3,7 @@
3 3
 " Last Change: September 5, 2011
4 4
 " URL: http://peterodding.com/code/vim/easytags/
5 5
 
6  
-let g:xolox#easytags#version = '2.5.6'
  6
+let g:xolox#easytags#version = '2.5.7'
7 7
 
8 8
 " Public interface through (automatic) commands. {{{1
9 9
 
@@ -530,7 +530,10 @@ endfunction
530 530
 function! xolox#easytags#get_tagsfile() " {{{2
531 531
   let tagsfile = ''
532 532
   " Look for a suitable project specific tags file?
533  
-  if xolox#misc#option#get('easytags_dynamic_files', 0)
  533
+  let dynamic_files = xolox#misc#option#get('easytags_dynamic_files', 0)
  534
+  if dynamic_files == 1
  535
+    let tagsfile = get(tagfiles(), 0, '')
  536
+  elseif dynamic_files == 2
534 537
     let tagsfile = xolox#misc#option#eval_tags(&tags, 1)
535 538
   endif
536 539
   " Check if a file type specific tags file is useful?
30  doc/easytags.txt
@@ -139,22 +139,28 @@ home directory ('$HOME' on UNIX, '%USERPROFILE%' on Windows).
139 139
 -------------------------------------------------------------------------------
140 140
 The *g:easytags_dynamic_files* option
141 141
 
142  
-By default |:UpdateTags| only writes to the global tags file. If you use the
143  
-following setting to enable project specific tags files:
  142
+By default |:UpdateTags| only writes to the global tags file, but it can be
  143
+configured to look for project specific tags files by adding the following
  144
+lines to your |vimrc| script:
144 145
 >
145 146
     :set tags=./tags;
146  
-
147  
-You can enable this option so that the project specific tags files are written
148  
-instead of the global tags file:
149  
->
150 147
     :let g:easytags_dynamic_files = 1
151 148
 
152  
-When you enable this option, the easytags plug-in will expand the |'tags'|
153  
-option and use the first filename (whether the file exists or not). The tags
154  
-option is reevaluated each time the plug-in runs, so the results can differ
155  
-depending on the location of the current buffer or working directory.
156  
-
157  
-Note that this option takes precedence over |g:easytags_by_filetype|.
  149
+You can change the name of the tags file, the important thing is that it's
  150
+relative to your working directory or the buffer (using a leading './'). When
  151
+|g:easytags_dynamic_files| is set to 1 the easytags plug-in will write to the
  152
+first existing tags file seen by Vim (based on the |'tags'| option). In other
  153
+words: If a project specific tags file is found it will be used, otherwise the
  154
+plug-in falls back to the global tags file (or a file type specific tags
  155
+file).
  156
+
  157
+If you set |g:easytags_dynamic_files| to 2 the easytags plug-in will
  158
+automatically create project specific tags based on the first name in the
  159
+'tags' option. This disables the global tags file and file type specific tags
  160
+files.
  161
+
  162
+The |'tags'| option is reevaluated each time the plug-in runs, so which tags
  163
+file is selected can differ depending on the buffer and working directory.
158 164
 
159 165
 -------------------------------------------------------------------------------
160 166
 The *g:easytags_by_filetype* option

0 notes on commit fae8ddd

Please sign in to comment.
Something went wrong with that request. Please try again.