summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--after/ftplugin/c.lua53
-rw-r--r--after/ftplugin/cpp.lua53
-rw-r--r--lazy-lock.json3
-rw-r--r--lua/talha/plugins/neomake.lua6
4 files changed, 114 insertions, 1 deletions
diff --git a/after/ftplugin/c.lua b/after/ftplugin/c.lua
index f3bcf24..5585ff7 100644
--- a/after/ftplugin/c.lua
+++ b/after/ftplugin/c.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)
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)
diff --git a/lazy-lock.json b/lazy-lock.json
index af271a6..7f3db2e 100644
--- a/lazy-lock.json
+++ b/lazy-lock.json
@@ -3,7 +3,8 @@
"lazy.nvim": { "branch": "main", "commit": "306a05526ada86a7b30af95c5cc81ffba93fef97" },
"mini.icons": { "branch": "main", "commit": "e56797f90192d81f1fda02e662fc3e8e3d775027" },
"moonfly": { "branch": "master", "commit": "261664f92ed51cf0c077555b2d4b2530307eac17" },
- "nvim-treesitter": { "branch": "main", "commit": "8b3a191c015dd66a92d51a112ed96af0aac13b63" },
+ "neomake": { "branch": "master", "commit": "584f882b9f991245374e7e7d7d1f78bae90b7a35" },
+ "nvim-treesitter": { "branch": "main", "commit": "61df84986b4b4ec469ee745a182e433d49f8c27e" },
"oil.nvim": { "branch": "master", "commit": "b73018b75affd13fa38e2fc94ef753b465f770d7" },
"plenary.nvim": { "branch": "master", "commit": "74b06c6c75e4eeb3108ec01852001636d85a932b" },
"telescope-fzf-native.nvim": { "branch": "main", "commit": "b25b749b9db64d375d782094e2b9dce53ad53a40" },
diff --git a/lua/talha/plugins/neomake.lua b/lua/talha/plugins/neomake.lua
new file mode 100644
index 0000000..f3a03fb
--- /dev/null
+++ b/lua/talha/plugins/neomake.lua
@@ -0,0 +1,6 @@
+return {
+ "neomake/neomake",
+ config = function()
+ vim.g.neomake_open_list = 1
+ end,
+}