diff --git a/plugins/completion/nvim-cmp/cmp-helpers.nix b/plugins/completion/nvim-cmp/cmp-helpers.nix index ef53f2b7..d941b9c9 100644 --- a/plugins/completion/nvim-cmp/cmp-helpers.nix +++ b/plugins/completion/nvim-cmp/cmp-helpers.nix @@ -28,6 +28,7 @@ in "cmp-clippy" = "cmp-clippy"; "cmp-cmdline-history" = "cmp-cmdline-history"; "cmp_pandoc" = "cmp-pandoc-nvim"; + "cmp_tabby" = "cmp-tabby"; "cmp_tabnine" = "cmp-tabnine"; "codeium" = "codeium-nvim"; "conventionalcommits" = "cmp-conventionalcommits"; diff --git a/plugins/completion/nvim-cmp/sources/cmp-tabby.nix b/plugins/completion/nvim-cmp/sources/cmp-tabby.nix new file mode 100644 index 00000000..aface54d --- /dev/null +++ b/plugins/completion/nvim-cmp/sources/cmp-tabby.nix @@ -0,0 +1,44 @@ +{ + lib, + helpers, + config, + ... +}: +with lib; let + cfg = config.plugins.cmp-tabby; +in { + meta.maintainers = [maintainers.GaetanLepage]; + + options.plugins.cmp-tabby = + helpers.extraOptionsOptions + // { + host = helpers.defaultNullOpts.mkStr "http://localhost:5000" '' + The adress of the tabby host server. + ''; + + maxLines = helpers.defaultNullOpts.mkUnsignedInt 100 '' + The max number of lines to complete. + ''; + + runOnEveryKeyStroke = helpers.defaultNullOpts.mkBool true '' + Whether to run the completion on every keystroke. + ''; + + stop = helpers.defaultNullOpts.mkListOf types.str ''["\n"]'' ""; + }; + + config = mkIf cfg.enable { + extraConfigLua = let + setupOptions = with cfg; + { + inherit host; + max_lines = maxLines; + run_on_every_keystroke = runOnEveryKeyStroke; + inherit stop; + } + // cfg.extraOptions; + in '' + require('cmp_tabby.config'):setup(${helpers.toLuaObject setupOptions}) + ''; + }; +} diff --git a/plugins/completion/nvim-cmp/sources/default.nix b/plugins/completion/nvim-cmp/sources/default.nix index 04e9385f..a0c6c01a 100644 --- a/plugins/completion/nvim-cmp/sources/default.nix +++ b/plugins/completion/nvim-cmp/sources/default.nix @@ -14,6 +14,7 @@ in { [ ./codeium-nvim.nix ./copilot-cmp.nix + ./cmp-tabby.nix ./cmp-tabnine.nix ./crates-nvim.nix ] diff --git a/tests/test-sources/plugins/completion/cmp-tabby.nix b/tests/test-sources/plugins/completion/cmp-tabby.nix new file mode 100644 index 00000000..e2fb898b --- /dev/null +++ b/tests/test-sources/plugins/completion/cmp-tabby.nix @@ -0,0 +1,27 @@ +{ + empty = { + plugins.nvim-cmp = { + enable = true; + sources = [ + {name = "cmp_tabby";} + ]; + }; + }; + + defaults = { + plugins = { + nvim-cmp = { + enable = true; + sources = [ + {name = "cmp_tabby";} + ]; + }; + cmp-tabby = { + host = "http://localhost:5000"; + maxLines = 100; + runOnEveryKeyStroke = true; + stop = ["\n"]; + }; + }; + }; +}