diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index a5a791d8..c0165d30 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -10,6 +10,7 @@ [typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim [render-markdown.nvim]: https://github.com/MeanderingProgrammer/render-markdown.nvim [yanky.nvim]: https://github.com/gbprod/yanky.nvim +[yazi.nvim]: https://github.com/mikavilpas/yazi.nvim - Add [typst-preview.nvim] under `languages.typst.extensions.typst-preview-nvim`. @@ -46,6 +47,11 @@ - Add [yanky.nvim] to available plugins, under `vim.utility.yanky-nvim`. +- Fix plugin `setupOpts` for yanky.nvim and assert if shada is configured as a + backend while shada is disabled in Neovim options. + +- Add [yazi.nvim] as a companion plugin for Yazi, the terminal file manager. + [amadaluzia](https://github.com/amadaluzia): [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim @@ -154,7 +160,6 @@ Inspiration from `vim.languages.clang.dap` implementation. - Add [leetcode.nvim] plugin under `vim.utility.leetcode-nvim`. - [nezia1](https://github.com/nezia1) - Add support for [nixd](https://github.com/nix-community/nixd) language server. @@ -165,7 +170,7 @@ available plugins, under `vim.utility.multicursors`. - Add [hydra.nvim](https://github.com/nvimtools/hydra.nvim) as dependency for `multicursors.nvim` and lazy loads by default. -[folospior](https://github.com/folospior) + [folospior](https://github.com/folospior) - Fix plugin name for lsp/lspkind. @@ -180,5 +185,8 @@ [Libadoxon](https://github.com/Libadoxon) -- Add [git-conflict](https://github.com/akinsho/git-conflict.nvim) plugin for resolving git conflicts -- Add formatters for go: [gofmt](https://go.dev/blog/gofmt), [golines](https://github.com/segmentio/golines) and [gofumpt](https://github.com/mvdan/gofumpt) +- Add [git-conflict](https://github.com/akinsho/git-conflict.nvim) plugin for + resolving git conflicts +- Add formatters for go: [gofmt](https://go.dev/blog/gofmt), + [golines](https://github.com/segmentio/golines) and + [gofumpt](https://github.com/mvdan/gofumpt) diff --git a/modules/plugins/utility/default.nix b/modules/plugins/utility/default.nix index 4abb4515..47579070 100644 --- a/modules/plugins/utility/default.nix +++ b/modules/plugins/utility/default.nix @@ -7,6 +7,7 @@ ./gestures ./icon-picker ./images + ./leetcode-nvim ./motion ./multicursors ./new-file-template @@ -16,6 +17,6 @@ ./telescope ./wakatime ./yanky-nvim - ./leetcode-nvim + ./yazi-nvim ]; } diff --git a/modules/plugins/utility/yanky-nvim/config.nix b/modules/plugins/utility/yanky-nvim/config.nix index 138fd07d..4a74fa75 100644 --- a/modules/plugins/utility/yanky-nvim/config.nix +++ b/modules/plugins/utility/yanky-nvim/config.nix @@ -11,6 +11,7 @@ cfg = config.vim.utility.yanky-nvim; usingSqlite = cfg.setupOpts.ring.storage == "sqlite"; + usingShada = cfg.setupOpts.ring.storage == "shada"; in { config = mkIf cfg.enable { vim = { @@ -28,5 +29,15 @@ in { require("yanky").setup(${toLuaObject cfg.setupOpts}); ''; }; + + assertions = [ + { + assertion = usingShada && ((config.vim.options.shada or "") == ""); + message = '' + Yanky.nvim is configured to use 'shada' for the storage backend, but shada is disabled + in 'vim.options'. Please re-enable shada, or switch to a different backend. + ''; + } + ]; }; } diff --git a/modules/plugins/utility/yanky-nvim/yanky-nvim.nix b/modules/plugins/utility/yanky-nvim/yanky-nvim.nix index 95d6a211..72f55d93 100644 --- a/modules/plugins/utility/yanky-nvim/yanky-nvim.nix +++ b/modules/plugins/utility/yanky-nvim/yanky-nvim.nix @@ -1,13 +1,14 @@ {lib, ...}: let - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkOption mkEnableOption; inherit (lib.types) enum; + inherit (lib.nvim.types) mkPluginSetupOption; in { options.vim.utility.yanky-nvim = { enable = mkEnableOption '' improved Yank and Put functionalities for Neovim [yanky-nvim] ''; - setupOpts = { + setupOpts = mkPluginSetupOption "yanky-nvim" { ring.storage = mkOption { type = enum ["shada" "sqlite" "memory"]; default = "shada"; @@ -15,11 +16,11 @@ in { description = '' storage mode for ring values. - - shada: this will save pesistantly using Neovim ShaDa feature. + - **shada**: this will save pesistantly using Neovim ShaDa feature. This means that history will be persisted between each session of Neovim. - - memory: each Neovim instance will have his own history and it will be + - **memory**: each Neovim instance will have his own history and it will be lost between sessions. - - sqlite: more reliable than `shada`, requires `sqlite.lua` as a dependency. + - **sqlite**: more reliable than `shada`, requires `sqlite.lua` as a dependency. nvf will add this dependency to `PATH` automatically. ''; }; diff --git a/modules/plugins/utility/yazi-nvim/config.nix b/modules/plugins/utility/yazi-nvim/config.nix new file mode 100644 index 00000000..a781e5f0 --- /dev/null +++ b/modules/plugins/utility/yazi-nvim/config.nix @@ -0,0 +1,32 @@ +{ + options, + config, + pkgs, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) mkKeymap; + + cfg = config.vim.utility.yazi-nvim; + keys = cfg.mappings; + + inherit (options.vim.utility.yazi-nvim) mappings; +in { + config = mkIf cfg.enable { + vim = { + lazy.plugins."yazi.nvim" = { + package = pkgs.vimPlugins.yazi-nvim; + setupModule = "yazi"; + inherit (cfg) setupOpts; + event = ["BufAdd" "VimEnter"]; + + keys = [ + (mkKeymap "n" keys.openYazi "Yazi" {desc = mappings.openYazi.description;}) + (mkKeymap "n" keys.openYaziDir "Yazi cwd" {desc = mappings.openYaziDir.description;}) + (mkKeymap "n" keys.yaziToggle "Yazi toggle" {desc = mappings.yaziToggle.description;}) + ]; + }; + }; + }; +} diff --git a/modules/plugins/utility/yazi-nvim/default.nix b/modules/plugins/utility/yazi-nvim/default.nix new file mode 100644 index 00000000..6da79794 --- /dev/null +++ b/modules/plugins/utility/yazi-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./yazi-nvim.nix + ]; +} diff --git a/modules/plugins/utility/yazi-nvim/yazi-nvim.nix b/modules/plugins/utility/yazi-nvim/yazi-nvim.nix new file mode 100644 index 00000000..9a83a1a8 --- /dev/null +++ b/modules/plugins/utility/yazi-nvim/yazi-nvim.nix @@ -0,0 +1,26 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) bool; + inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.nvim.binds) mkMappingOption; +in { + options.vim.utility.yazi-nvim = { + enable = mkEnableOption '' + companion plugin for the yazi terminal file manager [yazi-nvim] + ''; + + mappings = { + openYazi = mkMappingOption "Open yazi at the current file [yazi.nvim]" "-"; + openYaziDir = mkMappingOption "Open the file manager in nvim's working directory [yazi.nvim]" "cw"; + yaziToggle = mkMappingOption "Resume the last yazi session [yazi.nvim]" ""; + }; + + setupOpts = mkPluginSetupOption "yazi-nvim" { + open_for_directories = mkOption { + type = bool; + default = false; + description = "Whether to open Yazi instead of netrw"; + }; + }; + }; +}