From bb3721e92d99ceee023614cedab78b85a2048b9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ga=C3=A9tan=20Lepage?= <33058747+GaetanLepage@users.noreply.github.com> Date: Mon, 20 Feb 2023 17:32:05 +0100 Subject: [PATCH] nvim-lsp: added nvim-cmp completion capabilities (#158) Co-authored-by: Pedro Alves --- plugins/completion/nvim-cmp/default.nix | 10 +++++++++- plugins/default.nix | 1 + plugins/nvim-lsp/default.nix | 17 ++++++++++++++++- 3 files changed, 26 insertions(+), 2 deletions(-) diff --git a/plugins/completion/nvim-cmp/default.nix b/plugins/completion/nvim-cmp/default.nix index 7c362c16..1e978763 100644 --- a/plugins/completion/nvim-cmp/default.nix +++ b/plugins/completion/nvim-cmp/default.nix @@ -453,6 +453,14 @@ in { }) known_source_names); in - mkIf cfg.auto_enable_sources attrs_enabled; + mkMerge [ + (mkIf cfg.auto_enable_sources attrs_enabled) + (mkIf (elem "nvim_lsp" found_sources) + { + lsp.capabilities = '' + capabilities = require('cmp_nvim_lsp').default_capabilities() + ''; + }) + ]; }; } diff --git a/plugins/default.nix b/plugins/default.nix index 9a605827..140c5a1c 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -21,6 +21,7 @@ ./git/gitmessenger.nix ./git/gitsigns.nix ./git/neogit.nix + ./languages/clangd-extensions.nix ./languages/ledger.nix ./languages/markdown-preview.nix diff --git a/plugins/nvim-lsp/default.nix b/plugins/nvim-lsp/default.nix index 66dcdb23..c621d9e7 100644 --- a/plugins/nvim-lsp/default.nix +++ b/plugins/nvim-lsp/default.nix @@ -44,6 +44,12 @@ in { default = ""; }; + capabilities = mkOption { + type = types.lines; + description = "Lua code that modifies inplace the `capabilities` table."; + default = ""; + }; + setupWrappers = mkOption { type = with types; listOf (functionTo str); description = "Code to be run to wrap the setup args. Takes in an argument containing the previous results, and returns a new string of code."; @@ -78,13 +84,22 @@ in { -- LSP {{{ do ${cfg.preConfig} + local __lspServers = ${helpers.toLuaObject cfg.enabledServers} local __lspOnAttach = function(client, bufnr) ${cfg.onAttach} end + local __lspCapabilities = function() + capabilities = vim.lsp.protocol.make_client_capabilities() + + ${cfg.capabilities} + + return capabilities + end local __setup = ${runWrappers cfg.setupWrappers "{ - on_attach = __lspOnAttach + on_attach = __lspOnAttach, + capabilities = __lspCapabilities() }"} for i,server in ipairs(__lspServers) do