diff options
Diffstat (limited to '')
| -rw-r--r-- | compiler/cargo.vim | 46 | ||||
| -rw-r--r-- | compiler/typescript.vim | 7 | 
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 | 
