1set makeprg=make
 2set errorformat=%f:%l:%c:\ %m
 3
 4let g:gdb_executable = 'bidi'
 5let g:gdb_arguments = '-f tests/test.lua'
 6
 7nnoremap <leader>m :call LocalMake()<CR>
 8nnoremap <leader>r :execute '!./' . g:gdb_executable . ' ' . g:gdb_arguments<CR>
 9nnoremap <leader>bm :execute '!make && gdb -ex "break main" -ex "run" --args ' . g:gdb_executable . ' ' . g:gdb_arguments<CR>
10nnoremap <leader>bl :execute '!make && gdb -ex "break ' . line('.') . '" -ex "run" --args ' . g:gdb_executable . ' ' . g:gdb_arguments<CR>
11
12function! LocalMake()
13	silent make
14
15	" Filter non valid errors out of quicklist.
16	let qfl = getqflist()
17	let filtered = filter(copy(qfl), {_, entry -> entry.valid == 1})
18	call setqflist(filtered, 'r')
19
20	redraw!
21
22	if len(filtered) > 0
23		copen
24	else
25		cclose
26	endif
27endfunction