From 2aeec7cb695380f570921463c1e5d5ca243d14e1 Mon Sep 17 00:00:00 2001 From: diniamo Date: Thu, 21 Nov 2024 22:03:28 +0100 Subject: [PATCH] runner/run-nvim: init --- docs/release-notes/rl-0.7.md | 2 ++ flake.lock | 17 +++++++++ flake.nix | 6 ++++ modules/modules.nix | 1 + modules/plugins/runner/default.nix | 5 +++ modules/plugins/runner/run-nvim/config.nix | 38 ++++++++++++++++++++ modules/plugins/runner/run-nvim/default.nix | 6 ++++ modules/plugins/runner/run-nvim/run-nvim.nix | 18 ++++++++++ 8 files changed, 93 insertions(+) create mode 100644 modules/plugins/runner/default.nix create mode 100644 modules/plugins/runner/run-nvim/config.nix create mode 100644 modules/plugins/runner/run-nvim/default.nix create mode 100644 modules/plugins/runner/run-nvim/run-nvim.nix diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 876f1ab2..3f24ae8f 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -201,6 +201,8 @@ To migrate to `nixfmt`, simply change `vim.languages.nix.format.type` to is bundled with nvf, if you enable the module, since there is no way to provide only the LSP server. +- Add [`run.nvim`](https://github.com/diniamo/run.nvim) support for running code using cached commands. + [Neovim documentation on `vim.cmd`]: https://neovim.io/doc/user/lua.html#vim.cmd() - Make Neovim's configuration file entirely Lua based. This comes with a few diff --git a/flake.lock b/flake.lock index d9e6b477..7b4c63b0 100644 --- a/flake.lock +++ b/flake.lock @@ -1710,6 +1710,22 @@ "type": "github" } }, + "plugin-run-nvim": { + "flake": false, + "locked": { + "lastModified": 1732918526, + "narHash": "sha256-kiszNmZZDXG8tAPMQKuGJDCkqCMzsWT7BkCvkVsH2lA=", + "owner": "diniamo", + "repo": "run.nvim", + "rev": "d867466e01b8fa4e54a589b9ef446cf43fb966de", + "type": "github" + }, + "original": { + "owner": "diniamo", + "repo": "run.nvim", + "type": "github" + } + }, "plugin-rustaceanvim": { "flake": false, "locked": { @@ -2123,6 +2139,7 @@ "plugin-registers": "plugin-registers", "plugin-rose-pine": "plugin-rose-pine", "plugin-rtp-nvim": "plugin-rtp-nvim", + "plugin-run-nvim": "plugin-run-nvim", "plugin-rustaceanvim": "plugin-rustaceanvim", "plugin-smartcolumn": "plugin-smartcolumn", "plugin-sqls-nvim": "plugin-sqls-nvim", diff --git a/flake.nix b/flake.nix index 4e417e7f..319b8f56 100644 --- a/flake.nix +++ b/flake.nix @@ -242,6 +242,12 @@ flake = false; }; + # Runners + plugin-run-nvim = { + url = "github:diniamo/run.nvim"; + flake = false; + }; + # Debuggers plugin-nvim-dap = { url = "github:mfussenegger/nvim-dap"; diff --git a/modules/modules.nix b/modules/modules.nix index 784c413e..bc441e96 100644 --- a/modules/modules.nix +++ b/modules/modules.nix @@ -31,6 +31,7 @@ "notes" "projects" "rich-presence" + "runner" "session" "snippets" # "spellcheck" # FIXME: see neovim/init/spellcheck.nix diff --git a/modules/plugins/runner/default.nix b/modules/plugins/runner/default.nix new file mode 100644 index 00000000..d37fb5f4 --- /dev/null +++ b/modules/plugins/runner/default.nix @@ -0,0 +1,5 @@ +{ + imports = [ + ./run-nvim + ]; +} diff --git a/modules/plugins/runner/run-nvim/config.nix b/modules/plugins/runner/run-nvim/config.nix new file mode 100644 index 00000000..70cd5c9f --- /dev/null +++ b/modules/plugins/runner/run-nvim/config.nix @@ -0,0 +1,38 @@ +{ + lib, + config, + options, + ... +}: let + inherit (lib.modules) mkIf mkDefault; + inherit (lib.nvim.binds) addDescriptionsToMappings mkSetLznBinding mkSetLuaLznBinding; + + cfg = config.vim.runner.run-nvim; + mappingDefinitions = options.vim.runner.run-nvim.mappings; + mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; +in { + config = mkIf cfg.enable { + vim = { + lazy.plugins.run-nvim = { + package = "run-nvim"; + setupModule = "run"; + inherit (cfg) setupOpts; + + cmd = "Run"; + + keys = [ + (mkSetLznBinding "n" mappings.run "Run") + (mkSetLznBinding "n" mappings.runOverride "Run!") + (mkSetLuaLznBinding "n" mappings.runCommand '' + function() + local input = vim.fn.input("Run command: ") + if input ~= "" then require("run").run(input, false) end + end + '') + ]; + }; + + binds.whichKey.register."r" = mkDefault "+Run"; + }; + }; +} diff --git a/modules/plugins/runner/run-nvim/default.nix b/modules/plugins/runner/run-nvim/default.nix new file mode 100644 index 00000000..5062c6e7 --- /dev/null +++ b/modules/plugins/runner/run-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./run-nvim.nix + ./config.nix + ]; +} diff --git a/modules/plugins/runner/run-nvim/run-nvim.nix b/modules/plugins/runner/run-nvim/run-nvim.nix new file mode 100644 index 00000000..dd24e6c3 --- /dev/null +++ b/modules/plugins/runner/run-nvim/run-nvim.nix @@ -0,0 +1,18 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption; + inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.nvim.binds) mkMappingOption; +in { + options = { + vim.runner.run-nvim = { + enable = mkEnableOption "run.nvim"; + setupOpts = mkPluginSetupOption "run.nvim" {}; + + mappings = { + run = mkMappingOption "Run cached" "ri"; + runOverride = mkMappingOption "Run and override" "ro"; + runCommand = mkMappingOption "Run prompt" "rc"; + }; + }; + }; +}