summaryrefslogtreecommitdiffstats
path: root/runtime/compiler/context.vim
diff options
context:
space:
mode:
Diffstat (limited to 'runtime/compiler/context.vim')
-rw-r--r--runtime/compiler/context.vim54
1 files changed, 54 insertions, 0 deletions
diff --git a/runtime/compiler/context.vim b/runtime/compiler/context.vim
new file mode 100644
index 0000000..cb78c96
--- /dev/null
+++ b/runtime/compiler/context.vim
@@ -0,0 +1,54 @@
+" Vim compiler file
+" Compiler: ConTeXt typesetting engine
+" Maintainer: Nicola Vitacolonna <nvitacolonna@gmail.com>
+" Last Change: 2016 Oct 21
+
+if exists("current_compiler")
+ finish
+endif
+let s:keepcpo= &cpo
+set cpo&vim
+
+if exists(":CompilerSet") != 2 " older Vim always used :setlocal
+ command -nargs=* CompilerSet setlocal <args>
+endif
+
+" If makefile exists and we are not asked to ignore it, we use standard make
+" (do not redefine makeprg)
+if get(b:, 'context_ignore_makefile', get(g:, 'context_ignore_makefile', 0)) ||
+ \ (!filereadable('Makefile') && !filereadable('makefile'))
+ let current_compiler = 'context'
+ " The following assumes that the current working directory is set to the
+ " directory of the file to be typeset
+ let &l:makeprg = 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', ''))
+ \ . ' ' . shellescape(expand('%:p:t'))
+else
+ let current_compiler = 'make'
+endif
+
+let b:context_errorformat = ''
+ \ . '%-Popen source%.%#> %f,'
+ \ . '%-Qclose source%.%#> %f,'
+ \ . "%-Popen source%.%#name '%f',"
+ \ . "%-Qclose source%.%#name '%f',"
+ \ . '%Etex %trror%.%#mp error on line %l in file %f:%.%#,'
+ \ . 'tex %trror%.%#error on line %l in file %f: %m,'
+ \ . '%Elua %trror%.%#error on line %l in file %f:,'
+ \ . '%+Emetapost %#> error: %#,'
+ \ . '! error: %#%m,'
+ \ . '%-C %#,'
+ \ . '%C! %m,'
+ \ . '%Z[ctxlua]%m,'
+ \ . '%+C<*> %.%#,'
+ \ . '%-C%.%#,'
+ \ . '%Z...%m,'
+ \ . '%-Zno-error,'
+ \ . '%-G%.%#' " Skip remaining lines
+
+execute 'CompilerSet errorformat=' . escape(b:context_errorformat, ' ')
+
+let &cpo = s:keepcpo
+unlet s:keepcpo