как автоматически загрузить cscope.out в vim

Я хочу автоматически загружать свой cscope.out в подкаталог моего проекта, поэтому я добавляю эти сценарии в свой .vimrc, который выглядит следующим образом:

set cscopequickfix=s-,c-,d-,i-,t-,e-

if has("cscope")
    set csprg=/usr/bin/cscope
    set csto=1
    set cst
    set csverb
    set cspc=3
    "add any database in current dir
    if filereadable("cscope.out")
        cs add cscope.out
    "else search cscope.out elsewhere
    else
       let cscope_file=findfile("cscope.out", ".;")
        "echo cscope_file
        if !empty(cscope_file) && filereadable(cscope_file)
            exe "cs add" cscope_file
        endif      
     endif
endif

сначала работает. Но каждый раз, когда я пытаюсь сделать:

:cs find c [tag]  

Результат поиска появится в списке QuickFix, но файл, содержащий результат, не может быть открыт.

Любой совет будет принят во внимание.


person Alan    schedule 03.09.2012    source источник
comment
Статья Викии: vim.wikia.com/wiki/   -  person Ciro Santilli 新疆再教育营六四事件ۍ    schedule 19.07.2015


Ответы (1)


Если вы добавляете cscope.out, убедитесь, что он устанавливает правильный префикс пути. В противном случае он покажет вам результат, но не сможет загрузить файл.

пример:

   cs add ../cscope.out ../

поэтому вы должны изменить свой сценарий на

 ...
 else
   let cscope_file=findfile("cscope.out", ".;")
   let cscope_pre=matchstr(cscope_file, ".*/")
   "echo cscope_file
   if !empty(cscope_file) && filereadable(cscope_file)
      exe "cs add" cscope_file cscope_pre
   endif
 ...
person dwalter    schedule 03.09.2012
comment
Спасибо за ответ. Когда я использую :cs show, я никогда не замечаю, что там есть путь к началу. И я нашел другой способ заставить его работать: когда я генерирую cscope.file, я использую относительный путь. Когда я перехожу на использование абсолютного пути в cscope.file, он работает очень хорошо. Спасибо еще раз - person Alan; 03.09.2012