Возможно, ответ на мой вопрос очевиден, но даже после тщательного поиска я не могу найти ничего полезного.
В настоящее время я пишу небольшой плагин vim latex для автозаполнения, который предлагает дополнения на основе контекста редактирования. Соответствующая часть кода выглядит следующим образом:
function! Complete_latex(findstart, base)
if a:findstart
" locate the start of the base
"....
else
if s:envname_required()
return s:env_complete(a:base)
endif
if s:citation_required()
return s:cite_complete(a:base)
endif
if s:filename_required()
" TODO: Trigger filename completion
endif
endif
endfunction
set omnifunc=Complete_latex
Функции *_required()
в основном генерируют кучу регулярных выражений в текущей строке, которую я редактирую, чтобы выяснить, что я делаю сейчас. Поэтому, если я нахожусь в режиме INSERT в позиции, подобной ... \ input {| ... Я бы хотел, чтобы мой omnifunc вызвал то же самое завершение, которое я могу запустить с помощью C-X C-F
в режиме INSERT.
Поскольку я также использую плагин YouCompleteMe и устанавливаю {
в качестве триггера для семантического завершения в * .tex файлах, об этом заботятся.
Я знаю, что могу сам получить список файлов и заполнить всплывающее меню, но мне все же было интересно, смогу ли я использовать встроенную функцию vim.
Спасибо.