Vim Javascript Автозаполнение + Предложения?
Я разрабатываю поверх OpenLayers.js. Папка моего проекта имеет следующую структуру:
project /
|-- OpenLayers.js
|-- map.html
|-- map.js
\-- etc
Как вы можете утверждать, когда я запускаю новый проект карты, я ожидаю предложений от Vim о том, как завершить код, читая JS-классы из всех библиотек в папке проекта (в данном случае просто OpenLayers.js
).
Например:
map = new OpenLayers. --> <C-x><C-o>
map = new OpenLayers.Bounds
.Control
.Map
Выбрав один из предложенных классов, я получу автозаполнение, как в Aptana. Я установил AutoComplPop, и у меня есть хорошее автоматическое меню для выбора предложений, но все они взяты из текущего файла JS.
В любом случае, я правильно настроил Tagbar + node.js + jsctags и сгенерировал tags
файл для моего проекта, и добавил set tags=./tags,./../tags,./*/tags
к моему .vimrc
,
В этом случае также Tagbar отображает текущую структуру файла JS, но не предлагает никакого отображения классов, поступающих из других файлов.
Еще одна, вероятно, актуальная строка в моем .vimrc
:
autocmd FileType javascript set omnifunc=javascriptcomplete#CompleteJS
Я изо всех сил пытаюсь получить предложения класса и подкласса, и теперь я немного запутался со всеми доступными плагинами / частью программного обеспечения.
Любой намек? Спасибо вам, ребята:)
2 ответа
Ваши ожидания слишком высоки. Vim не IDE, как Aptana, и механизмы, используемые для обеспечения завершения, являются грубыми.
Вы проверили, что ваш tags
файл имеет OpenLayers.Bounds
, OpenLayers.Control
или же OpenLayer.Map
? Я не могу найти OpenLayer.Map
и, пройдя через OpenLayer.debug.js
Я тоже не могу найти эту функцию.
TagBar работает только с текущим буфером. Если вы хотите показывать теги для других окон / буферов, вам понадобится еще один старый плагин: TagList.
AutoComplPop не поддерживает JS из коробки. Как вы это настроили? Вот как я это сделал, но он все еще использует <C-x><C-o>
в то время как завершение от tags
сделано с <C-x><C-]>
,
Проверьте YouCompleteMe и tern_for_vim.
Вот статья об использовании их вместе.