mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-24 09:48:42 +02:00
plugins/cmp: add cmp_ai source
This commit is contained in:
parent
582641a639
commit
3834c4e0db
5 changed files with 138 additions and 1 deletions
|
@ -5,6 +5,7 @@
|
||||||
calc = "cmp-calc";
|
calc = "cmp-calc";
|
||||||
dap = "cmp-dap";
|
dap = "cmp-dap";
|
||||||
cmdline = "cmp-cmdline";
|
cmdline = "cmp-cmdline";
|
||||||
|
cmp_ai = "cmp-ai";
|
||||||
cmp-clippy = "cmp-clippy";
|
cmp-clippy = "cmp-clippy";
|
||||||
cmp-cmdline-history = "cmp-cmdline-history";
|
cmp-cmdline-history = "cmp-cmdline-history";
|
||||||
cmp_pandoc = "cmp-pandoc-nvim";
|
cmp_pandoc = "cmp-pandoc-nvim";
|
||||||
|
|
95
plugins/completion/cmp/sources/cmp-ai.nix
Normal file
95
plugins/completion/cmp/sources/cmp-ai.nix
Normal file
|
@ -0,0 +1,95 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
helpers,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
with lib;
|
||||||
|
let
|
||||||
|
cfg = config.plugins.cmp-ai;
|
||||||
|
in
|
||||||
|
{
|
||||||
|
meta.maintainers = [ maintainers.GaetanLepage ];
|
||||||
|
|
||||||
|
options.plugins.cmp-ai = {
|
||||||
|
settings = helpers.mkSettingsOption {
|
||||||
|
description = "Options provided to the `require('cmp_ai.config'):setup` function.";
|
||||||
|
|
||||||
|
options = {
|
||||||
|
max_lines = helpers.defaultNullOpts.mkUnsignedInt 50 ''
|
||||||
|
How many lines of buffer context to use.
|
||||||
|
'';
|
||||||
|
|
||||||
|
run_on_every_keystroke = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
Generate new completion items on every keystroke.
|
||||||
|
'';
|
||||||
|
|
||||||
|
provider = helpers.defaultNullOpts.mkStr "HF" ''
|
||||||
|
Which AI provider to use.
|
||||||
|
|
||||||
|
Check the [README](https://github.com/tzachar/cmp-ai/blob/main/README.md) to learn about
|
||||||
|
available options.
|
||||||
|
'';
|
||||||
|
|
||||||
|
provider_options = helpers.defaultNullOpts.mkAttrsOf types.anything { } ''
|
||||||
|
Options to forward to the provider.
|
||||||
|
'';
|
||||||
|
|
||||||
|
notify = helpers.defaultNullOpts.mkBool true ''
|
||||||
|
As some completion sources can be quit slow, setting this to `true` will trigger a
|
||||||
|
notification when a completion starts and ends using `vim.notify`.
|
||||||
|
'';
|
||||||
|
|
||||||
|
notify_callback = helpers.defaultNullOpts.mkLuaFn' {
|
||||||
|
description = ''
|
||||||
|
The default notify function uses `vim.notify`, but an override can be configured.
|
||||||
|
'';
|
||||||
|
pluginDefault = ''
|
||||||
|
function(msg)
|
||||||
|
vim.notify(msg)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
example = ''
|
||||||
|
function(msg)
|
||||||
|
require('notify').notify(msg, vim.log.levels.INFO, {
|
||||||
|
title = 'OpenAI',
|
||||||
|
render = 'compact',
|
||||||
|
})
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
ignored_file_types = helpers.defaultNullOpts.mkAttrsOf' {
|
||||||
|
type = types.bool;
|
||||||
|
description = "Which filetypes to ignore.";
|
||||||
|
pluginDefault = { };
|
||||||
|
example = {
|
||||||
|
lua = true;
|
||||||
|
html = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
example = {
|
||||||
|
max_lines = 1000;
|
||||||
|
provider = "HF";
|
||||||
|
notify = true;
|
||||||
|
notify_callback = ''
|
||||||
|
function(msg)
|
||||||
|
vim.notify(msg)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
run_on_every_keystroke = true;
|
||||||
|
ignored_file_types = {
|
||||||
|
lua = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
extraConfigLua = ''
|
||||||
|
require('cmp_ai.config'):setup(${helpers.toLuaObject cfg.settings})
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
|
@ -23,6 +23,7 @@ in
|
||||||
imports = [
|
imports = [
|
||||||
./codeium-nvim.nix
|
./codeium-nvim.nix
|
||||||
./copilot-cmp.nix
|
./copilot-cmp.nix
|
||||||
|
./cmp-ai.nix
|
||||||
./cmp-fish.nix
|
./cmp-fish.nix
|
||||||
./cmp-git.nix
|
./cmp-git.nix
|
||||||
./cmp-tabby.nix
|
./cmp-tabby.nix
|
||||||
|
|
37
tests/test-sources/plugins/completion/cmp-ai.nix
Normal file
37
tests/test-sources/plugins/completion/cmp-ai.nix
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
{
|
||||||
|
empty = {
|
||||||
|
# We do not provide the required HF_API_KEY environment variable.
|
||||||
|
tests.dontRun = true;
|
||||||
|
|
||||||
|
plugins.cmp = {
|
||||||
|
enable = true;
|
||||||
|
settings.sources = [ { name = "cmp_ai"; } ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
example = {
|
||||||
|
# We do not provide the required HF_API_KEY environment variable.
|
||||||
|
tests.dontRun = true;
|
||||||
|
|
||||||
|
plugins = {
|
||||||
|
cmp = {
|
||||||
|
enable = true;
|
||||||
|
settings.sources = [ { name = "cmp_ai"; } ];
|
||||||
|
};
|
||||||
|
cmp-ai.settings = {
|
||||||
|
max_lines = 1000;
|
||||||
|
provider = "HF";
|
||||||
|
notify = true;
|
||||||
|
notify_callback = ''
|
||||||
|
function(msg)
|
||||||
|
vim.notify(msg)
|
||||||
|
end
|
||||||
|
'';
|
||||||
|
run_on_every_keystroke = true;
|
||||||
|
ignored_file_types = {
|
||||||
|
lua = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -14,7 +14,10 @@
|
||||||
settings.sources =
|
settings.sources =
|
||||||
with pkgs.lib;
|
with pkgs.lib;
|
||||||
let
|
let
|
||||||
disabledSources = optional (pkgs.stdenv.hostPlatform.system == "aarch64-linux") "cmp_tabnine";
|
disabledSources = [
|
||||||
|
# We do not provide the required HF_API_KEY environment variable.
|
||||||
|
"cmp_ai"
|
||||||
|
] ++ optional (pkgs.stdenv.hostPlatform.system == "aarch64-linux") "cmp_tabnine";
|
||||||
|
|
||||||
filterFunc = sourceName: !(elem sourceName disabledSources);
|
filterFunc = sourceName: !(elem sourceName disabledSources);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue