diff options
Diffstat (limited to 'autoload/vimtex/view/common.vim')
-rw-r--r-- | autoload/vimtex/view/common.vim | 212 |
1 files changed, 0 insertions, 212 deletions
diff --git a/autoload/vimtex/view/common.vim b/autoload/vimtex/view/common.vim deleted file mode 100644 index 348dc899..00000000 --- a/autoload/vimtex/view/common.vim +++ /dev/null @@ -1,212 +0,0 @@ -if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'latex') == -1 - -" vimtex - LaTeX plugin for Vim -" -" Maintainer: Karl Yngve LervÄg -" Email: karl.yngve@gmail.com -" - -function! vimtex#view#common#apply_common_template(viewer) abort " {{{1 - return extend(a:viewer, deepcopy(s:common_template)) -endfunction - -" }}}1 -function! vimtex#view#common#apply_xwin_template(class, viewer) abort " {{{1 - let a:viewer.class = a:class - let a:viewer.xwin_id = 0 - call extend(a:viewer, deepcopy(s:xwin_template)) - return a:viewer -endfunction - -" }}}1 -function! vimtex#view#common#not_readable(output) abort " {{{1 - if !filereadable(a:output) - call vimtex#log#warning('Viewer cannot read PDF file!', a:output) - return 1 - else - return 0 - endif -endfunction - -" }}}1 - -let s:common_template = {} - -function! s:common_template.out() dict abort " {{{1 - return g:vimtex_view_use_temp_files - \ ? b:vimtex.root . '/' . b:vimtex.name . '_vimtex.pdf' - \ : b:vimtex.out(1) -endfunction - -" }}}1 -function! s:common_template.synctex() dict abort " {{{1 - return fnamemodify(self.out(), ':r') . '.synctex.gz' -endfunction - -" }}}1 -function! s:common_template.copy_files() dict abort " {{{1 - if !g:vimtex_view_use_temp_files | return | endif - - " - " Copy pdf file - " - let l:out = self.out() - if getftime(b:vimtex.out()) > getftime(l:out) - call writefile(readfile(b:vimtex.out(), 'b'), l:out, 'b') - endif - - " - " Copy synctex file - " - let l:old = b:vimtex.ext('synctex.gz') - let l:new = self.synctex() - if getftime(l:old) > getftime(l:new) - call rename(l:old, l:new) - endif -endfunction - -" }}}1 -function! s:common_template.pprint_items() abort dict " {{{1 - let l:list = [] - - if has_key(self, 'xwin_id') - call add(l:list, ['xwin id', self.xwin_id]) - endif - - if has_key(self, 'process') - call add(l:list, ['process', self.process]) - endif - - for l:key in filter(keys(self), 'v:val =~# ''^cmd_''') - call add(l:list, [l:key, self[l:key]]) - endfor - - return l:list -endfunction - -" }}}1 - -let s:xwin_template = {} - -function! s:xwin_template.view(file) dict abort " {{{1 - if empty(a:file) - let outfile = self.out() - else - let outfile = a:file - endif - if vimtex#view#common#not_readable(outfile) - return - endif - - if self.xwin_exists() - call self.forward_search(outfile) - else - if g:vimtex_view_use_temp_files - call self.copy_files() - endif - call self.start(outfile) - endif - - if has_key(self, 'hook_view') - call self.hook_view() - endif -endfunction - -" }}}1 -function! s:xwin_template.xwin_get_id() dict abort " {{{1 - if !executable('xdotool') | return 0 | endif - if self.xwin_id > 0 | return self.xwin_id | endif - - " Allow some time for the viewer to start properly - sleep 500m - - " - " Get the window ID - " - let cmd = 'xdotool search --class ' . self.class - let xwin_ids = split(system(cmd), '\n') - if len(xwin_ids) == 0 - call vimtex#log#warning('Viewer cannot find ' . self.class . ' window ID!') - let self.xwin_id = 0 - else - let self.xwin_id = xwin_ids[-1] - endif - - return self.xwin_id -endfunction - -" }}}1 -function! s:xwin_template.xwin_exists() dict abort " {{{1 - if !executable('xdotool') | return 0 | endif - - " - " If xwin_id is already set, check if it still exists - " - if self.xwin_id > 0 - let cmd = 'xdotool search --class ' . self.class - if index(split(system(cmd), '\n'), self.xwin_id) < 0 - let self.xwin_id = 0 - endif - endif - - " - " If xwin_id is unset, check if matching viewer windows exist - " - if self.xwin_id == 0 - let l:pid = has_key(self, 'get_pid') ? self.get_pid() : 0 - if l:pid > 0 - let cmd = 'xdotool search' - \ . ' --all --pid ' . l:pid - \ . ' --name ' . fnamemodify(self.out(), ':t') - let self.xwin_id = get(split(system(cmd), '\n'), 0) - else - let cmd = 'xdotool search --name ' . fnamemodify(self.out(), ':t') - let ids = split(system(cmd), '\n') - let ids_already_used = filter(map(deepcopy(vimtex#state#list_all()), - \ "get(get(v:val, 'viewer', {}), 'xwin_id')"), 'v:val > 0') - for id in ids - if index(ids_already_used, id) < 0 - let self.xwin_id = id - break - endif - endfor - endif - endif - - return self.xwin_id > 0 -endfunction - -" }}}1 -function! s:xwin_template.xwin_send_keys(keys) dict abort " {{{1 - if a:keys ==# '' || !executable('xdotool') || self.xwin_id <= 0 - return - endif - - let cmd = 'xdotool key --window ' . self.xwin_id - let cmd .= ' ' . a:keys - silent call system(cmd) -endfunction - -" }}}1 -function! s:xwin_template.move(arg) abort " {{{1 - if !executable('xdotool') || self.xwin_id <= 0 - return - endif - - let l:cmd = 'xdotool windowmove ' . self.xwin_get_id() . ' ' . a:arg - silent call system(l:cmd) -endfunction - -" }}}1 -function! s:xwin_template.resize(arg) abort " {{{1 - if !executable('xdotool') || self.xwin_id <= 0 - return - endif - - let l:cmd = 'xdotool windowsize ' . self.xwin_get_id() . ' ' . a:arg - silent call system(l:cmd) -endfunction - -" }}}1 - -endif |