mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-12-10 14:13:54 +00:00
assistant/neocodeium: init
This commit is contained in:
parent
09470524a2
commit
584c726270
6 changed files with 217 additions and 0 deletions
|
|
@ -510,3 +510,9 @@
|
||||||
|
|
||||||
- Add inline typst concealing support under `vim.languages.typst` using
|
- Add inline typst concealing support under `vim.languages.typst` using
|
||||||
[typst-concealer].
|
[typst-concealer].
|
||||||
|
|
||||||
|
[axelbdt](https://github.com/axelbdt):
|
||||||
|
|
||||||
|
[neocodeium]: https://github.com/monkoose/neocodeium
|
||||||
|
|
||||||
|
- Add [neocodeium] plugin in `vim.assistant.neocodeium` with `enable`, `setupOpts` and `keymaps`
|
||||||
|
|
|
||||||
|
|
@ -5,5 +5,6 @@
|
||||||
./codecompanion
|
./codecompanion
|
||||||
./supermaven-nvim
|
./supermaven-nvim
|
||||||
./avante
|
./avante
|
||||||
|
./neocodeium
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
33
modules/plugins/assistant/neocodeium/config.nix
Normal file
33
modules/plugins/assistant/neocodeium/config.nix
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
options,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.nvim.binds) mkKeymap;
|
||||||
|
cfg = config.vim.assistant.neocodeium;
|
||||||
|
|
||||||
|
inherit (options.vim.assistant.neocodeium) keymaps;
|
||||||
|
mkNeoCodeiumKey = act: (mkKeymap "i" cfg.keymaps.${act} "function() require('neocodeium').${act}() end" {
|
||||||
|
lua = true;
|
||||||
|
desc = keymaps.${act}.description;
|
||||||
|
});
|
||||||
|
in {
|
||||||
|
config = lib.mkIf cfg.enable {
|
||||||
|
vim = {
|
||||||
|
lazy.plugins.neocodeium = {
|
||||||
|
package = "neocodeium";
|
||||||
|
setupModule = "neocodeium";
|
||||||
|
inherit (cfg) setupOpts;
|
||||||
|
};
|
||||||
|
keymaps = [
|
||||||
|
(mkNeoCodeiumKey "accept")
|
||||||
|
(mkNeoCodeiumKey "accept_word")
|
||||||
|
(mkNeoCodeiumKey "accept_line")
|
||||||
|
(mkNeoCodeiumKey "cycle_or_complete")
|
||||||
|
(mkNeoCodeiumKey "cycle_or_complete_reverse")
|
||||||
|
(mkNeoCodeiumKey "clear")
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
6
modules/plugins/assistant/neocodeium/default.nix
Normal file
6
modules/plugins/assistant/neocodeium/default.nix
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./neocodeium.nix
|
||||||
|
./config.nix
|
||||||
|
];
|
||||||
|
}
|
||||||
155
modules/plugins/assistant/neocodeium/neocodeium.nix
Normal file
155
modules/plugins/assistant/neocodeium/neocodeium.nix
Normal file
|
|
@ -0,0 +1,155 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
inherit
|
||||||
|
(lib.types)
|
||||||
|
nullOr
|
||||||
|
str
|
||||||
|
bool
|
||||||
|
int
|
||||||
|
attrsOf
|
||||||
|
listOf
|
||||||
|
enum
|
||||||
|
;
|
||||||
|
inherit (lib.options) mkOption mkEnableOption;
|
||||||
|
inherit (lib.nvim.types) mkPluginSetupOption luaInline;
|
||||||
|
inherit (lib.nvim.binds) mkMappingOption;
|
||||||
|
in {
|
||||||
|
options.vim.assistant.neocodeium = {
|
||||||
|
enable = mkEnableOption "NeoCodeium AI completion";
|
||||||
|
|
||||||
|
setupOpts = mkPluginSetupOption "NeoCodeium" {
|
||||||
|
enabled = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "Whether to start windsurf server. Can be manually enabled with `:NeoCodeium enable`";
|
||||||
|
};
|
||||||
|
|
||||||
|
bin = mkOption {
|
||||||
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
|
description = "Path to custom windsurf server binary";
|
||||||
|
};
|
||||||
|
|
||||||
|
manual = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "When true, autosuggestions are disabled. Use `require'neocodeium'.cycle_or_complete()` to show suggestions manually";
|
||||||
|
};
|
||||||
|
|
||||||
|
server = {
|
||||||
|
api_url = mkOption {
|
||||||
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
|
description = "API URL to use (for Enterprise mode)";
|
||||||
|
};
|
||||||
|
portal_url = mkOption {
|
||||||
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
|
description = "Portal URL to use (for registering a user and downloading the binary)";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
show_label = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "Whether to show the number of suggestions label in the line number column";
|
||||||
|
};
|
||||||
|
|
||||||
|
debounce = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "Whether to enable suggestions debounce";
|
||||||
|
};
|
||||||
|
|
||||||
|
max_lines = mkOption {
|
||||||
|
type = nullOr int;
|
||||||
|
default = null;
|
||||||
|
example = 10000;
|
||||||
|
description = ''
|
||||||
|
Maximum number of lines parsed from loaded buffers (current buffer always fully parsed).
|
||||||
|
Set to `0` to disable parsing non-current buffers.
|
||||||
|
Set to `-1` to parse all lines
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
silent = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "Whether to disable non-important messages";
|
||||||
|
};
|
||||||
|
|
||||||
|
disable_in_special_buftypes = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "Whether to disable suggestions in special buftypes like `nofile`";
|
||||||
|
};
|
||||||
|
|
||||||
|
log_level = mkOption {
|
||||||
|
type = nullOr (enum [
|
||||||
|
"trace"
|
||||||
|
"debug"
|
||||||
|
"info"
|
||||||
|
"warn"
|
||||||
|
"error"
|
||||||
|
]);
|
||||||
|
default = null;
|
||||||
|
example = "warn";
|
||||||
|
description = "Log level";
|
||||||
|
};
|
||||||
|
|
||||||
|
single_line = {
|
||||||
|
enabled = mkOption {
|
||||||
|
type = nullOr bool;
|
||||||
|
default = null;
|
||||||
|
description = "Whether to enable single line mode. Multi-line suggestions collapse into a single line";
|
||||||
|
};
|
||||||
|
label = mkOption {
|
||||||
|
type = nullOr str;
|
||||||
|
default = null;
|
||||||
|
example = "...";
|
||||||
|
description = "Label indicating that there is multi-line suggestion";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
filter = mkOption {
|
||||||
|
type = nullOr luaInline;
|
||||||
|
default = null;
|
||||||
|
description = ''
|
||||||
|
Function that returns `true` if a buffer should be enabled and `false` if disabled.
|
||||||
|
You can still enable disabled buffer with `:NeoCodeium enable_buffer`
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
filetypes = mkOption {
|
||||||
|
type = nullOr (attrsOf bool);
|
||||||
|
default = null;
|
||||||
|
example = {
|
||||||
|
help = false;
|
||||||
|
gitcommit = false;
|
||||||
|
};
|
||||||
|
description = ''
|
||||||
|
Filetypes to disable suggestions in.
|
||||||
|
You can still enable disabled buffer with `:NeoCodeium enable_buffer`
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
root_dir = mkOption {
|
||||||
|
type = nullOr (listOf str);
|
||||||
|
default = null;
|
||||||
|
example = [
|
||||||
|
".git"
|
||||||
|
"package.json"
|
||||||
|
];
|
||||||
|
description = "List of directories and files to detect workspace root directory for Windsurf Chat";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
keymaps = {
|
||||||
|
accept = mkMappingOption "Accept suggestion" "<A-f>";
|
||||||
|
accept_word = mkMappingOption "Accept word" "<A-w>";
|
||||||
|
accept_line = mkMappingOption "Accept line" "<A-a>";
|
||||||
|
cycle_or_complete = mkMappingOption "Cycle or complete" "<A-e>";
|
||||||
|
cycle_or_complete_reverse = mkMappingOption "Cycle or complete (reverse)" "<A-r>";
|
||||||
|
clear = mkMappingOption "Clear suggestion" "<A-c>";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
@ -1578,6 +1578,22 @@
|
||||||
"url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/9130e58424ad95bf2dd8b40afbb8cf04d648638c.tar.gz",
|
"url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/9130e58424ad95bf2dd8b40afbb8cf04d648638c.tar.gz",
|
||||||
"hash": "0zm40p718cvqg9ngzlnc56pbglrp7yp1580g0f1pfakkwdrvnhdv"
|
"hash": "0zm40p718cvqg9ngzlnc56pbglrp7yp1580g0f1pfakkwdrvnhdv"
|
||||||
},
|
},
|
||||||
|
"neocodeium": {
|
||||||
|
"type": "GitRelease",
|
||||||
|
"repository": {
|
||||||
|
"type": "GitHub",
|
||||||
|
"owner": "monkoose",
|
||||||
|
"repo": "neocodeium"
|
||||||
|
},
|
||||||
|
"pre_releases": false,
|
||||||
|
"version_upper_bound": null,
|
||||||
|
"release_prefix": null,
|
||||||
|
"submodules": false,
|
||||||
|
"version": "v1.16.3",
|
||||||
|
"revision": "f67384cee91f8ffc0d2e09d257691b2461725d5b",
|
||||||
|
"url": "https://api.github.com/repos/monkoose/neocodeium/tarball/v1.16.3",
|
||||||
|
"hash": "1zr6rrvk00d3gwg7sf1vqd1z1gw2qwl0h08zcbc30x8v0iradsai"
|
||||||
|
},
|
||||||
"neocord": {
|
"neocord": {
|
||||||
"type": "Git",
|
"type": "Git",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue