Недавно я отказался от графических редакторов GUI, ориентированных на мыши, и полностью посвятил себя vim. Опыт до сих пор был фантастическим, но я застрял, когда дело дошло до Javascript.
Всегда популярная утилита taglist (с использованием Exuberant Ctags) отлично подходит для всего, кроме Javascript. С языком без излишней формы и структуры, taglist мог получить только несколько функций, когда я его открыл - только те, которые определены в формате:
function FUNCNAME (arg1, arg2) {
но нет переменных или функциональных объектов, определенных как:
var myFunc = function (arg1, arg2) {
Итак, я немного искал googled и нашел следующее определение для ctags, которое я вложил в файл ~/.ctags:
--langdef=js
--langmap=js:.js
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\{/\1/,object/
--regex-js=/([A-Za-z0-9._$()]+)[ \t]*[:=][ \t]*function[ \t]*\(/\1/,function/
--regex-js=/function[ \t]+([A-Za-z0-9._$]+)[ \t]*([^])])/\1/,function/
--regex-js=/([A-Za-z0-9._$]+)[ \t]*[:=][ \t]*\[/\1/,array/
--regex-js=/([^= ]+)[ \t]*=[ \t]*[^""]'[^'']*/\1/,string/
--regex-js=/([^= ]+)[ \t]*=[ \t]*[^'']"[^""]*/\1/,string/
После этого запущенные ctags из командной строки были фантастическими. Он нашел каждую функцию и объект, которые мне были нужны, чтобы найти.
Проблема заключается в том, что плагин taglist.vim не видит эти новые результаты. Когда я открываю свой файл javascript в vim и нажимаю: TlistToggle, я получаю то же самое скудное количество функций, которые я получил раньше. Я ударил 'u', чтобы обновить список, без эффекта.
Копая в taglist.vim, я нашел это:
" java language
let s:tlist_def_java_settings = 'java;p:package;c:class;i:interface;' .
\ 'f:field;m:method'
" javascript language
let s:tlist_def_javascript_settings = 'javascript;f:function'
... что подразумевает, что мы рассматриваем только один конкретный вид вывода из утилиты ctags для javascript. К сожалению, я недостаточно разбираюсь в taglist или vim вообще (пока), чтобы узнать, какие изменения я могу сделать, чтобы получить все эти замечательные результаты командной строки ctags, которые появятся в vim.
Помогите оценить!