diff --git a/.github/workflows/docs-preview.yml b/.github/workflows/docs-preview.yml deleted file mode 100644 index c38be9da..00000000 --- a/.github/workflows/docs-preview.yml +++ /dev/null @@ -1,185 +0,0 @@ -name: Build and Preview Manual - -on: - workflow_dispatch: - pull_request: - types: [opened, synchronize, reopened, closed] - paths: - - ".github/workflows/docs-preview.yml" - - "modules/**" - - "docs/**" - -# Defining permissions here passes it to all workflows. -# https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/controlling-permissions-for-github_token -permissions: - contents: write - pull-requests: write - issues: write - -concurrency: - group: ${{ github.workflow }}-${{ github.ref }} - cancel-in-progress: true - -jobs: - build-preview: - runs-on: ubuntu-latest - steps: - - name: Install Nix - uses: DeterminateSystems/nix-installer-action@main - - uses: DeterminateSystems/magic-nix-cache-action@main - - - name: Checkout - uses: actions/checkout@v4 - - - name: Set default git branch (to reduce log spam) - run: git config --global init.defaultBranch main - - - name: Build documentation packages - run: nix build .#docs-html --print-build-logs - - - name: Deploy to GitHub Pages preview - run: | - PR_NUMBER=${{ github.event.pull_request.number }} - BRANCH_NAME="gh-pages" - PREVIEW_DIR="docs-preview-${PR_NUMBER}" - - # Clone the gh-pages branch and move to the preview subdirectory - git clone --single-branch --branch $BRANCH_NAME https://github.com/${{ github.repository }} gh-pages - cd gh-pages - - mkdir -p $PREVIEW_DIR - - # Copy the build files to the preview subdirectory - cp -rvf ../result/share/doc/nvf/* ./$PREVIEW_DIR - - # Configure git to use the GitHub Actions token for authentication - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - - # Set the GitHub token for authentication - git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} - - # Add and commit the changes - git add --all - git commit -m "Deploy PR #${PR_NUMBER} preview" || echo "No changes to commit" - git push --force origin $BRANCH_NAME - - comment-url: - needs: build-preview - runs-on: ubuntu-latest - steps: - - name: Prepare Environment - id: prelude - run: | - PR_NUMBER=${{ github.event.pull_request.number }} - URL="https://${{ github.repository_owner }}.github.io/nvf/docs-preview-${PR_NUMBER}/" - - # Propagate non-interpolatable environment vars - echo "URL=$URL" >> "$GITHUB_OUTPUT" - echo "REV=$GITHUB_SHA" >> "$GITHUB_OUTPUT" - echo "ACTOR=$GITHUB_ACTOR" >> "$GITHUB_OUTPUT" - echo "REF=$GITHUB_HEAD_REF" >> "$GITHUB_OUTPUT" - echo "RUNS=$GITHUB_RUN_NUMBER" >> "$GITHUB_OUTPUT" - - echo "Live Preview URL: $URL" - echo "Rev: $GITHUB_SHA" - echo "Actor: $GITHUB_ACTOR" - echo "Ref: "$GITHUB_HEAD_REF" - echo "Reruns: "$GITHUB_RUN_NUMBER" - - echo "### :rocket: Live Preview Deployed " >> "$GITHUB_STEP_SUMMARY" - echo "Preview can be found at ${URL}" >> "$GITHUB_STEP_SUMMARY" - - - name: Find Comment - uses: peter-evans/find-comment@v3 - id: fc - with: - comment-author: "github-actions[bot]" - issue-number: ${{ github.event.pull_request.number }} - body-includes: "Live preview deployed" - - - name: Post live preview comment - uses: peter-evans/create-or-update-comment@v4 - env: - COMMENT_ID: ${{ steps.fc.outputs.comment-id }} - URL: ${{ steps.prelude.outputs.URL }} - GITHUB_SHA: ${{ steps.prelude.outputs.REV }} - ACTOR: ${{ steps.prelude.outputs.ACTOR }} - REF: ${{ steps.prelude.outputs.REF }} - RUNS: ${{ steps.prelude.outputs.RUNS }} - with: - comment-id: ${{ env.COMMENT_ID }} - issue-number: ${{ github.event.pull_request.number }} # issue number also applies to pull requests - edit-mode: replace # replace previous body - body: | - ### :rocket: Live preview deployed from ${{ env.GITHUB_SHA }} - - View it [here](${{ env.URL }}): - -
- Debug Information -

