all repos

init.lua @ 85ad76b002521b9b0039eb419c89823c717a463a

my nvim config
7 files changed, 104 insertions(+), 4 deletions(-)
feat(plugins): add nvim-lspconfig
Author: Smirnov Olexander ss2316544@gmail.com
Committed at: 2022-04-29 21:55:42 +0300
Parent: ae31aa8
A lua/configs/lsp/attach.lua

@@ -0,0 +1,18 @@

+return function(client, bufnr) + vim.api.nvim_buf_set_option(bufnr, "omnifunc", "v:lua.vim.lsp.omnifunc") + client.resolved_capabilities.document_formatting = false + client.resolved_capabilities.document_range_formatting = false + + local function buf_map(...) + vim.api.nvim_buf_set_keymap(bufnr, "n", ...) + end + + local opts = { noremap = true, silent = true } + buf_map("K", "<cmd>lua vim.lsp.buf.hover()<cr>", opts) + buf_map("gd", "<cmd>Telescope lsp_definitions<cr>", opts) + buf_map("gD", "<cmd>lua vim.lsp.buf.declaration()<cr>", opts) + buf_map("gr", "<cmd>Telescope lsp_references<cr>", opts) + buf_map("gi", "<cmd>Telescope lsp_implementations<cr>", opts) + buf_map("gs", "<cmd>lua vim.lsp.buf.signature_help()<cr>", opts) + buf_map("gl", "<cmd>lua vim.lsp.diagnostic.show_line_diagnostics()<cr>", opts) +end
A lua/configs/lsp/diagnostic.lua

@@ -0,0 +1,49 @@

+return function() + local border = { + { "", "FloatBorder" }, + { "", "FloatBorder" }, + { "", "FloatBorder" }, + { "", "FloatBorder" }, + { "", "FloatBorder" }, + { "", "FloatBorder" }, + { "", "FloatBorder" }, + { "", "FloatBorder" }, + } + + local diagnostic = { + virtual_text = true, + update_in_insert = false, + underline = true, + severity_sort = false, + signs = { + active = { + { name = "DiagnosticSignError", text = "" }, + { name = "DiagnosticSignWarn", text = "" }, + { name = "DiagnosticSignHint", text = "" }, + { name = "DiagnosticSignInfo", text = "" }, + }, + }, + float = { + focusable = true, + style = "minimal", + border = border, + source = "always", + header = "", + prefix = "", + }, + } + + vim.lsp.handlers["textDocument/hover"] = + vim.lsp.with(vim.lsp.handlers.hover, { + border = border, + }) + + vim.diagnostic.config(diagnostic) + for _, sign in ipairs(diagnostic.signs.active) do + vim.fn.sign_define(sign.name, { + texthl = sign.name, + text = sign.text, + numhl = "", + }) + end +end
A lua/configs/lsp/init.lua

@@ -0,0 +1,12 @@

+require "configs.lsp.diagnostic"() +require "configs.lsp.null-ls" +require("nvim-lsp-installer").on_server_ready(function(server) + server:setup(require "configs.lsp.providers"(server, { + on_attach = require "configs.lsp.attach", + flags = { debounce_text_changes = 150 }, + capabilities = require("cmp_nvim_lsp").update_capabilities( + vim.lsp.protocol.make_client_capabilities() + ), + })) + vim.cmd [[ do User LspAttachBuffers ]] +end)
A lua/configs/lsp/null-ls.lua

@@ -0,0 +1,11 @@

+local null_ls = require "null-ls" + +local formatting = null_ls.builtins.formatting +local diagnostic = null_ls.builtins.diagnostics + +null_ls.setup { + sources = { + formatting.stylua, + diagnostic.selene, + } +}
A lua/configs/lsp/providers.lua

@@ -0,0 +1,3 @@

+return function(server, opts) + return opts +end
M lua/core/keymaps.lua

@@ -48,3 +48,11 @@ map("n", "<leader>gg", "<cmd>Neogit<cr>")

map("n", "<leader>gs", "<cmd>lua require[[gitsigns]].stage_hunk()<cr>") map("n", "<leader>gr", "<cmd>lua require[[gitsigns]].reset_hunk()<cr>") map("n", "<leader>gp", "<cmd>lua require[[gitsigns]].preview_hunk()<cr>") + +-- lsp +map("n", "<leader>la", "<cmd>Telescope lsp_code_actions<cr>") +map("n", "<leader>lr", "<cmd>lua vim.lsp.buf.rename()<cr>") +map("n", "<leader>lf", "<cmd>lua vim.lsp.buf.formatting()<cr>") +map("n", "<leader>ls", "<cmd>Telescope lsp_document_symbols<cr>") +map("n", "<leader>lj", "<cmd>lua vim.diagnostic.goto_next()<cr>") +map("n", "<leader>lk", "<cmd>lua vim.diagnostic.goto_prev()<cr>")
M lua/plugins.lua

@@ -79,6 +79,7 @@ requires = {

{ "hrsh7th/cmp-buffer", after = "nvim-cmp" }, { "saadparwaiz1/cmp_luasnip", after = "nvim-cmp" }, { "hrsh7th/cmp-path", after = "nvim-cmp" }, + { "hrsh7th/cmp-nvim-lsp", module = "cmp_nvim_lsp" }, }, }

@@ -88,15 +89,13 @@ module = "luasnip",

requires = { { "rafamadriz/friendly-snippets", after = "nvim-cmp" } }, } - --[[ use { "neovim/nvim-lspconfig", - config = get_setup "fk.lsp", + config = u.get_config "configs.lsp", requires = { "williamboman/nvim-lsp-installer", "jose-elias-alvarez/null-ls.nvim", { "folke/lua-dev.nvim", module = "lua-dev" }, - "j-hui/fidget.nvim", }, - }]] + } end)