mirror of
https://github.com/sheerun/vim-polyglot.git
synced 2025-11-10 04:23:51 -05:00
Update
This commit is contained in:
@@ -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')
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user