skywind3000 / gutentags_plus

The right way to use gtags with gutentags
271 stars 49 forks source link

打开的第一个文件无法搜索tag,其他都正常 #29

Closed irreallich closed 4 years ago

irreallich commented 4 years ago

你好,一直使用这个插件,非常好用, 非常感谢. 但是有个问题困扰我好久 在一个tags已经生成好的project里面, tags搜索功能正常 重启vim,仅打开一个工程内的文件a.c(任意一个),搜索tags失败 提示的错误是ERROR: no gtags database for this project, check gutentags's documents 之后我再打开同工程的第二个文件b.c ,这个文件里搜索就能成功 此时再将a.c 这个buffer从vim中删掉, 重新打开,就可以搜索成功了

再删掉a.这个buffer之前,,我尝试过重新save 修改a.c等,都无法在 a.c中搜索索引 变更顺序,先打开b.c 再打开a.c, 此时a.c就可以搜索, 而b.c 出现了上面的错误 能否请帮忙分析一下 下面是我的gutentags的配置,基本都是抄的你的文章

function! Gutentags_init()
    let $GTAGSLABEL = 'native-pygments'
    if exists('g:hjvim_config.path.plugdir')
        let l:tempdir = g:hjvim_config.path.plugdir
    else
        let l:tempdir = $VIMFILES
    endif

    if hjenv#IsWindows()
        " save the tags files into vimfiles
        let s:vim_tags = expand(l:tempdir . '/cache/tags')
        let l:winbin = hjinit#get('path','winbin')
        let $PATH = l:winbin.'\gtags\bin;'.$PATH
        let $GTAGSCONF = l:winbin . '\gtags\share\gtags\gtags.conf'
    else
        " save the tags files into  ~/.cache/tags
        let s:vim_tags = expand(l:tempdir . '/cache/tags')
        let $GTAGSCONF = '/usr/local/share/gtags/gtags.conf'
    endif

    "gtags并不主动识别.h 中的C++类,除非设置GTAGSFORCECPP 环境变量。
    "let $GTAGSFORCECPP=1,再生成tags即可。

    let g:gutentags_cache_dir = s:vim_tags
    if !isdirectory(s:vim_tags) " auto create tags folder
         silent! call mkdir(s:vim_tags, 'p')
    endif

    set tags=./.tags;,.tags
    let g:gutentags_project_root = ['.root', '.git', '.svn', 'hg']
    " 设置那些文件不使用gutentags
    let g:gutentags_exclude_filetypes = ['vim']
    " open gtags debug mode
    let g:gutentags_define_advanced_commands = 1
    " use .tags as the name of the data files
    let g:gutentags_ctags_tagfile = '.tags'
    " check gtags and ctags, if support both , add them all
    let g:gutentags_modules = []
    if executable('ctags')
        let g:gutentags_modules += ['ctags']
    endif
    if executable('gtags-cscope') && executable('gtags')
        let g:gutentags_modules += ['gtags_cscope']
    endif
    " config ctags
    let g:gutentags_ctags_extra_args = ['--fields=+niazS', '--extras=+q']
    let g:gutentags_ctags_extra_args += ['--c++-kinds=+px']
    let g:gutentags_ctags_extra_args += ['--c-kinds=+px']
    " use universal ctags
    let g:gutentags_ctags_extra_args += ['--output-format=e-ctags']
    " 不自动加载gtags数据库文件
    let g:gutentags_auto_add_gtags_cscope = 0

    " 不使用默认热键
    let g:gutentags_plus_nomap = 1

    let g:airline#extensions#gutentags#enabled = 1

    " open gutentags debug
    "let g:gutentags_trace = 1

endfunction
wow-yes commented 2 years ago
    set tags=./.tags;,.tags

这句删掉试试?

另外请把let g:gutentags_trace = 1打开,然后把错误提示贴到这里,方便大家分析