diff options
author | Justin M. Keyes <justinkz@gmail.com> | 2019-05-07 11:42:21 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-07 11:42:21 +0200 |
commit | bc395b4fd4bb4973f22c68763bf000ea4cff4ccb (patch) | |
tree | c1855b5d165b3efcf395f8a6c3238ea08ec54c12 /src/nvim/tag.c | |
parent | 400ee59247eae62990baf30c7802bc8effb3704a (diff) | |
parent | 4423759d0360acda87dd829f361957d55748dab5 (diff) | |
download | rneovim-bc395b4fd4bb4973f22c68763bf000ea4cff4ccb.tar.gz rneovim-bc395b4fd4bb4973f22c68763bf000ea4cff4ccb.tar.bz2 rneovim-bc395b4fd4bb4973f22c68763bf000ea4cff4ccb.zip |
Merge #9979 from janlazo/vim-8.0.0876
vim-patch:8.0.{876,1144},8.1.0133
Diffstat (limited to 'src/nvim/tag.c')
-rw-r--r-- | src/nvim/tag.c | 25 |
1 files changed, 21 insertions, 4 deletions
diff --git a/src/nvim/tag.c b/src/nvim/tag.c index 4d0e5b0b1b..81af23f911 100644 --- a/src/nvim/tag.c +++ b/src/nvim/tag.c @@ -1970,7 +1970,13 @@ static garray_T tag_fnames = GA_EMPTY_INIT_VALUE; */ static void found_tagfile_cb(char_u *fname, void *cookie) { - GA_APPEND(char_u *, &tag_fnames, vim_strsave(fname)); + char_u *const tag_fname = vim_strsave(fname); + +#ifdef BACKSLASH_IN_FILENAME + slash_adjust(tag_fname); +#endif + simplify_filename(tag_fname); + GA_APPEND(char_u *, &tag_fnames, tag_fname); } #if defined(EXITFREE) @@ -2028,9 +2034,20 @@ get_tagfname ( ++tnp->tn_hf_idx; STRCPY(buf, p_hf); STRCPY(path_tail(buf), "tags"); - } else - STRLCPY(buf, ((char_u **)(tag_fnames.ga_data))[ - tnp->tn_hf_idx++], MAXPATHL); +#ifdef BACKSLASH_IN_FILENAME + slash_adjust(buf); +#endif + simplify_filename(buf); + + for (int i = 0; i < tag_fnames.ga_len; i++) { + if (STRCMP(buf, ((char_u **)(tag_fnames.ga_data))[i]) == 0) { + return FAIL; // avoid duplicate file names + } + } + } else { + STRLCPY(buf, ((char_u **)(tag_fnames.ga_data))[tnp->tn_hf_idx++], + MAXPATHL); + } return OK; } |