nix-community.nixvim/plugins/by-name/cmp-ai/default.nix
2024-12-22 10:04:00 +00:00

89 lines
2 KiB
Nix

{
lib,
...
}:
let
inherit (lib.nixvim) defaultNullOpts;
in
lib.nixvim.plugins.mkNeovimPlugin {
name = "cmp-ai";
maintainers = [ lib.maintainers.GaetanLepage ];
imports = [
{ cmpSourcePlugins.cmp_ai = "cmp-ai"; }
];
moduleName = "cmp_ai.config";
setup = ":setup";
settingsOptions = {
max_lines = defaultNullOpts.mkUnsignedInt 50 ''
How many lines of buffer context to use.
'';
run_on_every_keystroke = defaultNullOpts.mkBool true ''
Generate new completion items on every keystroke.
'';
provider = 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 = defaultNullOpts.mkAttrsOf lib.types.anything { } ''
Options to forward to the provider.
'';
notify = 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 = 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 = defaultNullOpts.mkAttrsOf' {
type = lib.types.bool;
description = "Which filetypes to ignore.";
pluginDefault = { };
example = {
lua = true;
html = true;
};
};
};
settingsExample = {
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;
};
};
}