diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 7fd4876..c2ce170 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -136,6 +136,7 @@ everyone. [ts-error-translator.nvim]: https://github.com/dmmulroy/ts-error-translator.nvim [credo]: https://github.com/rrrene/credo +[edgy.nvim]: https://github.com/folke/edgy.nvim - Add `deno fmt` as the default Markdown formatter. This will be enabled automatically if you have autoformatting enabled, but can be disabled manually @@ -187,6 +188,10 @@ everyone. - Add [python-lsp-server](https://github.com/python-lsp/python-lsp-server) as an additional Python LSP server. +- Add support for [edgy.nvim]. This can be enabled with + [](#opt-vim.ui.edgy-nvim.enable). Support for `edgy.nvim` should be considered + **experimental** as it conflicts with other plugins that modify the UI. + [ppenguin](https://github.com/ppenguin): - Telescope: diff --git a/flake.lock b/flake.lock index 91fc506..bed2a6f 100644 --- a/flake.lock +++ b/flake.lock @@ -508,6 +508,22 @@ "type": "github" } }, + "plugin-edgy-nvim": { + "flake": false, + "locked": { + "lastModified": 1725089082, + "narHash": "sha256-KP8lA+HU3xtX5gOigROva65bf7YH+12EVPM185riJTk=", + "owner": "folke", + "repo": "edgy.nvim", + "rev": "7e8dedc39abebe40c289b8012cc89b11c69aa7a0", + "type": "github" + }, + "original": { + "owner": "folke", + "repo": "edgy.nvim", + "type": "github" + } + }, "plugin-elixir-tools": { "flake": false, "locked": { @@ -1807,6 +1823,7 @@ "plugin-diffview-nvim": "plugin-diffview-nvim", "plugin-dracula": "plugin-dracula", "plugin-dressing-nvim": "plugin-dressing-nvim", + "plugin-edgy-nvim": "plugin-edgy-nvim", "plugin-elixir-tools": "plugin-elixir-tools", "plugin-fastaction-nvim": "plugin-fastaction-nvim", "plugin-fidget-nvim": "plugin-fidget-nvim", diff --git a/flake.nix b/flake.nix index c4996fc..78be24e 100644 --- a/flake.nix +++ b/flake.nix @@ -565,6 +565,11 @@ flake = false; }; + plugin-edgy-nvim = { + url = "github:folke/edgy.nvim"; + flake = false; + }; + # Assistant plugin-chatgpt = { url = "github:jackMort/ChatGPT.nvim"; diff --git a/modules/plugins/filetree/neo-tree/neo-tree.nix b/modules/plugins/filetree/neo-tree/neo-tree.nix index b1ec260..410318e 100644 --- a/modules/plugins/filetree/neo-tree/neo-tree.nix +++ b/modules/plugins/filetree/neo-tree/neo-tree.nix @@ -129,7 +129,7 @@ in { description = '' Must be either a boolean or a path to your log file. - Use :NeoTreeLogs to show the file + Use `:NeoTreeLogs` to show the file ''; }; @@ -143,6 +143,7 @@ in { ''; }; + # https://github.com/folke/edgy.nvim/discussions/4 open_files_do_not_replace_types = mkOption { type = listOf str; default = ["terminal" "Trouble" "qf" "edgy"]; diff --git a/modules/plugins/ui/default.nix b/modules/plugins/ui/default.nix index 3407660..4ac511a 100644 --- a/modules/plugins/ui/default.nix +++ b/modules/plugins/ui/default.nix @@ -5,6 +5,7 @@ ./notifications ./smartcolumn ./colorizer + ./edgy-nvim ./illuminate ./breadcrumbs ./borders diff --git a/modules/plugins/ui/edgy-nvim/config.nix b/modules/plugins/ui/edgy-nvim/config.nix new file mode 100644 index 0000000..c1035bb --- /dev/null +++ b/modules/plugins/ui/edgy-nvim/config.nix @@ -0,0 +1,30 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.strings) optionalString; + inherit (lib.nvim.dag) entryBefore; + inherit (lib.nvim.lua) toLuaObject; + + cfg = config.vim.ui.edgy-nvim; +in { + config = mkIf cfg.enable { + vim = { + startPlugins = ["edgy-nvim"]; + pluginRC.edgy-nvim = entryBefore ["basic"] '' + ${optionalString cfg.setRecommendedNeovimOpts '' + -- Neovim options recommended by upstream. + -- Views can only be fully collapsed with the global statusline. + vim.o.laststatus = 3 + -- Default splitting will cause your main splits to jump when opening an edgebar. + -- To prevent this, set `splitkeep` to either `screen` or `topline`. + vim.o.splitkeep = "screen" + ''} + + require('edgy').setup(${toLuaObject cfg.setupOpts}) + ''; + }; + }; +} diff --git a/modules/plugins/ui/edgy-nvim/default.nix b/modules/plugins/ui/edgy-nvim/default.nix new file mode 100644 index 0000000..20e07d5 --- /dev/null +++ b/modules/plugins/ui/edgy-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./edgy-nvim.nix + ./config.nix + ]; +} diff --git a/modules/plugins/ui/edgy-nvim/edgy-nvim.nix b/modules/plugins/ui/edgy-nvim/edgy-nvim.nix new file mode 100644 index 0000000..922d966 --- /dev/null +++ b/modules/plugins/ui/edgy-nvim/edgy-nvim.nix @@ -0,0 +1,21 @@ +{lib, ...}: let + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.types) bool; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + options.vim.ui.edgy-nvim = { + enable = mkEnableOption "edgy.nvim for predefined window layouts"; + setRecommendedNeovimOpts = mkOption { + type = bool; + default = false; + description = '' + Whether nvf should set `vim.opt.laststatus` and `vim.opt.splitkeep` to + values recommended by upstream to ensure maximum compatibility. + ''; + }; + + setupOpts = mkPluginSetupOption "edgy" { + animate.enabled = mkEnableOption "animation support. Requires an animation library such as `mini.animate`"; + }; + }; +}