From 32680ec340b08dd17fefebb7f8b6ee3f4009d88b Mon Sep 17 00:00:00 2001 From: David JULIEN Date: Wed, 19 May 2021 00:53:42 +0200 Subject: [PATCH] feat: configure LSP in neovim add LSP config in $XDG_CONFIG_HOME/nvim/lua/lsp add language servers: - clangd (C/C++) - jedi (Python) --- .config/nvim/init.lua | 6 +++++ .config/nvim/lua/lsp/c.lua | 6 +++++ .config/nvim/lua/lsp/init.lua | 21 ++++++++++++++++++ .config/nvim/lua/lsp/lua.lua | 39 +++++++++++++++++++++++++++++++++ .config/nvim/lua/lsp/maps.lua | 11 ++++++++++ .config/nvim/lua/lsp/python.lua | 6 +++++ .config/nvim/lua/plugins.lua | 3 +++ .config/nvim/lua/settings.lua | 1 + .config/paru/pkglist.txt | 2 ++ 9 files changed, 95 insertions(+) create mode 100644 .config/nvim/lua/lsp/c.lua create mode 100644 .config/nvim/lua/lsp/init.lua create mode 100644 .config/nvim/lua/lsp/lua.lua create mode 100644 .config/nvim/lua/lsp/maps.lua create mode 100644 .config/nvim/lua/lsp/python.lua diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua index 39ff15b..2534ac4 100644 --- a/.config/nvim/init.lua +++ b/.config/nvim/init.lua @@ -9,3 +9,9 @@ require("maps") -- ./lua/maps.lua require("statusline") -- ./lua/statusline.lua require("polyjuice") -- colorscheme + +-- LSP +require("lsp") -- ./lua/lsp/init.lua +require("lsp.maps") -- ./lua/lsp/maps.lua +require("lsp.c") -- ./lua/lsp/c.lua +require("lsp.python") -- ./lua/lsp/python.lua diff --git a/.config/nvim/lua/lsp/c.lua b/.config/nvim/lua/lsp/c.lua new file mode 100644 index 0000000..01f74af --- /dev/null +++ b/.config/nvim/lua/lsp/c.lua @@ -0,0 +1,6 @@ +-- Author : swytch +-- Created : Tuesday May 18, 2021 12:08:51 CET +-- License : GPLv3 +-- Description : clangd config file for lsp + +require("lspconfig").clangd.setup {} diff --git a/.config/nvim/lua/lsp/init.lua b/.config/nvim/lua/lsp/init.lua new file mode 100644 index 0000000..baeccfe --- /dev/null +++ b/.config/nvim/lua/lsp/init.lua @@ -0,0 +1,21 @@ +-- Author : swytch +-- Created : Tuesday May 18, 2021 12:08:51 CET +-- License : GPLv3 +-- Description : neovim lsp config file + +vim.fn.sign_define( + "LspDiagnosticsSignError", + {texthl = "LspDiagnosticsSignError", text = "", numhl = "LspDiagnosticsSignError"} +) +vim.fn.sign_define( + "LspDiagnosticsSignWarning", + {texthl = "LspDiagnosticsSignWarning", text = "", numhl = "LspDiagnosticsSignWarning"} +) +vim.fn.sign_define( + "LspDiagnosticsSignHint", + {texthl = "LspDiagnosticsSignHint", text = "", numhl = "LspDiagnosticsSignHint"} +) +vim.fn.sign_define( + "LspDiagnosticsSignInformation", + {texthl = "LspDiagnosticsSignInformation", text = "", numhl = "LspDiagnosticsSignInformation"} +) diff --git a/.config/nvim/lua/lsp/lua.lua b/.config/nvim/lua/lsp/lua.lua new file mode 100644 index 0000000..caf8f2a --- /dev/null +++ b/.config/nvim/lua/lsp/lua.lua @@ -0,0 +1,39 @@ +-- Author : swytch +-- Created : Tuesday May 18, 2021 12:08:51 CET +-- License : GPLv3 +-- Description : sumneko (lua) config file for lsp + +local system_name = "Linux" + +-- set the path to the sumneko installation; if you previously installed via the now deprecated :LspInstall, use +local sumneko_root_path = vim.fn.stdpath('cache')..'/lspconfig/sumneko_lua/lua-language-server' +local sumneko_binary = sumneko_root_path.."/bin/"..system_name.."/lua-language-server" + +require'lspconfig'.sumneko_lua.setup { + cmd = {sumneko_binary, "-E", sumneko_root_path .. "/main.lua"}; + settings = { + Lua = { + runtime = { + -- Tell the language server which version of Lua you're using (most likely LuaJIT in the case of Neovim) + version = 'LuaJIT', + -- Setup your lua path + path = vim.split(package.path, ';'), + }, + diagnostics = { + -- Get the language server to recognize the `vim` global + globals = {'vim'}, + }, + workspace = { + -- Make the server aware of Neovim runtime files + library = { + [vim.fn.expand('$VIMRUNTIME/lua')] = true, + [vim.fn.expand('$VIMRUNTIME/lua/vim/lsp')] = true, + }, + }, + -- Do not send telemetry data containing a randomized but unique identifier + telemetry = { + enable = false, + }, + }, + }, +} diff --git a/.config/nvim/lua/lsp/maps.lua b/.config/nvim/lua/lsp/maps.lua new file mode 100644 index 0000000..f38092e --- /dev/null +++ b/.config/nvim/lua/lsp/maps.lua @@ -0,0 +1,11 @@ +-- Author : swytch +-- Created : Tuesday May 18, 2021 12:08:51 CET +-- License : GPLv3 +-- Description : neovim lsp mappings file + +utils = require("utils") + +utils.map("n", "gd", "lua vim.lsp.buf.definition()") +utils.map("n", "gD", "lua vim.lsp.buf.declaration()") +utils.map("n", "gr", "lua vim.lsp.buf.references()") +utils.map("n", "gi", "lua vim.lsp.buf.implementation()") diff --git a/.config/nvim/lua/lsp/python.lua b/.config/nvim/lua/lsp/python.lua new file mode 100644 index 0000000..452213d --- /dev/null +++ b/.config/nvim/lua/lsp/python.lua @@ -0,0 +1,6 @@ +-- Author : swytch +-- Created : Tuesday May 18, 2021 15:03:43 CET +-- License : GPLv3 +-- Description : jedi (python) config file for lsp + +require("lspconfig").jedi_language_server.setup{} diff --git a/.config/nvim/lua/plugins.lua b/.config/nvim/lua/plugins.lua index 1681c51..392a490 100644 --- a/.config/nvim/lua/plugins.lua +++ b/.config/nvim/lua/plugins.lua @@ -35,6 +35,9 @@ return require("packer").startup(function() cmd = {"Telescope"} } + -- LSP + use "neovim/nvim-lspconfig" + -- display colors directly in editor use { "norcalli/nvim-colorizer.lua", diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/settings.lua index fd277bb..c49f1a3 100644 --- a/.config/nvim/lua/settings.lua +++ b/.config/nvim/lua/settings.lua @@ -36,6 +36,7 @@ o.background = "dark" o.shortmess = o.shortmess .. "c" w.number = true w.relativenumber = true +w.signcolumn = "yes" o.listchars = "tab:<->,nbsp:␣,trail:·,extends:>,precedes:<" o.showmatch = true o.ignorecase = true diff --git a/.config/paru/pkglist.txt b/.config/paru/pkglist.txt index dc07de0..29c96a1 100644 --- a/.config/paru/pkglist.txt +++ b/.config/paru/pkglist.txt @@ -16,6 +16,7 @@ binutils bison capitaine-cursors cdparanoia +clang cmake cronie dash @@ -40,6 +41,7 @@ iftop imagemagick isync iwd +jedi-language-server libnotify libtool linux