mirror of
https://github.com/NotAShelf/nvf.git
synced 2026-01-09 20:27:16 +00:00
Merge branch 'main' into hm-merge-lists
This commit is contained in:
commit
f3d3741daa
10 changed files with 173 additions and 97 deletions
|
|
@ -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
6
flake.lock
generated
|
|
@ -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": {
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -52,7 +52,7 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
inherit extraPluginType fromInputs;
|
inherit extraPluginType fromInputs pluginType;
|
||||||
|
|
||||||
pluginsOpt = {
|
pluginsOpt = {
|
||||||
description,
|
description,
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
|
|
@ -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 = [];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
})
|
||||||
|
|
|
||||||
|
|
@ -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 },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
})
|
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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";
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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.
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue