Merge branch 'main' into codewindow-open-by-default

This commit is contained in:
Soliprem 2025-12-07 19:40:08 +01:00 committed by GitHub
commit 3eb45e993d
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 224 additions and 1 deletions

View file

@ -170,7 +170,7 @@ The changes are, in no particular order:
- Add [ocaml-lsp] support
- Fix `Emac` typo
- Fix misspelled "Emacs"
- Add [new-file-template.nvim] to automatically fill new file contents using
templates

View file

@ -510,3 +510,13 @@
- Add inline typst concealing support under `vim.languages.typst` using
[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`
[JudahZF](https://github.com/JudahZF):
- Added gitFiles mapping option to telescope

View file

@ -5,5 +5,6 @@
./codecompanion
./supermaven-nvim
./avante
./neocodeium
];
}

View 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")
];
};
};
}

View file

@ -0,0 +1,6 @@
{
imports = [
./neocodeium.nix
./config.nix
];
}

View 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>";
};
};
}

View file

@ -49,6 +49,7 @@ in {
(mkKeymap "n" keys.open "<cmd>Telescope<CR>" {desc = mappings.open.description;})
(mkKeymap "n" keys.resume "<cmd>Telescope resume<CR>" {desc = mappings.resume.description;})
(mkKeymap "n" keys.gitFiles "<cmd>Telescope git_files<CR>" {desc = mappings.gitFiles.description;})
(mkKeymap "n" keys.gitCommits "<cmd>Telescope git_commits<CR>" {desc = mappings.gitCommits.description;})
(mkKeymap "n" keys.gitBufferCommits "<cmd>Telescope git_bcommits<CR>" {desc = mappings.gitBufferCommits.description;})
(mkKeymap "n" keys.gitBranches "<cmd>Telescope git_branches<CR>" {desc = mappings.gitBranches.description;})

View file

@ -208,6 +208,7 @@ in {
open = mkMappingOption "Open [Telescope]" "<leader>ft";
resume = mkMappingOption "Resume (previous search) [Telescope]" "<leader>fr";
gitFiles = mkMappingOption "Git files [Telescope]" "<leader>fvf";
gitCommits = mkMappingOption "Git commits [Telescope]" "<leader>fvcw";
gitBufferCommits = mkMappingOption "Git buffer commits [Telescope]" "<leader>fvcb";
gitBranches = mkMappingOption "Git branches [Telescope]" "<leader>fvb";

View file

@ -1578,6 +1578,22 @@
"url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/9130e58424ad95bf2dd8b40afbb8cf04d648638c.tar.gz",
"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": {
"type": "Git",
"repository": {