Initial Commit - Add nvim config

Signed-off-by: Daniel Henry <iamdanhenry@gmail.com>
This commit is contained in:
2025-08-25 18:23:54 -05:00
commit 7a73f19921
10 changed files with 665 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
-- C language pack: editor behavior for C/C++
-- We keep this file "pure config" (no keymaps) to match your structure.
-- Use `make` for builds in C/C++ buffers.
-- Quickfix will parse clang/gcc errors by default, so :make populates the list.
vim.api.nvim_create_autocmd("FileType", {
pattern = { "c", "cpp" },
callback = function(args)
-- Buffer-local so other languages can pick their own build tools later.
vim.bo[args.buf].makeprg = "make -j"
end,
})
-- Friendly heads-up if compile_commands.json isn't present.
-- clangd *can* work without it, but accuracy (includes/defines/flags) is much better with it.
do
local warned = false
vim.api.nvim_create_autocmd({ "BufReadPost", "BufNewFile" }, {
pattern = { "*.c", "*.h", "*.cpp", "*.hpp" },
callback = function()
if warned then return end
local root = vim.fs.root(0, { "compile_commands.json", ".git", "Makefile", "makefile" })
-- Look specifically for compile_commands.json upward from the file
local found = vim.fs.find("compile_commands.json", { upward = true, path = vim.fs.dirname(vim.api.nvim_buf_get_name(0)) })[1]
if not found and root then
warned = true
vim.schedule(function()
vim.notify(
"clangd: compile_commands.json not found.\n" ..
"Run: bear -- make -j\n" ..
"Tip: re-run after changing flags or adding files.",
vim.log.levels.WARN,
{ title = "C/clangd" }
)
end)
end
end,
})
end
-- Treat *.h as C (applies globally; easiest approach for a C-centric workflow)
vim.filetype.add({
extension = {
h = "c",
},
})