Major change to use mini suit of plugins.
This commit is contained in:
@@ -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 })
|
||||
|
||||
Reference in New Issue
Block a user