diff --git a/autoload/vimtex/doc.vim b/autoload/vimtex/doc.vim index 1bf4870a5a..e41359a9da 100644 --- a/autoload/vimtex/doc.vim +++ b/autoload/vimtex/doc.vim @@ -62,11 +62,26 @@ function! s:packages_get_from_cursor() abort " {{{1 return s:packages_from_usepackage(l:cmd) elseif l:cmd.name ==# '\documentclass' return s:packages_from_documentclass(l:cmd) + elseif l:cmd.name ==# '\begin' + return s:packages_from_environment(l:cmd) + elseif l:cmd.name ==# '\end' + return s:packages_from_environment(l:cmd) else return s:packages_from_command(strpart(l:cmd.name, 1)) endif endfunction +" }}}1 +function! s:packages_from_environment(env) abort " {{{1 + try + let l:env = a:env.args[0].text + catch + call vimtex#log#warning('Could not parse the environment name!') + return {} + endtry + return s:packages_from_command('\begin{' . l:env . '}') +endfunction + " }}}1 function! s:packages_from_usepackage(cmd) abort " {{{1 try @@ -129,7 +144,7 @@ function! s:packages_from_command(cmd) abort " {{{1 endwhile let l:candidates = [] - let l:filter = 'v:val =~# ''^' . a:cmd . '\>''' + let l:filter = 'v:val =~# ''^' . escape(a:cmd, '\') . '\(\W\|$\)''' for l:package in l:packages let l:cmds = filter(readfile(s:complete_dir . l:package), l:filter) if empty(l:cmds) | continue | endif