mirror of
https://github.com/nix-community/nixvim.git
synced 2025-06-21 00:25:42 +02:00
plugins/copilot-cmp: move to by-name, migrate to mkNeovimPlugin
This commit is contained in:
parent
7aed1c4b57
commit
5d6e83d8ab
5 changed files with 87 additions and 74 deletions
74
plugins/by-name/copilot-cmp/default.nix
Normal file
74
plugins/by-name/copilot-cmp/default.nix
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
{ lib, config, ... }:
|
||||||
|
let
|
||||||
|
inherit (lib) types;
|
||||||
|
inherit (lib.nixvim) defaultNullOpts;
|
||||||
|
in
|
||||||
|
lib.nixvim.neovim-plugin.mkNeovimPlugin {
|
||||||
|
name = "copilot-cmp";
|
||||||
|
moduleName = "copilot_cmp";
|
||||||
|
|
||||||
|
imports = [
|
||||||
|
{ cmpSourcePlugins.copilot = "copilot-cmp"; }
|
||||||
|
];
|
||||||
|
|
||||||
|
maintainers = [ lib.maintainers.GaetanLepage ];
|
||||||
|
|
||||||
|
# TODO introduced 2024-12-19: remove after 25.05
|
||||||
|
deprecateExtraOptions = true;
|
||||||
|
optionsRenamedToSettings = [
|
||||||
|
"event"
|
||||||
|
"fixPairs"
|
||||||
|
];
|
||||||
|
|
||||||
|
settingsOptions = {
|
||||||
|
event =
|
||||||
|
defaultNullOpts.mkListOf types.str
|
||||||
|
[
|
||||||
|
"InsertEnter"
|
||||||
|
"LspAttach"
|
||||||
|
]
|
||||||
|
''
|
||||||
|
Configures when the source is registered.
|
||||||
|
|
||||||
|
Unless you have a unique problem for your particular configuration you probably don't want to
|
||||||
|
touch this.
|
||||||
|
'';
|
||||||
|
|
||||||
|
fix_pairs = defaultNullOpts.mkBool true ''
|
||||||
|
Suppose you have the following code: `print('h')`.
|
||||||
|
Copilot might try to account for the `'` and `)` and complete it with this: `print('hello`.
|
||||||
|
|
||||||
|
This is not good behavior for consistency reasons and will just end up deleting the two ending
|
||||||
|
characters.
|
||||||
|
This option fixes that.
|
||||||
|
Don't turn this off unless you are having problems with pairs and believe this might be
|
||||||
|
causing them.
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
settingsExample = {
|
||||||
|
event = [
|
||||||
|
"InsertEnter"
|
||||||
|
"LspAttach"
|
||||||
|
];
|
||||||
|
fix_pairs = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
extraConfig = {
|
||||||
|
warnings =
|
||||||
|
let
|
||||||
|
copilot-lua-cfg = config.plugins.copilot-lua;
|
||||||
|
isEnabled = b: (lib.isBool b && b);
|
||||||
|
in
|
||||||
|
lib.optional (isEnabled copilot-lua-cfg.suggestion.enabled) ''
|
||||||
|
It is recommended to disable copilot's `suggestion` module, as it can interfere with
|
||||||
|
completions properly appearing in copilot-cmp.
|
||||||
|
''
|
||||||
|
++ lib.optional (isEnabled copilot-lua-cfg.panel.enabled) ''
|
||||||
|
It is recommended to disable copilot's `panel` module, as it can interfere with completions
|
||||||
|
properly appearing in copilot-cmp.
|
||||||
|
'';
|
||||||
|
|
||||||
|
plugins.copilot-lua.enable = lib.mkDefault true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -1,67 +0,0 @@
|
||||||
{
|
|
||||||
lib,
|
|
||||||
config,
|
|
||||||
...
|
|
||||||
}:
|
|
||||||
let
|
|
||||||
inherit (lib.nixvim) defaultNullOpts;
|
|
||||||
|
|
||||||
copilot-lua-cfg = config.plugins.copilot-lua;
|
|
||||||
cfg = config.plugins.copilot-cmp;
|
|
||||||
in
|
|
||||||
{
|
|
||||||
options.plugins.copilot-cmp = lib.nixvim.neovim-plugin.extraOptionsOptions // {
|
|
||||||
event =
|
|
||||||
defaultNullOpts.mkListOf lib.types.str
|
|
||||||
[
|
|
||||||
"InsertEnter"
|
|
||||||
"LspAttach"
|
|
||||||
]
|
|
||||||
''
|
|
||||||
Configures when the source is registered.
|
|
||||||
Unless you have a unique problem for your particular configuration you probably don't want
|
|
||||||
to touch this.
|
|
||||||
'';
|
|
||||||
|
|
||||||
fixPairs = defaultNullOpts.mkBool true ''
|
|
||||||
Suppose you have the following code: `print('h')`.
|
|
||||||
Copilot might try to account for the `'` and `)` and complete it with this: `print('hello`.
|
|
||||||
|
|
||||||
This is not good behavior for consistency reasons and will just end up deleting the two ending
|
|
||||||
characters.
|
|
||||||
This option fixes that.
|
|
||||||
Don't turn this off unless you are having problems with pairs and believe this might be
|
|
||||||
causing them.
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
config = lib.mkIf cfg.enable {
|
|
||||||
warnings =
|
|
||||||
lib.optional
|
|
||||||
((!lib.isBool copilot-lua-cfg.suggestion.enabled) || copilot-lua-cfg.suggestion.enabled)
|
|
||||||
''
|
|
||||||
It is recommended to disable copilot's `suggestion` module, as it can interfere with
|
|
||||||
completions properly appearing in copilot-cmp.
|
|
||||||
''
|
|
||||||
++ lib.optional ((!lib.isBool copilot-lua-cfg.panel.enabled) || copilot-lua-cfg.panel.enabled) ''
|
|
||||||
It is recommended to disable copilot's `panel` module, as it can interfere with completions
|
|
||||||
properly appearing in copilot-cmp.
|
|
||||||
'';
|
|
||||||
|
|
||||||
plugins.copilot-lua.enable = true;
|
|
||||||
|
|
||||||
extraConfigLua =
|
|
||||||
let
|
|
||||||
setupOptions =
|
|
||||||
with cfg;
|
|
||||||
{
|
|
||||||
inherit event;
|
|
||||||
fix_pairs = fixPairs;
|
|
||||||
}
|
|
||||||
// cfg.extraOptions;
|
|
||||||
in
|
|
||||||
''
|
|
||||||
require('copilot_cmp').setup(${lib.nixvim.toLuaObject setupOptions})
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
}
|
|
|
@ -173,10 +173,6 @@ let
|
||||||
pluginName = "cmp-zsh";
|
pluginName = "cmp-zsh";
|
||||||
sourceName = "zsh";
|
sourceName = "zsh";
|
||||||
}
|
}
|
||||||
{
|
|
||||||
pluginName = "copilot-cmp";
|
|
||||||
sourceName = "copilot";
|
|
||||||
}
|
|
||||||
{
|
{
|
||||||
pluginName = "crates-nvim";
|
pluginName = "crates-nvim";
|
||||||
sourceName = "crates";
|
sourceName = "crates";
|
||||||
|
@ -189,7 +185,6 @@ in
|
||||||
{
|
{
|
||||||
# For extra cmp plugins
|
# For extra cmp plugins
|
||||||
imports = [
|
imports = [
|
||||||
./copilot-cmp.nix
|
|
||||||
./crates-nvim.nix
|
./crates-nvim.nix
|
||||||
] ++ pluginModules;
|
] ++ pluginModules;
|
||||||
}
|
}
|
||||||
|
|
11
tests/test-sources/plugins/by-name/copilot-cmp/default.nix
Normal file
11
tests/test-sources/plugins/by-name/copilot-cmp/default.nix
Normal file
|
@ -0,0 +1,11 @@
|
||||||
|
{
|
||||||
|
empty = {
|
||||||
|
plugins.copilot-cmp.enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
plugins.copilot-cmp = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
|
@ -12,12 +12,12 @@
|
||||||
suggestion.enabled = false;
|
suggestion.enabled = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
copilot-cmp = {
|
copilot-cmp.settings = {
|
||||||
event = [
|
event = [
|
||||||
"InsertEnter"
|
"InsertEnter"
|
||||||
"LspAttach"
|
"LspAttach"
|
||||||
];
|
];
|
||||||
fixPairs = true;
|
fix_pairs = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
cmp = {
|
cmp = {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue