Можно ли использовать разные файлы тегов для полного просмотра и общего просмотра тегов в Vim? - PullRequest
3 голосов
/ 11 февраля 2010

Я использую ctags в Vim в течение многих лет, но я только что обнаружил, что они неполные. (Кажется, хорошо.)

Тем не менее, у меня есть проблема: для правильной работы omnicomplete я должен использовать опцию --extra = + q при генерации тегов, что нормально, но это затем меняет поведение общего просмотра тегов таким образом, что я не нравится.

Например, когда в Vim имена тегов, дополняющих табуляцию, я не хочу помечать «в» «иерархиях» классов, то есть, когда завершающие табуляцию «Clas» получают «ClassA, ClassA :: var1, ClassA» :: var2, ClassB ", вместо" ClassA, ClassB "- но это то, что происходит при использовании --extra = + q.

Так что, я думаю, мне нужна одна из двух вещей. Или: 1. Возможность отключить завершение табуляции в «иерархиях тегов», даже если эти иерархии существуют в файле тегов. Или же, 2. Возможность использовать файлы тегов с разными именами (т. Е. Сгенерированные с различными параметрами) для общего и общего просмотра тегов.

Любые идеи будут высоко оценены!

Приветствия

thoughton.

Ответы [ 2 ]

1 голос
/ 12 февраля 2010

Хорошо, я думаю, что на самом деле придумал ответ на свой вопрос.

Во-первых, я генерирую два файла тегов: tags_c_vim и tags_c_omni.

В моем _vimrc у меня есть:

let tags_vim='tags_c_vim'
let tags_omni='tags_c_omni'

exe "set tags=".tags_vim

для установки некоторых переменных, указывающих на разные файлы тегов, и для установки тегов "vim" в качестве тегов по умолчанию.

Тогда у меня тоже есть это, опять же в _vimrc:

imap <F8> <ESC>:exe "set tags=".tags_omni<CR>a<C-X><C-O>
autocmd InsertLeave * if pumvisible() == 0|exe "set tags=".tags_vim|endif

первая строка здесь отображает F8, поэтому она изменяет настройку тегов так, чтобы она указывала на теги "omni", прежде чем вызывать всплывающее меню omnicomplete, а вторая строка сбрасывает настройку тегов в теги "vim", когда режим вставки следующий осталось после закрытия всплывающего окна.

Потребуется обширное использование, чтобы убедиться, что оно достаточно надежно, но, похоже, оно работает после некоторого быстрого тестирования.

Два улучшения, которые я все еще хотел бы сделать:

  1. Сопоставить настройку тегов "omni" с полным набором команд C-X, C-O вместо нового отображения F8. (Я думаю, что мне нужно установить теги и затем вызвать omni # cpp # maycomplete # Complete (), но я не мог понять, как это сделать)
  2. Подключить сброс тегов "vim" либо к самодостаточному завершению, либо к закрытию всплывающего меню

Во всяком случае, я просто думал, что поделюсь.

Приветствия

thoughton.

0 голосов
/ 11 февраля 2010

Вы можете попробовать плагин OmniCppComplete .

...