Fix #532: Add support for vimtex-includes in ToC

This commit is contained in:
Karl Yngve Lervåg 2016-09-13 22:48:54 +02:00
parent e687d39281
commit 2559a85105
3 changed files with 32 additions and 1 deletions

View File

@ -170,7 +170,9 @@ function! s:actions_activate(close) dict "{{{1
execute 'keepalt' cmd bnr execute 'keepalt' cmd bnr
" Go to entry line " Go to entry line
call setpos('.', [0, entry.line, 0, 0]) if has_key(entry, 'line')
call setpos('.', [0, entry.line, 0, 0])
endif
" Ensure folds are opened " Ensure folds are opened
normal! zv normal! zv

View File

@ -151,6 +151,24 @@ function! vimtex#toc#get_entries() " {{{1
endif endif
endif endif
" Convenience includes
let l:fname = matchstr(l:line, s:re_vimtex_include)
if !empty(l:fname)
if l:fname[0] !=# '/'
let l:fname = b:vimtex.root . '/' . l:fname
endif
call add(l:toc, {
\ 'title' : 'Vimtex include: '
\ . (strlen(l:fname) < 54
\ ? l:fname
\ : l:fname[0:20] . '...' . l:fname[-30:]),
\ 'number' : '',
\ 'file' : l:fname,
\ 'level' : s:number.current_level,
\ })
continue
endif
" Bibliography files " Bibliography files
if l:line =~# s:re_bibs if l:line =~# s:re_bibs
call add(l:toc, s:parse_bib_input(l:line)) call add(l:toc, s:parse_bib_input(l:line))
@ -488,6 +506,7 @@ let s:re_sec = '\v^\s*\\%(part|chapter|%(sub)*section)\*?\s*%(\[.{-}\])?\{'
let s:re_sec_starred = '\v^\s*\\%(part|chapter|%(sub)*section)\*' let s:re_sec_starred = '\v^\s*\\%(part|chapter|%(sub)*section)\*'
let s:re_sec_level = '\v^\s*\\\zs%(part|chapter|%(sub)*section)' let s:re_sec_level = '\v^\s*\\\zs%(part|chapter|%(sub)*section)'
let s:re_sec_title = s:re_sec . '\zs.{-}\ze\}?\%?\s*$' let s:re_sec_title = s:re_sec . '\zs.{-}\ze\}?\%?\s*$'
let s:re_vimtex_include = '%\s*vimtex-include:\?\s\+\zs\f\+'
let s:re_matters = '\v^\s*\\%(front|main|back)matter>' let s:re_matters = '\v^\s*\\%(front|main|back)matter>'
let s:re_structure = '\v^\s*\\((front|main|back)matter|appendix)>' let s:re_structure = '\v^\s*\\((front|main|back)matter|appendix)>'
let s:re_structure_match = '\v((front|main|back)matter|appendix)' let s:re_structure_match = '\v((front|main|back)matter|appendix)'

View File

@ -1710,6 +1710,16 @@ Table of contents~
The ToC entries may be activated/jumped to with <cr> or <space>. The local The ToC entries may be activated/jumped to with <cr> or <space>. The local
keybindings are described if |g:vimtex_index_show_help| is enabled. keybindings are described if |g:vimtex_index_show_help| is enabled.
One may force entries into the ToC through designated comments with the
following syntax: >
% vimtex-include: /path/to/file
The path may be absolute or relative. In the latter case, it will be relative
to the current root (as printed by |:VimtexInfo|). This will add an entry in
the ToC which makes it easy to open any file. Note, though, that the ToC and
vimtex key mappings may not be available in the target file.
Associated settings: Associated settings:
|g:vimtex_toc_enabled| |g:vimtex_toc_enabled|
|g:vimtex_toc_fold| |g:vimtex_toc_fold|