diff --git a/lua/my-lsp.lua b/lua/my-lsp.lua new file mode 100644 index 0000000..01be8fe --- /dev/null +++ b/lua/my-lsp.lua @@ -0,0 +1,76 @@ +--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 BufEnter,BufWrite lua vim.lsp.codelens.refresh()]] + 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.lsp.codelens.refresh() +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/my-lsp.lua b/plugin/my-lsp.lua index 01be8fe..3758e51 100644 --- a/plugin/my-lsp.lua +++ b/plugin/my-lsp.lua @@ -1,76 +1 @@ ---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 BufEnter,BufWrite lua vim.lsp.codelens.refresh()]] - 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.lsp.codelens.refresh() -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 } +require('my-lsp')