diff --git a/configuration.nix b/configuration.nix index 08b0f9b..6fd10c0 100644 --- a/configuration.nix +++ b/configuration.nix @@ -19,6 +19,7 @@ isMaximal: { lspsaga.enable = false; trouble.enable = true; lspSignature.enable = true; + otter.enable = isMaximal; lsplines.enable = isMaximal; nvim-docs-view.enable = isMaximal; }; @@ -155,7 +156,7 @@ isMaximal: { }; utility = { - ccc.enable = isMaximal; + ccc.enable = false; vim-wakatime.enable = false; icon-picker.enable = isMaximal; surround.enable = isMaximal; diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 7fd4876..4a0d282 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -196,3 +196,5 @@ everyone. [Soliprem](https://github.com/Soliprem) - Add LSP and Treesitter support for R under `vim.languages.R`. +- Add Otter support under `vim.lsp.otter` and an assert to prevent conflict with + ccc diff --git a/flake.lock b/flake.lock index 91fc506..ecc02f2 100644 --- a/flake.lock +++ b/flake.lock @@ -1373,6 +1373,22 @@ "type": "github" } }, + "plugin-otter-nvim": { + "flake": false, + "locked": { + "lastModified": 1724585935, + "narHash": "sha256-euHwoK2WHLF/hrjLY2P4yGrIbYyBN38FL3q4CKNZmLY=", + "owner": "jmbuhr", + "repo": "otter.nvim", + "rev": "ca9ce67d0399380b659923381b58d174344c9ee7", + "type": "github" + }, + "original": { + "owner": "jmbuhr", + "repo": "otter.nvim", + "type": "github" + } + }, "plugin-oxocarbon": { "flake": false, "locked": { @@ -1861,6 +1877,7 @@ "plugin-obsidian-nvim": "plugin-obsidian-nvim", "plugin-onedark": "plugin-onedark", "plugin-orgmode-nvim": "plugin-orgmode-nvim", + "plugin-otter-nvim": "plugin-otter-nvim", "plugin-oxocarbon": "plugin-oxocarbon", "plugin-plenary-nvim": "plugin-plenary-nvim", "plugin-project-nvim": "plugin-project-nvim", diff --git a/flake.nix b/flake.nix index c4996fc..4813481 100644 --- a/flake.nix +++ b/flake.nix @@ -156,6 +156,11 @@ flake = false; }; + plugin-otter-nvim = { + url = "github:jmbuhr/otter.nvim"; + flake = false; + }; + # Language support plugin-sqls-nvim = { url = "github:nanotee/sqls.nvim"; diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix index e6e718e..5ceccec 100644 --- a/modules/plugins/languages/ts.nix +++ b/modules/plugins/languages/ts.nix @@ -226,7 +226,7 @@ in { { assertion = cfg.lsp.enable -> cfg.lsp.server != "tsserver"; message = '' - As of a recent lspconfig update, he `tsserver` configuration has been renamed + As of a recent lspconfig update, the `tsserver` configuration has been renamed to `ts_ls` to match upstream behaviour of `lspconfig`, and the name `tsserver` is no longer considered valid by nvf. Please set `vim.languages.ts.lsp.server` to `"ts_ls"` instead of to `${cfg.lsp.server}` diff --git a/modules/plugins/lsp/default.nix b/modules/plugins/lsp/default.nix index a5d5163..421f5fd 100644 --- a/modules/plugins/lsp/default.nix +++ b/modules/plugins/lsp/default.nix @@ -13,6 +13,7 @@ ./trouble ./lsp-signature ./lightbulb + ./otter ./lspkind ./lsplines ./nvim-docs-view diff --git a/modules/plugins/lsp/otter/config.nix b/modules/plugins/lsp/otter/config.nix new file mode 100644 index 0000000..8c4d0b7 --- /dev/null +++ b/modules/plugins/lsp/otter/config.nix @@ -0,0 +1,38 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf mkMerge; + inherit (lib.nvim.dag) entryAnywhere; + inherit (lib.nvim.binds) addDescriptionsToMappings mkSetBinding; + + cfg = config.vim.lsp; + + self = import ./otter.nix {inherit lib;}; + mappingDefinitions = self.options.vim.lsp.otter.mappings; + mappings = addDescriptionsToMappings cfg.otter.mappings mappingDefinitions; +in { + config = mkIf (cfg.enable && cfg.otter.enable) { + assertions = [ + { + assertion = !config.vim.utility.ccc.enable; + message = '' + ccc and otter have a breaking conflict. It's been reported upstream. Until it's fixed, disable one of them + ''; + } + ]; + vim = { + startPlugins = ["otter-nvim"]; + + maps.normal = mkMerge [ + (mkSetBinding mappings.toggle "lua require'otter'.activate()") + ]; + + pluginRC.otter = entryAnywhere '' + -- Enable otter diagnostics viewer + require("otter").setup() + ''; + }; + }; +} diff --git a/modules/plugins/lsp/otter/default.nix b/modules/plugins/lsp/otter/default.nix new file mode 100644 index 0000000..935f144 --- /dev/null +++ b/modules/plugins/lsp/otter/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./otter.nix + ./config.nix + ]; +} diff --git a/modules/plugins/lsp/otter/otter.nix b/modules/plugins/lsp/otter/otter.nix new file mode 100644 index 0000000..109e64c --- /dev/null +++ b/modules/plugins/lsp/otter/otter.nix @@ -0,0 +1,13 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption; + inherit (lib.nvim.binds) mkMappingOption; +in { + options.vim.lsp = { + otter = { + enable = mkEnableOption "Otter LSP Injector"; + mappings = { + toggle = mkMappingOption "Activate LSP on Cursor Position [otter]" "lo"; + }; + }; + }; +}