Triggered by: ${{ env.ACTOR }}

-

HEAD at: ${{ env.REF }}

-

Reruns: ${{ env.RUNS }}

-
- - cleanup: - if: ${{ github.event.pull_request.merged == true || github.event.pull_request.state == 'closed' }} - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Delete preview for closed/merged PR - run: | - PR_NUMBER=${{ github.event.pull_request.number }} - BRANCH_NAME="gh-pages" - PREVIEW_DIR="docs-preview-${PR_NUMBER}" - - # Clone the gh-pages branch - git clone --single-branch --branch $BRANCH_NAME https://github.com/${{ github.repository }} gh-pages - cd gh-pages - - # Check if the preview directory exists, and delete it if it does - if [ -d "$PREVIEW_DIR" ]; then - echo "Deleting preview directory $PREVIEW_DIR" - rm -rf $PREVIEW_DIR - else - echo "Preview directory $PREVIEW_DIR does not exist. Skipping deletion." - fi - - # Configure git to use the GitHub Actions token for authentication - git config --global user.name "GitHub Actions" - git config --global user.email "actions@github.com" - - # Set the GitHub token for authentication - git remote set-url origin https://x-access-token:${{ secrets.GITHUB_TOKEN }}@github.com/${{ github.repository }} - - # Add and commit the changes (only if there's something to delete) - git add . - git diff --quiet || git commit -m "Remove preview for PR #${PR_NUMBER}" - git push origin $BRANCH_NAME - - cleanup-comment: - needs: cleanup - runs-on: ubuntu-latest - steps: - - name: Checkout repository - uses: actions/checkout@v4 - - - name: Double check preview directory deletion - run: | - # Check if the preview directory exists, and delete it if it does - if [ -d "docs-preview-${{ github.event.pull_request.number }}" ]; then - echo "Something went wrong, preview directory is not deleted." - exit 1 - else - echo "Preview directory has been deleted successfully, proceeding." - fi - - - name: Post cleanup verification - uses: peter-evans/create-or-update-comment@v4 - with: - issue-number: ${{ github.event.pull_request.number }} - body: | - ✅ Preview has been deleted successfully! diff --git a/docs/release-notes/rl-0.7.md b/docs/release-notes/rl-0.7.md index 32186a8f..59267ddf 100644 --- a/docs/release-notes/rl-0.7.md +++ b/docs/release-notes/rl-0.7.md @@ -28,11 +28,11 @@ configuration formats. ### `vim.maps` rewrite {#sec-vim-maps-rewrite} -Instead of specifying map modes using submodules (e.g.: `vim.maps.normal`), a -new `vim.keymaps` submodule with support for a `mode` option has been -introduced. It can be either a string, or a list of strings, where a string -represents the short-name of the map mode(s), that the mapping should be set -for. See `:help map-modes` for more information. +Instead of specifying map modes using submodules (eg.: `vim.maps.normal`), a new +`vim.keymaps` submodule with support for a `mode` option has been introduced. It +can be either a string, or a list of strings, where a string represents the +short-name of the map mode(s), that the mapping should be set for. See +`:help map-modes` for more information. For example: diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index c65defeb..036b673c 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -16,16 +16,6 @@ - Implement [](#opt-vim.git.gitsigns.setupOpts) for user-specified setup table in gitsigns configuration. -- [](#opt-vim.options.mouse) no longer compares values to an enum of available - mouse modes. This means you can provide any string without the module system - warning you that it is invalid. Do keep in mind that this value is no longer - checked, so you will be responsible for ensuring its validity. - -- Deprecate `vim.enableEditorconfig` in favor of - [](#opt-vim.globals.editorconfig). - -- Deprecate rnix-lsp as it has been abandoned and archived upstream. - [amadaluzia](https://github.com/amadaluzia): [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim @@ -46,8 +36,3 @@ - Add [aerial.nvim] - Add [nvim-ufo] - -[LilleAila](https://github.com/LilleAila): - -- Remove `vim.notes.obsidian.setupOpts.dir`, which was set by default. Fixes - issue with setting the workspace directory. diff --git a/flake.lock b/flake.lock index da38b967..d4e745c1 100644 --- a/flake.lock +++ b/flake.lock @@ -51,6 +51,27 @@ "type": "github" } }, + "naersk": { + "inputs": { + "nixpkgs": [ + "rnix-lsp", + "nixpkgs" + ] + }, + "locked": { + "lastModified": 1655042882, + "narHash": "sha256-9BX8Fuez5YJlN7cdPO63InoyBy7dm3VlJkkmTt6fS1A=", + "owner": "nix-community", + "repo": "naersk", + "rev": "cddffb5aa211f50c4b8750adbec0bbbdfb26bb9f", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "naersk", + "type": "github" + } + }, "nil": { "inputs": { "flake-utils": [ @@ -103,6 +124,22 @@ "url": "https://github.com/NixOS/nixpkgs/archive/5487e69da40cbd611ab2cadee0b4637225f7cfae.tar.gz" } }, + "nixpkgs_2": { + "locked": { + "lastModified": 1656753965, + "narHash": "sha256-BCrB3l0qpJokOnIVc3g2lHiGhnjUi0MoXiw6t1o8H1E=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "0ea7a8f1b939d74e5df8af9a8f7342097cdf69eb", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable", + "repo": "nixpkgs", + "type": "github" + } + }, "nmd": { "flake": false, "locked": { @@ -2073,6 +2110,26 @@ "type": "github" } }, + "rnix-lsp": { + "inputs": { + "naersk": "naersk", + "nixpkgs": "nixpkgs_2", + "utils": "utils" + }, + "locked": { + "lastModified": 1669555118, + "narHash": "sha256-F0s0m62S5bHNVWNHLZD6SeHiLrsDx98VQbRjDyIu+qQ=", + "owner": "nix-community", + "repo": "rnix-lsp", + "rev": "95d40673fe43642e2e1144341e86d0036abd95d9", + "type": "github" + }, + "original": { + "owner": "nix-community", + "repo": "rnix-lsp", + "type": "github" + } + }, "root": { "inputs": { "flake-parts": "flake-parts", @@ -2203,6 +2260,7 @@ "plugin-vim-repeat": "plugin-vim-repeat", "plugin-vim-startify": "plugin-vim-startify", "plugin-which-key": "plugin-which-key", + "rnix-lsp": "rnix-lsp", "systems": "systems_2" } }, @@ -2256,6 +2314,21 @@ "repo": "default", "type": "github" } + }, + "utils": { + "locked": { + "lastModified": 1656928814, + "narHash": "sha256-RIFfgBuKz6Hp89yRr7+NR5tzIAbn52h8vT6vXkYjZoM=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "7e2a3b3dfd9af950a856d66b0a7d01e3c18aa249", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } } }, "root": "root", diff --git a/flake.nix b/flake.nix index 89690cad..c1fe0688 100644 --- a/flake.nix +++ b/flake.nix @@ -89,6 +89,7 @@ }; # Language servers (use master instead of nixpkgs) + rnix-lsp.url = "github:nix-community/rnix-lsp"; nil = { url = "github:oxalica/nil"; inputs.nixpkgs.follows = "nixpkgs"; diff --git a/flake/legacyPackages.nix b/flake/legacyPackages.nix index b77d057a..389ca0ce 100644 --- a/flake/legacyPackages.nix +++ b/flake/legacyPackages.nix @@ -8,10 +8,8 @@ inherit system; overlays = [ inputs.self.overlays.default - (_: _: { - # Build nil from source to get most recent - # features as they are added. + rnix-lsp = inputs'.rnix-lsp.defaultPackage; nil = inputs'.nil.packages.default; }) ]; diff --git a/lib/languages.nix b/lib/languages.nix index 56c225d6..52f1b5b8 100644 --- a/lib/languages.nix +++ b/lib/languages.nix @@ -6,12 +6,7 @@ inherit (lib.nvim.attrsets) mapListToAttrs; in { # Converts a boolean to a yes/no string. This is used in lots of - # configuration formats, and is not covered by `toLuaObject` - toVimBool = bool: - if bool - then "yes" - else "no"; - + # configuration formats. diagnosticsToLua = { lang, config, @@ -35,8 +30,8 @@ in { mkEnable = desc: mkOption { - default = false; - type = bool; description = "Turn on ${desc} for enabled languages by default"; + type = bool; + default = false; }; } diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix index 8d27d7ac..e4cb193f 100644 --- a/modules/extra/deprecations.nix +++ b/modules/extra/deprecations.nix @@ -14,7 +14,6 @@ splitRight = "splitright"; autoIndent = "autoindent"; wordWrap = "wrap"; - showSignColumn = "signcolumn"; }; in { imports = concatLists [ @@ -36,28 +35,23 @@ in { vim.autopairs.enable has been removed in favor of per-plugin modules. You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead. '') - (mkRemovedOptionModule ["vim" "autopairs" "type"] '' vim.autopairs.type has been removed in favor of per-plugin modules. You can enable nvim-autopairs with vim.autopairs.nvim-autopairs.enable instead. '') - (mkRemovedOptionModule ["vim" "autocomplete" "enable"] '' vim.autocomplete.enable has been removed in favor of per-plugin modules. You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead. '') - (mkRemovedOptionModule ["vim" "autocomplete" "type"] '' vim.autocomplete.type has been removed in favor of per-plugin modules. You can enable nvim-cmp with vim.autocomplete.nvim-cmp.enable instead. '') - (mkRemovedOptionModule ["vim" "autocomplete" "sources"] '' vim.autocomplete.sources has been removed in favor of per-plugin modules. You can add nvim-cmp sources with vim.autocomplete.nvim-cmp.sources instead. '') - (mkRemovedOptionModule ["vim" "snippets" "vsnip" "enable"] '' vim.snippets.vsnip.enable has been removed in favor of the more modern luasnip. '') @@ -90,12 +84,9 @@ in { `tabstop` and `shiftwidth` manually in `vim.options` or per-filetype in a `ftplugin` directory added to your runtime path. '') - - # 2024-12-02 - (mkRenamedOptionModule ["vim" "enableEditorconfig"] ["vim" "globals" "editorconfig"]) ] - # 2024-12-01 + # 2024-12-1 # Migrated via batchRenameOptions. Further batch renames must be below this line. renamedVimOpts ]; diff --git a/modules/neovim/init/basic.nix b/modules/neovim/init/basic.nix index 532ebcea..9370fa8f 100644 --- a/modules/neovim/init/basic.nix +++ b/modules/neovim/init/basic.nix @@ -5,7 +5,6 @@ }: let inherit (lib.options) mkOption mkEnableOption literalMD; inherit (lib.strings) optionalString; - inherit (lib.attrsets) optionalAttrs; inherit (lib.types) enum bool str int either; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.dag) entryAfter; @@ -59,12 +58,24 @@ in { description = "Prevent swapfile and backupfile from being created"; }; + showSignColumn = mkOption { + type = bool; + default = true; + description = "Show the sign column"; + }; + bell = mkOption { type = enum ["none" "visual" "on"]; default = "none"; description = "Set how bells are handled. Options: on, visual or none"; }; + enableEditorconfig = mkOption { + type = bool; + default = true; + description = "Follow editorconfig rules in current directory"; + }; + searchCase = mkOption { type = enum ["ignore" "smart" "sensitive"]; default = "sensitive"; @@ -95,55 +106,63 @@ in { # Set options that were previously interpolated in 'luaConfigRC.basic' as vim.options (vim.o) # and 'vim.globals' (vim.g). Future options, if possible, should be added here instead of the # luaConfigRC section below. - options = pushDownDefault (lib.mergeAttrsList [ - { - # Options that are always set, with a lower priority - encoding = "utf-8"; - hidden = true; - expandtab = true; + options = pushDownDefault { + encoding = "utf-8"; + hidden = true; + expandtab = true; + }; - # Junkfile Behaviour - swapfile = !cfg.preventJunkFiles; - backup = !cfg.preventJunkFiles; - writebackup = !cfg.preventJunkFiles; - } + globals = pushDownDefault { + editorconfig = cfg.enableEditorconfig; + }; - (optionalAttrs cfg.undoFile.enable { - undofile = true; - undodir = cfg.undoFile.path; - }) - - (optionalAttrs (cfg.bell == "none") { - errorbells = false; - visualbell = false; - }) - - (optionalAttrs (cfg.bell == "on") { - visualbell = false; - }) - - (optionalAttrs (cfg.bell == "visual") { - visualbell = false; - }) - - (optionalAttrs (cfg.lineNumberMode == "relative") { - relativenumber = true; - }) - - (optionalAttrs (cfg.lineNumberMode == "number") { - number = true; - }) - - (optionalAttrs (cfg.lineNumberMode == "relNumber") { - number = true; - relativenumber = true; - }) - ]); - - # Options that are more difficult to set through 'vim.options'. Namely, appending values - # to pre-set Neovim options. Fear not, though as the Lua DAG is still as powerful as it - # could be. + # Options that are more difficult to set through 'vim.options'. Fear not, though + # as the Lua DAG is still as powerful as it could be. luaConfigRC.basic = entryAfter ["globalsScript"] '' + -- Settings that are set for everything + vim.opt.shortmess:append("c") + + ${optionalString cfg.undoFile.enable '' + vim.o.undofile = true + vim.o.undodir = ${toLuaObject cfg.undoFile.path} + ''} + + ${optionalString cfg.showSignColumn '' + vim.o.signcolumn = "yes" + ''} + + ${optionalString cfg.preventJunkFiles '' + vim.o.swapfile = false + vim.o.backup = false + vim.o.writebackup = false + ''} + + ${optionalString (cfg.bell == "none") '' + vim.o.errorbells = false + vim.o.visualbell = false + ''} + + ${optionalString (cfg.bell == "on") '' + vim.o.visualbell = false + ''} + + ${optionalString (cfg.bell == "visual") '' + vim.o.errorbells = false + ''} + + ${optionalString (cfg.lineNumberMode == "relative") '' + vim.o.relativenumber = true + ''} + + ${optionalString (cfg.lineNumberMode == "number") '' + vim.o.number = true + ''} + + ${optionalString (cfg.lineNumberMode == "relNumber") '' + vim.o.number = true + vim.o.relativenumber = true + ''} + ${optionalString cfg.useSystemClipboard '' vim.opt.clipboard:append("unnamedplus") ''} diff --git a/modules/neovim/init/spellcheck.nix b/modules/neovim/init/spellcheck.nix index f8d784da..5d6f5bed 100644 --- a/modules/neovim/init/spellcheck.nix +++ b/modules/neovim/init/spellcheck.nix @@ -124,6 +124,7 @@ in { nvim --headless --clean \ --cmd "mkspell $out/spell/$name.add.spl $spellfile" -Es -n done + ''; in mkIf (cfg.extraSpellWords != {}) [ @@ -132,12 +133,10 @@ in { compileJoinedSpellfiles.outPath ]; - options = { - spell = true; - spelllang = cfg.languages; - }; - luaConfigRC.spellcheck = entryAfter ["basic"] '' + vim.opt.spell = true + vim.opt.spelllang = ${listToLuaTable cfg.languages} + -- Disable spellchecking for certain filetypes -- as configured by `vim.spellcheck.ignoredFiletypes` vim.api.nvim_create_augroup("nvf_autocmds", {clear = false}) diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index 1120633c..ffb69e92 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -26,6 +26,22 @@ then expToLua package else ''{"${package}/bin/${defaultCmd}"}''; servers = { + rnix = { + package = pkgs.rnix-lsp; + internalFormatter = cfg.format.type == "nixpkgs-fmt"; + lspConfig = '' + lspconfig.rnix.setup{ + capabilities = capabilities, + ${ + if (cfg.format.enable && cfg.format.type == "nixpkgs-fmt") + then useFormat + else noFormat + }, + cmd = ${packageToCmd cfg.lsp.package "rnix-lsp"}, + } + ''; + }; + nil = { package = pkgs.nil; internalFormatter = true; @@ -149,7 +165,6 @@ in { type = enum (attrNames formats); default = defaultFormat; }; - package = mkOption { description = "Nix formatter package"; type = package; @@ -173,18 +188,7 @@ in { assertions = [ { assertion = cfg.format.type != "nixpkgs-fmt"; - message = '' - nixpkgs-fmt has been archived upstream. Please use one of the following available formatters: - ${concatStringsSep ", " (attrNames formats)} - ''; - } - - { - assertion = cfg.lsp.server != "rnix"; - message = '' - rnix-lsp has been archived upstream. Please use one of the following available language servers: - ${concatStringsSep ", " (attrNames servers)} - ''; + message = "nixpkgs-fmt has been archived upstream. Please use one of the following instead: ${concatStringsSep ", " (attrNames formats)}"; } ]; vim.pluginRC.nix = '' diff --git a/modules/plugins/notes/obsidian/obsidian.nix b/modules/plugins/notes/obsidian/obsidian.nix index 2da2127b..2dae5a9c 100644 --- a/modules/plugins/notes/obsidian/obsidian.nix +++ b/modules/plugins/notes/obsidian/obsidian.nix @@ -24,6 +24,12 @@ in { enable = mkEnableOption "complementary neovim plugins for Obsidian editor"; setupOpts = mkPluginSetupOption "Obsidian.nvim" { + dir = mkOption { + type = str; + default = "~/my-vault"; + description = "Obsidian vault directory"; + }; + daily_notes = { folder = mkOption { type = nullOr str; diff --git a/modules/plugins/utility/gestures/gesture-nvim/config.nix b/modules/plugins/utility/gestures/gesture-nvim/config.nix index 9838c178..2996f7d2 100644 --- a/modules/plugins/utility/gestures/gesture-nvim/config.nix +++ b/modules/plugins/utility/gestures/gesture-nvim/config.nix @@ -15,47 +15,43 @@ mappings = addDescriptionsToMappings cfg.mappings mappingDefinitions; in { config = mkIf cfg.enable { - vim = { - startPlugins = ["gesture-nvim"]; + vim.startPlugins = ["gesture-nvim"]; - maps.normal = mkMerge [ - (mkSetLuaBinding mappings.draw "require('gesture').draw") - (mkSetLuaBinding mappings.finish "require('gesture').finish") - (mkIf (mappings.draw.value == "") { - "" = {action = "";}; - }) - ]; + vim.maps.normal = mkMerge [ + (mkSetLuaBinding mappings.draw "require('gesture').draw") + (mkSetLuaBinding mappings.finish "require('gesture').finish") + (mkIf (mappings.draw.value == "") { + "" = {action = "";}; + }) + ]; - options.mouse = "a"; - pluginRC.gesture-nvim = entryAnywhere '' - local gesture = require("gesture") - gesture.register({ - name = "scroll to bottom", - inputs = { gesture.up(), gesture.down() }, - action = "normal! G", - }) + vim.pluginRC.gesture-nvim = entryAnywhere '' + vim.opt.mouse = "a" - gesture.register({ - name = "next tab", - inputs = { gesture.right() }, - action = "tabnext", - }) - - gesture.register({ - name = "previous tab", - inputs = { gesture.left() }, - action = function(ctx) -- also can use callable - vim.cmd.tabprevious() - end, - }) - - gesture.register({ - name = "go back", - inputs = { gesture.right(), gesture.left() }, - -- map to `` keycode - action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", true)]], - }) - ''; - }; + local gesture = require("gesture") + gesture.register({ + name = "scroll to bottom", + inputs = { gesture.up(), gesture.down() }, + action = "normal! G", + }) + gesture.register({ + name = "next tab", + inputs = { gesture.right() }, + action = "tabnext", + }) + gesture.register({ + name = "previous tab", + inputs = { gesture.left() }, + action = function(ctx) -- also can use callable + vim.cmd.tabprevious() + end, + }) + gesture.register({ + name = "go back", + inputs = { gesture.right(), gesture.left() }, + -- map to `` keycode + action = [[lua vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes("", true, false, true), "n", true)]], + }) + ''; }; } diff --git a/modules/plugins/utility/gestures/gesture-nvim/default.nix b/modules/plugins/utility/gestures/gesture-nvim/default.nix index 4c7987e7..27e7e09f 100644 --- a/modules/plugins/utility/gestures/gesture-nvim/default.nix +++ b/modules/plugins/utility/gestures/gesture-nvim/default.nix @@ -1,4 +1,4 @@ -{ +_: { imports = [ ./gesture-nvim.nix ./config.nix diff --git a/modules/plugins/utility/telescope/config.nix b/modules/plugins/utility/telescope/config.nix index 95f81327..76cfa8bd 100644 --- a/modules/plugins/utility/telescope/config.nix +++ b/modules/plugins/utility/telescope/config.nix @@ -22,12 +22,6 @@ in { package = "telescope"; setupModule = "telescope"; inherit (cfg) setupOpts; - - # HACK: workaround until https://github.com/NotAShelf/nvf/issues/535 gets resolved - before = '' - vim.g.loaded_telescope = nil - ''; - after = '' local telescope = require("telescope") ${optionalString config.vim.ui.noice.enable "telescope.load_extension('noice')"} diff --git a/modules/wrapper/rc/options.nix b/modules/wrapper/rc/options.nix index 36296f02..df3831ec 100644 --- a/modules/wrapper/rc/options.nix +++ b/modules/wrapper/rc/options.nix @@ -3,11 +3,9 @@ lib, ... }: let - inherit (lib.options) mkOption literalMD literalExpression; + inherit (lib.options) mkOption mkEnableOption literalMD literalExpression; inherit (lib.strings) optionalString; inherit (lib.types) str bool int enum attrsOf lines listOf either path submodule anything; - inherit (lib.trivial) isBool; - inherit (lib.nvim.languages) toVimBool; inherit (lib.nvim.types) dagOf; inherit (lib.nvim.lua) listToLuaTable; @@ -19,7 +17,7 @@ in { default = false; example = true; description = '' - [official documentation]: https://neovim.io/doc/user/lua.html#vim.loader.enable() + [{option}`official documentation`]: https://neovim.io/doc/user/lua.html#vim.loader.enable() the experimental Lua module loader to speed up the start up process @@ -31,7 +29,7 @@ in { ::: {.note} The Lua module loader is *disabled* by default. Before setting this option, please - take a look at the {option}`[official documentation]`. This option may be enabled by + take a look at the [{option}`official documentation`]. This option may be enabled by default in the future. ::: ''; @@ -83,7 +81,7 @@ in { ./nvim/my-lua-file.lua # source type path - pure and reproducible - (builtins.path { + (builtins.source { path = ./nvim/my-lua-file.lua; name = "my-lua-file"; }) @@ -123,21 +121,6 @@ in { default = ","; description = "The key used for `` mappings"; }; - - editorconfig = mkOption { - type = bool; - default = true; - description = '' - Whether to enable EditorConfig integration in Neovim. - - This defaults to true as it is enabled by default in stock - Neovim, setting this option to false disables EditorConfig - integration entirely. - - See [Neovim documentation](https://neovim.io/doc/user/editorconfig.html) - for more details on configuring EditorConfig behaviour. - ''; - }; }; }; @@ -167,25 +150,16 @@ in { }; mouse = mkOption { - type = str; - default = "nvi"; - example = "a"; + type = enum ["a" "n" "v" "i" "c"]; + default = "a"; description = '' Set modes for mouse support. + * a - all * n - normal * v - visual * i - insert - * c - command-line - * h - all modes when editing a help file - * a - all modes - * r - for hit-enter and more-prompt prompt - - [neovim documentation]: https://neovim.io/doc/user/options.html#'mouse'" - - This option takes a string to ensure proper conversion to the corresponding Lua type. - As such, we do not check the value passed to this option. Please ensure that any value - that is set here is a valid value as per [neovim documentation]. + * c - command ''; }; @@ -237,16 +211,6 @@ in { description = "Enable word wrapping."; }; - signcolumn = mkOption { - type = either str bool; - default = true; - apply = x: - if isBool x - then toVimBool x # convert to a yes/no str - else x; - description = "Show the sign column"; - }; - tabstop = mkOption { type = int; default = 8; # Neovim default @@ -299,11 +263,7 @@ in { vim.opt.runtimepath:append(${listToLuaTable cfg.additionalRuntimePaths}) ''} - ${optionalString cfg.enableLuaLoader '' - if vim.loader then - vim.loader.enable() - end - ''} + ${optionalString cfg.enableLuaLoader "vim.loader.enable()"} ''; defaultText = literalMD '' @@ -313,7 +273,7 @@ in { if [](#opt-vim.enableLuaLoader) is set to true. ''; - example = literalExpression ''''${builtins.readFile ./my-lua-config-pre.lua}''; + example = literalExpression ''"$${builtins.readFile ./my-lua-config-pre.lua}"''; description = '' Verbatim lua code that will be inserted **before**