vimtex/autoload/unite/sources/vimtex_toc.vim

63 lines
1.3 KiB
VimL
Raw Normal View History

2016-01-24 23:02:33 +01:00
" vimtex - LaTeX plugin for Vim
"
" Maintainer: Karl Yngve Lervåg
" Email: karl.yngve@gmail.com
"
let s:save_cpo = &cpo
set cpo&vim
let s:source = {
\ 'name' : 'vimtex_toc',
\ 'sorters' : 'sorter_nothing',
2016-01-24 23:11:39 +01:00
\ 'default_kind' : 'jump_list',
2016-01-24 23:02:33 +01:00
\}
2016-01-24 23:11:39 +01:00
function! s:source.gather_candidates(args, context) " {{{1
2016-01-24 23:02:33 +01:00
let entries = vimtex#toc#get_entries()
return map(entries, '{
2016-01-24 23:26:49 +01:00
\ "word" : s:format_entry(v:val),
2016-01-24 23:11:39 +01:00
\ "action__path" : v:val.file,
\ "action__line" : v:val.line,
2016-01-24 23:02:33 +01:00
\ }')
endfunction
2016-01-24 23:11:39 +01:00
" }}}1
2016-01-24 23:26:49 +01:00
function! s:format_entry(entry) " {{{1
return printf('%-10s%s', s:print_number(a:entry.number), a:entry.title)
endfunction
" }}}1
function! s:print_number(number) " {{{1
if empty(a:number) | return '' | endif
let number = [
\ a:number.part,
\ a:number.chapter,
\ a:number.section,
\ a:number.subsection,
\ a:number.subsubsection,
\ a:number.subsubsubsection,
\ ]
" Remove unused parts
while number[0] == 0
call remove(number, 0)
endwhile
while number[-1] == 0
call remove(number, -1)
endwhile
return join(number, '.')
endfunction
" }}}1
2016-01-24 23:02:33 +01:00
function! unite#sources#vimtex_toc#define()
return s:source
endfunction
let &cpo = s:save_cpo
unlet s:save_cpo