summaryrefslogtreecommitdiffstats
path: root/autoload/context.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/context.vim')
-rw-r--r--autoload/context.vim188
1 files changed, 0 insertions, 188 deletions
diff --git a/autoload/context.vim b/autoload/context.vim
deleted file mode 100644
index 15157dc2..00000000
--- a/autoload/context.vim
+++ /dev/null
@@ -1,188 +0,0 @@
-if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1
-
-" Language: ConTeXt typesetting engine
-" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
-" Latest Revision: 2016 Oct 21
-
-let s:keepcpo= &cpo
-set cpo&vim
-
-" Helper functions {{{
-function! s:context_echo(message, mode)
- redraw
- echo "\r"
- execute 'echohl' a:mode
- echomsg '[ConTeXt]' a:message
- echohl None
-endf
-
-function! s:sh()
- return has('win32') || has('win64') || has('win16') || has('win95')
- \ ? ['cmd.exe', '/C']
- \ : ['/bin/sh', '-c']
-endfunction
-
-" For backward compatibility
-if exists('*win_getid')
-
- function! s:win_getid()
- return win_getid()
- endf
-
- function! s:win_id2win(winid)
- return win_id2win(a:winid)
- endf
-
-else
-
- function! s:win_getid()
- return winnr()
- endf
-
- function! s:win_id2win(winnr)
- return a:winnr
- endf
-
-endif
-" }}}
-
-" ConTeXt jobs {{{
-if has('job')
-
- let g:context_jobs = []
-
- " Print the status of ConTeXt jobs
- function! context#job_status()
- let l:jobs = filter(g:context_jobs, 'job_status(v:val) == "run"')
- let l:n = len(l:jobs)
- call s:context_echo(
- \ 'There '.(l:n == 1 ? 'is' : 'are').' '.(l:n == 0 ? 'no' : l:n)
- \ .' job'.(l:n == 1 ? '' : 's').' running'
- \ .(l:n == 0 ? '.' : ' (' . join(l:jobs, ', ').').'),
- \ 'ModeMsg')
- endfunction
-
- " Stop all ConTeXt jobs
- function! context#stop_jobs()
- let l:jobs = filter(g:context_jobs, 'job_status(v:val) == "run"')
- for job in l:jobs
- call job_stop(job)
- endfor
- sleep 1
- let l:tmp = []
- for job in l:jobs
- if job_status(job) == "run"
- call add(l:tmp, job)
- endif
- endfor
- let g:context_jobs = l:tmp
- if empty(g:context_jobs)
- call s:context_echo('Done. No jobs running.', 'ModeMsg')
- else
- call s:context_echo('There are still some jobs running. Please try again.', 'WarningMsg')
- endif
- endfunction
-
- function! context#callback(path, job, status)
- if index(g:context_jobs, a:job) != -1 && job_status(a:job) != 'run' " just in case
- call remove(g:context_jobs, index(g:context_jobs, a:job))
- endif
- call s:callback(a:path, a:job, a:status)
- endfunction
-
- function! context#close_cb(channel)
- call job_status(ch_getjob(a:channel)) " Trigger exit_cb's callback for faster feedback
- endfunction
-
- function! s:typeset(path)
- call add(g:context_jobs,
- \ job_start(add(s:sh(), context#command() . ' ' . shellescape(fnamemodify(a:path, ":t"))), {
- \ 'close_cb' : 'context#close_cb',
- \ 'exit_cb' : function(get(b:, 'context_callback', get(g:, 'context_callback', 'context#callback')),
- \ [a:path]),
- \ 'in_io' : 'null'
- \ }))
- endfunction
-
-else " No jobs
-
- function! context#job_status()
- call s:context_echo('Not implemented', 'WarningMsg')
- endfunction!
-
- function! context#stop_jobs()
- call s:context_echo('Not implemented', 'WarningMsg')
- endfunction
-
- function! context#callback(path, job, status)
- call s:callback(a:path, a:job, a:status)
- endfunction
-
- function! s:typeset(path)
- execute '!' . context#command() . ' ' . shellescape(fnamemodify(a:path, ":t"))
- call call(get(b:, 'context_callback', get(g:, 'context_callback', 'context#callback')),
- \ [a:path, 0, v:shell_error])
- endfunction
-
-endif " has('job')
-
-function! s:callback(path, job, status) abort
- if a:status < 0 " Assume the job was terminated
- return
- endif
- " Get info about the current window
- let l:winid = s:win_getid() " Save window id
- let l:efm = &l:errorformat " Save local errorformat
- let l:cwd = fnamemodify(getcwd(), ":p") " Save local working directory
- " Set errorformat to parse ConTeXt errors
- execute 'setl efm=' . escape(b:context_errorformat, ' ')
- try " Set cwd to expand error file correctly
- execute 'lcd' fnameescape(fnamemodify(a:path, ':h'))
- catch /.*/
- execute 'setl efm=' . escape(l:efm, ' ')
- throw v:exception
- endtry
- try
- execute 'cgetfile' fnameescape(fnamemodify(a:path, ':r') . '.log')
- botright cwindow
- finally " Restore cwd and errorformat
- execute s:win_id2win(l:winid) . 'wincmd w'
- execute 'lcd ' . fnameescape(l:cwd)
- execute 'setl efm=' . escape(l:efm, ' ')
- endtry
- if a:status == 0
- call s:context_echo('Success!', 'ModeMsg')
- else
- call s:context_echo('There are errors. ', 'ErrorMsg')
- endif
-endfunction
-
-function! context#command()
- return get(b:, 'context_mtxrun', get(g:, 'context_mtxrun', 'mtxrun'))
- \ . ' --script context --autogenerate --nonstopmode'
- \ . ' --synctex=' . (get(b:, 'context_synctex', get(g:, 'context_synctex', 0)) ? '1' : '0')
- \ . ' ' . get(b:, 'context_extra_options', get(g:, 'context_extra_options', ''))
-endfunction
-
-" Accepts an optional path (useful for big projects, when the file you are
-" editing is not the project's root document). If no argument is given, uses
-" the path of the current buffer.
-function! context#typeset(...) abort
- let l:path = fnamemodify(strlen(a:000[0]) > 0 ? a:1 : expand("%"), ":p")
- let l:cwd = fnamemodify(getcwd(), ":p") " Save local working directory
- call s:context_echo('Typesetting...', 'ModeMsg')
- execute 'lcd' fnameescape(fnamemodify(l:path, ":h"))
- try
- call s:typeset(l:path)
- finally " Restore local working directory
- execute 'lcd ' . fnameescape(l:cwd)
- endtry
-endfunction!
-"}}}
-
-let &cpo = s:keepcpo
-unlet s:keepcpo
-
-" vim: sw=2 fdm=marker
-
-endif