summaryrefslogtreecommitdiff
path: root/public/nvim/.nvim/lua/plugins/lsp
diff options
context:
space:
mode:
authorChristian Segundo2023-10-12 15:29:11 +0200
committerChristian Segundo2023-10-12 15:29:11 +0200
commit542613a0f58ccb3722c93b4b68677d7b5053fd57 (patch)
tree04a940df3e75a4b4cbe53cc3392c4e1c63fc8c6f /public/nvim/.nvim/lua/plugins/lsp
parent449a6f57a36862a8ff27b2a3cee0922f4e4d949e (diff)
downloaddotfiles-542613a0f58ccb3722c93b4b68677d7b5053fd57.tar.gz
Add nvim
Diffstat (limited to 'public/nvim/.nvim/lua/plugins/lsp')
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/cmp.lua95
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/config.lua40
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/null-ls.lua5
-rw-r--r--public/nvim/.nvim/lua/plugins/lsp/trouble.lua9
4 files changed, 149 insertions, 0 deletions
diff --git a/public/nvim/.nvim/lua/plugins/lsp/cmp.lua b/public/nvim/.nvim/lua/plugins/lsp/cmp.lua
new file mode 100644
index 0000000..6099683
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/cmp.lua
@@ -0,0 +1,95 @@
+return {
+ "hrsh7th/nvim-cmp",
+ opts = {
+ sources = {
+ {
+ name = "luasnip",
+ option = {
+ show_autosnippets = true,
+ use_show_condition = true,
+ },
+ },
+ { name = "nvim_lsp", priority = 1 },
+ { name = "nvim_lsp_signature_help" },
+ { name = "nvim_lua" },
+ { name = "path" },
+ { name = "emoji" },
+ },
+ formatting = {
+ format = {
+ mode = "symbol_text",
+ maxwidth = 50,
+ before = function(entry, vim_item)
+ return vim_item
+ end,
+ menu = {
+ buffer = "[Buffer]",
+ nvim_lsp = "[LSP]",
+ luasnip = "[LuaSnip]",
+ nvim_lua = "[Lua]",
+ latex_symbols = "[Latex]",
+ },
+ },
+ },
+ },
+ config = function(_, opts)
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+ local lspkind = require("lspkind")
+ cmp.setup({
+ sources = opts.sources,
+ --experimental = { ghost_text = { hl_group = "Comment" } },
+ snippet = {
+ expand = function(args)
+ require("luasnip").lsp_expand(args.body)
+ end,
+ },
+ formatting = { format = lspkind.cmp_format(opts.formatting.format) },
+ mapping = {
+ ["<C-p>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_prev_item()
+ elseif luasnip.jumpable(-1) then
+ luasnip.jump(-1)
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-n>"] = cmp.mapping(function(fallback)
+ if cmp.visible() then
+ cmp.select_next_item()
+ elseif luasnip.expand_or_jumpable() then
+ luasnip.expand_or_jump()
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-l>"] = cmp.mapping(function(fallback)
+ if luasnip.choice_active() then
+ luasnip.change_choice(1)
+ else
+ fallback()
+ end
+ end, { "i", "s" }),
+ ["<C-d>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(),
+ ["<C-e>"] = cmp.mapping.close(),
+ ["<CR>"] = cmp.mapping.confirm({
+ behavior = cmp.ConfirmBehavior.Insert,
+ select = true, -- Automatically select first item on CR
+ }),
+ },
+ })
+ end,
+ dependencies = {
+ { "L3MON4D3/LuaSnip" },
+ { "hrsh7th/cmp-emoji" },
+ { "hrsh7th/cmp-nvim-lsp" },
+ { "hrsh7th/cmp-nvim-lsp-signature-help" },
+ { "hrsh7th/cmp-nvim-lua" },
+ { "hrsh7th/cmp-path" },
+ { "onsails/lspkind.nvim" },
+ { "saadparwaiz1/cmp_luasnip" },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/config.lua b/public/nvim/.nvim/lua/plugins/lsp/config.lua
new file mode 100644
index 0000000..b579720
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/config.lua
@@ -0,0 +1,40 @@
+return {
+
+ {
+ "neovim/nvim-lspconfig",
+ event = { "BufReadPre", "BufNewFile" },
+ opts = { servers = {} },
+ config = function(_, opts)
+ local add_hook_after = require("lspconfig.util").add_hook_after
+ local on_attach = function(client, bufnr)
+ require("nvim-navic").attach(client, bufnr)
+ end
+
+ for lsp, lsp_opts in pairs(opts.servers) do
+ lsp_opts = lsp_opts or {}
+ if lsp_opts.on_attach ~= nil then
+ lsp_opts["on_attach"] = add_hook_after(on_attach, lsp_opts.on_attach)
+ end
+ lsp_opts["capabilities"] = require("cmp_nvim_lsp").default_capabilities(lsp_opts.capabilities or {})
+ require("lspconfig")[lsp].setup(lsp_opts)
+ end
+ end,
+ init = function()
+ vim.diagnostic.config({
+ float = {
+ source = "always",
+ format = function(diagnostic)
+ -- should work for any LSP, see: https://github.com/neovim/neovim/pull/17510
+ if diagnostic.code then
+ return string.format("(%s) %s", diagnostic.code, diagnostic.message)
+ end
+ return diagnostic.message
+ end,
+ },
+ })
+ end,
+ dependencies = {
+ { "SmiteshP/nvim-navic", opts = { highlight = true } },
+ },
+ },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua b/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua
new file mode 100644
index 0000000..5f71af7
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/null-ls.lua
@@ -0,0 +1,5 @@
+return {
+ "jose-elias-alvarez/null-ls.nvim",
+ opts = { sources = {}, debug = false },
+ dependencies = { "nvim-lua/plenary.nvim" },
+}
diff --git a/public/nvim/.nvim/lua/plugins/lsp/trouble.lua b/public/nvim/.nvim/lua/plugins/lsp/trouble.lua
new file mode 100644
index 0000000..207edb5
--- /dev/null
+++ b/public/nvim/.nvim/lua/plugins/lsp/trouble.lua
@@ -0,0 +1,9 @@
+return {
+ {
+ "folke/trouble.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ config = function()
+ require("trouble").setup({})
+ end,
+ },
+}