mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-28 11:30:06 +02:00
90 lines
2 KiB
Nix
90 lines
2 KiB
Nix
|
{
|
||
|
lib,
|
||
|
...
|
||
|
}:
|
||
|
let
|
||
|
inherit (lib.nixvim) defaultNullOpts;
|
||
|
in
|
||
|
lib.nixvim.neovim-plugin.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;
|
||
|
};
|
||
|
};
|
||
|
}
|