diff --git a/plugins/default.nix b/plugins/default.nix index 1cad2154..b941c691 100644 --- a/plugins/default.nix +++ b/plugins/default.nix @@ -34,6 +34,7 @@ ./filetrees/neo-tree.nix ./filetrees/nvim-tree.nix + ./git/committia.nix ./git/diffview.nix ./git/fugitive.nix ./git/git-worktree.nix diff --git a/plugins/git/committia.nix b/plugins/git/committia.nix new file mode 100644 index 00000000..c6762426 --- /dev/null +++ b/plugins/git/committia.nix @@ -0,0 +1,51 @@ +{ + lib, + config, + helpers, + pkgs, + ... +}: +helpers.vim-plugin.mkVimPlugin config { + name = "committia"; + description = "committia.vim"; + package = pkgs.vimPlugins.committia-vim; + globalPrefix = "committia_"; + extraPackages = [pkgs.git]; + + maintainers = [lib.maintainers.alisonjenkins]; + + settingsOptions = { + open_only_vim_starting = helpers.defaultNullOpts.mkBool true '' + If `false`, committia.vim always attempts to open committia's buffer when `COMMIT_EDITMSG` buffer is opened. + If you use `vim-fugitive`, I recommend to set this value to `true`. + ''; + + use_singlecolumn = helpers.defaultNullOpts.mkStr "always" '' + If the value is 'always', `committia.vim` always employs single column mode. + ''; + + min_window_width = helpers.defaultNullOpts.mkUnsignedInt 160 '' + If the width of window is narrower than the value, `committia.vim` employs single column mode. + ''; + + status_window_opencmd = helpers.defaultNullOpts.mkStr "belowright split" '' + Vim command which opens a status window in multi-columns mode. + ''; + + diff_window_opencmd = helpers.defaultNullOpts.mkStr "botright vsplit" '' + Vim command which opens a diff window in multi-columns mode. + ''; + + singlecolumn_diff_window_opencmd = helpers.defaultNullOpts.mkStr "belowright split" '' + Vim command which opens a diff window in single-column mode. + ''; + + edit_window_width = helpers.defaultNullOpts.mkUnsignedInt 80 '' + If `committia.vim` is in multi-columns mode, specifies the width of the edit window. + ''; + + status_window_min_height = helpers.defaultNullOpts.mkUnsignedInt 0 '' + Minimum height of a status window. + ''; + }; +} diff --git a/tests/test-sources/plugins/git/committia.nix b/tests/test-sources/plugins/git/committia.nix new file mode 100644 index 00000000..aecf8764 --- /dev/null +++ b/tests/test-sources/plugins/git/committia.nix @@ -0,0 +1,22 @@ +{ + empty = { + plugins.committia.enable = true; + }; + + default = { + plugins.committia = { + enable = true; + + settings = { + open_only_vim_starting = true; + use_singlecolumn = "always"; + min_window_width = 160; + status_window_opencmd = "belowright split"; + diff_window_opencmd = "botright vsplit"; + singlecolumn_diff_window_opencmd = "belowright split"; + edit_window_width = 80; + status_window_min_height = 0; + }; + }; + }; +}