Fixed bug where toc did not find input file
This commit is contained in:
parent
c6fe12f646
commit
4d73dfda98
@ -55,12 +55,10 @@ function! s:toc_activate(close)
|
||||
let titlestr = s:toc_escape_title(entry['text'])
|
||||
|
||||
" Search for duplicates
|
||||
"
|
||||
let i=0
|
||||
let entry_hash = entry['level'].titlestr
|
||||
let duplicates = 0
|
||||
while i<n
|
||||
let i_entry = b:toc[n]
|
||||
let i_hash = b:toc[i]['level'].s:toc_escape_title(b:toc[i]['text'])
|
||||
if i_hash == entry_hash
|
||||
let duplicates += 1
|
||||
@ -72,24 +70,14 @@ function! s:toc_activate(close)
|
||||
|
||||
execute b:calling_win . 'wincmd w'
|
||||
|
||||
let bnr = bufnr(entry['file'])
|
||||
if bnr == -1
|
||||
execute 'badd ' . entry['file']
|
||||
let bnr = bufnr(entry['file'])
|
||||
endif
|
||||
let files = [entry['file']]
|
||||
for line in filter(readfile(entry['file']), 'v:val =~ ''\\input{''')
|
||||
call add(files, matchstr(line, '{\zs.*\ze\(\.tex\)\?}') . '.tex')
|
||||
endfor
|
||||
|
||||
execute 'buffer! ' . bnr
|
||||
|
||||
" skip duplicates
|
||||
while duplicates > 0
|
||||
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
|
||||
let duplicates -= 1
|
||||
endif
|
||||
endwhile
|
||||
|
||||
if search('\\' . entry['level'] . '\_\s*{' . titlestr . '}', 'ws')
|
||||
normal! zv
|
||||
endif
|
||||
" Find section in buffer (or inputted files)
|
||||
call s:toc_find_match('\\' . entry['level'] . '\_\s*{' . titlestr . '}',
|
||||
\ duplicates, files)
|
||||
|
||||
if a:close
|
||||
if g:latex_toc_resize
|
||||
@ -119,6 +107,42 @@ function! s:toc_escape_title(titlestr)
|
||||
return substitute(titlestr, ' ', '\\_\\s\\+', 'g')
|
||||
endfunction
|
||||
|
||||
" {{{1 s:toc_find_match
|
||||
function! s:toc_find_match(strsearch,duplicates,files)
|
||||
|
||||
call s:toc_open_buf(a:files[0])
|
||||
let dups = a:duplicates
|
||||
|
||||
" Skip duplicates
|
||||
while dups > 0
|
||||
if search(a:strsearch, 'w')
|
||||
let dups -= 1
|
||||
else
|
||||
break
|
||||
endif
|
||||
endwhile
|
||||
|
||||
if search(a:strsearch, 'w')
|
||||
normal! zv
|
||||
return
|
||||
endif
|
||||
|
||||
call s:toc_find_match(a:strsearch,dups,a:files[1:])
|
||||
|
||||
endfunction
|
||||
|
||||
" {{{1 s:toc_open_buf
|
||||
function! s:toc_open_buf(file)
|
||||
|
||||
let bnr = bufnr(a:file)
|
||||
if bnr == -1
|
||||
execute 'badd ' . a:file
|
||||
let bnr = bufnr(a:file)
|
||||
endif
|
||||
execute 'buffer! ' . bnr
|
||||
|
||||
endfunction
|
||||
|
||||
" {{{1 s:toc_toggle_numbers
|
||||
function! s:toc_toggle_numbers()
|
||||
if b:toc_numbers
|
||||
|
Loading…
Reference in New Issue
Block a user