diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a48dce9 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,14 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 + +[*.{lua,vim}] +indent_size = tab +indent_style = tab +trim_trailing_whitespace = true + +[*.{lua}] +max_line_length = 140 diff --git a/init.lua b/init.lua index 1ae18e5..78331fb 100644 --- a/init.lua +++ b/init.lua @@ -20,7 +20,7 @@ vim.opt.rtp:prepend(lazypath) require("lazy").setup("plugins", { dev = { path = "~/projects/nvim/", - patterns = {"crater2150"}, + patterns = { "crater2150" }, fallback = true } }) @@ -45,6 +45,9 @@ vim.opt.shell = "/bin/zsh" vim.opt.ignorecase = true vim.opt.smartcase = true vim.opt.inccommand = "split" +vim.opt.listchars = "tab:⇥\\ ,trail:-,nbsp:+,lead:␣" +vim.opt.list = true +vim.cmd [[hi link Whitespace Comment]] vim.opt.wildmode = { "list:longest", "list:full" } vim.opt.wildignore = { "*.so", "*.swp", "*.zip", "*.o" } @@ -76,35 +79,35 @@ vim.g.tex_flavor = 'latex' local key = vim.keymap.set -key('n', '', 'za', { desc = 'toggle fold' }) -key('v', '.', 'normal .', { desc = 'repeat last command in visual mode' }) -key('n', 'cy', '"*y', { desc = 'copy to system clipboard' }) +key('n', '', 'za', { desc = 'toggle fold' }) +key('v', '.', 'normal .', { desc = 'repeat last command in visual mode' }) +key('n', 'cy', '"*y', { desc = 'copy to system clipboard' }) -key('t', '', '', { desc = 'exit terminal mode' }) +key('t', '', '', { desc = 'exit terminal mode' }) -- Arrow keys for window movement and resizing -key('n', '', 'h') -key('n', '', 'j') -key('n', '', 'k') -key('n', '', 'l') +key('n', '', 'h') +key('n', '', 'j') +key('n', '', 'k') +key('n', '', 'l') -- -key('n', '', "<") +key('n', '', "<") key('n', '', ">") -key('n', '', "-") -key('n', '', "+") +key('n', '', "-") +key('n', '', "+") -key('n', '', function() vim.fn.search('^[^[:space:])\\]}]', 'be') end, { desc = 'jump to previous unindented line' }) -key('n', '', function() vim.fn.search('^[^[:space:])\\]}]', 'e') end, { desc = 'jump to next unindented line' }) +key('n', '', function() vim.fn.search('^[^[:space:])\\]}]', 'be') end, { desc = 'jump to previous unindented line' }) +key('n', '', function() vim.fn.search('^[^[:space:])\\]}]', 'e') end, { desc = 'jump to next unindented line' }) -key('i', '', 'u') -key('n', '&', ':&&') -key('x', '&', ':&&') -key('n', 'Y', 'y$') +key('i', '', 'u') +key('n', '&', ':&&') +key('x', '&', ':&&') +key('n', 'Y', 'y$') key('i', '', '', { desc = 'completion' }) -key('n', '', 'nohredraw!', { desc = 'clear search highlight' }) -key('v', 'gs', "'<,'>sort", { desc = 'sort selection' }) +key('n', '', 'nohredraw!', { desc = 'clear search highlight' }) +key('v', 'gs', "'<,'>sort", { desc = 'sort selection' }) -key({ 'n', 'x' }, '', "(EasyAlign)", { desc = 'align selection' }) +key({ 'n', 'x' }, '', "(EasyAlign)", { desc = 'align selection' }) diff --git a/lua/my-lsp.lua b/lua/my-lsp.lua deleted file mode 100644 index e3b58cf..0000000 --- a/lua/my-lsp.lua +++ /dev/null @@ -1,73 +0,0 @@ ---local lsp_status = require('lsp-status') - ---lsp_status.register_progress() - -local map = vim.keymap.set -map("n", "dr", function() require("dap").repl.toggle() end, { silent = true }) - --- Use an on_attach function to only map the following keys --- after the language server attaches to the current buffer -local on_attach = function(client, bufnr) - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end - - --Enable completion triggered by - vim.bo[bufnr].omnifunc = 'v:lua.vim.lsp.omnifunc' - - -- Mappings. - local opts = { silent = true, buffer = bufnr } - local loud = { buffer = bufnr } - - -- See `:help vim.lsp.*` for documentation on any of the below functions - map('n', 'gD', vim.lsp.buf.declaration, opts) - map('n', 'gd', vim.lsp.buf.definition, opts) - map('n', 'K', vim.lsp.buf.hover, opts) - map('v', 'K', vim.lsp.buf.hover, opts) - map('n', 'gi', vim.lsp.buf.implementation, opts) - map('n', '', vim.lsp.buf.signature_help, opts) - map('n', 'D', vim.lsp.buf.type_definition, opts) - map('n', 'rn', vim.lsp.buf.rename, opts) - map('n', '', vim.lsp.buf.code_action, loud) - map('n', '', vim.lsp.codelens.run, loud) - map('n', 'gr', vim.lsp.buf.references, opts) - map('n', '', vim.diagnostic.open_float, opts) - map('n', '[d', vim.diagnostic.goto_prev, opts) - map('n', ']d', vim.diagnostic.goto_next, opts) - map('n', '', vim.diagnostic.setloclist, opts) - map("n", "f", function() vim.lsp.buf.format { async = true } end, opts) - map("n", "dc", function() require("dap").continue() end, opts) - map("n", "dK", function() require("dap.ui.widgets").hover() end, opts) - map("n", "dt", function() require("dap").toggle_breakpoint() end, opts) - map("n", "dso", function() require("dap").step_over() end, opts) - map("n", "dsi", function() require("dap").step_into() end, opts) - map("n", "dl", function() require("dap").run_last() end, opts) - - map("n", "aa", vim.diagnostic.setqflist, opts) - map("n", "aw", function() vim.diagnostic.setqflist({ severity = "W" }) end, opts) - map("n", "ae", function() vim.diagnostic.setqflist({ severity = "E" }) end, opts) - - vim.cmd [[autocmd CursorHoldI * silent! lua vim.lsp.buf.signature_help()]] - vim.cmd [[autocmd CursorHold * lua vim.diagnostic.open_float({max_width = 100, focusable = false})]] -end - -require("lsp.installer")(on_attach) -require("lsp.metals")(on_attach) -require("lsp.typescript")(on_attach) - -vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with( - vim.lsp.diagnostic.on_publish_diagnostics, { - virtual_text = false, - underline = true, - signs = true, -} -) - -vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with( - vim.lsp.handlers.signature_help, { - silent = true, focusable = false -} -) - -local signature_help_cfg = {} -require "lsp_signature".setup(signature_help_cfg) - -return { on_attach = on_attach } diff --git a/plugin/on-attach.lua b/plugin/on-attach.lua index 9dcf82c..cbf9e97 100644 --- a/plugin/on-attach.lua +++ b/plugin/on-attach.lua @@ -1,45 +1,41 @@ local on_attach = function(args) - local bufnr = args.buf - local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end + --Enable completion triggered by + vim.bo[args.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' - --Enable completion triggered by - vim.bo[bufnr].omnifunc = 'v:lua.vim.lsp.omnifunc' + -- Mappings. + -- See `:help vim.lsp.*` for documentation on any of the below functions + for _, mapping in ipairs({ + { 'gD', vim.lsp.buf.declaration, "Go to declaration" }, + { 'gd', require('telescope.builtin').lsp_definitions, "Go to definition" }, + { 'gi', vim.lsp.buf.implementation, "Go to implementation" }, + { '', vim.lsp.buf.signature_help, "Show signature help" }, + { 'D', vim.lsp.buf.type_definition, "Go to type definition" }, + { 'rn', vim.lsp.buf.rename, "Rename" }, + { '', vim.lsp.buf.code_action, "Code action" }, + { '', vim.lsp.codelens.run, "Run code lens" }, + { 'gr', vim.lsp.buf.references, "Go to references" }, + { '', vim.diagnostic.open_float, "Open diagnostics" }, + { '[d', vim.diagnostic.goto_prev, "Go to previous diagnostic" }, + { '[d', vim.diagnostic.goto_prev, "Go to next diagnostic" }, + { '', vim.diagnostic.setloclist, "Add buffer diagnostics to location list" }, + { "f", function() vim.lsp.buf.format { async = true } end, "Format buffer" }, + { "dc", function() require("dap").continue() end, "Debug: Continue" }, + { "dK", function() require("dap.ui.widgets").hover() end, "Debug: Hover" }, + { "dt", function() require("dap").toggle_breakpoint() end, "Debug: Toggle breakpoint" }, + { "dso", function() require("dap").step_over() end, "Debug: Step over" }, + { "dsi", function() require("dap").step_into() end, "Debug: Step into" }, + { "dl", function() require("dap").run_last() end, "Debug: Run last" }, + { "aa", vim.diagnostic.setqflist, "Add all diagnostics to quickfix list" }, + { "aw", function() vim.diagnostic.setqflist({ severity = "W" }) end, "Add all warnings to quickfix list" }, + { "ae", function() vim.diagnostic.setqflist({ severity = "E" }) end, "Add all errors to quickfix list" }, + }) do + vim.keymap.set('n', mapping[1], mapping[2], { silent = true, buffer = args.buf, desc = mapping[3] }) + end - -- Mappings. - local opts = { silent = true, buffer = bufnr } - local loud = { buffer = bufnr } - local desc = function(text) return { silent = true, buffer = bufnr, desc = text} end + vim.keymap.set("n", "dr", function() require("dap").repl.toggle() end, { silent = true, desc = "Toogle debug REPL" }) - local map = vim.keymap.set - -- See `:help vim.lsp.*` for documentation on any of the below functions - map("n", "dr", function() require("dap").repl.toggle() end, { silent = true }) - map('n', 'gD', vim.lsp.buf.declaration, desc("Go to declaration")) - map('n', 'gd', vim.lsp.buf.definition, desc("Go to definition")) - map('n', 'gi', vim.lsp.buf.implementation, desc("Go to implementation")) - map('n', '', vim.lsp.buf.signature_help, desc("Show signature help")) - map('n', 'D', vim.lsp.buf.type_definition, desc("Go to type definition")) - map('n', 'rn', vim.lsp.buf.rename, desc("Rename")) - map('n', '', vim.lsp.buf.code_action, desc("Code action")) - map('n', '', vim.lsp.codelens.run, desc("Run code lens")) - map('n', 'gr', vim.lsp.buf.references, desc("Go to references")) - map('n', '', vim.diagnostic.open_float, desc("Open diagnostics")) - map('n', '[d', vim.diagnostic.goto_prev, desc("Go to previous diagnostic")) - map('n', '[d', vim.diagnostic.goto_prev, desc("Go to next diagnostic")) - map('n', '', vim.diagnostic.setloclist, desc("Add buffer diagnostics to location list")) - map("n", "f", function() vim.lsp.buf.format { async = true } end, desc("Format buffer")) - map("n", "dc", function() require("dap").continue() end, desc("Debug: Continue")) - map("n", "dK", function() require("dap.ui.widgets").hover() end, desc("Debug: Hover")) - map("n", "dt", function() require("dap").toggle_breakpoint() end, desc("Debug: Toggle breakpoint")) - map("n", "dso", function() require("dap").step_over() end, desc("Debug: Step over")) - map("n", "dsi", function() require("dap").step_into() end, desc("Debug: Step into")) - map("n", "dl", function() require("dap").run_last() end, desc("Debug: Run last")) - - map("n", "aa", vim.diagnostic.setqflist, desc("Add all diagnostics to quickfix list")) - map("n", "aw", function() vim.diagnostic.setqflist({ severity = "W" }) end, desc("Add all warnings to quickfix list")) - map("n", "ae", function() vim.diagnostic.setqflist({ severity = "E" }) end, desc("Add all errors to quickfix list")) - - vim.cmd [[autocmd CursorHoldI * silent! lua vim.lsp.buf.signature_help()]] - vim.cmd [[autocmd CursorHold * lua vim.diagnostic.open_float({max_width = 100, focusable = false})]] + vim.cmd [[autocmd CursorHoldI * silent! lua vim.lsp.buf.signature_help()]] + vim.cmd [[autocmd CursorHold * lua vim.diagnostic.open_float({max_width = 100, focusable = false})]] end vim.api.nvim_create_autocmd("LspAttach", { callback = on_attach })