summaryrefslogtreecommitdiffstats
path: root/compiler
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2014-12-09 23:09:20 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2014-12-09 23:09:20 +0100
commit4071c094c69ba8ef716f8048cac8415fc7d96e26 (patch)
treeccf17bae58ed7655d62a7bce6104f31480976dc6 /compiler
parent617b01a5b6aa3cadb25b2ff8639e330cfc6cf3c1 (diff)
downloadvim-polyglot-1.10.4.tar.gz
vim-polyglot-1.10.4.zip
Updatev1.10.4
Diffstat (limited to 'compiler')
-rw-r--r--compiler/cargo.vim46
-rw-r--r--compiler/typescript.vim7
2 files changed, 37 insertions, 16 deletions
diff --git a/compiler/cargo.vim b/compiler/cargo.vim
index 89c1cff1..ed487a30 100644
--- a/compiler/cargo.vim
+++ b/compiler/cargo.vim
@@ -1,29 +1,35 @@
" Vim compiler file
" Compiler: Cargo Compiler
" Maintainer: Damien Radtke <damienradtke@gmail.com>
-" Latest Revision: 2014 Sep 18
+" Latest Revision: 2014 Sep 24
-if exists("current_compiler")
+if exists('current_compiler')
finish
endif
+runtime compiler/rustc.vim
let current_compiler = "cargo"
-if exists(":CompilerSet") != 2
+if exists(':CompilerSet') != 2
command -nargs=* CompilerSet setlocal <args>
endif
-CompilerSet errorformat&
-CompilerSet makeprg=cargo\ $*
+if exists('g:cargo_makeprg_params')
+ execute 'CompilerSet makeprg=cargo\ '.escape(g:cargo_makeprg_params, ' \|"').'\ $*'
+else
+ CompilerSet makeprg=cargo\ $*
+endif
" Allow a configurable global Cargo.toml name. This makes it easy to
" support variations like 'cargo.toml'.
-if !exists('g:cargo_toml_name')
- let g:cargo_toml_name = 'Cargo.toml'
-endif
+let s:cargo_manifest_name = get(g:, 'cargo_manifest_name', 'Cargo.toml')
-let s:toml_dir = fnamemodify(findfile(g:cargo_toml_name, '.;'), ':p:h').'/'
+function! s:is_absolute(path)
+ return a:path[0] == '/' || a:path =~ '[A-Z]\+:'
+endfunction
-if s:toml_dir != ''
+let s:local_manifest = findfile(s:cargo_manifest_name, '.;')
+if s:local_manifest != ''
+ let s:local_manifest = fnamemodify(s:local_manifest, ':p:h').'/'
augroup cargo
au!
au QuickfixCmdPost make call s:FixPaths()
@@ -33,15 +39,25 @@ if s:toml_dir != ''
" to be relative to the current directory instead of Cargo.toml.
function! s:FixPaths()
let qflist = getqflist()
+ let manifest = s:local_manifest
for qf in qflist
- if !qf['valid']
+ if !qf.valid
+ let m = matchlist(qf.text, '(file://\(.*\))$')
+ if !empty(m)
+ let manifest = m[1].'/'
+ " Manually strip another slash if needed; usually just an
+ " issue on Windows.
+ if manifest =~ '^/[A-Z]\+:/'
+ let manifest = manifest[1:]
+ endif
+ endif
continue
endif
- let filename = bufname(qf['bufnr'])
- if stridx(filename, s:toml_dir) == -1
- let filename = s:toml_dir.filename
+ let filename = bufname(qf.bufnr)
+ if s:is_absolute(filename)
+ continue
endif
- let qf['filename'] = simplify(s:toml_dir.bufname(qf['bufnr']))
+ let qf.filename = simplify(manifest.filename)
call remove(qf, 'bufnr')
endfor
call setqflist(qflist, 'r')
diff --git a/compiler/typescript.vim b/compiler/typescript.vim
index 74f79d11..e81ebd66 100644
--- a/compiler/typescript.vim
+++ b/compiler/typescript.vim
@@ -3,6 +3,11 @@ if exists("current_compiler")
endif
let current_compiler = "typescript"
-CompilerSet makeprg=tsc\ $*\ %
+if !exists("g:typescript_compiler_options")
+ let g:typescript_compiler_options = ""
+endif
+
+
+let &l:makeprg='tsc' . g:typescript_compiler_options . ' $* %'
CompilerSet errorformat=%+A\ %#%f\ %#(%l\\\,%c):\ %m,%C%m