mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2025-01-08 09:09:49 +01:00
Merge 356f92053c
into aa7b55fa49
This commit is contained in:
commit
eef4bed5b6
8 changed files with 155 additions and 121 deletions
|
@ -28,11 +28,11 @@ configuration formats.
|
|||
|
||||
### `vim.maps` rewrite {#sec-vim-maps-rewrite}
|
||||
|
||||
Instead of specifying map modes using submodules (eg.: `vim.maps.normal`), a new
|
||||
`vim.keymaps` submodule with support for a `mode` option has been introduced. It
|
||||
can be either a string, or a list of strings, where a string represents the
|
||||
short-name of the map mode(s), that the mapping should be set for. See
|
||||
`:help map-modes` for more information.
|
||||
Instead of specifying map modes using submodules (e.g.: `vim.maps.normal`), a
|
||||
new `vim.keymaps` submodule with support for a `mode` option has been
|
||||
introduced. It can be either a string, or a list of strings, where a string
|
||||
represents the short-name of the map mode(s), that the mapping should be set
|
||||
for. See `:help map-modes` for more information.
|
||||
|
||||
For example:
|
||||
|
||||
|
@ -334,6 +334,9 @@ The changes are, in no particular order:
|
|||
`vim.options` as default values. Some are left as they don't have a direct
|
||||
equivalent, but expect a switch eventually.
|
||||
|
||||
- Deprecated `vim.enableEditorconfig` in favor of
|
||||
[](#opt-vim.globals.editorconfig).
|
||||
|
||||
[ppenguin](https://github.com/ppenguin):
|
||||
|
||||
- Telescope:
|
||||
|
|
|
@ -6,7 +6,12 @@
|
|||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||
in {
|
||||
# Converts a boolean to a yes/no string. This is used in lots of
|
||||
# configuration formats.
|
||||
# configuration formats, and is not covered by `toLuaObject`
|
||||
toVimBool = bool:
|
||||
if bool
|
||||
then "yes"
|
||||
else "no";
|
||||
|
||||
diagnosticsToLua = {
|
||||
lang,
|
||||
config,
|
||||
|
@ -30,8 +35,8 @@ in {
|
|||
|
||||
mkEnable = desc:
|
||||
mkOption {
|
||||
description = "Turn on ${desc} for enabled languages by default";
|
||||
type = bool;
|
||||
default = false;
|
||||
type = bool;
|
||||
description = "Turn on ${desc} for enabled languages by default";
|
||||
};
|
||||
}
|
||||
|
|
|
@ -14,6 +14,7 @@
|
|||
splitRight = "splitright";
|
||||
autoIndent = "autoindent";
|
||||
wordWrap = "wrap";
|
||||
showSignColumn = "signcolumn";
|
||||
};
|
||||
in {
|
||||
imports = concatLists [
|
||||
|
@ -35,23 +36,28 @@ in {
|
|||
vim.autopairs.enable has been removed in favor of per-plugin modules.
|
||||
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
|
||||
'')
|
||||
|
||||
(mkRemovedOptionModule ["vim" "autopairs" "type"] ''
|
||||
vim.autopairs.type has been removed in favor of per-plugin modules.
|
||||
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
|
||||
'')
|
||||
|
||||
(mkRemovedOptionModule ["vim" "autocomplete" "enable"] ''
|
||||
vim.autocomplete.enable has been removed in favor of per-plugin modules.
|
||||
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
|
||||
'')
|
||||
|
||||
(mkRemovedOptionModule ["vim" "autocomplete" "type"] ''
|
||||
vim.autocomplete.type has been removed in favor of per-plugin modules.
|
||||
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
|
||||
'')
|
||||
|
||||
(mkRemovedOptionModule ["vim" "autocomplete" "sources"] ''
|
||||
vim.autocomplete.sources has been removed in favor of per-plugin modules.
|
||||
You can add nvim-cmp sources with vim.autocomplete.nvim-cmp.sources
|
||||
instead.
|
||||
'')
|
||||
|
||||
(mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] ''
|
||||
vim.snippets.vsnip.enable has been removed in favor of the more modern luasnip.
|
||||
'')
|
||||
|
@ -84,9 +90,12 @@ in {
|
|||
`tabstop` and `shiftwidth` manually in `vim.options` or per-filetype in a
|
||||
`ftplugin` directory added to your runtime path.
|
||||
'')
|
||||
|
||||
# 2024-12-02
|
||||
(mkRenamedOptionModule ["vim" "enableEditorconfig"] ["vim" "globals" "editorconfig"])
|
||||
]
|
||||
|
||||
# 2024-12-1
|
||||
# 2024-12-01
|
||||
# Migrated via batchRenameOptions. Further batch renames must be below this line.
|
||||
renamedVimOpts
|
||||
];
|
||||
|
|
|
@ -5,6 +5,7 @@
|
|||
}: let
|
||||
inherit (lib.options) mkOption mkEnableOption literalMD;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.attrsets) optionalAttrs;
|
||||
inherit (lib.types) enum bool str int either;
|
||||
inherit (lib.generators) mkLuaInline;
|
||||
inherit (lib.nvim.dag) entryAfter;
|
||||
|
@ -58,24 +59,12 @@ in {
|
|||
description = "Prevent swapfile and backupfile from being created";
|
||||
};
|
||||
|
||||
showSignColumn = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
description = "Show the sign column";
|
||||
};
|
||||
|
||||
bell = mkOption {
|
||||
type = enum ["none" "visual" "on"];
|
||||
default = "none";
|
||||
description = "Set how bells are handled. Options: on, visual or none";
|
||||
};
|
||||
|
||||
enableEditorconfig = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
description = "Follow editorconfig rules in current directory";
|
||||
};
|
||||
|
||||
searchCase = mkOption {
|
||||
type = enum ["ignore" "smart" "sensitive"];
|
||||
default = "sensitive";
|
||||
|
@ -106,63 +95,55 @@ in {
|
|||
# Set options that were previously interpolated in 'luaConfigRC.basic' as vim.options (vim.o)
|
||||
# and 'vim.globals' (vim.g). Future options, if possible, should be added here instead of the
|
||||
# luaConfigRC section below.
|
||||
options = pushDownDefault {
|
||||
encoding = "utf-8";
|
||||
hidden = true;
|
||||
expandtab = true;
|
||||
};
|
||||
options = pushDownDefault (lib.mergeAttrsList [
|
||||
{
|
||||
# Options that are always set, with a lower priority
|
||||
encoding = "utf-8";
|
||||
hidden = true;
|
||||
expandtab = true;
|
||||
|
||||
globals = pushDownDefault {
|
||||
editorconfig = cfg.enableEditorconfig;
|
||||
};
|
||||
# Junkfile Behaviour
|
||||
swapfile = !cfg.preventJunkFiles;
|
||||
backup = !cfg.preventJunkFiles;
|
||||
writebackup = !cfg.preventJunkFiles;
|
||||
}
|
||||
|
||||
# Options that are more difficult to set through 'vim.options'. Fear not, though
|
||||
# as the Lua DAG is still as powerful as it could be.
|
||||
(optionalAttrs cfg.undoFile.enable {
|
||||
undofile = true;
|
||||
undodir = cfg.undoFile.path;
|
||||
})
|
||||
|
||||
(optionalAttrs (cfg.bell == "none") {
|
||||
errorbells = false;
|
||||
visualbell = false;
|
||||
})
|
||||
|
||||
(optionalAttrs (cfg.bell == "on") {
|
||||
visualbell = false;
|
||||
})
|
||||
|
||||
(optionalAttrs (cfg.bell == "visual") {
|
||||
visualbell = false;
|
||||
})
|
||||
|
||||
(optionalAttrs (cfg.lineNumberMode == "relative") {
|
||||
relativenumber = true;
|
||||
})
|
||||
|
||||
(optionalAttrs (cfg.lineNumberMode == "number") {
|
||||
number = true;
|
||||
})
|
||||
|
||||
(optionalAttrs (cfg.lineNumberMode == "relNumber") {
|
||||
number = true;
|
||||
relativenumber = true;
|
||||
})
|
||||
]);
|
||||
|
||||
# Options that are more difficult to set through 'vim.options'. Namely, appending values
|
||||
# to pre-set Neovim options. Fear not, though as the Lua DAG is still as powerful as it
|
||||
# could be.
|
||||
luaConfigRC.basic = entryAfter ["globalsScript"] ''
|
||||
-- Settings that are set for everything
|
||||
vim.opt.shortmess:append("c")
|
||||
|
||||
${optionalString cfg.undoFile.enable ''
|
||||
vim.o.undofile = true
|
||||
vim.o.undodir = ${toLuaObject cfg.undoFile.path}
|
||||
''}
|
||||
|
||||
${optionalString cfg.showSignColumn ''
|
||||
vim.o.signcolumn = "yes"
|
||||
''}
|
||||
|
||||
${optionalString cfg.preventJunkFiles ''
|
||||
vim.o.swapfile = false
|
||||
vim.o.backup = false
|
||||
vim.o.writebackup = false
|
||||
''}
|
||||
|
||||
${optionalString (cfg.bell == "none") ''
|
||||
vim.o.errorbells = false
|
||||
vim.o.visualbell = false
|
||||
''}
|
||||
|
||||
${optionalString (cfg.bell == "on") ''
|
||||
vim.o.visualbell = false
|
||||
''}
|
||||
|
||||
${optionalString (cfg.bell == "visual") ''
|
||||
vim.o.errorbells = false
|
||||
''}
|
||||
|
||||
${optionalString (cfg.lineNumberMode == "relative") ''
|
||||
vim.o.relativenumber = true
|
||||
''}
|
||||
|
||||
${optionalString (cfg.lineNumberMode == "number") ''
|
||||
vim.o.number = true
|
||||
''}
|
||||
|
||||
${optionalString (cfg.lineNumberMode == "relNumber") ''
|
||||
vim.o.number = true
|
||||
vim.o.relativenumber = true
|
||||
''}
|
||||
|
||||
${optionalString cfg.useSystemClipboard ''
|
||||
vim.opt.clipboard:append("unnamedplus")
|
||||
''}
|
||||
|
|
|
@ -124,7 +124,6 @@ in {
|
|||
nvim --headless --clean \
|
||||
--cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
|
||||
done
|
||||
|
||||
'';
|
||||
in
|
||||
mkIf (cfg.extraSpellWords != {}) [
|
||||
|
@ -133,10 +132,12 @@ in {
|
|||
compileJoinedSpellfiles.outPath
|
||||
];
|
||||
|
||||
luaConfigRC.spellcheck = entryAfter ["basic"] ''
|
||||
vim.opt.spell = true
|
||||
vim.opt.spelllang = ${listToLuaTable cfg.languages}
|
||||
options = {
|
||||
spell = true;
|
||||
spelllang = cfg.languages;
|
||||
};
|
||||
|
||||
luaConfigRC.spellcheck = entryAfter ["basic"] ''
|
||||
-- Disable spellchecking for certain filetypes
|
||||
-- as configured by `vim.spellcheck.ignoredFiletypes`
|
||||
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
|
||||
|
|
|
@ -15,43 +15,47 @@
|
|||
mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions;
|
||||
in {
|
||||
config = mkIf cfg.enable {
|
||||
vim.startPlugins = ["gesture-nvim"];
|
||||
vim = {
|
||||
startPlugins = ["gesture-nvim"];
|
||||
|
||||
vim.maps.normal = mkMerge [
|
||||
(mkSetLuaBinding mappings.draw "require('gesture').draw")
|
||||
(mkSetLuaBinding mappings.finish "require('gesture').finish")
|
||||
(mkIf (mappings.draw.value == "<RightDrag>") {
|
||||
"<RightMouse>" = {action = "<Nop>";};
|
||||
})
|
||||
];
|
||||
maps.normal = mkMerge [
|
||||
(mkSetLuaBinding mappings.draw "require('gesture').draw")
|
||||
(mkSetLuaBinding mappings.finish "require('gesture').finish")
|
||||
(mkIf (mappings.draw.value == "<RightDrag>") {
|
||||
"<RightMouse>" = {action = "<Nop>";};
|
||||
})
|
||||
];
|
||||
|
||||
vim.pluginRC.gesture-nvim = entryAnywhere ''
|
||||
vim.opt.mouse = "a"
|
||||
options.mouse = "a";
|
||||
pluginRC.gesture-nvim = entryAnywhere ''
|
||||
local gesture = require("gesture")
|
||||
gesture.register({
|
||||
name = "scroll to bottom",
|
||||
inputs = { gesture.up(), gesture.down() },
|
||||
action = "normal! G",
|
||||
})
|
||||
|
||||
local gesture = require("gesture")
|
||||
gesture.register({
|
||||
name = "scroll to bottom",
|
||||
inputs = { gesture.up(), gesture.down() },
|
||||
action = "normal! G",
|
||||
})
|
||||
gesture.register({
|
||||
name = "next tab",
|
||||
inputs = { gesture.right() },
|
||||
action = "tabnext",
|
||||
})
|
||||
gesture.register({
|
||||
name = "previous tab",
|
||||
inputs = { gesture.left() },
|
||||
action = function(ctx) -- also can use callable
|
||||
vim.cmd.tabprevious()
|
||||
end,
|
||||
})
|
||||
gesture.register({
|
||||
name = "go back",
|
||||
inputs = { gesture.right(), gesture.left() },
|
||||
-- map to `<C-o>` keycode
|
||||
action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-o>", true, false, true), "n", true)]],
|
||||
})
|
||||
'';
|
||||
gesture.register({
|
||||
name = "next tab",
|
||||
inputs = { gesture.right() },
|
||||
action = "tabnext",
|
||||
})
|
||||
|
||||
gesture.register({
|
||||
name = "previous tab",
|
||||
inputs = { gesture.left() },
|
||||
action = function(ctx) -- also can use callable
|
||||
vim.cmd.tabprevious()
|
||||
end,
|
||||
})
|
||||
|
||||
gesture.register({
|
||||
name = "go back",
|
||||
inputs = { gesture.right(), gesture.left() },
|
||||
-- map to `<C-o>` keycode
|
||||
action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-o>", true, false, true), "n", true)]],
|
||||
})
|
||||
'';
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
_: {
|
||||
{
|
||||
imports = [
|
||||
./gesture-nvim.nix
|
||||
./config.nix
|
||||
|
|
|
@ -3,9 +3,11 @@
|
|||
lib,
|
||||
...
|
||||
}: let
|
||||
inherit (lib.options) mkOption mkEnableOption literalMD literalExpression;
|
||||
inherit (lib.options) mkOption literalMD literalExpression;
|
||||
inherit (lib.strings) optionalString;
|
||||
inherit (lib.types) str bool int enum attrsOf lines listOf either path submodule anything;
|
||||
inherit (lib.trivial) isBool;
|
||||
inherit (lib.nvim.languages) toVimBool;
|
||||
inherit (lib.nvim.types) dagOf;
|
||||
inherit (lib.nvim.lua) listToLuaTable;
|
||||
|
||||
|
@ -17,7 +19,7 @@ in {
|
|||
default = false;
|
||||
example = true;
|
||||
description = ''
|
||||
[{option}`official documentation`]: https://neovim.io/doc/user/lua.html#vim.loader.enable()
|
||||
[official documentation]: https://neovim.io/doc/user/lua.html#vim.loader.enable()
|
||||
|
||||
the experimental Lua module loader to speed up the start up process
|
||||
|
||||
|
@ -29,7 +31,7 @@ in {
|
|||
|
||||
::: {.note}
|
||||
The Lua module loader is *disabled* by default. Before setting this option, please
|
||||
take a look at the [{option}`official documentation`]. This option may be enabled by
|
||||
take a look at the {option}`[official documentation]`. This option may be enabled by
|
||||
default in the future.
|
||||
:::
|
||||
'';
|
||||
|
@ -81,7 +83,7 @@ in {
|
|||
./nvim/my-lua-file.lua
|
||||
|
||||
# source type path - pure and reproducible
|
||||
(builtins.source {
|
||||
(builtins.path {
|
||||
path = ./nvim/my-lua-file.lua;
|
||||
name = "my-lua-file";
|
||||
})
|
||||
|
@ -121,6 +123,21 @@ in {
|
|||
default = ",";
|
||||
description = "The key used for `<localleader>` mappings";
|
||||
};
|
||||
|
||||
editorconfig = mkOption {
|
||||
type = bool;
|
||||
default = true;
|
||||
description = ''
|
||||
Whether to enable EditorConfig integration in Neovim.
|
||||
|
||||
This defaults to true as it is enabled by default in stock
|
||||
Neovim, setting this option to false disables EditorConfig
|
||||
integration entirely.
|
||||
|
||||
See [Neovim documentation](https://neovim.io/doc/user/editorconfig.html)
|
||||
for more details on configuring EditorConfig behaviour.
|
||||
'';
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -211,6 +228,16 @@ in {
|
|||
description = "Enable word wrapping.";
|
||||
};
|
||||
|
||||
signcolumn = mkOption {
|
||||
type = either str bool;
|
||||
default = true;
|
||||
apply = x:
|
||||
if isBool x
|
||||
then toVimBool x # convert to a yes/no str
|
||||
else x;
|
||||
description = "Show the sign column";
|
||||
};
|
||||
|
||||
tabstop = mkOption {
|
||||
type = int;
|
||||
default = 8; # Neovim default
|
||||
|
@ -263,7 +290,11 @@ in {
|
|||
vim.opt.runtimepath:append(${listToLuaTable cfg.additionalRuntimePaths})
|
||||
''}
|
||||
|
||||
${optionalString cfg.enableLuaLoader "vim.loader.enable()"}
|
||||
${optionalString cfg.enableLuaLoader ''
|
||||
if vim.loader then
|
||||
vim.loader.enable()
|
||||
end
|
||||
''}
|
||||
'';
|
||||
|
||||
defaultText = literalMD ''
|
||||
|
@ -273,7 +304,7 @@ in {
|
|||
if [](#opt-vim.enableLuaLoader) is set to true.
|
||||
'';
|
||||
|
||||
example = literalExpression ''"$${builtins.readFile ./my-lua-config-pre.lua}"'';
|
||||
example = literalExpression ''''${builtins.readFile ./my-lua-config-pre.lua}'';
|
||||
|
||||
description = ''
|
||||
Verbatim lua code that will be inserted **before**
|
||||
|
|
Loading…
Reference in a new issue