From fd65c8395681f4778e36c7c5a9c25ed8b5c0748d Mon Sep 17 00:00:00 2001 From: poz Date: Thu, 8 Aug 2024 20:45:33 +0200 Subject: [PATCH] plugins/new-file-template: init module (#350) * plugins/new-file-template: init module * docs: add release note entry about new-file-template.nvim * docs: update jacekpoz's link * plugins/new-file-template: remove _: in default.nix * plugins/new-file-template: add example for disableSpecific * plugins/new-file-template: add docs on how to add custom templates * plugins/new-file-template: fix disableSpecific example * plugins/new-file-template: improve documentation * plugins/new-file-template: remove redundant example * plugins/new-file-template: more compact docs * plugins/new-file-template: more doc improvements * plugins/new-file-template: fix formatting issue --- docs/release-notes/rl-0.5.md | 2 +- docs/release-notes/rl-0.6.md | 2 +- docs/release-notes/rl-0.7.md | 5 +- flake.nix | 8 ++- modules/plugins/utility/default.nix | 1 + .../utility/new-file-template/config.nix | 23 ++++++++ .../utility/new-file-template/default.nix | 6 +++ .../new-file-template/new-file-template.nix | 54 +++++++++++++++++++ 8 files changed, 97 insertions(+), 4 deletions(-) create mode 100644 modules/plugins/utility/new-file-template/config.nix create mode 100644 modules/plugins/utility/new-file-template/default.nix create mode 100644 modules/plugins/utility/new-file-template/new-file-template.nix diff --git a/docs/release-notes/rl-0.5.md b/docs/release-notes/rl-0.5.md index 083d9d5..8e8ac6a 100644 --- a/docs/release-notes/rl-0.5.md +++ b/docs/release-notes/rl-0.5.md @@ -83,7 +83,7 @@ Release notes for release 0.5 - Updated indent-blankine.nvim to v3 - this comes with a few option changes, which will be migrated with `renamedOptionModule` -[jacekpoz](https://github.com/jacekpoz): +[jacekpoz](https://jacekpoz.pl): - Fixed scrollOffset not being used diff --git a/docs/release-notes/rl-0.6.md b/docs/release-notes/rl-0.6.md index 437c916..a04e717 100644 --- a/docs/release-notes/rl-0.6.md +++ b/docs/release-notes/rl-0.6.md @@ -62,7 +62,7 @@ vim.api.nvim_set_keymap('n', 'a', ':lua camelToSnake()', { noremap = - Added rose-pine theme. -[jacekpoz](https://github.com/jacekpoz): +[jacekpoz](https://jacekpoz.pl): - Added `vim.autocomplete.alwaysComplete`. Allows users to have the autocomplete window popup only when manually activated. diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 87bd3b6..21edbdd 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -62,14 +62,17 @@ configuration formats. recommended to go through rustacean.nvim's README to take a closer look at its features and usage -[jacekpoz](https://github.com/jacekpoz): +[jacekpoz](https://jacekpoz.pl): [ocaml-lsp]: https://github.com/ocaml/ocaml-lsp +[new-file-template.nvim]: https://github.com/otavioschwanck/new-file-template.nvim - Add [ocaml-lsp] support - Fix "Emac" typo +- Add [new-file-template.nvim] to automatically fill new file contents using templates. + [diniamo](https://github.com/diniamo): - Move the `theme` dag entry to before `luaScript`. diff --git a/flake.nix b/flake.nix index 0290638..c00e9b8 100644 --- a/flake.nix +++ b/flake.nix @@ -628,9 +628,15 @@ }; plugin-nvim-nio = { - # (required nvim-dap-ui) + # (required by nvim-dap-ui) url = "github:nvim-neotest/nvim-nio"; flake = false; }; + + plugin-new-file-template-nvim = { + # (required by new-file-template.nvim) + url = "github:otavioschwanck/new-file-template.nvim"; + flake = false; + }; }; } diff --git a/modules/plugins/utility/default.nix b/modules/plugins/utility/default.nix index a5a8892..835ebf6 100644 --- a/modules/plugins/utility/default.nix +++ b/modules/plugins/utility/default.nix @@ -4,6 +4,7 @@ ./ccc ./gestures ./motion + ./new-file-template ./telescope ./icon-picker ./images diff --git a/modules/plugins/utility/new-file-template/config.nix b/modules/plugins/utility/new-file-template/config.nix new file mode 100644 index 0000000..8f23973 --- /dev/null +++ b/modules/plugins/utility/new-file-template/config.nix @@ -0,0 +1,23 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.dag) entryAnywhere; + inherit (lib.nvim.lua) toLuaObject; + + cfg = config.vim.utility.new-file-template; +in { + config = mkIf cfg.enable { + vim = { + startPlugins = [ + "new-file-template-nvim" + ]; + + pluginRC.new-file-template = entryAnywhere '' + require('new-file-template').setup(${toLuaObject cfg.setupOpts}) + ''; + }; + }; +} diff --git a/modules/plugins/utility/new-file-template/default.nix b/modules/plugins/utility/new-file-template/default.nix new file mode 100644 index 0000000..c698759 --- /dev/null +++ b/modules/plugins/utility/new-file-template/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./new-file-template.nix + ]; +} diff --git a/modules/plugins/utility/new-file-template/new-file-template.nix b/modules/plugins/utility/new-file-template/new-file-template.nix new file mode 100644 index 0000000..167d2b0 --- /dev/null +++ b/modules/plugins/utility/new-file-template/new-file-template.nix @@ -0,0 +1,54 @@ +{lib, ...}: let + inherit (lib.options) mkOption; + inherit (lib.types) attrsOf bool listOf str; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + options.vim.utility.new-file-template = { + enable = mkOption { + type = bool; + default = false; + description = '' + new-file-template.nvim: Automatically insert a template on new files in neovim. + ::: {.note} + For custom templates add a directory containing `lua/templates/*.lua` + to `vim.additionalRuntimePaths`. + ::: + [custom-template-docs]: https://github.com/otavioschwanck/new-file-template.nvim?tab=readme-ov-file#creating-new-templates + More documentation on the templates available at [custom-template-docs] + ''; + }; + + setupOpts = mkPluginSetupOption "nvim-file-template.nvim" { + disableInsert = mkOption { + type = bool; + default = false; + description = "Enter insert mode after inserting the template"; + }; + + disableAutocmd = mkOption { + type = bool; + default = false; + description = "Disable the autocmd that creates the template"; + }; + + disableFiletype = mkOption { + type = listOf str; + default = []; + description = "Disable default templates for specific filetypes"; + }; + + disableSpecific = mkOption { + type = attrsOf (listOf str); + default = {}; + description = "Disable specific regexp for the default templates."; + example = "{ ruby = [\".*\"]; }"; + }; + + suffixAsFiletype = mkOption { + type = bool; + default = false; + description = "Use suffix of filename rather than `vim.bo.filetype` as filetype"; + }; + }; + }; +}