summaryrefslogtreecommitdiff
path: root/ftplugin/rust.vim
blob: 90cf44004bf3df981a2b1a63a0e2a4d1543f7208 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
setlocal ts=4 sts=4 sw=4 expandtab

set formatprg=rustfmt

" set makeprg=cargo\ clippy
set errorformat=
            \%-G,
            \%-Gerror:\ aborting\ %.%#,
            \%-Gerror:\ Could\ not\ compile\ %.%#,
            \%Eerror:\ %m,
            \%Eerror[E%n]:\ %m,
            \%Wwarning:\ %m,
            \%Inote:\ %m,
            \%C\ %#-->\ %f:%l:%c,
            \%E\ \ left:%m,%C\ right:%m\ %f:%l:%c,%Z

function! RustMake() abort
    set makeprg=nix-shell\ --run\ \"cargo\ build\"
    silent! make
    set makeprg=nix-shell\ --run\ \"cargo\ clippy\"
    silent! make
endfunction

nnoremap <leader>r :call RustMake() <bar> silent! redraw <bar> cwindow<cr>

if exists('*RustFmtSimple')
    finish
endif

function! RustFmtSimple() abort
    let winview = winsaveview()
    silent exec "!cargo fmt" 
    bufdo edit
    call winrestview(winview)
endfunction

augroup SimpleRustFmt
    autocmd!
    autocmd BufWritePost *.rs call RustFmtSimple()
augroup END