Merge branch 'main' into hm-merge-lists

This commit is contained in:
raf 2024-07-10 21:07:20 +00:00 committed by GitHub
commit f3d3741daa
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 173 additions and 97 deletions

View file

@ -30,6 +30,7 @@ Release notes for release 0.7
- Deprecate use of `__empty` to define empty tables in lua. Empty attrset are no - Deprecate use of `__empty` to define empty tables in lua. Empty attrset are no
longer filtered and thus should be used instead. longer filtered and thus should be used instead.
- Add dap-go for better dap configurations - Add dap-go for better dap configurations
- Make noice.nvim customizable
[jacekpoz](https://github.com/jacekpoz): [jacekpoz](https://github.com/jacekpoz):
@ -49,6 +50,8 @@ Release notes for release 0.7
- Use `clangd` as the default language server for C languages - Use `clangd` as the default language server for C languages
- Expose `lib.nvim.types.pluginType`, which for example allows the user to create abstractions for adding plugins
[NotAShelf](https://github.com/notashelf): [NotAShelf](https://github.com/notashelf):
- Add `deno fmt` as the default Markdown formatter. This will be enabled - Add `deno fmt` as the default Markdown formatter. This will be enabled

6
flake.lock generated
View file

@ -114,11 +114,11 @@
}, },
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1719082008, "lastModified": 1720571246,
"narHash": "sha256-jHJSUH619zBQ6WdC21fFAlDxHErKVDJ5fpN0Hgx4sjs=", "narHash": "sha256-nkUXwunTck+hNMt2wZuYRN+jf2ySRjKTzI0fo5TDH78=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "9693852a2070b398ee123a329e68f0dab5526681", "rev": "16e401f01842c5bb2499e78c1fe227f939c0c474",
"type": "github" "type": "github"
}, },
"original": { "original": {

View file

@ -9,7 +9,7 @@
typesCustom = import ./custom.nix {inherit lib;}; typesCustom = import ./custom.nix {inherit lib;};
in { in {
inherit (typesDag) dagOf; inherit (typesDag) dagOf;
inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline; inherit (typesPlugin) pluginsOpt extraPluginType mkPluginSetupOption luaInline pluginType;
inherit (typesLanguage) diagnostics mkGrammarOption; inherit (typesLanguage) diagnostics mkGrammarOption;
inherit (typesCustom) anythingConcatLists; inherit (typesCustom) anythingConcatLists;
} }

View file

@ -52,7 +52,7 @@
}; };
}; };
in { in {
inherit extraPluginType fromInputs; inherit extraPluginType fromInputs pluginType;
pluginsOpt = { pluginsOpt = {
description, description,

View file

@ -71,7 +71,7 @@ inputs: {
builtStartPlugins = buildConfigPlugins vimOptions.startPlugins; builtStartPlugins = buildConfigPlugins vimOptions.startPlugins;
builtOptPlugins = map (package: { builtOptPlugins = map (package: {
plugin = package; plugin = package;
optional = false; optional = true;
}) (buildConfigPlugins vimOptions.optPlugins); }) (buildConfigPlugins vimOptions.optPlugins);
# combine built start and optional plugins # combine built start and optional plugins

View file

@ -20,7 +20,7 @@
defaultServer = "tsserver"; defaultServer = "tsserver";
servers = { servers = {
tsserver = { tsserver = {
package = pkgs.nodePackages.typescript-language-server; package = pkgs.typescript-language-server;
lspConfig = '' lspConfig = ''
lspconfig.tsserver.setup { lspconfig.tsserver.setup {
capabilities = capabilities; capabilities = capabilities;

View file

@ -4,7 +4,7 @@
... ...
}: let }: let
inherit (builtins) map; inherit (builtins) map;
inherit (lib.modules) mkIf mkMerge; inherit (lib.modules) mkIf mkMerge mkDefault;
inherit (lib.trivial) boolToString; inherit (lib.trivial) boolToString;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
inherit (lib.nvim.lua) toLuaObject; inherit (lib.nvim.lua) toLuaObject;
@ -23,7 +23,7 @@ in {
(mkIf (breadcrumbsCfg.enable && breadcrumbsCfg.source == "nvim-navic") { (mkIf (breadcrumbsCfg.enable && breadcrumbsCfg.source == "nvim-navic") {
vim.statusline.lualine.setupOpts = { vim.statusline.lualine.setupOpts = {
# TODO: rewrite in new syntax # TODO: rewrite in new syntax
winbar.lualine_c = [ winbar.lualine_c = mkDefault [
[ [
"navic" "navic"
(mkLuaInline "draw_empty = ${boolToString config.vim.ui.breadcrumbs.alwaysRender}") (mkLuaInline "draw_empty = ${boolToString config.vim.ui.breadcrumbs.alwaysRender}")
@ -41,36 +41,36 @@ in {
''; '';
# this is for backwards-compatibility # this is for backwards-compatibility
# NOTE: since lualine relies heavily on mixed list + key-value table syntax in lua e.g. {1, 2, three = 3}
# and we don't have a good syntax for that we're keeping the old options for now
statusline.lualine.setupOpts = { statusline.lualine.setupOpts = {
options = { options = {
icons_enabled = cfg.icons.enable; icons_enabled = mkDefault cfg.icons.enable;
inherit (cfg) theme; theme = mkDefault cfg.theme;
component_separators = [cfg.componentSeparator.left cfg.componentSeparator.right]; component_separators = mkDefault [cfg.componentSeparator.left cfg.componentSeparator.right];
section_separators = [cfg.sectionSeparator.left cfg.sectionSeparator.right]; section_separators = mkDefault [cfg.sectionSeparator.left cfg.sectionSeparator.right];
globalstatus = cfg.globalStatus; globalstatus = mkDefault cfg.globalStatus;
inherit (cfg) refresh; refresh = mkDefault cfg.refresh;
always_divide_middle = mkDefault cfg.alwaysDivideMiddle;
}; };
sections = { sections = {
lualine_a = map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a); lualine_a = mkDefault (map mkLuaInline (cfg.activeSection.a ++ cfg.extraActiveSection.a));
lualine_b = map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b); lualine_b = mkDefault (map mkLuaInline (cfg.activeSection.b ++ cfg.extraActiveSection.b));
lualine_c = map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c); lualine_c = mkDefault (map mkLuaInline (cfg.activeSection.c ++ cfg.extraActiveSection.c));
lualine_x = map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x); lualine_x = mkDefault (map mkLuaInline (cfg.activeSection.x ++ cfg.extraActiveSection.x));
lualine_y = map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y); lualine_y = mkDefault (map mkLuaInline (cfg.activeSection.y ++ cfg.extraActiveSection.y));
lualine_z = map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z); lualine_z = mkDefault (map mkLuaInline (cfg.activeSection.z ++ cfg.extraActiveSection.z));
}; };
inactive_sections = { inactive_sections = {
lualine_a = map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a); lualine_a = mkDefault (map mkLuaInline (cfg.inactiveSection.a ++ cfg.extraInactiveSection.a));
lualine_b = map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b); lualine_b = mkDefault (map mkLuaInline (cfg.inactiveSection.b ++ cfg.extraInactiveSection.b));
lualine_c = map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c); lualine_c = mkDefault (map mkLuaInline (cfg.inactiveSection.c ++ cfg.extraInactiveSection.c));
lualine_x = map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x); lualine_x = mkDefault (map mkLuaInline (cfg.inactiveSection.x ++ cfg.extraInactiveSection.x));
lualine_y = map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y); lualine_y = mkDefault (map mkLuaInline (cfg.inactiveSection.y ++ cfg.extraInactiveSection.y));
lualine_z = map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z); lualine_z = mkDefault (map mkLuaInline (cfg.inactiveSection.z ++ cfg.extraInactiveSection.z));
}; };
# probably don't need this?
tabline = [];
}; };
}; };
}) })

View file

@ -6,13 +6,11 @@
}: let }: let
inherit (lib.modules) mkIf; inherit (lib.modules) mkIf;
inherit (lib.lists) optionals; inherit (lib.lists) optionals;
inherit (lib.strings) optionalString; inherit (lib.nvim.lua) toLuaObject;
inherit (lib.trivial) boolToString;
inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.dag) entryAnywhere;
cfg = config.vim.ui.noice; cfg = config.vim.ui.noice;
tscfg = config.vim.treesitter; tscfg = config.vim.treesitter;
cmptype = config.vim.autocomplete.type;
defaultGrammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [vim regex lua bash markdown]; defaultGrammars = with pkgs.vimPlugins.nvim-treesitter.builtGrammars; [vim regex lua bash markdown];
in { in {
@ -26,67 +24,7 @@ in {
treesitter.grammars = optionals tscfg.addDefaultGrammars defaultGrammars; treesitter.grammars = optionals tscfg.addDefaultGrammars defaultGrammars;
luaConfigRC.noice-nvim = entryAnywhere '' luaConfigRC.noice-nvim = entryAnywhere ''
require("noice").setup({ require("noice").setup(${toLuaObject cfg.setupOpts})
lsp = {
override = {
["vim.lsp.util.convert_input_to_markdown_lines"] = true,
["vim.lsp.util.stylize_markdown"] = true,
${optionalString (cmptype == "nvim-cmp") "[\"cmp.entry.get_documentation\"] = true,"}
},
signature = {
enabled = false, -- FIXME: enabling this file throws an error which I couldn't figure out
},
},
hover = {
enabled = true,
silent = false, -- set to true to not show a message if hover is not available
view = nil, -- when nil, use defaults from documentation
opts = {}, -- merged with defaults from documentation
},
presets = {
bottom_search = true, -- use a classic bottom cmdline for search
command_palette = true, -- position the cmdline and popupmenu together
long_message_to_split = true, -- long messages will be sent to a split
inc_rename = false, -- enables an input dialog for inc-rename.nvim
lsp_doc_border = ${boolToString config.vim.ui.borders.enable}, -- add a border to hover docs and signature help
},
format = {
cmdline = { pattern = "^:", icon = "", lang = "vim" },
search_down = { kind = "search", pattern = "^/", icon = " ", lang = "regex" },
search_up = { kind = "search", pattern = "^%?", icon = " ", lang = "regex" },
filter = { pattern = "^:%s*!", icon = "", lang = "bash" },
lua = { pattern = "^:%s*lua%s+", icon = "", lang = "lua" },
help = { pattern = "^:%s*he?l?p?%s+", icon = "󰋖" },
input = {},
},
messages = {
-- NOTE: If you enable messages, then the cmdline is enabled automatically.
-- This is a current Neovim limitation.
enabled = true, -- enables the Noice messages UI
view = "notify", -- default view for messages
view_error = "notify", -- view for errors
view_warn = "notify", -- view for warnings
view_history = "messages", -- view for :messages
view_search = "virtualtext", -- view for search count messages. Set to `false` to disable
},
-- Hide written messages
routes = {
{
filter = {
event = "msg_show",
kind = "",
find = "written",
},
opts = { skip = true },
},
},
})
''; '';
}; };
}; };

