Improved VimtexWordCount (fixes #166)
This commit is contained in:
parent
9b5b013953
commit
b084da901b
@ -64,6 +64,51 @@ function! vimtex#info() " {{{1
|
|||||||
endfor
|
endfor
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
|
" }}}1
|
||||||
|
function! vimtex#wordcount(detailed) " {{{1
|
||||||
|
" Run texcount, save output to lines variable
|
||||||
|
let data = g:vimtex#data[b:vimtex.id]
|
||||||
|
let cmd = 'cd ' . vimtex#util#fnameescape(data.root)
|
||||||
|
let cmd .= '; texcount -nosub -sum '
|
||||||
|
let cmd .= a:detailed > 0 ? '-inc ' : '-merge '
|
||||||
|
let cmd .= vimtex#util#fnameescape(data.base)
|
||||||
|
let lines = split(system(cmd), '\n')
|
||||||
|
|
||||||
|
" Create wordcount window
|
||||||
|
if bufnr('TeXcount') >= 0
|
||||||
|
bwipeout TeXcount
|
||||||
|
endif
|
||||||
|
split TeXcount
|
||||||
|
|
||||||
|
" Add lines to buffer
|
||||||
|
for line in lines
|
||||||
|
call append('$', printf('%s', line))
|
||||||
|
endfor
|
||||||
|
0delete _
|
||||||
|
|
||||||
|
" Set mappings
|
||||||
|
nnoremap <buffer> <silent> q :bwipeout<cr>
|
||||||
|
|
||||||
|
" Set buffer options
|
||||||
|
setlocal bufhidden=wipe
|
||||||
|
setlocal buftype=nofile
|
||||||
|
setlocal cursorline
|
||||||
|
setlocal listchars=
|
||||||
|
setlocal nobuflisted
|
||||||
|
setlocal nolist
|
||||||
|
setlocal nospell
|
||||||
|
setlocal noswapfile
|
||||||
|
setlocal nowrap
|
||||||
|
setlocal tabstop=8
|
||||||
|
setlocal nomodifiable
|
||||||
|
|
||||||
|
" Set highlighting
|
||||||
|
syntax match TexcountText /^.*:.*/ contains=TexcountValue
|
||||||
|
syntax match TexcountValue /.*:\zs.*/
|
||||||
|
highlight link TexcountText VimtexMsg
|
||||||
|
highlight link TexcountValue Constant
|
||||||
|
endfunction
|
||||||
|
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
function! s:init_environment() " {{{1
|
function! s:init_environment() " {{{1
|
||||||
@ -91,7 +136,6 @@ function! s:init_environment() " {{{1
|
|||||||
function data.out() dict
|
function data.out() dict
|
||||||
return s:get_main_ext(self, 'pdf')
|
return s:get_main_ext(self, 'pdf')
|
||||||
endfunction
|
endfunction
|
||||||
let data.words = function('s:get_wordcount')
|
|
||||||
|
|
||||||
call add(g:vimtex#data, data)
|
call add(g:vimtex#data, data)
|
||||||
let b:vimtex.id = len(g:vimtex#data) - 1
|
let b:vimtex.id = len(g:vimtex#data) - 1
|
||||||
@ -99,8 +143,7 @@ function! s:init_environment() " {{{1
|
|||||||
|
|
||||||
" Define commands
|
" Define commands
|
||||||
command! -buffer VimtexInfo call vimtex#info()
|
command! -buffer VimtexInfo call vimtex#info()
|
||||||
command! -buffer VimtexWordCount
|
command! -buffer -bang VimtexWordCount call vimtex#wordcount(<q-bang> == "!")
|
||||||
\ echo g:vimtex#data[b:vimtex.id].words()
|
|
||||||
|
|
||||||
" Define mappings
|
" Define mappings
|
||||||
nnoremap <buffer> <plug>(vimtex-info) :call vimtex#info()<cr>
|
nnoremap <buffer> <plug>(vimtex-info) :call vimtex#info()<cr>
|
||||||
@ -295,14 +338,6 @@ function! s:get_main_ext(self, ext) " {{{1
|
|||||||
return ''
|
return ''
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
" }}}1
|
|
||||||
function! s:get_wordcount() dict " {{{1
|
|
||||||
let cmd = 'cd ' . vimtex#util#fnameescape(self.root)
|
|
||||||
let cmd .= '; texcount -sum -brief -merge '
|
|
||||||
\ . vimtex#util#fnameescape(self.base)
|
|
||||||
return str2nr(matchstr(system(cmd), '^\d\+'))
|
|
||||||
endfunction
|
|
||||||
|
|
||||||
" }}}1
|
" }}}1
|
||||||
|
|
||||||
function! s:print_dict(dict, ...) " {{{1
|
function! s:print_dict(dict, ...) " {{{1
|
||||||
|
@ -735,7 +735,14 @@ Commands~
|
|||||||
The count is created with `texcount` through a call
|
The count is created with `texcount` through a call
|
||||||
on the main project file similar to: >
|
on the main project file similar to: >
|
||||||
|
|
||||||
texcount -sum -brief -merge FILE
|
texcount -nosub -sub -merge FILE
|
||||||
|
<
|
||||||
|
*VimtexWordCount!*
|
||||||
|
:VimtexWordCount! Similar to |VimtexWordCount|, but show separate
|
||||||
|
reports for included files. I.e. presents the
|
||||||
|
result of >
|
||||||
|
|
||||||
|
texcount -nosub -sub -inc FILE
|
||||||
<
|
<
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
Map definitions~
|
Map definitions~
|
||||||
|
Loading…
x
Reference in New Issue
Block a user