Compare commits

...

24 commits

Author SHA1 Message Date
Soliprem
83747efc2e
Merge 4eeadf3c96 into c09ae380f0 2025-01-10 09:58:21 +00:00
raf
c09ae380f0
Merge pull request #545 from LilleAila/obsidian-remove-dir-default
notes/obsidian: remove default dir-value
2025-01-10 11:12:58 +03:00
raf
4e949b3df8
docs: remove redundant obsidian.nvim link 2025-01-10 08:09:52 +00:00
LilleAila
6852120514
notes/obsidian: add changelog entry 2025-01-10 09:06:11 +01:00
raf
5250f8e771
Merge pull request #480 from NotAShelf/more-option-stuff
neovim: gradually deprecate shorthand `vim.*` aliases to `vim.options` and `vim.globals`
2025-01-10 10:59:44 +03:00
6f1293053c
docs: update v0.8 release notes
Some checks failed
Check for typos in the source tree / check-typos (push) Has been cancelled
2025-01-10 10:45:34 +03:00
8448a6ca0f
wrapper/rc: change vim.options.mouse to a string type
As the mouse option in neovim allows combining those values.
2025-01-10 10:36:01 +03:00
LilleAila
b0fb0a93cb
notes/obsidian: remove default dir-value 2025-01-10 08:26:29 +01:00
raf
dab409685d
Merge branch 'main' into more-option-stuff 2025-01-10 10:08:34 +03:00
Artur Manuel
ea056532bc
languages/haskell: specify lsp flag (#540)
Some checks are pending
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Validate flake & check formatting / Validate Flake (push) Waiting to run
Validate flake & check formatting / Formatting via Alejandra (push) Waiting to run
Build and deploy documentation / Check latest commit (push) Waiting to run
Build and deploy documentation / publish (push) Blocked by required conditions
Check for typos in the source tree / check-typos (push) Waiting to run
Co-authored-by: Artur Manuel <balkenix@outlook.com>
2025-01-09 15:28:13 +03:00
Ching Pei Yang
a26cdd2d25
ui/nvim-ufo: init (#537)
Some checks are pending
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Validate flake & check documentation / Validate Flake Documentation (docs) (push) Waiting to run
Validate flake & check documentation / Validate Flake Documentation (docs-html) (push) Waiting to run
Validate flake & check documentation / Validate Flake Documentation (docs-json) (push) Waiting to run
Validate flake & check documentation / Validate Flake Documentation (docs-manpages) (push) Waiting to run
Validate flake & check documentation / Validate hyperlinks in documentation sources (push) Waiting to run
Validate flake & check formatting / Validate Flake (push) Waiting to run
Validate flake & check formatting / Formatting via Alejandra (push) Waiting to run
Build and deploy documentation / Check latest commit (push) Waiting to run
Build and deploy documentation / publish (push) Blocked by required conditions
Check for typos in the source tree / check-typos (push) Waiting to run
* flake: add nvim-ufo

* ui/nvim-ufo: init

* docs: update relase notes
2025-01-09 07:56:51 +00:00
raf
ab49ba443d
Merge pull request #539 from NotAShelf/flutter-fix
Some checks are pending
Set up binary cache / cachix (default) (push) Waiting to run
Set up binary cache / cachix (maximal) (push) Waiting to run
Set up binary cache / cachix (nix) (push) Waiting to run
Validate flake & check formatting / Validate Flake (push) Waiting to run
Validate flake & check formatting / Formatting via Alejandra (push) Waiting to run
Build and deploy documentation / Check latest commit (push) Waiting to run
Build and deploy documentation / publish (push) Blocked by required conditions
Check for typos in the source tree / check-typos (push) Waiting to run
wrapper/build: disable failing require hook checks for flutter-tools
2025-01-08 21:45:23 +03:00
7dbe7a08b3
wrapper/build: disable failing require hook checks for flutter-tools 2025-01-08 21:13:09 +03:00
356f92053c
neovim/init: merge conditionals in options set
Some checks failed
Check for typos in the source tree / check-typos (push) Has been cancelled
2025-01-07 06:12:13 +03:00
raf
b704a28a12
Merge branch 'main' into more-option-stuff 2025-01-07 05:47:59 +03:00
5749739e4b
wrapper/rc: clean up option documentation
Some checks failed
Check for typos in the source tree / check-typos (push) Has been cancelled
2025-01-04 16:08:53 +03:00
85347de09d
utility/gesture-nvim: convert to vim.options 2025-01-04 16:08:11 +03:00
b67759273b
neovim/spellcheck: convert to vim.options 2025-01-04 15:52:27 +03:00
Soliprem
4eeadf3c96 R: added R-nvim 2024-12-21 04:14:08 +01:00
66005a51c3
wrappr/rc: allow strings in vim.options.signcolumn
Some checks failed
Check for typos in the source tree / check-typos (push) Has been cancelled
2024-12-11 00:08:48 +03:00
c19c925f1d
modules/neovim: avoid interpolating strings for vim.preventJunkFiles 2024-12-11 00:01:51 +03:00
07f50e84eb
modules/neovim: deprecate vim.showSignColumn
Prefer the type-safe `vim.options` equivalent.
2024-12-11 00:01:51 +03:00
5a5f49f85f
lib/languages: re-add toVimBool 2024-12-11 00:01:50 +03:00
0650aa31ac
modules/neovim: deprecate vim.enableEditorconfig option
Deprecate shorthand EditorConfig toggle, and encourage the more powerful `vim.globals` option.
2024-12-11 00:01:49 +03:00
20 changed files with 326 additions and 142 deletions

View file

@ -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:

View file

@ -16,6 +16,14 @@
- Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table
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):
[haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim
@ -32,5 +40,12 @@
[horriblename](https://github.com/horriblename):
[aerial.nvim](https://github.com/stevearc/aerial.nvim)
[nvim-ufo](https://github.com/kevinhwang91/nvim-ufo)
- 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
View file

@ -1518,6 +1518,22 @@
"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": {
"flake": false,
"locked": {
@ -1694,6 +1710,22 @@
"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": {
"flake": false,
"locked": {
@ -2191,6 +2223,7 @@
"plugin-nvim-tree-lua": "plugin-nvim-tree-lua",
"plugin-nvim-treesitter-context": "plugin-nvim-treesitter-context",
"plugin-nvim-ts-autotag": "plugin-nvim-ts-autotag",
"plugin-nvim-ufo": "plugin-nvim-ufo",
"plugin-nvim-web-devicons": "plugin-nvim-web-devicons",
"plugin-obsidian-nvim": "plugin-obsidian-nvim",
"plugin-omnisharp-extended": "plugin-omnisharp-extended",
@ -2202,6 +2235,7 @@
"plugin-plenary-nvim": "plugin-plenary-nvim",
"plugin-precognition-nvim": "plugin-precognition-nvim",
"plugin-project-nvim": "plugin-project-nvim",
"plugin-promise-async": "plugin-promise-async",
"plugin-registers": "plugin-registers",
"plugin-render-markdown-nvim": "plugin-render-markdown-nvim",
"plugin-rose-pine": "plugin-rose-pine",

View file

@ -720,12 +720,27 @@
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 = {
# (required by new-file-template.nvim)
url = "github:otavioschwanck/new-file-template.nvim";
flake = false;
};
plugin-R-nvim = {
url = "github:R-nvim/R.nvim";
flake = false;
};
plugin-haskell-tools-nvim = {
url = "github:mrcjkb/haskell-tools.nvim";
flake = false;

View file

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

View file

@ -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
];

View file

@ -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")
''}

View file

@ -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})

View file

@ -130,7 +130,6 @@ in {
(mkIf cfg.lsp.enable {
vim.lsp.lspconfig.enable = true;
vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig;
})

View file

@ -71,7 +71,7 @@ in {
cmd = ${
if isList 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)
default_on_attach(client, bufnr, ht)

View file

@ -6,11 +6,13 @@
}: let
inherit (builtins) attrNames;
inherit (lib.options) mkEnableOption mkOption literalExpression;
inherit (lib.meta) getExe;
inherit (lib.modules) mkIf mkMerge;
inherit (lib.lists) isList;
inherit (lib.types) enum either listOf package str;
inherit (lib.nvim.lua) expToLua;
inherit (lib.nvim.types) mkGrammarOption;
inherit (lib.types) enum either listOf package str nullOr attrsOf;
inherit (lib.nvim.lua) expToLua toLuaObject;
inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption;
inherit (lib.nvim.dag) entryAnywhere;
cfg = config.vim.languages.r;
@ -74,7 +76,12 @@ in {
treesitter = {
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 = {
@ -109,14 +116,28 @@ in {
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 [
(mkIf cfg.treesitter.enable {
vim.treesitter.enable = true;
vim.treesitter.grammars = [cfg.treesitter.package];
})
(mkIf cfg.format.enable {
vim.lsp.null-ls.enable = true;
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.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})
'';
})
]);
}

View file

@ -24,12 +24,6 @@ in {
enable = mkEnableOption "complementary neovim plugins for Obsidian editor";
setupOpts = mkPluginSetupOption "Obsidian.nvim" {
dir = mkOption {
type = str;
default = "~/my-vault";
description = "Obsidian vault directory";
};
daily_notes = {
folder = mkOption {
type = nullOr str;

View file

@ -2,6 +2,7 @@
imports = [
./noice
./modes
./nvim-ufo
./notifications
./smartcolumn
./colorizer

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

View file

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

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

View file

@ -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)]],
})
'';
};
};
}

View file

@ -1,4 +1,4 @@
_: {
{
imports = [
./gesture-nvim.nix
./config.nix

View file

@ -49,6 +49,17 @@
flutter-tools-patched = buildPlug {
pname = "flutter-tools";
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"
];
};
};

View file

@ -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.
'';
};
};
};
@ -150,16 +167,25 @@ in {
};
mouse = mkOption {
type = enum ["a" "n" "v" "i" "c"];
default = "a";
type = str;
default = "nvi";
example = "a";
description = ''
Set modes for mouse support.
* a - all
* n - normal
* v - visual
* 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.";
};
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 +299,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 +313,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**