summaryrefslogtreecommitdiff
path: root/.config/nvim/compiler/racket.vim
blob: 1f98a417c421a575c7cca2cc0f934b6f6c386d8f (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
if exists('current_compiler')
  finish
endif
let current_compiler = 'go-test'

if exists(':CompilerSet') != 2
  command -nargs=* CompilerSet setlocal <args>
endif

" The errorformat can also use vim's regular expression syntax (albeit in a rather awkward way) which gives us a solution to the problem. We can use a non-capturing group and a zero-width assertion to require the presence of these signaling phrases without consuming them. This then allows the %m to pick them up. As plain regular expression syntax this zero-width assertion looks like:
"
" \%(undefined reference\|multiple definition\)\@=
"
" But in order to use it in efm we need to replace \ by %\ and % by %%


CompilerSet makeprg=compile\ racket
CompilerSet errorformat=\%Z%*\\S%.%#,
                        \%C\ \ \ %f:%l:%c,
                        \%C\ \ \ %f:%l:%c:\ %m,
                        \%C\ \ %.%#%\\%%(module%\\spath:%\\\|at\:%\\\|in\:%\\\|expected\:%\\\|given\:%\\)%\\@=%m,
                        \%C\ %.%#,
                        \%E%\\%%(%\\w%\\)%\\@=%f:%*\\d:%*\\d:\ %m,
                        \%E%*\\f:%*\\d:%*\\d:\ %m,
                        \%E%\\%%(%\\S%\\+:%\\\|%\.%\\+--%\\)%\\@=%m,
" vim: sw=2 sts=2 et