mirror of
https://github.com/NotAShelf/nvf.git
synced 2025-02-20 18:38:12 +00:00
Compare commits
24 commits
6fd1ec5691
...
83747efc2e
Author | SHA1 | Date | |
---|---|---|---|
![]() |
83747efc2e | ||
c09ae380f0 | |||
4e949b3df8 | |||
![]() |
6852120514 | ||
5250f8e771 | |||
6f1293053c | |||
8448a6ca0f | |||
![]() |
b0fb0a93cb | ||
dab409685d | |||
![]() |
ea056532bc | ||
![]() |
a26cdd2d25 | ||
ab49ba443d | |||
7dbe7a08b3 | |||
356f92053c | |||
b704a28a12 | |||
5749739e4b | |||
85347de09d | |||
b67759273b | |||
![]() |
4eeadf3c96 | ||
66005a51c3 | |||
c19c925f1d | |||
07f50e84eb | |||
5a5f49f85f | |||
0650aa31ac |
20 changed files with 326 additions and 142 deletions
|
@ -28,11 +28,11 @@ configuration formats.
|
||||||
|
|
||||||
### `vim.maps` rewrite {#sec-vim-maps-rewrite}
|
### `vim.maps` rewrite {#sec-vim-maps-rewrite}
|
||||||
|
|
||||||
Instead of specifying map modes using submodules (eg.: `vim.maps.normal`), a new
|
Instead of specifying map modes using submodules (e.g.: `vim.maps.normal`), a
|
||||||
`vim.keymaps` submodule with support for a `mode` option has been introduced. It
|
new `vim.keymaps` submodule with support for a `mode` option has been
|
||||||
can be either a string, or a list of strings, where a string represents the
|
introduced. It can be either a string, or a list of strings, where a string
|
||||||
short-name of the map mode(s), that the mapping should be set for. See
|
represents the short-name of the map mode(s), that the mapping should be set
|
||||||
`:help map-modes` for more information.
|
for. See `:help map-modes` for more information.
|
||||||
|
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
|
|
|
@ -16,6 +16,14 @@
|
||||||
- Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table
|
- Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table
|
||||||
in gitsigns configuration.
|
in gitsigns configuration.
|
||||||
|
|
||||||
|
- [](#opt-vim.options.mouse) no longer compares values to an enum of available
|
||||||
|
mouse modes. This means you can provide any string without the module system
|
||||||
|
warning you that it is invalid. Do keep in mind that this value is no longer
|
||||||
|
checked, so you will be responsible for ensuring its validity.
|
||||||
|
|
||||||
|
- Deprecated `vim.enableEditorconfig` in favor of
|
||||||
|
[](#opt-vim.globals.editorconfig).
|
||||||
|
|
||||||
[amadaluzia](https://github.com/amadaluzia):
|
[amadaluzia](https://github.com/amadaluzia):
|
||||||
|
|
||||||
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
|
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
|
||||||
|
@ -32,5 +40,12 @@
|
||||||
[horriblename](https://github.com/horriblename):
|
[horriblename](https://github.com/horriblename):
|
||||||
|
|
||||||
[aerial.nvim](https://github.com/stevearc/aerial.nvim)
|
[aerial.nvim](https://github.com/stevearc/aerial.nvim)
|
||||||
|
[nvim-ufo](https://github.com/kevinhwang91/nvim-ufo)
|
||||||
|
|
||||||
- Add [aerial.nvim]
|
- Add [aerial.nvim]
|
||||||
|
- Add [nvim-ufo]
|
||||||
|
|
||||||
|
[LilleAila](https://github.com/LilleAila):
|
||||||
|
|
||||||
|
- Remove `vim.notes.obsidian.setupOpts.dir`, which was set by default.
|
||||||
|
Fixes issue with setting the workspace directory.
|
||||||
|
|
34
flake.lock
generated
34
flake.lock
generated
|
@ -1518,6 +1518,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"plugin-nvim-ufo": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1735147722,
|
||||||
|
"narHash": "sha256-etyfm4KpwjYN+kkotOMl0LgbQniILmqMqab4acMtTlw=",
|
||||||
|
"owner": "kevinhwang91",
|
||||||
|
"repo": "nvim-ufo",
|
||||||
|
"rev": "32cb247b893a384f1888b9cd737264159ecf183c",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kevinhwang91",
|
||||||
|
"repo": "nvim-ufo",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"plugin-nvim-web-devicons": {
|
"plugin-nvim-web-devicons": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -1694,6 +1710,22 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"plugin-promise-async": {
|
||||||
|
"flake": false,
|
||||||
|
"locked": {
|
||||||
|
"lastModified": 1722813441,
|
||||||
|
"narHash": "sha256-9eM66brPjiFlY64vmBetRYrKnpDyN7+/URMm4GsGimA=",
|
||||||
|
"owner": "kevinhwang91",
|
||||||
|
"repo": "promise-async",
|
||||||
|
"rev": "119e8961014c9bfaf1487bf3c2a393d254f337e2",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
"original": {
|
||||||
|
"owner": "kevinhwang91",
|
||||||
|
"repo": "promise-async",
|
||||||
|
"type": "github"
|
||||||
|
}
|
||||||
|
},
|
||||||
"plugin-registers": {
|
"plugin-registers": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -2191,6 +2223,7 @@
|
||||||
"plugin-nvim-tree-lua": "plugin-nvim-tree-lua",
|
"plugin-nvim-tree-lua": "plugin-nvim-tree-lua",
|
||||||
"plugin-nvim-treesitter-context": "plugin-nvim-treesitter-context",
|
"plugin-nvim-treesitter-context": "plugin-nvim-treesitter-context",
|
||||||
"plugin-nvim-ts-autotag": "plugin-nvim-ts-autotag",
|
"plugin-nvim-ts-autotag": "plugin-nvim-ts-autotag",
|
||||||
|
"plugin-nvim-ufo": "plugin-nvim-ufo",
|
||||||
"plugin-nvim-web-devicons": "plugin-nvim-web-devicons",
|
"plugin-nvim-web-devicons": "plugin-nvim-web-devicons",
|
||||||
"plugin-obsidian-nvim": "plugin-obsidian-nvim",
|
"plugin-obsidian-nvim": "plugin-obsidian-nvim",
|
||||||
"plugin-omnisharp-extended": "plugin-omnisharp-extended",
|
"plugin-omnisharp-extended": "plugin-omnisharp-extended",
|
||||||
|
@ -2202,6 +2235,7 @@
|
||||||
"plugin-plenary-nvim": "plugin-plenary-nvim",
|
"plugin-plenary-nvim": "plugin-plenary-nvim",
|
||||||
"plugin-precognition-nvim": "plugin-precognition-nvim",
|
"plugin-precognition-nvim": "plugin-precognition-nvim",
|
||||||
"plugin-project-nvim": "plugin-project-nvim",
|
"plugin-project-nvim": "plugin-project-nvim",
|
||||||
|
"plugin-promise-async": "plugin-promise-async",
|
||||||
"plugin-registers": "plugin-registers",
|
"plugin-registers": "plugin-registers",
|
||||||
"plugin-render-markdown-nvim": "plugin-render-markdown-nvim",
|
"plugin-render-markdown-nvim": "plugin-render-markdown-nvim",
|
||||||
"plugin-rose-pine": "plugin-rose-pine",
|
"plugin-rose-pine": "plugin-rose-pine",
|
||||||
|
|
15
flake.nix
15
flake.nix
|
@ -720,12 +720,27 @@
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
plugin-promise-async = {
|
||||||
|
url = "github:kevinhwang91/promise-async";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
|
plugin-nvim-ufo = {
|
||||||
|
url = "github:kevinhwang91/nvim-ufo";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
plugin-new-file-template-nvim = {
|
plugin-new-file-template-nvim = {
|
||||||
# (required by new-file-template.nvim)
|
# (required by new-file-template.nvim)
|
||||||
url = "github:otavioschwanck/new-file-template.nvim";
|
url = "github:otavioschwanck/new-file-template.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
plugin-R-nvim = {
|
||||||
|
url = "github:R-nvim/R.nvim";
|
||||||
|
flake = false;
|
||||||
|
};
|
||||||
|
|
||||||
plugin-haskell-tools-nvim = {
|
plugin-haskell-tools-nvim = {
|
||||||
url = "github:mrcjkb/haskell-tools.nvim";
|
url = "github:mrcjkb/haskell-tools.nvim";
|
||||||
flake = false;
|
flake = false;
|
||||||
|
|
|
@ -6,7 +6,12 @@
|
||||||
inherit (lib.nvim.attrsets) mapListToAttrs;
|
inherit (lib.nvim.attrsets) mapListToAttrs;
|
||||||
in {
|
in {
|
||||||
# Converts a boolean to a yes/no string. This is used in lots of
|
# 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 = {
|
diagnosticsToLua = {
|
||||||
lang,
|
lang,
|
||||||
config,
|
config,
|
||||||
|
@ -30,8 +35,8 @@ in {
|
||||||
|
|
||||||
mkEnable = desc:
|
mkEnable = desc:
|
||||||
mkOption {
|
mkOption {
|
||||||
description = "Turn on ${desc} for enabled languages by default";
|
|
||||||
type = bool;
|
|
||||||
default = false;
|
default = false;
|
||||||
|
type = bool;
|
||||||
|
description = "Turn on ${desc} for enabled languages by default";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@
|
||||||
splitRight = "splitright";
|
splitRight = "splitright";
|
||||||
autoIndent = "autoindent";
|
autoIndent = "autoindent";
|
||||||
wordWrap = "wrap";
|
wordWrap = "wrap";
|
||||||
|
showSignColumn = "signcolumn";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
imports = concatLists [
|
imports = concatLists [
|
||||||
|
@ -35,23 +36,28 @@ in {
|
||||||
vim.autopairs.enable has been removed in favor of per-plugin modules.
|
vim.autopairs.enable has been removed in favor of per-plugin modules.
|
||||||
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
|
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(mkRemovedOptionModule ["vim" "autopairs" "type"] ''
|
(mkRemovedOptionModule ["vim" "autopairs" "type"] ''
|
||||||
vim.autopairs.type has been removed in favor of per-plugin modules.
|
vim.autopairs.type has been removed in favor of per-plugin modules.
|
||||||
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
|
You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead.
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(mkRemovedOptionModule ["vim" "autocomplete" "enable"] ''
|
(mkRemovedOptionModule ["vim" "autocomplete" "enable"] ''
|
||||||
vim.autocomplete.enable has been removed in favor of per-plugin modules.
|
vim.autocomplete.enable has been removed in favor of per-plugin modules.
|
||||||
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
|
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(mkRemovedOptionModule ["vim" "autocomplete" "type"] ''
|
(mkRemovedOptionModule ["vim" "autocomplete" "type"] ''
|
||||||
vim.autocomplete.type has been removed in favor of per-plugin modules.
|
vim.autocomplete.type has been removed in favor of per-plugin modules.
|
||||||
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
|
You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead.
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(mkRemovedOptionModule ["vim" "autocomplete" "sources"] ''
|
(mkRemovedOptionModule ["vim" "autocomplete" "sources"] ''
|
||||||
vim.autocomplete.sources has been removed in favor of per-plugin modules.
|
vim.autocomplete.sources has been removed in favor of per-plugin modules.
|
||||||
You can add nvim-cmp sources with vim.autocomplete.nvim-cmp.sources
|
You can add nvim-cmp sources with vim.autocomplete.nvim-cmp.sources
|
||||||
instead.
|
instead.
|
||||||
'')
|
'')
|
||||||
|
|
||||||
(mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] ''
|
(mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] ''
|
||||||
vim.snippets.vsnip.enable has been removed in favor of the more modern luasnip.
|
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
|
`tabstop` and `shiftwidth` manually in `vim.options` or per-filetype in a
|
||||||
`ftplugin` directory added to your runtime path.
|
`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.
|
# Migrated via batchRenameOptions. Further batch renames must be below this line.
|
||||||
renamedVimOpts
|
renamedVimOpts
|
||||||
];
|
];
|
||||||
|
|
|
@ -5,6 +5,7 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) mkOption mkEnableOption literalMD;
|
inherit (lib.options) mkOption mkEnableOption literalMD;
|
||||||
inherit (lib.strings) optionalString;
|
inherit (lib.strings) optionalString;
|
||||||
|
inherit (lib.attrsets) optionalAttrs;
|
||||||
inherit (lib.types) enum bool str int either;
|
inherit (lib.types) enum bool str int either;
|
||||||
inherit (lib.generators) mkLuaInline;
|
inherit (lib.generators) mkLuaInline;
|
||||||
inherit (lib.nvim.dag) entryAfter;
|
inherit (lib.nvim.dag) entryAfter;
|
||||||
|
@ -58,24 +59,12 @@ in {
|
||||||
description = "Prevent swapfile and backupfile from being created";
|
description = "Prevent swapfile and backupfile from being created";
|
||||||
};
|
};
|
||||||
|
|
||||||
showSignColumn = mkOption {
|
|
||||||
type = bool;
|
|
||||||
default = true;
|
|
||||||
description = "Show the sign column";
|
|
||||||
};
|
|
||||||
|
|
||||||
bell = mkOption {
|
bell = mkOption {
|
||||||
type = enum ["none" "visual" "on"];
|
type = enum ["none" "visual" "on"];
|
||||||
default = "none";
|
default = "none";
|
||||||
description = "Set how bells are handled. Options: on, visual or 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 {
|
searchCase = mkOption {
|
||||||
type = enum ["ignore" "smart" "sensitive"];
|
type = enum ["ignore" "smart" "sensitive"];
|
||||||
default = "sensitive";
|
default = "sensitive";
|
||||||
|
@ -106,63 +95,55 @@ in {
|
||||||
# Set options that were previously interpolated in 'luaConfigRC.basic' as vim.options (vim.o)
|
# 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
|
# and 'vim.globals' (vim.g). Future options, if possible, should be added here instead of the
|
||||||
# luaConfigRC section below.
|
# luaConfigRC section below.
|
||||||
options = pushDownDefault {
|
options = pushDownDefault (lib.mergeAttrsList [
|
||||||
encoding = "utf-8";
|
{
|
||||||
hidden = true;
|
# Options that are always set, with a lower priority
|
||||||
expandtab = true;
|
encoding = "utf-8";
|
||||||
};
|
hidden = true;
|
||||||
|
expandtab = true;
|
||||||
|
|
||||||
globals = pushDownDefault {
|
# Junkfile Behaviour
|
||||||
editorconfig = cfg.enableEditorconfig;
|
swapfile = !cfg.preventJunkFiles;
|
||||||
};
|
backup = !cfg.preventJunkFiles;
|
||||||
|
writebackup = !cfg.preventJunkFiles;
|
||||||
|
}
|
||||||
|
|
||||||
# Options that are more difficult to set through 'vim.options'. Fear not, though
|
(optionalAttrs cfg.undoFile.enable {
|
||||||
# as the Lua DAG is still as powerful as it could be.
|
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"] ''
|
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 ''
|
${optionalString cfg.useSystemClipboard ''
|
||||||
vim.opt.clipboard:append("unnamedplus")
|
vim.opt.clipboard:append("unnamedplus")
|
||||||
''}
|
''}
|
||||||
|
|
|
@ -124,7 +124,6 @@ in {
|
||||||
nvim --headless --clean \
|
nvim --headless --clean \
|
||||||
--cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
|
--cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n
|
||||||
done
|
done
|
||||||
|
|
||||||
'';
|
'';
|
||||||
in
|
in
|
||||||
mkIf (cfg.extraSpellWords != {}) [
|
mkIf (cfg.extraSpellWords != {}) [
|
||||||
|
@ -133,10 +132,12 @@ in {
|
||||||
compileJoinedSpellfiles.outPath
|
compileJoinedSpellfiles.outPath
|
||||||
];
|
];
|
||||||
|
|
||||||
luaConfigRC.spellcheck = entryAfter ["basic"] ''
|
options = {
|
||||||
vim.opt.spell = true
|
spell = true;
|
||||||
vim.opt.spelllang = ${listToLuaTable cfg.languages}
|
spelllang = cfg.languages;
|
||||||
|
};
|
||||||
|
|
||||||
|
luaConfigRC.spellcheck = entryAfter ["basic"] ''
|
||||||
-- Disable spellchecking for certain filetypes
|
-- Disable spellchecking for certain filetypes
|
||||||
-- as configured by `vim.spellcheck.ignoredFiletypes`
|
-- as configured by `vim.spellcheck.ignoredFiletypes`
|
||||||
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
|
vim.api.nvim_create_augroup("nvf_autocmds", {clear = false})
|
||||||
|
|
|
@ -130,7 +130,6 @@ in {
|
||||||
|
|
||||||
(mkIf cfg.lsp.enable {
|
(mkIf cfg.lsp.enable {
|
||||||
vim.lsp.lspconfig.enable = true;
|
vim.lsp.lspconfig.enable = true;
|
||||||
|
|
||||||
vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig;
|
vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
|
@ -71,7 +71,7 @@ in {
|
||||||
cmd = ${
|
cmd = ${
|
||||||
if isList cfg.lsp.package
|
if isList cfg.lsp.package
|
||||||
then expToLua cfg.lsp.package
|
then expToLua cfg.lsp.package
|
||||||
else ''{"${cfg.lsp.package}/bin/haskell-language-server-wrapper"}''
|
else ''{"${cfg.lsp.package}/bin/haskell-language-server-wrapper", "--lsp"}''
|
||||||
},
|
},
|
||||||
on_attach = function(client, bufnr, ht)
|
on_attach = function(client, bufnr, ht)
|
||||||
default_on_attach(client, bufnr, ht)
|
default_on_attach(client, bufnr, ht)
|
||||||
|
|
|
@ -6,11 +6,13 @@
|
||||||
}: let
|
}: let
|
||||||
inherit (builtins) attrNames;
|
inherit (builtins) attrNames;
|
||||||
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
inherit (lib.options) mkEnableOption mkOption literalExpression;
|
||||||
|
inherit (lib.meta) getExe;
|
||||||
inherit (lib.modules) mkIf mkMerge;
|
inherit (lib.modules) mkIf mkMerge;
|
||||||
inherit (lib.lists) isList;
|
inherit (lib.lists) isList;
|
||||||
inherit (lib.types) enum either listOf package str;
|
inherit (lib.types) enum either listOf package str nullOr attrsOf;
|
||||||
inherit (lib.nvim.lua) expToLua;
|
inherit (lib.nvim.lua) expToLua toLuaObject;
|
||||||
inherit (lib.nvim.types) mkGrammarOption;
|
inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption;
|
||||||
|
inherit (lib.nvim.dag) entryAnywhere;
|
||||||
|
|
||||||
cfg = config.vim.languages.r;
|
cfg = config.vim.languages.r;
|
||||||
|
|
||||||
|
@ -74,7 +76,12 @@ in {
|
||||||
|
|
||||||
treesitter = {
|
treesitter = {
|
||||||
enable = mkEnableOption "R treesitter" // {default = config.vim.languages.enableTreesitter;};
|
enable = mkEnableOption "R treesitter" // {default = config.vim.languages.enableTreesitter;};
|
||||||
package = mkGrammarOption pkgs "r";
|
rPackage = mkGrammarOption pkgs "r";
|
||||||
|
rnowebPackage = mkGrammarOption pkgs "rnoweb";
|
||||||
|
mdPackage = mkGrammarOption pkgs "markdown";
|
||||||
|
mdInlinePackage = mkGrammarOption pkgs "markdown-inline";
|
||||||
|
yamlPackage = mkGrammarOption pkgs "yaml";
|
||||||
|
csvPackage = mkGrammarOption pkgs "csv";
|
||||||
};
|
};
|
||||||
|
|
||||||
lsp = {
|
lsp = {
|
||||||
|
@ -109,14 +116,28 @@ in {
|
||||||
description = "R formatter package";
|
description = "R formatter package";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
extensions = {
|
||||||
|
R-nvim = {
|
||||||
|
enable =
|
||||||
|
mkEnableOption ''
|
||||||
|
[R.nvim]: https://github.com/R-Nvim/R.nvim
|
||||||
|
|
||||||
|
R.nvim adds R support to Neovim, including:
|
||||||
|
|
||||||
|
- Communication with R via Neovim's built-in terminal or tmux
|
||||||
|
- A built-in object explorer and autocompletions built from your R environment
|
||||||
|
- Keyboard shortcuts for common inserts like <- and |>
|
||||||
|
- Quarto/R Markdown support
|
||||||
|
''
|
||||||
|
// {default = true;};
|
||||||
|
|
||||||
|
setupOpts = mkPluginSetupOption "R-nvim" {};
|
||||||
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable (mkMerge [
|
config = mkIf cfg.enable (mkMerge [
|
||||||
(mkIf cfg.treesitter.enable {
|
|
||||||
vim.treesitter.enable = true;
|
|
||||||
vim.treesitter.grammars = [cfg.treesitter.package];
|
|
||||||
})
|
|
||||||
|
|
||||||
(mkIf cfg.format.enable {
|
(mkIf cfg.format.enable {
|
||||||
vim.lsp.null-ls.enable = true;
|
vim.lsp.null-ls.enable = true;
|
||||||
vim.lsp.null-ls.sources.r-format = formats.${cfg.format.type}.nullConfig;
|
vim.lsp.null-ls.sources.r-format = formats.${cfg.format.type}.nullConfig;
|
||||||
|
@ -126,5 +147,24 @@ in {
|
||||||
vim.lsp.lspconfig.enable = true;
|
vim.lsp.lspconfig.enable = true;
|
||||||
vim.lsp.lspconfig.sources.r-lsp = servers.${cfg.lsp.server}.lspConfig;
|
vim.lsp.lspconfig.sources.r-lsp = servers.${cfg.lsp.server}.lspConfig;
|
||||||
})
|
})
|
||||||
|
|
||||||
|
(mkIf cfg.treesitter.enable {
|
||||||
|
vim.treesitter.enable = true;
|
||||||
|
vim.treesitter.grammars = [
|
||||||
|
cfg.treesitter.rPackage
|
||||||
|
cfg.treesitter.rnowebPackage
|
||||||
|
cfg.treesitter.mdPackage
|
||||||
|
cfg.treesitter.mdInlinePackage
|
||||||
|
cfg.treesitter.yamlPackage
|
||||||
|
cfg.treesitter.csvPackage
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
|
(mkIf cfg.extensions.R-nvim.enable {
|
||||||
|
vim.startPlugins = ["R-nvim"];
|
||||||
|
vim.pluginRC.R-nvim= entryAnywhere ''
|
||||||
|
require("r").setup(${toLuaObject cfg.extensions.R-nvim.setupOpts})
|
||||||
|
'';
|
||||||
|
})
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,12 +24,6 @@ in {
|
||||||
enable = mkEnableOption "complementary neovim plugins for Obsidian editor";
|
enable = mkEnableOption "complementary neovim plugins for Obsidian editor";
|
||||||
|
|
||||||
setupOpts = mkPluginSetupOption "Obsidian.nvim" {
|
setupOpts = mkPluginSetupOption "Obsidian.nvim" {
|
||||||
dir = mkOption {
|
|
||||||
type = str;
|
|
||||||
default = "~/my-vault";
|
|
||||||
description = "Obsidian vault directory";
|
|
||||||
};
|
|
||||||
|
|
||||||
daily_notes = {
|
daily_notes = {
|
||||||
folder = mkOption {
|
folder = mkOption {
|
||||||
type = nullOr str;
|
type = nullOr str;
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
imports = [
|
imports = [
|
||||||
./noice
|
./noice
|
||||||
./modes
|
./modes
|
||||||
|
./nvim-ufo
|
||||||
./notifications
|
./notifications
|
||||||
./smartcolumn
|
./smartcolumn
|
||||||
./colorizer
|
./colorizer
|
||||||
|
|
20
modules/plugins/ui/nvim-ufo/config.nix
Normal file
20
modules/plugins/ui/nvim-ufo/config.nix
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}: let
|
||||||
|
inherit (lib.modules) mkIf;
|
||||||
|
|
||||||
|
cfg = config.vim.ui.nvim-ufo;
|
||||||
|
in {
|
||||||
|
config = mkIf cfg.enable {
|
||||||
|
vim = {
|
||||||
|
startPlugins = ["promise-async"];
|
||||||
|
lazy.plugins.nvim-ufo = {
|
||||||
|
package = "nvim-ufo";
|
||||||
|
setupModule = "ufo";
|
||||||
|
inherit (cfg) setupOpts;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
6
modules/plugins/ui/nvim-ufo/default.nix
Normal file
6
modules/plugins/ui/nvim-ufo/default.nix
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
{
|
||||||
|
imports = [
|
||||||
|
./nvim-ufo.nix
|
||||||
|
./config.nix
|
||||||
|
];
|
||||||
|
}
|
9
modules/plugins/ui/nvim-ufo/nvim-ufo.nix
Normal file
9
modules/plugins/ui/nvim-ufo/nvim-ufo.nix
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
{lib, ...}: let
|
||||||
|
inherit (lib.options) mkEnableOption;
|
||||||
|
inherit (lib.nvim.types) mkPluginSetupOption;
|
||||||
|
in {
|
||||||
|
options.vim.ui.nvim-ufo = {
|
||||||
|
enable = mkEnableOption "nvim-ufo";
|
||||||
|
setupOpts = mkPluginSetupOption "nvim-ufo" {};
|
||||||
|
};
|
||||||
|
}
|
|
@ -15,43 +15,47 @@
|
||||||
mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions;
|
mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions;
|
||||||
in {
|
in {
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
vim.startPlugins = ["gesture-nvim"];
|
vim = {
|
||||||
|
startPlugins = ["gesture-nvim"];
|
||||||
|
|
||||||
vim.maps.normal = mkMerge [
|
maps.normal = mkMerge [
|
||||||
(mkSetLuaBinding mappings.draw "require('gesture').draw")
|
(mkSetLuaBinding mappings.draw "require('gesture').draw")
|
||||||
(mkSetLuaBinding mappings.finish "require('gesture').finish")
|
(mkSetLuaBinding mappings.finish "require('gesture').finish")
|
||||||
(mkIf (mappings.draw.value == "<RightDrag>") {
|
(mkIf (mappings.draw.value == "<RightDrag>") {
|
||||||
"<RightMouse>" = {action = "<Nop>";};
|
"<RightMouse>" = {action = "<Nop>";};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
|
||||||
vim.pluginRC.gesture-nvim = entryAnywhere ''
|
options.mouse = "a";
|
||||||
vim.opt.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({
|
||||||
gesture.register({
|
name = "next tab",
|
||||||
name = "scroll to bottom",
|
inputs = { gesture.right() },
|
||||||
inputs = { gesture.up(), gesture.down() },
|
action = "tabnext",
|
||||||
action = "normal! G",
|
})
|
||||||
})
|
|
||||||
gesture.register({
|
gesture.register({
|
||||||
name = "next tab",
|
name = "previous tab",
|
||||||
inputs = { gesture.right() },
|
inputs = { gesture.left() },
|
||||||
action = "tabnext",
|
action = function(ctx) -- also can use callable
|
||||||
})
|
vim.cmd.tabprevious()
|
||||||
gesture.register({
|
end,
|
||||||
name = "previous tab",
|
})
|
||||||
inputs = { gesture.left() },
|
|
||||||
action = function(ctx) -- also can use callable
|
gesture.register({
|
||||||
vim.cmd.tabprevious()
|
name = "go back",
|
||||||
end,
|
inputs = { gesture.right(), gesture.left() },
|
||||||
})
|
-- map to `<C-o>` keycode
|
||||||
gesture.register({
|
action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("<C-o>", true, false, true), "n", true)]],
|
||||||
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 = [
|
imports = [
|
||||||
./gesture-nvim.nix
|
./gesture-nvim.nix
|
||||||
./config.nix
|
./config.nix
|
||||||
|
|
|
@ -49,6 +49,17 @@
|
||||||
flutter-tools-patched = buildPlug {
|
flutter-tools-patched = buildPlug {
|
||||||
pname = "flutter-tools";
|
pname = "flutter-tools";
|
||||||
patches = [./patches/flutter-tools.patch];
|
patches = [./patches/flutter-tools.patch];
|
||||||
|
|
||||||
|
# Disable failing require check hook checks
|
||||||
|
nvimSkipModule = [
|
||||||
|
"flutter-tools.devices"
|
||||||
|
"flutter-tools.dap"
|
||||||
|
"flutter-tools.runners.job_runner"
|
||||||
|
"flutter-tools.decorations"
|
||||||
|
"flutter-tools.commands"
|
||||||
|
"flutter-tools.executable"
|
||||||
|
"flutter-tools.dev_tools"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -3,9 +3,11 @@
|
||||||
lib,
|
lib,
|
||||||
...
|
...
|
||||||
}: let
|
}: let
|
||||||
inherit (lib.options) mkOption mkEnableOption literalMD literalExpression;
|
inherit (lib.options) mkOption literalMD literalExpression;
|
||||||
inherit (lib.strings) optionalString;
|
inherit (lib.strings) optionalString;
|
||||||
inherit (lib.types) str bool int enum attrsOf lines listOf either path submodule anything;
|
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.types) dagOf;
|
||||||
inherit (lib.nvim.lua) listToLuaTable;
|
inherit (lib.nvim.lua) listToLuaTable;
|
||||||
|
|
||||||
|
@ -17,7 +19,7 @@ in {
|
||||||
default = false;
|
default = false;
|
||||||
example = true;
|
example = true;
|
||||||
description = ''
|
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
|
the experimental Lua module loader to speed up the start up process
|
||||||
|
|
||||||
|
@ -29,7 +31,7 @@ in {
|
||||||
|
|
||||||
::: {.note}
|
::: {.note}
|
||||||
The Lua module loader is *disabled* by default. Before setting this option, please
|
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.
|
default in the future.
|
||||||
:::
|
:::
|
||||||
'';
|
'';
|
||||||
|
@ -81,7 +83,7 @@ in {
|
||||||
./nvim/my-lua-file.lua
|
./nvim/my-lua-file.lua
|
||||||
|
|
||||||
# source type path - pure and reproducible
|
# source type path - pure and reproducible
|
||||||
(builtins.source {
|
(builtins.path {
|
||||||
path = ./nvim/my-lua-file.lua;
|
path = ./nvim/my-lua-file.lua;
|
||||||
name = "my-lua-file";
|
name = "my-lua-file";
|
||||||
})
|
})
|
||||||
|
@ -121,6 +123,21 @@ in {
|
||||||
default = ",";
|
default = ",";
|
||||||
description = "The key used for `<localleader>` mappings";
|
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.
|
||||||
|
'';
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -150,16 +167,25 @@ in {
|
||||||
};
|
};
|
||||||
|
|
||||||
mouse = mkOption {
|
mouse = mkOption {
|
||||||
type = enum ["a" "n" "v" "i" "c"];
|
type = str;
|
||||||
default = "a";
|
default = "nvi";
|
||||||
|
example = "a";
|
||||||
description = ''
|
description = ''
|
||||||
Set modes for mouse support.
|
Set modes for mouse support.
|
||||||
|
|
||||||
* a - all
|
|
||||||
* n - normal
|
* n - normal
|
||||||
* v - visual
|
* v - visual
|
||||||
* i - insert
|
* i - insert
|
||||||
* c - command
|
* c - command-line
|
||||||
|
* h - all modes when editing a help file
|
||||||
|
* a - all modes
|
||||||
|
* r - for hit-enter and more-prompt prompt
|
||||||
|
|
||||||
|
[neovim documentation]: https://neovim.io/doc/user/options.html#'mouse'"
|
||||||
|
|
||||||
|
This option takes a string to ensure proper conversion to the corresponding Lua type.
|
||||||
|
As such, we do not check the value passed to this option. Please ensure that any value
|
||||||
|
that is set here is a valid value as per [neovim documentation].
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -211,6 +237,16 @@ in {
|
||||||
description = "Enable word wrapping.";
|
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 {
|
tabstop = mkOption {
|
||||||
type = int;
|
type = int;
|
||||||
default = 8; # Neovim default
|
default = 8; # Neovim default
|
||||||
|
@ -263,7 +299,11 @@ in {
|
||||||
vim.opt.runtimepath:append(${listToLuaTable cfg.additionalRuntimePaths})
|
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 ''
|
defaultText = literalMD ''
|
||||||
|
@ -273,7 +313,7 @@ in {
|
||||||
if [](#opt-vim.enableLuaLoader) is set to true.
|
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 = ''
|
description = ''
|
||||||
Verbatim lua code that will be inserted **before**
|
Verbatim lua code that will be inserted **before**
|
||||||
|
|
Loading…
Add table
Reference in a new issue