View file

@ -1,7 +1,142 @@
{lib, ...}: let {
inherit (lib.options) mkEnableOption; lib,
config,
...
}: let
inherit (lib.options) mkEnableOption mkOption;
inherit (lib.types) anything nullOr listOf submodule str;
inherit (lib.nvim.types) mkPluginSetupOption;
inherit (lib.nvim.config) mkBool;
in { in {
options.vim.ui.noice = { options.vim.ui.noice = {
enable = mkEnableOption "noice.nvim UI modification library"; enable = mkEnableOption "noice.nvim UI modification library";
setupOpts = mkPluginSetupOption "noice.nvim" {
lsp = {
override = {
"vim.lsp.util.convert_input_to_markdown_lines" =
mkBool true "override the default lsp markdown formatter with Noice";
"vim.lsp.util.stylize_markdown" =
mkBool true "override the lsp markdown formatter with Noice";
"cmp.entry.get_documentation" =
mkBool (config.vim.autocomplete.type == "nvim-cmp") "override cmp documentation with Noice";
};
signature = {
enabled = mkEnableOption "signature help";
};
};
presets = {
bottom_search = mkBool true "use a classic bottom cmdline for search";
command_palette = mkBool true "position the cmdline and popupmenu together";
long_message_to_split = mkBool true "long messages will be sent to a split";
inc_rename = mkBool false "enables an input dialog for inc-rename.nvim";
lsp_doc_border =
mkBool config.vim.ui.borders.enable "add a border to hover docs and signature help";
};
# TODO: is it possible to write a submodule for this?
format = {
cmdline = mkOption {
description = "formatting options for the cmdline";
type = nullOr anything;
default = {
pattern = "^:";
icon = "";
lang = "vim";
};
};
search_down = mkOption {
description = "formatting options for search_down";
type = nullOr anything;
default = {
kind = "search";
pattern = "^/";
icon = " ";
lang = "regex";
};
};
search_up = mkOption {
description = "formatting options for search_up";
type = nullOr anything;
default = {
kind = "search";
pattern = "^%?";
icon = " ";
lang = "regex";
};
};
filter = mkOption {
description = "formatting options for filter";
type = nullOr anything;
default = {
pattern = "^:%s*!";
icon = "";
lang = "bash";
};
};
lua = mkOption {
description = "formatting options for lua";
type = nullOr anything;
default = {
pattern = "^:%s*lua%s+";
icon = "";
lang = "lua";
};
};
help = mkOption {
description = "formatting options for help";
type = nullOr anything;
default = {
pattern = "^:%s*he?l?p?%s+";
icon = "󰋖";
};
};
};
routes = mkOption {
description = "How to route messages";
type = listOf (submodule {
options = {
view = mkOption {
description = "how this route is viewed";
type = nullOr str;
default = null;
};
filter = mkOption {
description = "a filter for messages matching this route";
type = anything;
};
opts = mkOption {
description = "options for the view and the route";
type = nullOr anything;
default = null;
};
};
});
default = [
{
filter = {
event = "msg_show";
kind = "";
find = "written";
};
opts = {skip = true;};
}
];
defaultText = "Hide written messages";
};
};
}; };
} }

View file

@ -47,7 +47,7 @@ in {
internally to add plugins to Neovim's runtime. internally to add plugins to Neovim's runtime.
To add additional plugins to your configuration, consider To add additional plugins to your configuration, consider
using the [{option}`vim.extraPlugins`](#opt-vim.optPlugins) using the [{option}`vim.extraPlugins`](#opt-vim.extraPlugins)
option. option.
''; '';
}; };