LINUX.ORG.RU

Глобальное контекстно-зависимое автодополнение

 , , ,


0

5

Предлагаю добить глобальное контекстно-зависимое автодополнение, может у вас уже всё настроенно, а я вот всё никак не могу.

Что значит глобальное контекстно-зависимое автодополнение?

Это означает, что если мы откроем пару файлов vim index.html -O style.css :

<html>
<body>
    <div class="first"><p>hello</p></div>
    <div class="second"><p>hello</p></div>
</body>
</html>
.third {
    margin: 3px;
}

.fourth {
    margin: 4px;
}
если сделать cw на second в левом (первом) файле, то в вариантах комплита должны оказаться в том числе слова third и fourth из правого (другого) файла, если разумеется начать вводить thi и fou. Иначе говоря, в левом html файле должны знать про third и fourth из правого css файла, а также в правом css файле должны быть в курсе first и second.

Как это сделать?

Только что проверил на 4х вариантах:

  • vim + neocomplete
  • vim + neocomplete + tmux-complete
  • vim + YouCompleteMe
  • nvim + deoplete

И нигде автодополнение не работает так, как нужно. С tmux-complete можно пердолить и выпердолить в итоге что-то напоминающее сабж, но будет неудобно всегда использовать tmux для этого.


Грубо говоря нужен omnifunc для всего со всех буферов и табов текущей сессии.

Т.е. нужно то же удобство и удовольствие от работы, которое появляется при использовании tern + tern_for_vim для JavaScript, vim-monster для Ruby и стоковые фичи vim-go для Go.

kep
() автор топика

Может я что-то не понял, но, если нужно простое дополнение слов, то с 'complete' по умолчанию <c-n> и <c-p> дополняют слова из других буферов из коробки (опция b, хотя в данном случае может и w хватить).

xaizek ★★★★★
()
Ответ на: комментарий от xaizek

C-X C-O тоже работает, но мне нужно, чтобы это автоматически попадало в omnifunc или куда там, откуда оно уже потом идёт на комплит-кандидаты.

С одной стороны я понимаю, что на больших файлах или файлах с толстым слоем строк — это может быть проблема.

В общем я тут почти приблизился, отпишу как если что.

kep
() автор топика

Предполагаю, что это будет работать с ctags. Но их использование само по себе не вершина удобства.

feofan ★★★★★
()
Ответ на: комментарий от feofan

ТСа же устраивает omni, но он (вроде как) хочет, чтобы оно использовалось по умолчанию, что, по идее, должно решаться раскуриванием :help'а по используемому плагину для автодополнения.

salsa
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.