diff --git a/lua/crentist/autocmd.lua b/lua/crentist/autocmd.lua new file mode 100644 index 0000000..df646d0 --- /dev/null +++ b/lua/crentist/autocmd.lua @@ -0,0 +1,47 @@ +local autocmd = vim.api.nvim_create_autocmd +local augroup = vim.api.nvim_create_augroup + +local CrentistGroup = augroup('Crentist', {}) + +autocmd('LspAttach', { + group = CrentistGroup, + callback = function(e) + local opts = { buffer = e.buf } + vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) + vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) + vim.keymap.set("n", "vws", function() vim.lsp.buf.workspace_symbol() end, opts) + vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts) + vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) + vim.keymap.set("n", "vrr", function() vim.lsp.buf.references() end, opts) + vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) + vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts) + vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) + vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) + vim.keymap.set("n", "", "lua vim.lsp.buf.format()") + end +}) + +-- Add new line to the end of the file +autocmd({ "BufWritePre" }, { + group = augroup('UserOnSave', {}), + pattern = '*', + callback = function() + local n_lines = vim.api.nvim_buf_line_count(0) + local last_nonblank = vim.fn.prevnonblank(n_lines) + if last_nonblank <= n_lines then + vim.api.nvim_buf_set_lines(0, + last_nonblank, n_lines, true, { '' }) + end + end, +}) + +-- Remove trailing spaces +vim.api.nvim_create_autocmd({ "BufWritePre" }, { + pattern = { "*" }, + callback = function() + local save_cursor = vim.fn.winsaveview() + pcall(function() vim.cmd [[%s/\s\+$//e]] end) + vim.fn.winrestview(save_cursor) + end, +}) + diff --git a/lua/crentist/init.lua b/lua/crentist/init.lua index a6d448c..f5ab189 100644 --- a/lua/crentist/init.lua +++ b/lua/crentist/init.lua @@ -1,26 +1,6 @@ require("crentist.remap") require("crentist.set") +require("crentist.autocmd") require("crentist.lazy_init") require("crentist.filetype") -local augroup = vim.api.nvim_create_augroup -local CrentistGroup = augroup('Crentist', {}) -local autocmd = vim.api.nvim_create_autocmd - -autocmd('LspAttach', { - group = CrentistGroup, - callback = function(e) - local opts = { buffer = e.buf } - vim.keymap.set("n", "gd", function() vim.lsp.buf.definition() end, opts) - vim.keymap.set("n", "K", function() vim.lsp.buf.hover() end, opts) - vim.keymap.set("n", "vws", function() vim.lsp.buf.workspace_symbol() end, opts) - vim.keymap.set("n", "vd", function() vim.diagnostic.open_float() end, opts) - vim.keymap.set("n", "vca", function() vim.lsp.buf.code_action() end, opts) - vim.keymap.set("n", "vrr", function() vim.lsp.buf.references() end, opts) - vim.keymap.set("n", "vrn", function() vim.lsp.buf.rename() end, opts) - vim.keymap.set("i", "", function() vim.lsp.buf.signature_help() end, opts) - vim.keymap.set("n", "[d", function() vim.diagnostic.goto_next() end, opts) - vim.keymap.set("n", "]d", function() vim.diagnostic.goto_prev() end, opts) - vim.keymap.set("n", "", "lua vim.lsp.buf.format()") - end -})