aboutsummaryrefslogtreecommitdiff
path: root/.vim/autoload/neomake/makers/ft/racket.vim
blob: fc7145a6fd1b1205837bbe73d29c27f76144f00f (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
" vim: ts=4 sw=4 et

function! neomake#makers#ft#racket#EnabledMakers() abort
    return ['raco']
endfunction

" This is the same form of syntax-checking used by DrRacket as well. The
" downside is that it will only catch the first error, but none of the
" subsequent ones. This is due to how evaluation in Racket works.
"
" About the error format: raco will print the first line as
"     <file>:<line>:<column> <message>
" Every successive line will be indented by two spaces:
"       in: <keyword>
"       context...:
"       <file>:<line>:<column>: <keyword>
" The last pattern will be repeated as often as necessary. Example:
"     foo.rkt:4:1: dfine: unbound identifier in modulemessage
"       in: dfine
"       context...:
"        /usr/local/Cellar/racket/6.5/share/racket/pkgs/compiler-lib/compiler/commands/expand.rkt:34:15: loop
"        /usr/local/Cellar/racket/6.5/share/racket/pkgs/compiler-lib/compiler/commands/expand.rkt:10:2: show-program
"        /usr/local/Cellar/racket/6.5/share/racket/pkgs/compiler-lib/compiler/commands/expand.rkt: [running body]
"        /usr/local/Cellar/minimal-racket/6.6/share/racket/collects/raco/raco.rkt: [running body]
"        /usr/local/Cellar/minimal-racket/6.6/share/racket/collects/raco/main.rkt: [running body]
function! neomake#makers#ft#racket#raco() abort
    return {
        \ 'exe': 'raco',
        \ 'args': ['expand'],
        \ 'errorformat': '%-G %.%#,%E%f:%l:%c: %m'
    \ }
endfunction