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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
|
vim.opt.cinoptions = 'l1(0'
local cmake_errorformat = table.concat({
-- CMake internal error patterns
"CMake Error at %f:%l (%m):",
"CMake Error at %f:%l:%m",
"CMake Error in %f:%m",
"CMake Warning at %f:%l (%m):",
-- GCC / Clang (file:line:col: type: message)
"%f:%l:%c: %trror: %m",
"%f:%l:%c: %twarning: %m",
"%f:%l:%c: %tnote: %m",
"%f:%l:%c: %m",
"%f:%l: %trror: %m",
"%f:%l: %twarning: %m",
"%f:%l: %m",
-- MSVC (file(line): error/warning: message)
"%f(%l): %trror %m",
"%f(%l): %twarning %m",
"%f(%l,%c): %trror %m",
"%f(%l,%c): %twarning %m",
-- GNU Make directory tracking (resolves relative file paths correctly in quickfix)
"%D%*\\a[%*\\d]: Entering directory `%f'",
"%X%*\\a[%*\\d]: Leaving directory `%f'",
"%D%*\\a: Entering directory `%f'",
"%X%*\\a: Leaving directory `%f'",
-- Ignore unmatched compiler continuation/garbage lines
"%-G%f:%l: %m",
"%-G%s"
}, ',')
local build_options = {
cmake_build = {
exe = "cmake",
args = { "--build", "build" },
errorformat = cmake_errorformat,
},
bash_build = {
exe = "./build.sh",
args = {},
errorformat = cmake_errorformat,
}
}
vim.keymap.set("n", "<A-b><A-m>", function()
vim.fn["neomake#Make"](0, { build_options.cmake_build })
end)
vim.keymap.set("n", "<A-b><A-s>", function()
vim.fn["neomake#Make"](0, { build_options.bash_build })
end)
|