Major change to use mini suit of plugins.

This commit is contained in:
2026-05-20 13:03:35 +02:00
parent fbd083b269
commit e0fae18689
3 changed files with 64 additions and 164 deletions
-93
View File
@@ -19,21 +19,6 @@ vim.api.nvim_create_autocmd("TextYankPost", {
end,
})
-- Set absolute numbers when in insert mode otherwise relativenumbers
local nums = vim.api.nvim_create_augroup('smart_numbers', {})
vim.api.nvim_create_autocmd('InsertEnter', {
group = nums,
callback = function()
vim.opt.relativenumber = false
end,
})
vim.api.nvim_create_autocmd('InsertLeave', {
group = nums,
callback = function()
vim.opt.relativenumber = true
end,
})
-- removes trailing whitespace on save
vim.api.nvim_create_autocmd("BufWritePre", {
callback = function()
@@ -42,81 +27,3 @@ vim.api.nvim_create_autocmd("BufWritePre", {
vim.fn.setpos(".", save_cursor)
end,
})
-- Lsp autocomplete
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('my.lsp', {}),
callback = function(ev)
local client = vim.lsp.get_client_by_id(ev.data.client_id)
if not client then return end
-- Set completeopt for a better experience
vim.opt.completeopt = { 'menu', 'menuone', 'noinsert', 'noselect' }
-- Enable completion if the server supports it
if client:supports_method('textDocument/completion') then
vim.lsp.completion.enable(true, client.id, ev.buf, {
autotrigger = true, -- false = manual trigger only
})
end
end,
})
-- Define highlight groups
vim.api.nvim_set_hl(0, "TodoFix", { fg = "#FF5555", bold = true })
vim.api.nvim_set_hl(0, "TodoTodo", { fg = "#FFB86C", bold = true })
vim.api.nvim_set_hl(0, "TodoNote", { fg = "#A8D8FF", bold = true })
vim.api.nvim_set_hl(0, "TodoInfo", { fg = "#98DB6F", bold = true })
-- Match and highlight keywords in comments
local keywords = {
{ pattern = "FIX:.*", group = "TodoFix" },
{ pattern = "TODO:.*", group = "TodoTodo" },
{ pattern = "NOTE:.*", group = "TodoNote" },
{ pattern = "INFO:.*", group = "TodoInfo" },
}
vim.api.nvim_create_autocmd({ "BufEnter", "BufWritePost" }, {
callback = function()
for _, kw in ipairs(keywords) do
vim.fn.matchadd(kw.group, kw.pattern)
end
end,
})
-- Format: whole file or visual selection via :Fc
local function smart_format()
local mode = vim.fn.mode()
local in_visual = mode == "v" or mode == "V" or mode == "\22"
local clients = vim.lsp.get_clients({ bufnr = 0 })
local has_formatter = false
for _, client in ipairs(clients) do
if client.supports_method("textDocument/formatting") then
has_formatter = true
break
end
end
if in_visual then
if has_formatter then
vim.lsp.buf.format({
range = {
start = vim.api.nvim_buf_get_mark(0, "<"),
["end"] = vim.api.nvim_buf_get_mark(0, ">"),
},
})
else
vim.cmd("normal! gv=")
end
else
if has_formatter then
vim.lsp.buf.format({ async = false })
else
local view = vim.fn.winsaveview()
vim.cmd("normal! gg=G")
vim.fn.winrestview(view)
end
end
end
vim.api.nvim_create_user_command("FF", smart_format, { range = true })