LINUX.ORG.RU

VIm - не работает поиск автокомплита в закрытых файлах (JS)

 ,


1

2

Камрады, может кто в курсе.

Допустим есть два файла Foo.js и Bar.js. Мы находимся в Foo.js. Вот такой автокомплит

Bar.|
- работает только если файл Bar.js открыт. Т.е. можно считать, что не работает. Ну не буду же я, в самом деле, открывать все файлы проекта из которых мне нужен автокомплит. :( Проверял с YCM + tern-completer и tern-for-vim + родной omnicomplete. Одно и тоже.

path, если что, сконфигурирован, что подтверждается рабочим gf.

PS: В Atom + ternjs, кстати, работает сразу.


Ответ на: комментарий от GoodPerson

Не работает оно, потому как тэги вообще не генерируются из-за того, что вот это поделие https://github.com/ramitos/jsctags не умеет парсить вывод tern для angular (https://github.com/ramitos/jsctags/issues/7#issuecomment-147639325), а протухший ctags и подавно.

emcode
() автор топика
Ответ на: комментарий от GoodPerson

Да, спасибо, я уже попробовал эти регулярки https://github.com/winstonwolff/ctags-javascript-coffeescript для ctags. Кое-что правда генерится, можно бегать по получившимся тэгам через CtrlP. Но ни YCM, ни omnicomplete их не восприняли, и Tagbar тоже.

Походу пора бросать попытки насиловать труп. Не умеет Vim в JS и хрен с ним. Не дело второй день подряд убивать на тупой инструмент, при наличии альтернатив.

emcode
() автор топика
Ответ на: комментарий от emcode

Но ни YCM, ни omnicomplete их не восприняли, и Tagbar тоже.

Установи Gutentags, сунь это в ~/.vimrc, создай директорию под тестовый проект и сделай в ней touch .gt
YCM должен быть собран с --tern-completer.

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

Зачем мне сейчас этот плагин, если вопрос вообще не в нем? Тэги сгенерировались (нашел конфиг ctags для angular); `echo tagfiles()` показывает, где они находится; C-X C-] и C-N автокомплит работает.

1. YCM автокомплит не работает.

2. Tagbar тэги не показывает.

FAQ читал, генерировал с "--fields=+l". Я не понимаю, тэги видит Vim, тэги видит CtrlP, а эта пара плагинов не видит. Как так?

emcode
() автор топика
Ответ на: комментарий от salsa

Действительно, профукал.. Но это не отменяет факта, что он не работает с ~/.ctags, куда я добавил кастомные регулярки, точно так, как это описано в вики. И эти регулярки работают, если ctags вызывать напрямую, а не через tagbar.

emcode
() автор топика
Ответ на: комментарий от emcode

Но это не отменяет факта, что он не работает с ~/.ctags, куда я добавил кастомные регулярки, точно так, как это описано в вики. И эти регулярки работают, если ctags вызывать напрямую, а не через tagbar.

Похоже, нужно еще дополнительно Tagbar поднастроить. :help tagbar-extend

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

Ну, ок, настроил. Один хрен не же работает. В общем, этот tagbar, для того чтобы сгенерить тэги на лету, копирует файл в /tmp/blablabla/XX.10js. после чего применяет к нему примерно такую команду:

ctags-exuberant -f - --format=2 --excmd=pattern --fields=nksSaf --extra= --sort=no --append=no --language-force=js --js-kinds=vf /tmp/vFqsjYu/10.js

параметры которой как раз и настраиваются в том что описано в:

:help tagbar-extend

Проблема в том, что по неизвестной причине, эта команда не выдает результат, если файл находится в этом самом /tmp/blablabla/, куда его запихал tagbar. Зато отлично работает, если этот файл вытащить в любой другой каталог, или применить к исходному файлу. Дебаг на этот счет пустой:

2016-07-02 19:14:22.744185: Command output:
2016-07-02 19:14:22.744378: 

Ради прикола засунул в /tmp исходник. Это оказывается у ctags баг такой или фича, что если файл находится в ветке /tmp - он тэги не генерит.

emcode
() автор топика
Ответ на: комментарий от salsa

Нашел. Скопировал не глядя конфиг .ctags. Там была эта строчка:

--exclude=*tmp*

Не знаю о чем думал автор. Tagbar зафурычил. Спасибо!

emcode
() автор топика
Ответ на: комментарий от emcode

А всего-то и надо было, чтобы при включенном TagbarDebug, ctags вызывался с параметром --verbose. Надо мейнтейнеру идею подкинуть.

emcode
() автор топика
Ответ на: комментарий от emcode

Походу пора бросать попытки насиловать труп. Не умеет Vim в JS и хрен с ним. Не дело второй день подряд убивать на тупой инструмент, при наличии альтернатив.

Если тебе не хочется возиться с поиском и настройкой нужной плагинов, то да - vim не для тебя. Тупой не сам инструмент, а люди, которые уперто пытаются использовать его неправильно и/или же не по назначению.

Проверял с YCM + tern-completer и tern-for-vim

У практически всех плагинов для vim'a существует один или несколько аналогов. Если у тебя голый omni/tern работает с js, то посмотри в сторону связки deoplete с deoplete-ternjs, ибо к YCM у многих пользователей есть нарекания.

Сам я с js не работаю и не работал в vim'e, если что.

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

Если тебе не хочется возиться с поиском и настройкой нужной плагинов, то да - vim не для тебя. Тупой не сам инструмент, а люди, которые уперто пытаются использовать его неправильно и/или же не по назначению.

Только не надо опять про старую песню, что vim - не IDE. Но сказано было резковато, признаю.

Если у тебя голый omni/tern работает с js, то посмотри в сторону связки deoplete с deoplete-ternjs, ибо к YCM у многих пользователей есть нарекания.

Оно же для nvim, вроде. А для vim - neocomplete. Неважно, я не люблю плагины Шуго. В них слишком много плохо документированных опций.

emcode
() автор топика
Последнее исправление: emcode (всего исправлений: 1)
Ответ на: комментарий от emcode

Только не надо опять про старую песню, что vim - не IDE. Но сказано было резковато, признаю.

vim способен заменить ide для многих его пользователей, однако некоторые плагины здесь работают лишь после небольшого пинка. :)

Оно же для nvim, вроде.

Настоятельно советую переходить на nvim, если нет каких-то религиозных предубеждений. Сейчас он работает шустрее, к тому же стали появляться весьма интересные плагины под него.

Неважно, я не люблю плагины Шуго.

Тебе шашечки или ехать?

В них слишком много плохо документированных опций.

Если тебе так не хочется в них ковыряться, то можешь мне выдать код проекта(или несколько исходников), который можно проверить и я чуть позже сообщу тебе о результате у себя. Если ты заинтересован в работоспособности автокомплита в vim'e, конечно же.

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

Настоятельно советую переходить на nvim, если нет каких-то религиозных предубеждений.

У меня на работе оффтопик (без вариантов). nvim может к концу года GUI допилят.

Тебе шашечки или ехать?

В смысле? Я пользовался его плагинами. Со временем все снес, потому что есть лучше.

Если ты заинтересован в работоспособности автокомплита в vim'e, конечно же.

Пока лучший автокомплит в vim - нативный. К сожалению.

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