summaryrefslogtreecommitdiffstats
path: root/autoload
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2020-10-17 14:17:55 +0200
committerAdam Stankiewicz <sheerun@sher.pl>2020-10-17 14:17:55 +0200
commitaf3ebda71002223b4bc6d4cc79a0359523eaa385 (patch)
tree74ed3ae3100bf4ae297fb1588073fa279cca063b /autoload
parent6b663ec330356e92de9c68a6dac09a80a2d5b07c (diff)
downloadvim-polyglot-af3ebda71002223b4bc6d4cc79a0359523eaa385.tar.gz
vim-polyglot-af3ebda71002223b4bc6d4cc79a0359523eaa385.zip
Fix testsv4.13.4
Diffstat (limited to 'autoload')
-rw-r--r--autoload/context.vim188
-rw-r--r--autoload/polyglot/sleuth.vim9
2 files changed, 195 insertions, 2 deletions
diff --git a/autoload/context.vim b/autoload/context.vim
new file mode 100644
index 00000000..43786463
--- /dev/null
+++ b/autoload/context.vim
@@ -0,0 +1,188 @@
+if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'context') == -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
diff --git a/autoload/polyglot/sleuth.vim b/autoload/polyglot/sleuth.vim
index f8dc2344..db032dd6 100644
--- a/autoload/polyglot/sleuth.vim
+++ b/autoload/polyglot/sleuth.vim
@@ -79,6 +79,7 @@ let s:globs = {
\ 'conaryrecipe': '*.recipe',
\ 'conf': '*.conf,auto.master,config',
\ 'config': 'configure.in,configure.ac,Pipfile',
+ \ 'context': '*.mkii,*.mkiv,*.mkvi',
\ 'cpp': '*.cpp,*.c++,*.cc,*.cp,*.cxx,*.h,*.h++,*.hh,*.hpp,*.hxx,*.inc,*.inl,*.ipp,*.tcc,*.tpp,*.moc,*.tlh',
\ 'cql': '*.cql',
\ 'crm': '*.crm',
@@ -121,6 +122,7 @@ let s:globs = {
\ 'diff': '*.diff,*.rej',
\ 'dircolors': '.dir_colors,.dircolors',
\ 'dnsmasq': '',
+ \ 'dockerfile': '*.Dockerfile,*.dock,Containerfile,Dockerfile,dockerfile,Dockerfile*',
\ 'dosbatch': '*.bat,*.sys',
\ 'dosini': '*.wrap,*.ini,*.dof,*.lektorproject,*.prefs,*.pro,*.properties,buildozer.spec,.editorconfig,.npmrc,php.ini-*',
\ 'dot': '*.dot,*.gv',
@@ -307,6 +309,7 @@ let s:globs = {
\ 'make': '*.mak,*.dsp,*.mk,*[mM]akefile',
\ 'mako': '*.mako,*.mao',
\ 'mallard': '*.page',
+ \ 'man': '*.1,*.1in,*.1m,*.1x,*.2,*.3,*.3in,*.3m,*.3p,*.3pm,*.3qt,*.3x,*.4,*.5,*.6,*.7,*.8,*.9,*.man,*.mdoc',
\ 'manconf': 'man.config',
\ 'map': '*.map',
\ 'maple': '*.mv,*.mpl,*.mws',
@@ -382,7 +385,7 @@ let s:globs = {
\ 'perl': '*.pl,*.al,*.cgi,*.fcgi,*.perl,*.ph,*.plx,*.pm,*.psgi,*.t,Makefile.PL,Rexfile,ack,cpanfile,example.gitolite.rc,.gitolite.rc',
\ 'pf': 'pf.conf',
\ 'pfmain': 'main.cf',
- \ 'php': '*.php,*.aw,*.ctp,*.fcgi,*.inc,*.php3,*.php4,*.php5,*.phps,*.phpt,*.phtml,.php,.php_cs,.php_cs.dist,Phakefile',
+ \ 'php': '*.php,*.aw,*.ctp,*.fcgi,*.inc,*.php3,*.php4,*.php5,*.phps,*.phpt,*.phtml,*.php9,.php,.php_cs,.php_cs.dist,Phakefile',
\ 'pike': '*.pike,*.pmod',
\ 'pilrc': '*.rcp',
\ 'pine': '.pinerc,pinerc,.pinercex,pinercex',
@@ -449,7 +452,7 @@ let s:globs = {
\ 'rrst': '*.rrst,*.srst',
\ 'rst': '*.rst,*.rest,*.rest.txt,*.rst.txt',
\ 'rtf': '*.rtf',
- \ 'ruby': '*.rb,*.builder,*.eye,*.fcgi,*.gemspec,*.god,*.jbuilder,*.mspec,*.pluginspec,*.podspec,*.rabl,*.rake,*.rbi,*.rbuild,*.rbw,*.rbx,*.ru,*.ruby,*.spec,*.thor,*.watchr,*.rxml,*.rjs,*.rant,*.axlsx,*.cap,*.opal,.irbrc,.pryrc,.simplecov,Appraisals,Berksfile,Buildfile,Capfile,Dangerfile,Deliverfile,Fastfile,Gemfile,Gemfile.lock,Guardfile,Jarfile,Mavenfile,Podfile,Puppetfile,Rakefile,Snapfile,Thorfile,Vagrantfile,buildfile,Rantfile,.autotest,Cheffile,KitchenSink,Routefile,.Guardfile,.Brewfile,vagrantfile,[Rr]akefile*,*_spec.rb',
+ \ 'ruby': '*.rb,*.builder,*.eye,*.fcgi,*.gemspec,*.god,*.jbuilder,*.mspec,*.pluginspec,*.podspec,*.rabl,*.rake,*.rbi,*.rbuild,*.rbw,*.rbx,*.ru,*.ruby,*.spec,*.thor,*.watchr,*.rxml,*.rjs,*.rant,*.axlsx,*.cap,*.opal,.irbrc,.pryrc,.simplecov,Appraisals,Berksfile,Buildfile,Capfile,Dangerfile,Deliverfile,Fastfile,Gemfile,Gemfile.lock,Guardfile,Jarfile,Mavenfile,Podfile,Puppetfile,Rakefile,Snapfile,Thorfile,Vagrantfile,buildfile,[Rr]antfile,.autotest,Cheffile,KitchenSink,Routefile,.Guardfile,.Brewfile,vagrantfile,[Rr]akefile*,*_spec.rb',
\ 'rust': '*.rs,*.rs.in',
\ 'samba': 'smb.conf',
\ 'sas': '*.sas',
@@ -601,6 +604,8 @@ let s:globs = {
\ 'xml': '*.xml,*.adml,*.admx,*.ant,*.axml,*.builds,*.ccproj,*.ccxml,*.clixml,*.cproject,*.cscfg,*.csdef,*.csl,*.csproj,*.ct,*.depproj,*.dita,*.ditamap,*.ditaval,*.dll.config,*.dotsettings,*.filters,*.fsproj,*.fxml,*.glade,*.gml,*.gmx,*.grxml,*.gst,*.iml,*.ivy,*.jelly,*.jsproj,*.kml,*.launch,*.mdpolicy,*.mjml,*.mm,*.mod,*.mxml,*.natvis,*.ncl,*.ndproj,*.nproj,*.nuspec,*.odd,*.osm,*.pkgproj,*.pluginspec,*.proj,*.props,*.psc1,*.pt,*.rdf,*.resx,*.rss,*.sch,*.scxml,*.sfproj,*.shproj,*.srdf,*.storyboard,*.sublime-snippet,*.targets,*.tml,*.ui,*.urdf,*.ux,*.vbproj,*.vcxproj,*.vsixmanifest,*.vssettings,*.vstemplate,*.vxml,*.wixproj,*.workflow,*.wsdl,*.wsf,*.wxi,*.wxl,*.wxs,*.x3d,*.xacro,*.xaml,*.xib,*.xlf,*.xliff,*.xmi,*.xml.dist,*.xproj,*.xsd,*.xspec,*.xul,*.zcml,*.cdxml,*.tpm,*.csproj.user,*.wpl,.classpath,.cproject,.project,App.config,NuGet.config,Settings.StyleCop,Web.Debug.config,Web.Release.config,Web.config,packages.config,*fglrxrc',
\ 'xml.twig': '*.xml.twig',
\ 'xmodmap': '*Xmodmap,*xmodmap*',
+ \ 'xpm': '*.xpm,*.pm',
+ \ 'xpm2': '*.xpm2',
\ 'xquery': '*.xq,*.xql,*.xqm,*.xquery,*.xqy',
\ 'xs': '*.xs',
\ 'xsd': '*.xsd',