diff options
Diffstat (limited to 'after/ftplugin/cpp.lua')
| -rw-r--r-- | after/ftplugin/cpp.lua | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/after/ftplugin/cpp.lua b/after/ftplugin/cpp.lua index f3bcf24..5585ff7 100644 --- a/after/ftplugin/cpp.lua +++ b/after/ftplugin/cpp.lua @@ -1 +1,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) |
