diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index 353eeac1..278b0a68 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -66,6 +66,9 @@ - Add [snacks.nvim] under `vim.utility.snacks-nvim` as a general-purpose utility plugin. +- Move LSPSaga to `setupOpts` format, allowing freeform configuration in + `vim.lsp.lspsaga.setupOpts`. + [amadaluzia](https://github.com/amadaluzia): [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim diff --git a/modules/plugins/lsp/lspsaga/config.nix b/modules/plugins/lsp/lspsaga/config.nix index 3af6b7f1..2d2903a6 100644 --- a/modules/plugins/lsp/lspsaga/config.nix +++ b/modules/plugins/lsp/lspsaga/config.nix @@ -4,12 +4,12 @@ ... }: let inherit (lib.modules) mkIf mkMerge; - inherit (lib.strings) optionalString; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLuaBinding; + inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.lsp; - self = import ./lspsaga.nix {inherit lib;}; + self = import ./lspsaga.nix {inherit config lib;}; mappingDefinitions = self.options.vim.lsp.lspsaga.mappings; mappings = addDescriptionsToMappings cfg.lspsaga.mappings mappingDefinitions; @@ -18,6 +18,10 @@ in { vim = { startPlugins = ["lspsaga-nvim"]; + pluginRC.lspsaga = entryAnywhere '' + require('lspsaga').init_lsp_saga(${toLuaObject cfg.lspsaga.setupOpts}) + ''; + maps = { visual = mkSetLuaBinding mappings.codeAction "require('lspsaga.codeaction').range_code_action"; normal = mkMerge [ @@ -40,14 +44,6 @@ in { (mkIf (!cfg.lspSignature.enable) (mkSetLuaBinding mappings.signatureHelp "require('lspsaga.signaturehelp').signature_help")) ]; }; - - pluginRC.lspsaga = entryAnywhere '' - require('lspsaga').init_lsp_saga({ - ${optionalString config.vim.ui.borders.plugins.lspsaga.enable '' - border_style = '${config.vim.ui.borders.plugins.lspsaga.style}', - ''} - }) - ''; }; }; } diff --git a/modules/plugins/lsp/lspsaga/lspsaga.nix b/modules/plugins/lsp/lspsaga/lspsaga.nix index f308aaaa..59fea808 100644 --- a/modules/plugins/lsp/lspsaga/lspsaga.nix +++ b/modules/plugins/lsp/lspsaga/lspsaga.nix @@ -1,10 +1,23 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; +{ + config, + lib, + ... +}: let + inherit (lib.options) mkOption mkEnableOption; inherit (lib.nvim.binds) mkMappingOption; + inherit (lib.nvim.types) borderType mkPluginSetupOption; in { options.vim.lsp.lspsaga = { enable = mkEnableOption "LSP Saga"; + setupOpts = mkPluginSetupOption "lspsaga" { + border_style = mkOption { + type = borderType; + default = config.vim.ui.borders.globalStyle; + description = "Border type, see {command}`:help nvim_open_win`"; + }; + }; + mappings = { lspFinder = mkMappingOption "LSP Finder [LSPSaga]" "lf"; renderHoveredDoc = mkMappingOption "Rendered hovered docs [LSPSaga]" "lh";