diff --git a/.github/README.md b/.github/README.md index a6ef7a44..3fc7ffdf 100644 --- a/.github/README.md +++ b/.github/README.md @@ -200,8 +200,9 @@ fix. **Q**: What platforms are supported? **A**: nvf actively supports **Linux and Darwin** platforms using standalone -Nix, NixOS or Home-Manager. Please take a look at the [nvf manual] for available -installation instructions. +Nix, NixOS or Home-Manager. It has been reported that **Android** is also +supported through the Home-Manager module, or using standalone package. Please +take a look at the [nvf manual] for available installation instructions. **Q**: Can you add _X_? diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml index c6967f21..a3f4fce3 100644 --- a/.github/workflows/check.yml +++ b/.github/workflows/check.yml @@ -37,7 +37,7 @@ jobs: uses: DeterminateSystems/nix-installer-action@main - name: Check formatting via Alejandra - run: nix run nixpkgs#alejandra -- -c . + run: nix run nixpkgs#alejandra -- --check . --exclude npins check-typos: name: "Check source tree for typos" @@ -114,33 +114,35 @@ jobs: runs-on: ubuntu-latest if: "!contains(github.event.pull_request.title, '[skip ci]')" steps: + - name: Checkout + uses: actions/checkout@v4 + with: + fetch-depth: 2 # slows down checkout, but we need to compare against the previous commit on push events + - name: Get list of changed files from PR env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + shell: bash run: | - gh api \ - repos/${{ github.repository }}/pulls/${{github.event.number}}/files --paginate \ - | jq '.[] | select(.status != "removed") | .filename' \ - > "$HOME/changed_files" + if [[ "${{ github.event_name }}" == "pull_request" ]]; then + gh api repos/${{ github.repository }}/pulls/${{ github.event.number }}/files --paginate \ + | jq -r '.[] | select(.status != "removed") | .filename' \ + > "$HOME/changed_files" + else + git diff --name-only HEAD^ > "$HOME/changed_files" + fi - name: Print list of changed files run: | cat "$HOME/changed_files" - - name: Checkout - uses: actions/checkout@v4 - with: - ref: refs/pull/${{ github.event.pull_request.number }}/merge - - name: Install Nix uses: DeterminateSystems/nix-installer-action@main - - name: Checking EditorConfig + - name: Checking Editorconfig conformance shell: bash run: | - cat "$HOME/changed_files" | nix-shell -p editorconfig-checker.out \ - --run 'xargs -r editorconfig-checker -disable-indentation -exclude flake.lock --verbose' - echo -n "Check status: $?" + < "$HOME/changed_files" nix-shell -p editorconfig-checker --run 'xargs -r editorconfig-checker -disable-indent-size' - if: ${{ failure() }} shell: bash diff --git a/configuration.nix b/configuration.nix index a243c970..011d6fae 100644 --- a/configuration.nix +++ b/configuration.nix @@ -25,7 +25,6 @@ isMaximal: { trouble.enable = true; lspSignature.enable = true; otter-nvim.enable = isMaximal; - lsplines.enable = isMaximal; nvim-docs-view.enable = isMaximal; }; @@ -82,6 +81,7 @@ isMaximal: { elixir.enable = false; haskell.enable = false; ruby.enable = false; + fsharp.enable = false; tailwind.enable = false; svelte.enable = false; diff --git a/docs/manual/configuring/custom-plugins.md b/docs/manual/configuring/custom-plugins.md index 79a691e2..c621e03c 100644 --- a/docs/manual/configuring/custom-plugins.md +++ b/docs/manual/configuring/custom-plugins.md @@ -15,7 +15,7 @@ plugin to the runtime, you need to add it to the [](#opt-vim.startPlugins) list in your configuration. Adding a plugin to `startPlugins` will not allow you to configure the plugin -that you have added, but **nvf** provides multiple way of configuring any custom +that you have added, but **nvf** provides multiple ways of configuring any custom plugins that you might have added to your configuration. ```{=include=} sections diff --git a/docs/manual/configuring/languages.md b/docs/manual/configuring/languages.md index 74714365..252163fb 100644 --- a/docs/manual/configuring/languages.md +++ b/docs/manual/configuring/languages.md @@ -19,6 +19,7 @@ formatting to diagnostics. The following languages have sections under the - Go: [vim.languages.go.enable](#opt-vim.languages.go.enable) - Lua: [vim.languages.lua.enable](#opt-vim.languages.lua.enable) - PHP: [vim.languages.php.enable](#opt-vim.languages.php.enable) +- F#: [vim.languages.fsharp.enable](#opt-vim.languages.fsharp.enable) Adding support for more languages, and improving support for existing ones are great places where you can contribute with a PR. diff --git a/docs/manual/default-configs/maximal.md b/docs/manual/default-configs/maximal.md index 36887633..e1f5273e 100644 --- a/docs/manual/default-configs/maximal.md +++ b/docs/manual/default-configs/maximal.md @@ -1,7 +1,7 @@ # Maximal {#sec-default-maximal} ```bash -$ nix shell github:notashelf/nvf#maximal test.nix +$ nix run github:notashelf/nvf#maximal -- test.nix ``` It is the same fully configured Neovim as with the [Nix](#sec-default-nix) diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index 5e09bb35..edf90e62 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -14,6 +14,11 @@ the new API they provide. Please manually set your keybinds according to [Lspsaga documentation] following the new API. +- none-ls has been updated to the latest version. If you have been using raw Lua + configuration to _manually_ configure it, some of the formats may become + unavailable as they have been refactored out of the main none-ls repository + upstream. + [NotAShelf](https://github.com/notashelf): [typst-preview.nvim]: https://github.com/chomosuke/typst-preview.nvim @@ -21,6 +26,7 @@ [yanky.nvim]: https://github.com/gbprod/yanky.nvim [yazi.nvim]: https://github.com/mikavilpas/yazi.nvim [snacks.nvim]: https://github.com/folke/snacks.nvim +[oil.nvim]: https://github.com/stevearc/oil.nvim - Add [typst-preview.nvim] under `languages.typst.extensions.typst-preview-nvim`. @@ -78,6 +84,13 @@ - Lazyload Lspsaga and remove default keybindings for it. +- Add [oil.nvim] as an alternative file explorer. It will be available under + `vim.utility.oil-nvim`. + +- Add `vim.diagnostics` to interact with Neovim's diagnostics module. Available + options for `vim.diagnostic.config()` can now be customized through the + [](#opt-vim.diagnostics.config) in nvf. + [amadaluzia](https://github.com/amadaluzia): [haskell-tools.nvim]: https://github.com/MrcJkb/haskell-tools.nvim @@ -88,8 +101,14 @@ [blink.cmp]: https://github.com/saghen/blink.cmp +- Add [aerial.nvim]. +- Add [nvim-ufo]. - Add [blink.cmp] support. - Add `LazyFile` user event. +- Migrate language modules from none-ls to conform/nvim-lint +- Add tsx support in conform and lint +- Moved code setting `additionalRuntimePaths` and `enableLuaLoader` out of + `luaConfigPre`'s default to prevent being overridden [diniamo](https://github.com/diniamo): @@ -98,14 +117,6 @@ - Disable the built-in format-on-save feature of zls. Use `vim.lsp.formatOnSave` instead. -[horriblename](https://github.com/horriblename): - -[aerial.nvim]: (https://github.com/stevearc/aerial.nvim) -[nvim-ufo]: (https://github.com/kevinhwang91/nvim-ufo) - -- Add [aerial.nvim]. -- Add [nvim-ufo]. - [LilleAila](https://github.com/LilleAila): - Remove `vim.notes.obsidian.setupOpts.dir`, which was set by default. Fixes @@ -190,6 +201,7 @@ Inspiration from `vim.languages.clang.dap` implementation. - Add [leetcode.nvim] plugin under `vim.utility.leetcode-nvim`. - Add [codecompanion.nvim] plugin under `vim.assistant.codecompanion-nvim`. +- Fix [codecompanion-nvim] plugin: nvim-cmp error and setupOpts defaults. [nezia1](https://github.com/nezia1): @@ -235,8 +247,9 @@ [alfarel](https://github.com/alfarelcynthesis): -- Add missing `yazi.nvim` dependency (`snacks.nvim`). +[conform.nvim]: https://github.com/stevearc/conform.nvim +- Add missing `yazi.nvim` dependency (`snacks.nvim`). - Add [mkdir.nvim](https://github.com/jghauser/mkdir.nvim) plugin for automatic creation of parent directories when editing a nested file. - Add [nix-develop.nvim](https://github.com/figsoda/nix-develop.nvim) plugin for @@ -248,6 +261,8 @@ [friendly-snippets](https://github.com/rafamadriz/friendly-snippets) so blink.cmp can source snippets from it. - Fix [blink.cmp] breaking when built-in sources were modified. +- Fix [conform.nvim] not allowing disabling formatting on and after save. Use + `null` value to disable them if conform is enabled. [TheColorman](https://github.com/TheColorman): @@ -276,3 +291,64 @@ [rice-cracker-dev](https://github.com/rice-cracker-dev): - `eslint_d` now checks for configuration files to load. +- Fix an error where `eslint_d` fails to load. +- Add required files support for linters under + `vim.diagnostics.nvim-lint.linters.*.required_files`. +- Add global function `nvf_lint` under + `vim.diagnostics.nvim-lint.lint_function`. + +[Sc3l3t0n](https://github.com/Sc3l3t0n): + +- Add F# support under `vim.languages.fsharp`. + +[venkyr77](https://github.com/venkyr77): + +- Add lint (luacheck) and formatting (stylua) support for Lua. +- Add lint (markdownlint-cli2) support for Markdown. +- Add catppuccin integration for Bufferline, Lspsaga. +- Add `neo-tree`, `snacks.explorer` integrations to `bufferline`. +- Add more applicable filetypes to illuminate denylist. +- Disable mini.indentscope for applicable filetypes. +- Fix fzf-lua having a hard dependency on fzf. +- Enable inlay hints support - `config.vim.lsp.inlayHints`. +- Add `neo-tree`, `snacks.picker` extensions to `lualine`. + +[tebuevd](https://github.com/tebuevd): + +- Fix `pickers` configuration for `telescope` by nesting it under `setupOpts` +- Fix `find_command` configuration for `telescope` by nesting it under + `setupOpts.pickers.find_files` +- Update default `telescope.setupOpts.pickers.find_files.find_command` to only + include files (and therefore exclude directories from results) + +[ckoehler](https://github.com/ckoehler): + +[flash.nvim]: https://github.com/folke/flash.nvim +[gitlinker.nvim]: https://github.com/linrongbin16/gitlinker.nvim + +- Fix oil config referencing snacks +- Add [flash.nvim] plugin to `vim.utility.motion.flash-nvim` +- Fix default telescope ignore list entry for '.git/' to properly match +- Add [gitlinker.nvim] plugin to `vim.git.gitlinker-nvim` + +[rrvsh](https://github.com/rrvsh): + +- Fix namespace of python-lsp-server by changing it to python3Packages + +[Noah765](https://github.com/Noah765): + +[vim-sleuth]: https://github.com/tpope/vim-sleuth + +- Add missing `flutter-tools.nvim` dependency `plenary.nvim`. +- Add necessary dependency of `flutter-tools.nvim` on lsp. +- Add the `vim.languages.dart.flutter-tools.flutterPackage` option. +- Fix the type of the `highlight` color options. +- Add [vim-sleuth] plugin under `vim.utility.sleuth`. + +[howird](https://github.com/howird): + +- Change python dap adapter name from `python` to commonly expected `debugpy`. + +[aionoid](https://github.com/aionoid): + +- Fix [render-markdown.nvim] file_types option type to list, to accept merging. diff --git a/flake.lock b/flake.lock index 603d0f50..65243865 100644 --- a/flake.lock +++ b/flake.lock @@ -5,11 +5,11 @@ "nixpkgs-lib": "nixpkgs-lib" }, "locked": { - "lastModified": 1741352980, - "narHash": "sha256-+u2UunDA4Cl5Fci3m7S643HzKmIDAe+fiXrLqYsR2fs=", + "lastModified": 1743550720, + "narHash": "sha256-hIshGgKZCgWh6AYJpJmRgFdR3WUbkY04o82X05xqQiY=", "owner": "hercules-ci", "repo": "flake-parts", - "rev": "f4330d22f1c5d2ba72d3d22df5597d123fdb60a9", + "rev": "c621e8422220273271f52058f618c94e405bb0f5", "type": "github" }, "original": { @@ -38,11 +38,11 @@ }, "mnw": { "locked": { - "lastModified": 1742255973, - "narHash": "sha256-XfEGVKatTgEMMOVb4SNp1LYLQOSzzrFTDMVDTZFyMVE=", + "lastModified": 1745705214, + "narHash": "sha256-XGfaHbFI4vvDuaoVO3IFYZKezXIO8rhUaMCGcjY71Ac=", "owner": "Gerg-L", "repo": "mnw", - "rev": "b982dbd5e6d55d4438832b3567c09bc2a129649d", + "rev": "c1f4587db4c53dcefa432c46c7a899a116d8e924", "type": "github" }, "original": { @@ -77,11 +77,11 @@ }, "nixpkgs": { "locked": { - "lastModified": 1741865919, - "narHash": "sha256-4thdbnP6dlbdq+qZWTsm4ffAwoS8Tiq1YResB+RP6WE=", + "lastModified": 1745377448, + "narHash": "sha256-jhZDfXVKdD7TSEGgzFJQvEEZ2K65UMiqW5YJ2aIqxMA=", "owner": "nixos", "repo": "nixpkgs", - "rev": "573c650e8a14b2faa0041645ab18aed7e60f0c9a", + "rev": "507b63021ada5fee621b6ca371c4fca9ca46f52c", "type": "github" }, "original": { @@ -93,11 +93,11 @@ }, "nixpkgs-lib": { "locked": { - "lastModified": 1740877520, - "narHash": "sha256-oiwv/ZK/2FhGxrCkQkB83i7GnWXPPLzoqFHpDD3uYpk=", + "lastModified": 1743296961, + "narHash": "sha256-b1EdN3cULCqtorQ4QeWgLMrd5ZGOjLSLemfa00heasc=", "owner": "nix-community", "repo": "nixpkgs.lib", - "rev": "147dee35aab2193b174e4c0868bd80ead5ce755c", + "rev": "e4822aea2a6d1cdd36653c134cacfd64c97ff4fa", "type": "github" }, "original": { diff --git a/flake/legacyPackages/blink-cmp.nix b/flake/legacyPackages/blink-cmp.nix index 477616aa..435cb290 100644 --- a/flake/legacyPackages/blink-cmp.nix +++ b/flake/legacyPackages/blink-cmp.nix @@ -1,9 +1,8 @@ { stdenv, rustPlatform, - hostPlatform, vimUtils, - git, + gitMinimal, src, version, }: let @@ -15,9 +14,9 @@ env.RUSTC_BOOTSTRAP = true; useFetchCargoVendor = true; - cargoHash = "sha256-F1wh/TjYoiIbDY3J/prVF367MKk3vwM7LqOpRobOs7I="; + cargoHash = "sha256-MWElqh7ENJ6CbLOnvz0DsP5YYu+e+y12GSUOfW1IKGU="; - nativeBuildInputs = [git]; + nativeBuildInputs = [gitMinimal]; }; in vimUtils.buildVimPlugin { @@ -34,5 +33,5 @@ in ''; # Module for reproducing issues - nvimSkipModule = ["repro"]; + nvimSkipModules = ["repro"]; } diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix index 5efe2ae2..86497130 100644 --- a/modules/extra/deprecations.nix +++ b/modules/extra/deprecations.nix @@ -104,6 +104,13 @@ in { their behaviour was abstract, and confusing. Please use 'vim.options' or 'vim.luaConfigRC' to replicate previous behaviour. '') + + # 2025-04-04 + (mkRemovedOptionModule ["vim" "lsp" "lsplines"] '' + lsplines module has been removed from nvf, as its functionality is now built into Neovim + under the diagnostics module. Please consider using one of 'vim.diagnostics.config' or + 'vim.luaConfigRC' to configure LSP lines for Neovim through its own diagnostics API. + '') ] # Migrated via batchRenameOptions. Further batch renames must be below this line. diff --git a/modules/neovim/init/autocmds.nix b/modules/neovim/init/autocmds.nix index 5da7bc55..81580e6b 100644 --- a/modules/neovim/init/autocmds.nix +++ b/modules/neovim/init/autocmds.nix @@ -17,7 +17,7 @@ mkEnableOption "" // { default = true; - description = "Whether to enable this autocommand"; + description = "Whether to enable this autocommand."; }; event = mkOption { @@ -31,7 +31,7 @@ type = nullOr (listOf str); default = null; example = ["*.lua" "*.vim"]; - description = "The file pattern(s) that determine when the autocommand applies)."; + description = "The file pattern(s) that determine when the autocommand applies."; }; callback = mkOption { @@ -44,13 +44,16 @@ end '''' ''; - description = "The file pattern(s) that determine when the autocommand applies."; + description = "Lua function to be called when the event(s) are triggered."; }; command = mkOption { type = nullOr str; default = null; - description = "Vim command string instead of a Lua function."; + description = '' + Vim command to be executed when the event(s) are triggered. + Cannot be defined if the `callback` option is already defined. + ''; }; group = mkOption { @@ -70,7 +73,7 @@ once = mkOption { type = bool; default = false; - description = "Whether autocommand run only once."; + description = "Whether to run the autocommand only once."; }; nested = mkOption { @@ -87,7 +90,7 @@ mkEnableOption "" // { default = true; - description = "Whether to enable this autogroup"; + description = "Whether to enable this autocommand group."; }; name = mkOption { @@ -118,8 +121,8 @@ in { autocommands together. Groups allow multiple autocommands to be cleared or redefined collectively, preventing duplicate definitions. - Each autogroup consists of a name, a boolean indicating whether to clear - existing autocommands, and a list of associated autocommands. + Each autogroup consists of a name and a boolean indicating whether to clear + existing autocommands. ''; }; @@ -129,8 +132,8 @@ in { description = '' A list of Neovim autocommands to be registered. - Each entry defines an autocommand, specifying events, patterns, optional - callbacks, commands, groups, and execution settings. + Each entry defines an autocommand, specifying events, patterns, a callback or Vim + command, an optional group, a description, and execution settings. ''; }; }; diff --git a/modules/neovim/init/default.nix b/modules/neovim/init/default.nix index ac9d29e5..0e7a4c6b 100644 --- a/modules/neovim/init/default.nix +++ b/modules/neovim/init/default.nix @@ -3,6 +3,7 @@ ./autocmds.nix ./basic.nix ./debug.nix + ./diagnostics.nix ./highlight.nix ./spellcheck.nix ]; diff --git a/modules/neovim/init/diagnostics.nix b/modules/neovim/init/diagnostics.nix new file mode 100644 index 00000000..18717edf --- /dev/null +++ b/modules/neovim/init/diagnostics.nix @@ -0,0 +1,109 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.types) attrsOf anything oneOf bool submodule; + inherit (lib.nvim.dag) entryAfter; + inherit (lib.nvim.types) luaInline; + inherit (lib.nvim.lua) toLuaObject; + + cfg = config.vim.diagnostics; + + # Takes a boolean, a table, or a Lua list ({key = value}). We + # would like to allow all of those types, while clearly expressing + # them in the option's type. As such, this type is what it is. + diagnosticType = oneOf [(attrsOf anything) bool luaInline]; + diagnosticsSubmodule = submodule { + # The table might need to be extended, so let's allow that case + # with a freeform type of what is supported by diagnostics opts. + freeformType = attrsOf diagnosticType; + options = { + underline = mkOption { + type = diagnosticType; + default = true; + description = "Use underline for diagnostics."; + }; + + virtual_text = mkOption { + type = diagnosticType; + default = false; + example = literalExpression '' + { + format = lib.generators.mkLuaInline ''' + function(diagnostic) + return string.format("%s (%s)", diagnostic.message, diagnostic.source) + end + '''; + } + ''; + + description = '' + Use virtual text for diagnostics. If multiple diagnostics are set for a namespace, + one prefix per diagnostic + the last diagnostic message are shown. + ''; + }; + + virtual_lines = mkOption { + type = diagnosticType; + default = false; + description = '' + Use virtual lines for diagnostics. + ''; + }; + + signs = mkOption { + type = diagnosticType; + default = false; + example = { + signs.text = { + "vim.diagnostic.severity.ERROR" = "󰅚 "; + "vim.diagnostic.severity.WARN" = "󰀪 "; + }; + }; + description = '' + Use signs for diagnostics. See {command}`:help diagnostic-signs`. + ''; + }; + + update_in_insert = mkOption { + type = bool; + default = false; + description = '' + Update diagnostics in Insert mode. If `false`, diagnostics will + be updated on InsertLeave ({command}`:help InsertLeave`). + ''; + }; + }; + }; +in { + options.vim = { + diagnostics = { + enable = mkEnableOption "diagostics module for Neovim"; + config = mkOption { + type = diagnosticsSubmodule; + default = {}; + description = '' + Values that will be passed to `vim.diagnostic.config` after being converted + to a Lua table. Possible values for each key can be found in the help text + for `vim.diagnostics.Opts`. You may find more about the diagnostics API of + Neovim in {command}`:help diagnostic-api`. + + :::{.note} + This option is freeform. You may set values that are not present in nvf + documentation, but those values will not be fully type checked. Please + refer to the help text for `vim.diagnostic.Opts` for appropriate values. + ::: + ''; + }; + }; + }; + + config.vim = mkIf cfg.enable { + luaConfigRC.diagnostics = entryAfter ["basic"] '' + vim.diagnostic.config(${toLuaObject cfg.config}) + ''; + }; +} diff --git a/modules/neovim/init/highlight.nix b/modules/neovim/init/highlight.nix index 7e992fd1..9c6b7214 100644 --- a/modules/neovim/init/highlight.nix +++ b/modules/neovim/init/highlight.nix @@ -5,15 +5,14 @@ }: let inherit (lib.options) mkOption; inherit (lib.types) nullOr attrsOf listOf submodule bool ints str enum; - inherit (lib.strings) hasPrefix concatLines; + inherit (lib.strings) concatLines; inherit (lib.attrsets) mapAttrsToList; inherit (lib.nvim.dag) entryBetween; inherit (lib.nvim.lua) toLuaObject; - inherit (lib.nvim.types) hexColor; mkColorOption = target: mkOption { - type = nullOr hexColor; + type = nullOr str; default = null; example = "#ebdbb2"; description = '' diff --git a/modules/plugins/assistant/chatgpt/config.nix b/modules/plugins/assistant/chatgpt/config.nix index 95a36acf..b1066e5a 100644 --- a/modules/plugins/assistant/chatgpt/config.nix +++ b/modules/plugins/assistant/chatgpt/config.nix @@ -30,7 +30,16 @@ in { config = mkIf cfg.enable { vim = { - startPlugins = ["chatgpt-nvim"]; + startPlugins = [ + "chatgpt-nvim" + + # Dependencies + "nui-nvim" + "plenary-nvim" + ]; + + # ChatGPT.nvim explicitly depends on Telescope. + telescope.enable = true; pluginRC.chagpt = entryAnywhere '' require("chatgpt").setup(${toLuaObject cfg.setupOpts}) diff --git a/modules/plugins/assistant/codecompanion/codecompanion-nvim.nix b/modules/plugins/assistant/codecompanion/codecompanion-nvim.nix index 9ebe30c0..8e5ed4cc 100644 --- a/modules/plugins/assistant/codecompanion/codecompanion-nvim.nix +++ b/modules/plugins/assistant/codecompanion/codecompanion-nvim.nix @@ -9,7 +9,14 @@ in { setupOpts = mkPluginSetupOption "codecompanion-nvim" { opts = { - send_code = mkEnableOption "code from being sent to the LLM."; + send_code = + mkEnableOption "" + // { + default = true; + description = '' + Whether to enable code being sent to the LLM. + ''; + }; log_level = mkOption { type = enum ["DEBUG" "INFO" "ERROR" "TRACE"]; @@ -30,7 +37,10 @@ in { mkEnableOption "" // { default = true; - description = "a diff view to see the changes made by the LLM."; + description = '' + Whether to enable a diff view + to see the changes made by the LLM. + ''; }; close_chat_at = mkOption { @@ -64,7 +74,12 @@ in { }; chat = { - auto_scroll = mkEnableOption "automatic page scrolling."; + auto_scroll = + mkEnableOption "" + // { + default = true; + description = "Whether to enable automatic page scrolling."; + }; show_settings = mkEnableOption '' LLM settings to appear at the top of the chat buffer. @@ -85,14 +100,18 @@ in { mkEnableOption "" // { default = true; - description = "references in the chat buffer."; + description = '' + Whether to enable references in the chat buffer. + ''; }; show_token_count = mkEnableOption "" // { default = true; - description = "the token count for each response."; + description = '' + Whether to enable the token count for each response. + ''; }; intro_message = mkOption { @@ -155,7 +174,10 @@ in { mkEnableOption "" // { default = true; - description = "showing default actions in the action palette."; + description = '' + Whether to enable showing default + actions in the action palette. + ''; }; show_default_prompt_library = @@ -163,7 +185,8 @@ in { // { default = true; description = '' - showing default prompt library in the action palette. + Whether to enable showing default + prompt library in the action palette. ''; }; }; diff --git a/modules/plugins/assistant/codecompanion/config.nix b/modules/plugins/assistant/codecompanion/config.nix index 6b427d28..08fc8cb2 100644 --- a/modules/plugins/assistant/codecompanion/config.nix +++ b/modules/plugins/assistant/codecompanion/config.nix @@ -22,6 +22,11 @@ in { }; treesitter.enable = true; + + autocomplete.nvim-cmp = { + sources = {codecompanion-nvim = "[codecompanion]";}; + sourcePlugins = ["codecompanion-nvim"]; + }; }; }; } diff --git a/modules/plugins/completion/blink-cmp/blink-cmp.nix b/modules/plugins/completion/blink-cmp/blink-cmp.nix index f5e38ed1..65b88815 100644 --- a/modules/plugins/completion/blink-cmp/blink-cmp.nix +++ b/modules/plugins/completion/blink-cmp/blink-cmp.nix @@ -43,19 +43,6 @@ in { default = {}; description = "Settings for completion providers."; }; - - transform_items = mkOption { - type = nullOr luaInline; - default = mkLuaInline "function(_, items) return items end"; - defaultText = '' - Our default does nothing. If you want blink.cmp's default, which - lowers the score for snippets, set this option to null. - ''; - description = '' - Function to use when transforming the items before they're returned - for all providers. - ''; - }; }; cmdline = { diff --git a/modules/plugins/diagnostics/nvim-lint/config.nix b/modules/plugins/diagnostics/nvim-lint/config.nix index 085140dc..488bd70f 100644 --- a/modules/plugins/diagnostics/nvim-lint/config.nix +++ b/modules/plugins/diagnostics/nvim-lint/config.nix @@ -3,18 +3,50 @@ lib, ... }: let - inherit (lib.modules) mkIf; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.generators) mkLuaInline; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.diagnostics.nvim-lint; in { - config = mkIf cfg.enable { - vim = { - startPlugins = ["nvim-lint"]; - pluginRC.nvim-lint = entryAnywhere '' - require("lint").linters_by_ft = ${toLuaObject cfg.linters_by_ft} - ''; - }; - }; + config = mkMerge [ + (mkIf cfg.enable { + vim = { + startPlugins = ["nvim-lint"]; + pluginRC.nvim-lint = entryAnywhere '' + require("lint").linters_by_ft = ${toLuaObject cfg.linters_by_ft} + + local linters = require("lint").linters + local nvf_linters = ${toLuaObject cfg.linters} + for linter, config in pairs(nvf_linters) do + if linters[linter] == nil then + linters[linter] = config + else + for key, val in pairs(config) do + linters[linter][key] = val + end + end + end + + nvf_lint = ${toLuaObject cfg.lint_function} + ''; + }; + }) + (mkIf (cfg.enable && cfg.lint_after_save) { + vim = { + augroups = [{name = "nvf_nvim_lint";}]; + autocmds = [ + { + event = ["BufWritePost"]; + callback = mkLuaInline '' + function(args) + nvf_lint(args.buf) + end + ''; + } + ]; + }; + }) + ]; } diff --git a/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix b/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix index b08d82be..956bd76e 100644 --- a/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix +++ b/modules/plugins/diagnostics/nvim-lint/nvim-lint.nix @@ -1,6 +1,94 @@ {lib, ...}: let - inherit (lib.options) mkOption mkEnableOption; - inherit (lib.types) attrsOf listOf str; + inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.types) nullOr attrsOf listOf str either submodule bool enum; + inherit (lib.nvim.types) luaInline; + inherit (lib.generators) mkLuaInline; + + linterType = submodule { + options = { + name = mkOption { + type = nullOr str; + default = null; + description = "Name of the linter"; + }; + + cmd = mkOption { + type = nullOr str; + default = null; + description = "Command of the linter"; + }; + + args = mkOption { + type = nullOr (listOf (either str luaInline)); + default = null; + description = "Arguments to pass"; + }; + + stdin = mkOption { + type = nullOr bool; + default = null; + description = "Send content via stdin."; + }; + + append_fname = mkOption { + type = nullOr bool; + default = null; + description = '' + Automatically add the current file name to the commands arguments. Only + has an effect if stdin is false + ''; + }; + + stream = mkOption { + type = nullOr (enum ["stdout" "stderr" "both"]); + default = null; + description = "Result stream"; + }; + + ignore_exitcode = mkOption { + type = nullOr bool; + default = null; + description = '' + Declares if exit code != 1 should be ignored or result in a warning. + ''; + }; + + env = mkOption { + type = nullOr (attrsOf str); + default = null; + description = "Environment variables to use"; + }; + + cwd = mkOption { + type = nullOr str; + default = null; + description = "Working directory of the linter"; + }; + + parser = mkOption { + type = nullOr luaInline; + default = null; + description = "Parser function"; + }; + + required_files = mkOption { + type = nullOr (listOf str); + default = null; + example = ["eslint.config.js"]; + description = '' + Required files to lint. These files must exist relative to the cwd + of the linter or else this linter will be skipped + + ::: {.note} + This option is an nvf extension that only takes effect if you + use the `nvf_lint()` lua function. + + See {option}`vim.diagnostics.nvim-lint.lint_function`. + ::: + ''; + }; + }; + }; in { options.vim.diagnostics.nvim-lint = { enable = mkEnableOption "asynchronous linter plugin for Neovim [nvim-lint]"; @@ -21,5 +109,79 @@ in { accept. ''; }; + + linters = mkOption { + type = attrsOf linterType; + default = {}; + example = '' + { + phpcs = { + args = ["-q" "--report-json" "-"]; + + # this will replace the builtin's env table if it exists + env = { + ENV_VAR = "something"; + }; + }; + } + ''; + + description = '' + Linter configurations. Builtin linters will be updated and not + replaced, but note that this is not a deep extend operation, i.e. if + you define an `env` option, it will replace the entire `env` table + provided by the builtin (if it exists). + ''; + }; + + lint_after_save = mkEnableOption "autocmd to lint after each save" // {default = true;}; + + lint_function = mkOption { + type = luaInline; + default = mkLuaInline '' + function(buf) + local ft = vim.api.nvim_get_option_value("filetype", { buf = buf }) + local linters = require("lint").linters + local linters_from_ft = require("lint").linters_by_ft[ft] + + -- if no linter is configured for this filetype, stops linting + if linters_from_ft == nil then return end + + for _, name in ipairs(linters_from_ft) do + local linter = linters[name] + assert(linter, 'Linter with name `' .. name .. '` not available') + + if type(linter) == "function" then + linter = linter() + end + -- for require("lint").lint() to work, linter.name must be set + linter.name = linter.name or name + local cwd = linter.required_files + + -- if no configuration files are configured, lint + if cwd == nil then + require("lint").lint(linter) + else + -- if configuration files are configured and present in the project, lint + for _, fn in ipairs(cwd) do + local path = vim.fs.joinpath(linter.cwd or vim.fn.getcwd(), fn); + if vim.uv.fs_stat(path) then + require("lint").lint(linter) + break + end + end + end + end + end + ''; + example = literalExpression '' + mkLuaInline ''' + function(buf) + require("lint").try_lint() + end + ''' + ''; + description = "Define the global function nvf_lint which is used by nvf to lint."; + }; }; } diff --git a/modules/plugins/formatter/conform-nvim/conform-nvim.nix b/modules/plugins/formatter/conform-nvim/conform-nvim.nix index 423a4f44..727985a3 100644 --- a/modules/plugins/formatter/conform-nvim/conform-nvim.nix +++ b/modules/plugins/formatter/conform-nvim/conform-nvim.nix @@ -4,7 +4,7 @@ ... }: let inherit (lib.options) mkOption mkEnableOption literalExpression; - inherit (lib.types) attrs enum; + inherit (lib.types) attrs enum nullOr; inherit (lib.nvim.types) mkPluginSetupOption; inherit (lib.nvim.lua) mkLuaInline; in { @@ -31,7 +31,7 @@ in { }; format_on_save = mkOption { - type = attrs; + type = nullOr attrs; default = { lsp_format = "fallback"; timeout_ms = 500; @@ -43,7 +43,7 @@ in { }; format_after_save = mkOption { - type = attrs; + type = nullOr attrs; default = {lsp_format = "fallback";}; description = '' Table that will be passed to `conform.format()`. If this diff --git a/modules/plugins/git/default.nix b/modules/plugins/git/default.nix index 6ed92217..06c80f35 100644 --- a/modules/plugins/git/default.nix +++ b/modules/plugins/git/default.nix @@ -5,6 +5,7 @@ in { ./gitsigns ./vim-fugitive ./git-conflict + ./gitlinker-nvim ]; options.vim.git = { @@ -15,6 +16,7 @@ in { * gitsigns * vim-fugitive * git-conflict + * gitlinker-nvim ''; }; } diff --git a/modules/plugins/git/gitlinker-nvim/config.nix b/modules/plugins/git/gitlinker-nvim/config.nix new file mode 100644 index 00000000..749cf18c --- /dev/null +++ b/modules/plugins/git/gitlinker-nvim/config.nix @@ -0,0 +1,22 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + + cfg = config.vim.git.gitlinker-nvim; +in { + config = mkIf cfg.enable { + vim = { + lazy.plugins = { + "gitlinker-nvim" = { + package = "gitlinker-nvim"; + setupModule = "gitlinker"; + inherit (cfg) setupOpts; + cmd = ["GitLink"]; + }; + }; + }; + }; +} diff --git a/modules/plugins/git/gitlinker-nvim/default.nix b/modules/plugins/git/gitlinker-nvim/default.nix new file mode 100644 index 00000000..389b7a55 --- /dev/null +++ b/modules/plugins/git/gitlinker-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./gitlinker-nvim.nix + ]; +} diff --git a/modules/plugins/git/gitlinker-nvim/gitlinker-nvim.nix b/modules/plugins/git/gitlinker-nvim/gitlinker-nvim.nix new file mode 100644 index 00000000..f315e5f9 --- /dev/null +++ b/modules/plugins/git/gitlinker-nvim/gitlinker-nvim.nix @@ -0,0 +1,13 @@ +{ + config, + lib, + ... +}: let + inherit (lib.options) mkEnableOption; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + options.vim.git.gitlinker-nvim = { + enable = mkEnableOption "gitlinker-nvim" // {default = config.vim.git.enable;}; + setupOpts = mkPluginSetupOption "gitlinker-nvim" {}; + }; +} diff --git a/modules/plugins/git/gitsigns/config.nix b/modules/plugins/git/gitsigns/config.nix index 9aee73b7..99927546 100644 --- a/modules/plugins/git/gitsigns/config.nix +++ b/modules/plugins/git/gitsigns/config.nix @@ -5,6 +5,7 @@ }: let inherit (builtins) toJSON; inherit (lib.modules) mkIf mkMerge; + inherit (lib.generators) mkLuaInline; inherit (lib.nvim.binds) addDescriptionsToMappings mkSetExprBinding mkSetLuaBinding pushDownDefault; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; @@ -32,6 +33,7 @@ in { return '' end '') + (mkSetExprBinding gsMappings.previousHunk '' function() if vim.wo.diff then return ${toJSON gsMappings.previousHunk.value} end @@ -77,13 +79,12 @@ in { } (mkIf cfg.codeActions.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.gitsigns-ca = '' - table.insert( - ls_sources, - null_ls.builtins.code_actions.gitsigns - ) - ''; + vim.lsp.null-ls = { + enable = true; + setupOpts.sources.gitsigns-ca = mkLuaInline '' + require("null-ls").builtins.code_actions.gitsigns + ''; + }; }) ]); } diff --git a/modules/plugins/languages/astro.nix b/modules/plugins/languages/astro.nix index d5672af0..2ecbbe47 100644 --- a/modules/plugins/languages/astro.nix +++ b/modules/plugins/languages/astro.nix @@ -10,8 +10,8 @@ inherit (lib.lists) isList; inherit (lib.meta) getExe; inherit (lib.types) enum either listOf package str; + inherit (lib.generators) mkLuaInline; inherit (lib.nvim.lua) expToLua; - inherit (lib.nvim.languages) diagnosticsToLua; inherit (lib.nvim.types) mkGrammarOption diagnostics; cfg = config.vim.languages.astro; @@ -22,7 +22,7 @@ package = pkgs.astro-language-server; lspConfig = '' lspconfig.astro.setup { - capabilities = capabilities; + capabilities = capabilities, on_attach = attach_keymaps, cmd = ${ if isList cfg.lsp.package @@ -39,52 +39,35 @@ formats = { prettier = { package = pkgs.nodePackages.prettier; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.prettier.with({ - command = "${cfg.format.package}/bin/prettier", - }) - ) - ''; + }; + + prettierd = { + package = pkgs.prettierd; }; biome = { package = pkgs.biome; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.biome.with({ - command = "${cfg.format.package}/bin/biome", - }) - ) - ''; }; }; # TODO: specify packages defaultDiagnosticsProvider = ["eslint_d"]; diagnosticsProviders = { - eslint_d = { - package = pkgs.eslint_d; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.eslint_d.with({ - command = "${getExe pkg}", - condition = function(utils) - return utils.root_has_file({ - "eslint.config.js", - "eslint.config.mjs", - ".eslintrc", - ".eslintrc.json", - ".eslintrc.js", - ".eslintrc.yml", - }) - end, - }) - ) - ''; + eslint_d = let + pkg = pkgs.eslint_d; + in { + package = pkg; + config = { + cmd = getExe pkg; + required_files = [ + "eslint.config.js" + "eslint.config.mjs" + ".eslintrc" + ".eslintrc.json" + ".eslintrc.js" + ".eslintrc.yml" + ]; + }; }; }; in { @@ -101,16 +84,16 @@ in { enable = mkEnableOption "Astro LSP support" // {default = config.vim.languages.enableLSP;}; server = mkOption { - description = "Astro LSP server to use"; type = enum (attrNames servers); default = defaultServer; + description = "Astro LSP server to use"; }; package = mkOption { - description = "Astro LSP server package, or the command to run as a list of strings"; - example = ''[lib.getExe pkgs.astro-language-server "--minify" "--stdio"]''; type = either package (listOf str); default = servers.${cfg.lsp.server}.package; + example = ''[lib.getExe pkgs.astro-language-server "--minify" "--stdio"]''; + description = "Astro LSP server package, or the command to run as a list of strings"; }; }; @@ -153,16 +136,22 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.astro-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.astro = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "astro"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.astro = cfg.extraDiagnostics.types; + linters = + mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/bash.nix b/modules/plugins/languages/bash.nix index c0066b3c..bfe01032 100644 --- a/modules/plugins/languages/bash.nix +++ b/modules/plugins/languages/bash.nix @@ -6,10 +6,10 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkOption mkEnableOption literalExpression; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.types) enum either package listOf str bool; - inherit (lib.nvim.languages) diagnosticsToLua; inherit (lib.nvim.types) diagnostics mkGrammarOption; inherit (lib.nvim.lua) expToLua; @@ -37,14 +37,6 @@ formats = { shfmt = { package = pkgs.shfmt; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.shfmt.with({ - command = "${pkgs.shfmt}/bin/shfmt", - }) - ) - ''; }; }; @@ -52,15 +44,6 @@ diagnosticsProviders = { shellcheck = { package = pkgs.shellcheck; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.shellcheck.with({ - command = "${pkg}/bin/shellcheck", - diagnostics_format = "#{m} [#{c}]" - }) - ) - ''; }; }; in { @@ -130,16 +113,23 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.bash-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.sh = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "bash"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.sh = cfg.extraDiagnostics.types; + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/css.nix b/modules/plugins/languages/css.nix index 8330a41a..d103f241 100644 --- a/modules/plugins/languages/css.nix +++ b/modules/plugins/languages/css.nix @@ -6,6 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str; @@ -42,14 +43,6 @@ formats = { prettier = { package = pkgs.nodePackages.prettier; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.prettier.with({ - command = "${cfg.format.package}/bin/prettier", - }) - ) - ''; }; prettierd = { @@ -132,8 +125,13 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.css-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.css = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) ]); } diff --git a/modules/plugins/languages/dart.nix b/modules/plugins/languages/dart.nix index 4f8a7028..7b9584b9 100644 --- a/modules/plugins/languages/dart.nix +++ b/modules/plugins/languages/dart.nix @@ -13,7 +13,7 @@ inherit (lib.strings) optionalString; inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.types) mkGrammarOption; - inherit (lib.nvim.dag) entryAnywhere; + inherit (lib.nvim.dag) entryAfter; cfg = config.vim.languages.dart; ftcfg = cfg.flutter-tools; @@ -81,16 +81,25 @@ in { description = "Enable flutter-tools for flutter support"; }; + flutterPackage = mkOption { + type = nullOr package; + default = pkgs.flutter; + description = "Flutter package, or null to detect the flutter path at runtime instead."; + }; + enableNoResolvePatch = mkOption { type = bool; - default = true; + default = false; description = '' Whether to patch flutter-tools so that it doesn't resolve symlinks when detecting flutter path. - This is required if you want to use a flutter package built with nix. - If you are using a flutter SDK installed from a different source - and encounter the error "`dart` missing from PATH", disable this option. + ::: {.note} + This is required if `flutterPackage` is set to null and the flutter + package in your `PATH` was built with Nix. If you are using a flutter + SDK installed from a different source and encounter the error "`dart` + missing from `PATH`", leave this option disabled. + ::: ''; }; @@ -122,25 +131,32 @@ in { }; }; - config = mkIf cfg.enable (mkMerge [ + config.vim = mkIf cfg.enable (mkMerge [ (mkIf cfg.treesitter.enable { - vim.treesitter.enable = true; - vim.treesitter.grammars = [cfg.treesitter.package]; + treesitter.enable = true; + treesitter.grammars = [cfg.treesitter.package]; }) (mkIf cfg.lsp.enable { - vim.lsp.lspconfig.enable = true; - vim.lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig; + lsp.lspconfig.enable = true; + lsp.lspconfig.sources.dart-lsp = servers.${cfg.lsp.server}.lspConfig; }) (mkIf ftcfg.enable { - vim.startPlugins = - if ftcfg.enableNoResolvePatch - then ["flutter-tools-patched"] - else ["flutter-tools-nvim"]; + lsp.enable = true; - vim.pluginRC.flutter-tools = entryAnywhere '' + startPlugins = [ + ( + if ftcfg.enableNoResolvePatch + then "flutter-tools-patched" + else "flutter-tools-nvim" + ) + "plenary-nvim" + ]; + + pluginRC.flutter-tools = entryAfter ["lsp-setup"] '' require('flutter-tools').setup { + ${optionalString (ftcfg.flutterPackage != null) "flutter_path = \"${ftcfg.flutterPackage}/bin/flutter\","} lsp = { color = { -- show the derived colours for dart variables enabled = ${boolToString ftcfg.color.enable}, -- whether or not to highlight color variables at all, only supported on flutter >= 2.10 @@ -152,7 +168,6 @@ in { capabilities = capabilities, on_attach = default_on_attach; - flags = lsp_flags, }, ${optionalString cfg.dap.enable '' debugger = { diff --git a/modules/plugins/languages/default.nix b/modules/plugins/languages/default.nix index 20acfb6c..c3312135 100644 --- a/modules/plugins/languages/default.nix +++ b/modules/plugins/languages/default.nix @@ -10,6 +10,7 @@ in { ./clang.nix ./css.nix ./elixir.nix + ./fsharp.nix ./gleam.nix ./go.nix ./hcl.nix diff --git a/modules/plugins/languages/elixir.nix b/modules/plugins/languages/elixir.nix index f8f338b1..7b3a0256 100644 --- a/modules/plugins/languages/elixir.nix +++ b/modules/plugins/languages/elixir.nix @@ -38,14 +38,9 @@ formats = { mix = { package = pkgs.elixir; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.mix.with({ - command = "${cfg.format.package}/bin/mix", - }) - ) - ''; + config = { + command = "${cfg.format.package}/bin/mix"; + }; }; }; in { @@ -107,8 +102,12 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.elixir-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.elixir = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = + formats.${cfg.format.type}.config; + }; }) (mkIf cfg.elixir-tools.enable { diff --git a/modules/plugins/languages/fsharp.nix b/modules/plugins/languages/fsharp.nix new file mode 100644 index 00000000..966b0349 --- /dev/null +++ b/modules/plugins/languages/fsharp.nix @@ -0,0 +1,107 @@ +{ + lib, + pkgs, + config, + ... +}: let + inherit (builtins) attrNames; + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) either listOf package str enum; + inherit (lib.meta) getExe; + inherit (lib.modules) mkIf mkMerge; + inherit (lib.lists) isList; + inherit (lib.nvim.types) mkGrammarOption; + inherit (lib.nvim.lua) expToLua; + + defaultServer = "fsautocomplete"; + servers = { + fsautocomplete = { + package = pkgs.fsautocomplete; + internalFormatter = false; + lspConfig = '' + lspconfig.fsautocomplete.setup { + capabilities = capabilities; + on_attach = default_on_attach; + cmd = ${ + if isList cfg.lsp.package + then expToLua cfg.lsp.package + else "{'${cfg.lsp.package}/bin/fsautocomplete'}" + }, + } + ''; + }; + }; + + defaultFormat = "fantomas"; + formats = { + fantomas = { + package = pkgs.fantomas; + }; + }; + + cfg = config.vim.languages.fsharp; +in { + options = { + vim.languages.fsharp = { + enable = mkEnableOption "F# language support"; + + treesitter = { + enable = mkEnableOption "F# treesitter" // {default = config.vim.languages.enableTreesitter;}; + package = mkGrammarOption pkgs "fsharp"; + }; + + lsp = { + enable = mkEnableOption "F# LSP support" // {default = config.vim.languages.enableLSP;}; + server = mkOption { + type = enum (attrNames servers); + default = defaultServer; + description = "F# LSP server to use"; + }; + + package = mkOption { + type = either package (listOf str); + default = servers.${cfg.lsp.server}.package; + example = ''[lib.getExe pkgs.fsautocomplete "--state-directory" "~/.cache/fsautocomplete"]''; + description = "F# LSP server package, or the command to run as a list of strings"; + }; + }; + format = { + enable = mkEnableOption "F# formatting" // {default = config.vim.languages.enableFormat;}; + + type = mkOption { + type = enum (attrNames formats); + default = defaultFormat; + description = "F# formatter to use"; + }; + + package = mkOption { + type = package; + default = formats.${cfg.format.type}.package; + description = "F# formatter package"; + }; + }; + }; + }; + + config = mkIf cfg.enable (mkMerge [ + (mkIf cfg.treesitter.enable { + vim.treesitter.enable = true; + vim.treesitter.grammars = [cfg.treesitter.package]; + }) + + (mkIf cfg.lsp.enable { + vim.lsp.lspconfig.enable = true; + vim.lsp.lspconfig.sources.fsharp-lsp = servers.${cfg.lsp.server}.lspConfig; + }) + + (mkIf cfg.format.enable { + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.fsharp = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; + }) + ]); +} diff --git a/modules/plugins/languages/go.nix b/modules/plugins/languages/go.nix index 3ac9ae77..3f232669 100644 --- a/modules/plugins/languages/go.nix +++ b/modules/plugins/languages/go.nix @@ -5,7 +5,7 @@ ... }: let inherit (builtins) attrNames; - inherit (lib.options) mkEnableOption mkOption; + inherit (lib.options) mkEnableOption mkOption literalMD; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.lists) isList; @@ -38,36 +38,15 @@ formats = { gofmt = { package = pkgs.go; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.gofmt.with({ - command = "${cfg.format.package}/bin/gofmt", - }) - ) - ''; + config.command = "${cfg.format.package}/bin/gofmt"; }; gofumpt = { package = pkgs.gofumpt; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.gofumpt.with({ - command = "${cfg.format.package}/bin/gofumpt", - }) - ) - ''; + config.command = getExe cfg.format.package; }; golines = { package = pkgs.golines; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.golines.with({ - command = "${cfg.format.package}/bin/golines", - }) - ) - ''; + config.command = "${cfg.format.package}/bin/golines"; }; }; @@ -105,7 +84,14 @@ in { }; format = { - enable = mkEnableOption "Go formatting" // {default = config.vim.languages.enableFormat;}; + enable = + mkEnableOption "Go formatting" + // { + default = !cfg.lsp.enable && config.vim.languages.enableFormat; + defaultText = literalMD '' + disabled if Go LSP is enabled, otherwise follows {option}`vim.languages.enableFormat` + ''; + }; type = mkOption { description = "Go formatter to use"; @@ -153,8 +139,11 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.go-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.go = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = formats.${cfg.format.type}.config; + }; }) (mkIf cfg.dap.enable { diff --git a/modules/plugins/languages/hcl.nix b/modules/plugins/languages/hcl.nix index e340e74d..3a3db782 100644 --- a/modules/plugins/languages/hcl.nix +++ b/modules/plugins/languages/hcl.nix @@ -6,6 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.types) package bool enum; inherit (lib.nvim.types) mkGrammarOption; @@ -30,14 +31,6 @@ formats = { hclfmt = { package = pkgs.hclfmt; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.hclfmt.with({ - command = "${lib.getExe cfg.format.package}", - }) - ) - ''; }; }; in { @@ -110,8 +103,13 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.hcl-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.hcl = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) ]); } diff --git a/modules/plugins/languages/kotlin.nix b/modules/plugins/languages/kotlin.nix index 03433215..2ddc63e9 100644 --- a/modules/plugins/languages/kotlin.nix +++ b/modules/plugins/languages/kotlin.nix @@ -7,7 +7,6 @@ inherit (lib.options) mkEnableOption mkOption literalExpression; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; - inherit (lib.nvim.languages) diagnosticsToLua; inherit (lib.types) either package listOf str; inherit (lib.nvim.types) mkGrammarOption diagnostics; inherit (lib.lists) isList; @@ -19,14 +18,6 @@ diagnosticsProviders = { ktlint = { package = pkgs.ktlint; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.ktlint.with({ - command = "${getExe pkg}", - }) - ) - ''; }; }; in { @@ -76,11 +67,13 @@ in { }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "kotlin"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.kotlin = cfg.extraDiagnostics.types; + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); }; }) diff --git a/modules/plugins/languages/lua.nix b/modules/plugins/languages/lua.nix index 4ad49784..d5be4905 100644 --- a/modules/plugins/languages/lua.nix +++ b/modules/plugins/languages/lua.nix @@ -4,16 +4,30 @@ lib, ... }: let + inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.meta) getExe; inherit (lib.lists) isList; - inherit (lib.types) either listOf package str; - inherit (lib.nvim.types) mkGrammarOption; + inherit (lib.types) bool either enum listOf package str; + inherit (lib.nvim.types) diagnostics mkGrammarOption; inherit (lib.nvim.lua) expToLua; inherit (lib.nvim.dag) entryBefore; cfg = config.vim.languages.lua; + defaultFormat = "stylua"; + formats = { + stylua = { + package = pkgs.stylua; + }; + }; + + defaultDiagnosticsProvider = ["luacheck"]; + diagnosticsProviders = { + luacheck = { + package = pkgs.luajitPackages.luacheck; + }; + }; in { imports = [ (lib.mkRemovedOptionModule ["vim" "languages" "lua" "lsp" "neodev"] '' @@ -39,6 +53,34 @@ in { lazydev.enable = mkEnableOption "lazydev.nvim integration, useful for neovim plugin developers"; }; + + format = { + enable = mkOption { + type = bool; + default = config.vim.languages.enableFormat; + description = "Enable Lua formatting"; + }; + type = mkOption { + type = enum (attrNames formats); + default = defaultFormat; + description = "Lua formatter to use"; + }; + + package = mkOption { + type = package; + default = formats.${cfg.format.type}.package; + description = "Lua formatter package"; + }; + }; + + extraDiagnostics = { + enable = mkEnableOption "extra Lua diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + types = diagnostics { + langDesc = "Lua"; + inherit diagnosticsProviders; + inherit defaultDiagnosticsProvider; + }; + }; }; config = mkMerge [ @@ -74,6 +116,27 @@ in { }) ''; }) + + (mkIf cfg.format.enable { + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.lua = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; + }) + + (mkIf cfg.extraDiagnostics.enable { + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.lua = cfg.extraDiagnostics.types; + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); + }; + }) ])) ]; } diff --git a/modules/plugins/languages/markdown.nix b/modules/plugins/languages/markdown.nix index ac098a1c..4563bc44 100644 --- a/modules/plugins/languages/markdown.nix +++ b/modules/plugins/languages/markdown.nix @@ -5,12 +5,13 @@ ... }: let inherit (builtins) attrNames; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.options) mkEnableOption mkOption; - inherit (lib.lists) isList concatLists; - inherit (lib.types) bool enum either package listOf str; + inherit (lib.lists) isList; + inherit (lib.types) bool enum either package listOf str nullOr; inherit (lib.nvim.lua) expToLua toLuaObject; - inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption; + inherit (lib.nvim.types) diagnostics mkGrammarOption mkPluginSetupOption; inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.languages.markdown; @@ -32,31 +33,23 @@ }; }; - defaultFormat = "denofmt"; + defaultFormat = "deno_fmt"; formats = { + # for backwards compatibility denofmt = { package = pkgs.deno; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.deno_fmt.with({ - filetypes = ${expToLua (concatLists [cfg.format.extraFiletypes ["markdown"]])}, - command = "${cfg.format.package}/bin/deno", - }) - ) - ''; + }; + deno_fmt = { + package = pkgs.deno; }; prettierd = { package = pkgs.prettierd; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.prettierd.with({ - filetypes = ${expToLua (concatLists [cfg.format.extraFiletypes ["markdown"]])}, - command = "${cfg.format.package}/bin/prettierd", - }) - ) - ''; + }; + }; + defaultDiagnosticsProvider = ["markdownlint-cli2"]; + diagnosticsProviders = { + markdownlint-cli2 = { + package = pkgs.markdownlint-cli2; }; }; in { @@ -96,7 +89,7 @@ in { type = mkOption { type = enum (attrNames formats); default = defaultFormat; - description = "Markdown formatter to use"; + description = "Markdown formatter to use. `denofmt` is deprecated and currently aliased to deno_fmt."; }; package = mkOption { @@ -121,19 +114,32 @@ in { [render-markdown.nvim]: https://github.com/MeanderingProgrammer/render-markdown.nvim Inline Markdown rendering with [render-markdown.nvim] - ''; }; setupOpts = mkPluginSetupOption "render-markdown" { - auto_override_publish_diagnostics = mkOption { - description = "Automatically override the publish_diagnostics handler"; - type = bool; - default = true; + file_types = lib.mkOption { + type = nullOr (listOf str); + default = null; + description = '' + List of buffer filetypes to enable this plugin in. + + This will cause the plugin to attach to new buffers who + have any of these filetypes. + ''; }; }; }; }; + + extraDiagnostics = { + enable = mkEnableOption "extra Markdown diagnostics" // {default = config.vim.languages.enableExtraDiagnostics;}; + types = diagnostics { + langDesc = "Markdown"; + inherit diagnosticsProviders; + inherit defaultDiagnosticsProvider; + }; + }; }; config = mkIf cfg.enable (mkMerge [ @@ -148,8 +154,17 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.markdown-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.markdown = [cfg.format.type]; + setupOpts.formatters.${ + if cfg.format.type == "denofmt" + then "deno_fmt" + else cfg.format.type + } = { + command = getExe cfg.format.package; + }; + }; }) # Extensions @@ -159,5 +174,16 @@ in { require("render-markdown").setup(${toLuaObject cfg.extensions.render-markdown-nvim.setupOpts}) ''; }) + + (mkIf cfg.extraDiagnostics.enable { + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.markdown = cfg.extraDiagnostics.types; + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); + }; + }) ]); } diff --git a/modules/plugins/languages/nim.nix b/modules/plugins/languages/nim.nix index f218038e..69288223 100644 --- a/modules/plugins/languages/nim.nix +++ b/modules/plugins/languages/nim.nix @@ -6,6 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str; @@ -38,14 +39,9 @@ formats = { nimpretty = { package = pkgs.nim; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.nimpretty.with({ - command = "${pkgs.nim}/bin/nimpretty", - }) - ) - ''; + config = { + command = "${cfg.format.package}/bin/nimpretty"; + }; }; }; in { @@ -110,8 +106,11 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.nim-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.nim = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = formats.${cfg.format.type}.config; + }; }) ]); } diff --git a/modules/plugins/languages/nix.nix b/modules/plugins/languages/nix.nix index 54c11af2..ad16a34e 100644 --- a/modules/plugins/languages/nix.nix +++ b/modules/plugins/languages/nix.nix @@ -6,6 +6,7 @@ }: let inherit (builtins) attrNames; inherit (lib) concatStringsSep; + inherit (lib.meta) getExe; inherit (lib.options) mkEnableOption mkOption; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; @@ -13,7 +14,6 @@ inherit (lib.types) anything attrsOf enum either listOf nullOr package str; inherit (lib.nvim.types) mkGrammarOption diagnostics; inherit (lib.nvim.lua) expToLua toLuaObject; - inherit (lib.nvim.languages) diagnosticsToLua; cfg = config.vim.languages.nix; @@ -100,26 +100,10 @@ formats = { alejandra = { package = pkgs.alejandra; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.alejandra.with({ - command = "${cfg.format.package}/bin/alejandra" - }) - ) - ''; }; nixfmt = { package = pkgs.nixfmt-rfc-style; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.nixfmt.with({ - command = "${cfg.format.package}/bin/nixfmt" - }) - ) - ''; }; }; @@ -237,17 +221,24 @@ in { vim.lsp.lspconfig.sources.nix-lsp = servers.${cfg.lsp.server}.lspConfig; }) - (mkIf (cfg.format.enable && !servers.${cfg.lsp.server}.internalFormatter) { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.nix-format = formats.${cfg.format.type}.nullConfig; + (mkIf (cfg.format.enable && (!cfg.lsp.enable || !servers.${cfg.lsp.server}.internalFormatter)) { + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.nix = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "nix"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.nix = cfg.extraDiagnostics.types; + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/ocaml.nix b/modules/plugins/languages/ocaml.nix index ddfa85e4..568b846e 100644 --- a/modules/plugins/languages/ocaml.nix +++ b/modules/plugins/languages/ocaml.nix @@ -37,14 +37,6 @@ formats = { ocamlformat = { package = pkgs.ocamlPackages.ocamlformat; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.ocamlformat.with({ - command = "${cfg.format.package}/bin/ocamlformat", - }) - ) - ''; }; }; in { @@ -97,9 +89,13 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.ocamlformat = formats.${cfg.format.type}.nullConfig; - vim.extraPackages = [formats.${cfg.format.type}.package]; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.ocaml = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) ]); } diff --git a/modules/plugins/languages/python.nix b/modules/plugins/languages/python.nix index 0a3c6c8a..9905716e 100644 --- a/modules/plugins/languages/python.nix +++ b/modules/plugins/languages/python.nix @@ -47,7 +47,7 @@ }; python-lsp-server = { - package = pkgs.python-lsp-server; + package = pkgs.python3Packages.python-lsp-server; lspConfig = '' lspconfig.pylsp.setup{ capabilities = capabilities; @@ -66,26 +66,10 @@ formats = { black = { package = pkgs.black; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.black.with({ - command = "${cfg.format.package}/bin/black", - }) - ) - ''; }; isort = { package = pkgs.isort; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.isort.with({ - command = "${cfg.format.package}/bin/isort", - }) - ) - ''; }; black-and-isort = { @@ -96,15 +80,6 @@ black --quiet - "$@" | isort --profile black - ''; }; - - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.black.with({ - command = "${cfg.format.package}/bin/black", - }) - ) - ''; }; ruff = { @@ -115,14 +90,6 @@ ruff format - ''; }; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.ruff.with({ - command = "${cfg.format.package}/bin/ruff", - }) - ) - ''; }; }; @@ -132,7 +99,7 @@ # idk if this is the best way to install/run debugpy package = pkgs.python3.withPackages (ps: with ps; [debugpy]); dapConfig = '' - dap.adapters.python = function(cb, config) + dap.adapters.debugpy = function(cb, config) if config.request == 'attach' then ---@diagnostic disable-next-line: undefined-field local port = (config.connect or config).port @@ -161,7 +128,7 @@ dap.configurations.python = { { -- The first three options are required by nvim-dap - type = 'python'; -- the type here established the link to the adapter definition: `dap.adapters.python` + type = 'debugpy'; -- the type here established the link to the adapter definition: `dap.adapters.debugpy` request = 'launch'; name = "Launch file"; @@ -272,8 +239,22 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.python-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + # HACK: I'm planning to remove these soon so I just took the easiest way out + setupOpts.formatters_by_ft.python = + if cfg.format.type == "black-and-isort" + then ["black"] + else [cfg.format.type]; + setupOpts.formatters = + if (cfg.format.type == "black-and-isort") + then { + black.command = "${cfg.format.package}/bin/black"; + } + else { + ${cfg.format.type}.command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.dap.enable { diff --git a/modules/plugins/languages/r.nix b/modules/plugins/languages/r.nix index 8a685a01..fcadcc37 100644 --- a/modules/plugins/languages/r.nix +++ b/modules/plugins/languages/r.nix @@ -24,28 +24,29 @@ package = pkgs.rWrapper.override { packages = [pkgs.rPackages.styler]; }; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.styler.with({ - command = "${cfg.format.package}/bin/R", - }) - ) - ''; + config = { + command = "${cfg.format.package}/bin/R"; + }; }; format_r = { package = pkgs.rWrapper.override { packages = [pkgs.rPackages.formatR]; }; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.format_r.with({ - command = "${cfg.format.package}/bin/R", - }) - ) - ''; + config = { + command = "${cfg.format.package}/bin/R"; + stdin = true; + args = [ + "--slave" + "--no-restore" + "--no-save" + "-s" + "-e" + ''formatR::tidy_source(source="stdin")'' + ]; + # TODO: range_args seem to be possible + # https://github.com/nvimtools/none-ls.nvim/blob/main/lua/null-ls/builtins/formatting/format_r.lua + }; }; }; @@ -118,8 +119,11 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.r-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.r = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = formats.${cfg.format.type}.config; + }; }) (mkIf cfg.lsp.enable { diff --git a/modules/plugins/languages/ruby.nix b/modules/plugins/languages/ruby.nix index 33f11d5d..2f42aa4f 100644 --- a/modules/plugins/languages/ruby.nix +++ b/modules/plugins/languages/ruby.nix @@ -6,10 +6,10 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.nvim.types) mkGrammarOption diagnostics; inherit (lib.types) either listOf package str enum; - inherit (lib.nvim.languages) diagnosticsToLua; cfg = config.vim.languages.ruby; @@ -35,24 +35,8 @@ defaultFormat = "rubocop"; formats = { rubocop = { + # TODO: is this right? package = pkgs.rubyPackages.rubocop; - nullConfig = '' - local conditional = function(fn) - local utils = require("null-ls.utils").make_conditional_utils() - return fn(utils) - end - - table.insert( - ls_sources, - null_ls.builtins.formatting.rubocop.with({ - command="${pkgs.bundler}/bin/bundle", - args = vim.list_extend( - {"exec", "rubocop", "-a" }, - null_ls.builtins.formatting.rubocop._opts.args - ), - }) - ) - ''; }; }; @@ -60,14 +44,7 @@ diagnosticsProviders = { rubocop = { package = pkgs.rubyPackages.rubocop; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.rubocop.with({ - command = "${lib.getExe pkg}", - }) - ) - ''; + config.command = getExe cfg.format.package; }; }; in { @@ -136,16 +113,23 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.ruby-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.ruby = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "ruby"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.ruby = cfg.extraDiagnostics.types; + linters = mkMerge (map (name: { + ${name}.cmd = getExe diagnosticsProviders.${name}.package; + }) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/rust.nix b/modules/plugins/languages/rust.nix index aea10687..2181623a 100644 --- a/modules/plugins/languages/rust.nix +++ b/modules/plugins/languages/rust.nix @@ -5,6 +5,7 @@ ... }: let inherit (builtins) attrNames; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.options) mkOption mkEnableOption; inherit (lib.strings) optionalString; @@ -21,14 +22,6 @@ formats = { rustfmt = { package = pkgs.rustfmt; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.rustfmt.with({ - command = "${cfg.format.package}/bin/rustfmt", - }) - ) - ''; }; }; in { @@ -128,8 +121,13 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.rust-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.rust = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf (cfg.lsp.enable || cfg.dap.enable) { diff --git a/modules/plugins/languages/sql.nix b/modules/plugins/languages/sql.nix index ed08ee72..277dbeef 100644 --- a/modules/plugins/languages/sql.nix +++ b/modules/plugins/languages/sql.nix @@ -6,11 +6,11 @@ }: let inherit (builtins) attrNames; inherit (lib.options) mkEnableOption mkOption; + inherit (lib.meta) getExe; inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.types) enum either listOf package str; inherit (lib.nvim.lua) expToLua; - inherit (lib.nvim.languages) diagnosticsToLua; inherit (lib.nvim.types) diagnostics; cfg = config.vim.languages.sql; @@ -41,15 +41,10 @@ formats = { sqlfluff = { package = sqlfluffDefault; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.sqlfluff.with({ - command = "${cfg.format.package}/bin/sqlfluff", - extra_args = {"--dialect", "${cfg.dialect}"} - }) - ) - ''; + config = { + command = getExe cfg.format.package; + append_args = ["--dialect=${cfg.dialect}"]; + }; }; }; @@ -57,15 +52,10 @@ diagnosticsProviders = { sqlfluff = { package = sqlfluffDefault; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.sqlfluff.with({ - command = "${pkg}/bin/sqlfluff", - extra_args = {"--dialect", "${cfg.dialect}"} - }) - ) - ''; + config = { + cmd = getExe sqlfluffDefault; + args = ["lint" "--format=json" "--dialect=${cfg.dialect}"]; + }; }; }; in { @@ -150,16 +140,20 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources."sql-format" = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.sql = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = formats.${cfg.format.type}.config; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "sql"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.sql = cfg.extraDiagnostics.types; + linters = + mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/svelte.nix b/modules/plugins/languages/svelte.nix index 4d96c20a..536ff2c1 100644 --- a/modules/plugins/languages/svelte.nix +++ b/modules/plugins/languages/svelte.nix @@ -9,9 +9,9 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.meta) getExe; + inherit (lib.generators) mkLuaInline; inherit (lib.types) enum either listOf package str; inherit (lib.nvim.lua) expToLua; - inherit (lib.nvim.languages) diagnosticsToLua; inherit (lib.nvim.types) mkGrammarOption diagnostics; cfg = config.vim.languages.svelte; @@ -39,52 +39,31 @@ formats = { prettier = { package = pkgs.nodePackages.prettier; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.prettier.with({ - command = "${cfg.format.package}/bin/prettier", - }) - ) - ''; }; biome = { package = pkgs.biome; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.biome.with({ - command = "${cfg.format.package}/bin/biome", - }) - ) - ''; }; }; # TODO: specify packages defaultDiagnosticsProvider = ["eslint_d"]; diagnosticsProviders = { - eslint_d = { - package = pkgs.eslint_d; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.eslint_d.with({ - command = "${getExe pkg}", - condition = function(utils) - return utils.root_has_file({ - "eslint.config.js", - "eslint.config.mjs", - ".eslintrc", - ".eslintrc.json", - ".eslintrc.js", - ".eslintrc.yml", - }) - end, - }) - ) - ''; + eslint_d = let + pkg = pkgs.eslint_d; + in { + package = pkg; + config = { + cmd = getExe pkg; + required_files = [ + "eslint.config.js" + "eslint.config.mjs" + ".eslintrc" + ".eslintrc.json" + ".eslintrc.js" + ".eslintrc.yml" + ]; + }; }; }; in { @@ -153,16 +132,22 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.svelte-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.svelte = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "svelte"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.svelte = cfg.extraDiagnostics.types; + linters = + mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) + cfg.extraDiagnostics.types); }; }) ]); diff --git a/modules/plugins/languages/ts.nix b/modules/plugins/languages/ts.nix index 790c235a..df1353ab 100644 --- a/modules/plugins/languages/ts.nix +++ b/modules/plugins/languages/ts.nix @@ -9,10 +9,10 @@ inherit (lib.modules) mkIf mkMerge; inherit (lib.lists) isList; inherit (lib.meta) getExe; + inherit (lib.generators) mkLuaInline; inherit (lib.types) enum either listOf package str bool; inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.types) mkGrammarOption diagnostics mkPluginSetupOption; - inherit (lib.nvim.languages) diagnosticsToLua; inherit (lib.nvim.dag) entryAnywhere; cfg = config.vim.languages.ts; @@ -77,65 +77,35 @@ formats = { prettier = { package = pkgs.nodePackages.prettier; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.prettier.with({ - command = "${cfg.format.package}/bin/prettier", - filetypes = { "typescript", "javascript" }, - }) - ) - ''; }; prettierd = { package = pkgs.prettierd; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.prettier.with({ - command = "${cfg.format.package}/bin/prettierd", - }) - ) - ''; }; biome = { package = pkgs.biome; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.biome.with({ - command = "${cfg.format.package}/bin/biome", - }) - ) - ''; }; }; # TODO: specify packages defaultDiagnosticsProvider = ["eslint_d"]; diagnosticsProviders = { - eslint_d = { - package = pkgs.eslint_d; - nullConfig = pkg: '' - table.insert( - ls_sources, - null_ls.builtins.diagnostics.eslint_d.with({ - command = "${getExe pkg}", - condition = function(utils) - return utils.root_has_file({ - "eslint.config.js", - "eslint.config.mjs", - ".eslintrc", - ".eslintrc.json", - ".eslintrc.js", - ".eslintrc.yml", - }) - end, - }) - ) - ''; + eslint_d = let + pkg = pkgs.eslint_d; + in { + package = pkg; + config = { + cmd = getExe pkg; + required_files = [ + "eslint.config.js" + "eslint.config.mjs" + ".eslintrc" + ".eslintrc.json" + ".eslintrc.js" + ".eslintrc.yml" + ]; + }; }; }; in { @@ -225,16 +195,28 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.ts-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts = { + formatters_by_ft.typescript = [cfg.format.type]; + # .tsx files + formatters_by_ft.typescriptreact = [cfg.format.type]; + formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; + }; }) (mkIf cfg.extraDiagnostics.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources = diagnosticsToLua { - lang = "ts"; - config = cfg.extraDiagnostics.types; - inherit diagnosticsProviders; + vim.diagnostics.nvim-lint = { + enable = true; + linters_by_ft.typescript = cfg.extraDiagnostics.types; + linters_by_ft.typescriptreact = cfg.extraDiagnostics.types; + + linters = + mkMerge (map (name: {${name} = diagnosticsProviders.${name}.config;}) + cfg.extraDiagnostics.types); }; }) diff --git a/modules/plugins/languages/typst.nix b/modules/plugins/languages/typst.nix index 24097e2c..8c65ae2c 100644 --- a/modules/plugins/languages/typst.nix +++ b/modules/plugins/languages/typst.nix @@ -9,7 +9,6 @@ inherit (lib.lists) isList; inherit (lib.types) nullOr enum either attrsOf listOf package str; inherit (lib.attrsets) attrNames; - inherit (lib.generators) mkLuaInline; inherit (lib.meta) getExe; inherit (lib.nvim.lua) expToLua toLuaObject; inherit (lib.nvim.types) mkGrammarOption mkPluginSetupOption; @@ -61,26 +60,10 @@ formats = { typstfmt = { package = pkgs.typstfmt; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.typstfmt.with({ - command = "${cfg.format.package}/bin/typstfmt", - }) - ) - ''; }; # https://github.com/Enter-tainer/typstyle typstyle = { package = pkgs.typstyle; - nullConfig = '' - table.insert( - ls_sources, - null_ls.builtins.formatting.typstfmt.with({ - command = "${cfg.format.package}/bin/typstyle", - }) - ) - ''; }; }; in { @@ -176,8 +159,13 @@ in { }) (mkIf cfg.format.enable { - vim.lsp.null-ls.enable = true; - vim.lsp.null-ls.sources.typst-format = formats.${cfg.format.type}.nullConfig; + vim.formatter.conform-nvim = { + enable = true; + setupOpts.formatters_by_ft.typst = [cfg.format.type]; + setupOpts.formatters.${cfg.format.type} = { + command = getExe cfg.format.package; + }; + }; }) (mkIf cfg.lsp.enable { diff --git a/modules/plugins/lsp/config.nix b/modules/plugins/lsp/config.nix index 0fa16e47..3702ac5f 100644 --- a/modules/plugins/lsp/config.nix +++ b/modules/plugins/lsp/config.nix @@ -4,6 +4,7 @@ pkgs, ... }: let + inherit (lib.generators) mkLuaInline; inherit (lib.modules) mkIf; inherit (lib.strings) optionalString; inherit (lib.trivial) boolToString; @@ -28,6 +29,25 @@ in { sourcePlugins = ["cmp-nvim-lsp"]; }; + autocmds = + if cfg.inlayHints.enable + then [ + { + callback = mkLuaInline '' + function(event) + local bufnr = event.buf + local client = vim.lsp.get_client_by_id(event.data.client_id) + if client and client.supports_method(vim.lsp.protocol.Methods.textDocument_inlayHint) then + vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({ bufnr = bufnr }), { bufnr = bufnr }) + end + end + ''; + desc = "LSP on-attach enable inlay hints autocmd"; + event = ["LspAttach"]; + } + ] + else []; + pluginRC.lsp-setup = '' vim.g.formatsave = ${boolToString cfg.formatOnSave}; diff --git a/modules/plugins/lsp/default.nix b/modules/plugins/lsp/default.nix index 421f5fda..eb694583 100644 --- a/modules/plugins/lsp/default.nix +++ b/modules/plugins/lsp/default.nix @@ -15,7 +15,6 @@ ./lightbulb ./otter ./lspkind - ./lsplines ./nvim-docs-view ]; } diff --git a/modules/plugins/lsp/lsplines/config.nix b/modules/plugins/lsp/lsplines/config.nix deleted file mode 100644 index bb07edc9..00000000 --- a/modules/plugins/lsp/lsplines/config.nix +++ /dev/null @@ -1,21 +0,0 @@ -{ - config, - lib, - ... -}: let - inherit (lib.modules) mkIf; - inherit (lib.nvim.dag) entryAfter; - - cfg = config.vim.lsp; -in { - config = mkIf (cfg.enable && cfg.lsplines.enable) { - vim.startPlugins = ["lsp-lines"]; - vim.pluginRC.lsplines = entryAfter ["lspconfig"] '' - require("lsp_lines").setup() - - vim.diagnostic.config({ - virtual_text = false, - }) - ''; - }; -} diff --git a/modules/plugins/lsp/lsplines/lsplines.nix b/modules/plugins/lsp/lsplines/lsplines.nix deleted file mode 100644 index aac4cbbc..00000000 --- a/modules/plugins/lsp/lsplines/lsplines.nix +++ /dev/null @@ -1,11 +0,0 @@ -{lib, ...}: let - inherit (lib.options) mkEnableOption; -in { - options.vim.lsp = { - lsplines = { - enable = mkEnableOption '' - diagnostics using virtual lines on top of the real line of code. [lsp_lines] - ''; - }; - }; -} diff --git a/modules/plugins/lsp/lspsaga/lspsaga.nix b/modules/plugins/lsp/lspsaga/lspsaga.nix index 39ce6298..570cee1a 100644 --- a/modules/plugins/lsp/lspsaga/lspsaga.nix +++ b/modules/plugins/lsp/lspsaga/lspsaga.nix @@ -6,6 +6,19 @@ inherit (lib.modules) mkRemovedOptionModule; inherit (lib.options) mkOption mkEnableOption; inherit (lib.nvim.types) borderType mkPluginSetupOption; + inherit (lib.nvim.lua) mkLuaInline; + + uiKindSetupOpts = + if config.vim.theme.enable && config.vim.theme.name == "catppuccin" + then { + ui.kind = + mkLuaInline + # lua + '' + require("catppuccin.groups.integrations.lsp_saga").custom_kind() + ''; + } + else {}; in { imports = [ (mkRemovedOptionModule ["vim" "lsp" "lspsaga" "mappings"] '' @@ -21,12 +34,14 @@ in { options.vim.lsp.lspsaga = { enable = mkEnableOption "LSP Saga"; - setupOpts = mkPluginSetupOption "lspsaga" { - border_style = mkOption { - type = borderType; - default = config.vim.ui.borders.globalStyle; - description = "Border type, see {command}`:help nvim_open_win`"; - }; - }; + setupOpts = + mkPluginSetupOption "lspsaga" { + border_style = mkOption { + type = borderType; + default = config.vim.ui.borders.globalStyle; + description = "Border type, see {command}`:help nvim_open_win`"; + }; + } + // uiKindSetupOpts; }; } diff --git a/modules/plugins/lsp/module.nix b/modules/plugins/lsp/module.nix index b16f9c13..f408d873 100644 --- a/modules/plugins/lsp/module.nix +++ b/modules/plugins/lsp/module.nix @@ -5,6 +5,9 @@ in { options.vim.lsp = { enable = mkEnableOption "LSP, also enabled automatically through null-ls and lspconfig options"; formatOnSave = mkEnableOption "format on save"; + inlayHints = { + enable = mkEnableOption "inlay hints"; + }; mappings = { goToDefinition = mkMappingOption "Go to definition" diff --git a/modules/plugins/lsp/null-ls/config.nix b/modules/plugins/lsp/null-ls/config.nix index 549ef0b7..eb06870f 100644 --- a/modules/plugins/lsp/null-ls/config.nix +++ b/modules/plugins/lsp/null-ls/config.nix @@ -4,13 +4,12 @@ ... }: let inherit (lib.modules) mkIf mkMerge; - inherit (lib.attrsets) mapAttrs; - inherit (lib.trivial) boolToString; - inherit (lib.nvim.dag) entryAnywhere entryAfter entryBetween; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAfter; - cfg = config.vim.lsp; + cfg = config.vim.lsp.null-ls; in { - config = mkIf cfg.null-ls.enable (mkMerge [ + config = mkIf cfg.enable (mkMerge [ { vim = { startPlugins = [ @@ -18,35 +17,14 @@ in { "plenary-nvim" ]; - # null-ls implies LSP already being set up - # since it will hook into LSPs to receive information + # null-ls implies that LSP is already being set up + # as it will hook into LSPs to receive information. lsp.enable = true; - pluginRC = { - # early setup for null-ls - null_ls-setup = entryAnywhere '' - local null_ls = require("null-ls") - local null_helpers = require("null-ls.helpers") - local null_methods = require("null-ls.methods") - local ls_sources = {} - ''; - - # null-ls setup - null_ls = entryAfter ["null_ls-setup" "lsp-setup"] '' - require('null-ls').setup({ - debug = ${boolToString cfg.null-ls.debug}, - diagnostics_format = "${cfg.null-ls.diagnostics_format}", - debounce = ${toString cfg.null-ls.debounce}, - default_timeout = ${toString cfg.null-ls.default_timeout}, - sources = ls_sources, - on_attach = default_on_attach - }) - ''; - }; + pluginRC.null_ls = entryAfter ["lsp-setup"] '' + require('null-ls').setup(${toLuaObject cfg.setupOpts}) + ''; }; } - { - vim.pluginRC = mapAttrs (_: v: (entryBetween ["null_ls"] ["null_ls-setup"] v)) cfg.null-ls.sources; - } ]); } diff --git a/modules/plugins/lsp/null-ls/null-ls.nix b/modules/plugins/lsp/null-ls/null-ls.nix index 37305540..ba02df9c 100644 --- a/modules/plugins/lsp/null-ls/null-ls.nix +++ b/modules/plugins/lsp/null-ls/null-ls.nix @@ -1,34 +1,87 @@ {lib, ...}: let - inherit (lib.options) mkEnableOption mkOption; - inherit (lib.types) attrsOf str int; + inherit (lib.options) mkOption mkEnableOption; + inherit (lib.types) listOf str int nullOr; + inherit (lib.generators) mkLuaInline; + inherit (lib.nvim.types) luaInline mkPluginSetupOption; + inherit (lib.nvim.config) batchRenameOptions; + + migrationTable = { + debug = "debug"; + diagnostics_format = "diagnostics_format"; + debounce = "debounce"; + default_timeout = "default_timeout"; + sources = "sources"; + }; + + renamedSetupOpts = + batchRenameOptions + ["vim" "lsp" "null-ls"] + ["vim" "lsp" "null-ls" "setupOpts"] + migrationTable; in { + imports = renamedSetupOpts; + options.vim.lsp.null-ls = { - enable = mkEnableOption "null-ls, also enabled automatically"; + enable = mkEnableOption '' + null-ls, plugin to use Neovim as a language server to inject LSP diagnostics, + code actions, and more via Lua. + ''; - debug = mkEnableOption "debugging information for `null-ls"; + setupOpts = mkPluginSetupOption "null-ls" { + debug = mkEnableOption '' + debugging information for null-ls. - diagnostics_format = mkOption { - type = str; - default = "[#{m}] #{s} (#{c})"; - description = "Diagnostic output format for null-ls"; - }; + Displays all possible log messages and writes them to the null-ls log, + which you can view with the command `:NullLsLog` + ''; - debounce = mkOption { - type = int; - default = 250; - description = "Default debounce"; - }; + diagnostics_format = mkOption { + type = str; + default = "[#{m}] #{s} (#{c})"; + description = '' + Sets the default format used for diagnostics. null-ls will replace th + e following special components with the relevant diagnostic information: - default_timeout = mkOption { - type = int; - default = 5000; - description = "Default timeout value, in milliseconds"; - }; + * `#{m}`: message + * `#{s}`: source name (defaults to null-ls if not specified) + * `#{c}`: code (if available) + ''; + }; - sources = mkOption { - description = "null-ls sources"; - type = attrsOf str; - default = {}; + debounce = mkOption { + type = int; + default = 250; + description = '' + Amount of time between the last change to a buffer and the next `textDocument/didChange` notification. + ''; + }; + + default_timeout = mkOption { + type = int; + default = 5000; + description = '' + Amount of time (in milliseconds) after which built-in sources will time out. + + :::{.note} + Built-in sources can define their own timeout period and users can override + the timeout period on a per-source basis + ::: + ''; + }; + + sources = mkOption { + type = nullOr (listOf luaInline); + default = null; + description = "Sources for null-ls to register"; + }; + + on_attach = mkOption { + type = nullOr luaInline; + default = mkLuaInline "on_attach"; + description = '' + Defines an on_attach callback to run whenever null-ls attaches to a buffer. + ''; + }; }; }; } diff --git a/modules/plugins/mini/cursorword/config.nix b/modules/plugins/mini/cursorword/config.nix new file mode 100644 index 00000000..bc5ab2cb --- /dev/null +++ b/modules/plugins/mini/cursorword/config.nix @@ -0,0 +1,19 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.dag) entryAnywhere; + inherit (lib.nvim.lua) toLuaObject; + + cfg = config.vim.mini.cursorword; +in { + vim = mkIf cfg.enable { + startPlugins = ["mini-cursorword"]; + + pluginRC.mini-ai = entryAnywhere '' + require("mini.cursorword").setup(${toLuaObject cfg.setupOpts}) + ''; + }; +} diff --git a/modules/plugins/mini/cursorword/cursorword.nix b/modules/plugins/mini/cursorword/cursorword.nix new file mode 100644 index 00000000..f2b8903a --- /dev/null +++ b/modules/plugins/mini/cursorword/cursorword.nix @@ -0,0 +1,9 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + options.vim.mini.cursorword = { + enable = mkEnableOption "mini.cursorword"; + setupOpts = mkPluginSetupOption "mini.cursorword" {}; + }; +} diff --git a/modules/plugins/mini/cursorword/default.nix b/modules/plugins/mini/cursorword/default.nix new file mode 100644 index 00000000..f0aae6c8 --- /dev/null +++ b/modules/plugins/mini/cursorword/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./cursorword.nix + ./config.nix + ]; +} diff --git a/modules/plugins/mini/default.nix b/modules/plugins/mini/default.nix index 8f035285..f066b172 100644 --- a/modules/plugins/mini/default.nix +++ b/modules/plugins/mini/default.nix @@ -11,6 +11,7 @@ ./colors ./comment ./completion + ./cursorword ./diff ./doc ./extra diff --git a/modules/plugins/mini/indentscope/config.nix b/modules/plugins/mini/indentscope/config.nix index 2e6ec03d..a6fd16d7 100644 --- a/modules/plugins/mini/indentscope/config.nix +++ b/modules/plugins/mini/indentscope/config.nix @@ -3,6 +3,7 @@ lib, ... }: let + inherit (lib.generators) mkLuaInline; inherit (lib.modules) mkIf; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; @@ -10,6 +11,21 @@ cfg = config.vim.mini.indentscope; in { vim = mkIf cfg.enable { + autocmds = [ + { + callback = mkLuaInline '' + function() + local ignore_filetypes = ${toLuaObject cfg.setupOpts.ignore_filetypes} + if vim.tbl_contains(ignore_filetypes, vim.bo.filetype) then + vim.b.miniindentscope_disable = true + end + end + ''; + desc = "Disable indentscope for certain filetypes"; + event = ["FileType"]; + } + ]; + startPlugins = ["mini-indentscope"]; pluginRC.mini-indentscope = entryAnywhere '' diff --git a/modules/plugins/mini/indentscope/indentscope.nix b/modules/plugins/mini/indentscope/indentscope.nix index 6feffaee..6a2224c8 100644 --- a/modules/plugins/mini/indentscope/indentscope.nix +++ b/modules/plugins/mini/indentscope/indentscope.nix @@ -1,13 +1,16 @@ -{ - config, - lib, - ... -}: let - inherit (lib.options) mkEnableOption; +{lib, ...}: let + inherit (lib.options) mkOption mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; + inherit (lib.types) str listOf; in { options.vim.mini.indentscope = { enable = mkEnableOption "mini.indentscope"; - setupOpts = mkPluginSetupOption "mini.indentscope" {}; + setupOpts = mkPluginSetupOption "mini.indentscope" { + ignore_filetypes = mkOption { + type = listOf str; + default = ["help" "neo-tree" "notify" "NvimTree" "TelescopePrompt"]; + description = "File types to ignore for illuminate"; + }; + }; }; } diff --git a/modules/plugins/statusline/lualine/config.nix b/modules/plugins/statusline/lualine/config.nix index facfcebb..89dcbbe5 100644 --- a/modules/plugins/statusline/lualine/config.nix +++ b/modules/plugins/statusline/lualine/config.nix @@ -14,12 +14,28 @@ bCfg = config.vim.ui.breadcrumbs; in { config = mkMerge [ - # TODO: move into nvim-tree file - (mkIf config.vim.filetree.nvimTree.enable { - vim.statusline.lualine.setupOpts = { - extensions = ["nvim-tree"]; - }; - }) + { + vim.statusline.lualine.setupOpts.extensions = + (lib.optionals config.vim.filetree.nvimTree.enable ["nvim-tree"]) + ++ (lib.optionals config.vim.filetree.neo-tree.enable ["neo-tree"]) + ++ (lib.optionals config.vim.utility.snacks-nvim.enable [ + { + # same extensions as nerdtree / neo-tree + # https://github.com/nvim-lualine/lualine.nvim/blob/master/lua/lualine/extensions/nerdtree.lua + # https://github.com/nvim-lualine/lualine.nvim/blob/master/lua/lualine/extensions/neo-tree.lua + sections = { + lualine_a = mkLuaInline '' + { + function() + return vim.fn.fnamemodify(vim.fn.getcwd(), ":~") + end, + } + ''; + }; + filetypes = ["snacks_picker_list" "snacks_picker_input"]; + } + ]); + } (mkIf (bCfg.enable && bCfg.lualine.winbar.enable && bCfg.source == "nvim-navic") { vim.statusline.lualine.setupOpts = { diff --git a/modules/plugins/statusline/lualine/lualine.nix b/modules/plugins/statusline/lualine/lualine.nix index bf070db7..4e69c852 100644 --- a/modules/plugins/statusline/lualine/lualine.nix +++ b/modules/plugins/statusline/lualine/lualine.nix @@ -239,35 +239,26 @@ in { { -- Lsp server name function() - local buf_ft = vim.api.nvim_get_option_value('filetype', {}) + local buf_ft = vim.bo.filetype + local excluded_buf_ft = { toggleterm = true, NvimTree = true, ["neo-tree"] = true, TelescopePrompt = true } - -- List of buffer types to exclude - local excluded_buf_ft = {"toggleterm", "NvimTree", "neo-tree", "TelescopePrompt"} - - -- Check if the current buffer type is in the excluded list - for _, excluded_type in ipairs(excluded_buf_ft) do - if buf_ft == excluded_type then - return "" + if excluded_buf_ft[buf_ft] then + return "" end + + local bufnr = vim.api.nvim_get_current_buf() + local clients = vim.lsp.get_clients({ bufnr = bufnr }) + + if vim.tbl_isempty(clients) then + return "No Active LSP" end - -- Get the name of the LSP server active in the current buffer - local clients = vim.lsp.get_active_clients() - local msg = 'No Active Lsp' - - -- if no lsp client is attached then return the msg - if next(clients) == nil then - return msg - end - + local active_clients = {} for _, client in ipairs(clients) do - local filetypes = client.config.filetypes - if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then - return client.name - end + table.insert(active_clients, client.name) end - return msg + return table.concat(active_clients, ", ") end, icon = ' ', separator = {left = ''}, diff --git a/modules/plugins/tabline/nvim-bufferline/config.nix b/modules/plugins/tabline/nvim-bufferline/config.nix index 4989e991..965f81f0 100644 --- a/modules/plugins/tabline/nvim-bufferline/config.nix +++ b/modules/plugins/tabline/nvim-bufferline/config.nix @@ -9,7 +9,7 @@ inherit (lib.nvim.lua) toLuaObject; cfg = config.vim.tabline.nvimBufferline; - self = import ./nvim-bufferline.nix {inherit lib;}; + self = import ./nvim-bufferline.nix {inherit config lib;}; inherit (self.options.vim.tabline.nvimBufferline) mappings; in { config = mkIf cfg.enable { diff --git a/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix b/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix index dc32226e..14243670 100644 --- a/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix +++ b/modules/plugins/tabline/nvim-bufferline/nvim-bufferline.nix @@ -1,4 +1,8 @@ -{lib, ...}: let +{ + config, + lib, + ... +}: let inherit (lib.options) mkOption mkEnableOption literalExpression; inherit (lib.types) enum bool either nullOr str int listOf attrs; inherit (lib.generators) mkLuaInline; @@ -23,7 +27,14 @@ in { setupOpts = mkPluginSetupOption "Bufferline-nvim" { highlights = mkOption { type = either attrs luaInline; - default = {}; + default = + if config.vim.theme.enable && config.vim.theme.name == "catppuccin" + then + mkLuaInline + '' + require("catppuccin.groups.integrations.bufferline").get() + '' + else {}; description = '' Overrides the highlight groups of bufferline. @@ -261,14 +272,12 @@ in { offsets = mkOption { type = listOf attrs; - default = [ - { - filetype = "NvimTree"; - text = "File Explorer"; - highlight = "Directory"; - separator = true; - } - ]; + default = map (filetype: { + inherit filetype; + text = "File Explorer"; + highlight = "Directory"; + separator = true; + }) ["NvimTree" "neo-tree" "snacks_layout_box"]; description = "The windows to offset bufferline above, see `:help bufferline-offset`"; }; diff --git a/modules/plugins/theme/supported-themes.nix b/modules/plugins/theme/supported-themes.nix index 0b5cb90b..2b427871 100644 --- a/modules/plugins/theme/supported-themes.nix +++ b/modules/plugins/theme/supported-themes.nix @@ -66,21 +66,22 @@ in { transparent_background = ${boolToString transparent}, term_colors = true, integrations = { - nvimtree = { - enabled = true, - transparent_panel = ${boolToString transparent}, - show_root = true, - }, + nvimtree = { + enabled = true, + transparent_panel = ${boolToString transparent}, + show_root = true, + }, hop = true, - gitsigns = true, - telescope = true, - treesitter = true, + gitsigns = true, + telescope = true, + treesitter = true, treesitter_context = true, - ts_rainbow = true, + ts_rainbow = true, fidget = true, alpha = true, leap = true, + lsp_saga = true, markdown = true, noice = true, notify = true, -- nvim-notify @@ -106,9 +107,9 @@ in { style' = warnIf (style == "light") "oxocarbon: light theme is not well-supported" style; in '' - require('oxocarbon') - vim.opt.background = "${style'}" - vim.cmd.colorscheme = "oxocarbon" + require('oxocarbon') + vim.opt.background = "${style'}" + vim.cmd.colorscheme = "oxocarbon" ${optionalString transparent '' vim.api.nvim_set_hl(0, "Normal", { bg = "none" }) vim.api.nvim_set_hl(0, "NormalFloat", { bg = "none" }) diff --git a/modules/plugins/treesitter/treesitter.nix b/modules/plugins/treesitter/treesitter.nix index 322d2eb0..d88cc1a9 100644 --- a/modules/plugins/treesitter/treesitter.nix +++ b/modules/plugins/treesitter/treesitter.nix @@ -24,12 +24,19 @@ in { grammars = mkOption { type = listOf package; default = []; + example = literalExpression '' + pkgs.vimPlugins.nvim-treesitter.builtGrammars; [ + regex + kdl + ]; + ''; description = '' - List of treesitter grammars to install. + List of treesitter grammars to install. For grammars to be installed properly, + you must use grammars from `pkgs.vimPlugins.nvim-treesitter.builtGrammars`. - For languages already supported by nvf, you may - use the {option}`vim.language..treesitter` options, which - will automatically add the required grammars to this. + For languages already supported by nvf, you may use + {option}`vim.language..treesitter` options, which will automatically add + the required grammars to this. ''; }; diff --git a/modules/plugins/ui/illuminate/illuminate.nix b/modules/plugins/ui/illuminate/illuminate.nix index b910101f..4096e73c 100644 --- a/modules/plugins/ui/illuminate/illuminate.nix +++ b/modules/plugins/ui/illuminate/illuminate.nix @@ -11,7 +11,7 @@ in { setupOpts = mkPluginSetupOption "vim-illuminate" { filetypes_denylist = mkOption { type = listOf str; - default = ["dirvish" "fugitive" "NvimTree" "TelescopePrompt"]; + default = ["dirvish" "fugitive" "help" "neo-tree" "notify" "NvimTree" "TelescopePrompt"]; description = "Filetypes to not illuminate, this overrides `filetypes_allowlist`"; }; }; diff --git a/modules/plugins/utility/default.nix b/modules/plugins/utility/default.nix index cbe776cc..e3ae7c5e 100644 --- a/modules/plugins/utility/default.nix +++ b/modules/plugins/utility/default.nix @@ -15,8 +15,10 @@ ./multicursors ./new-file-template ./nix-develop + ./oil-nvim ./outline ./preview + ./sleuth ./snacks-nvim ./surround ./telescope diff --git a/modules/plugins/utility/fzf-lua/fzf-lua.nix b/modules/plugins/utility/fzf-lua/fzf-lua.nix index c700add7..0b242864 100644 --- a/modules/plugins/utility/fzf-lua/fzf-lua.nix +++ b/modules/plugins/utility/fzf-lua/fzf-lua.nix @@ -1,15 +1,21 @@ { config, lib, + pkgs, ... }: let - inherit (lib.types) nullOr enum; + inherit (lib.types) enum str; inherit (lib.options) mkEnableOption mkOption; inherit (lib.nvim.types) mkPluginSetupOption borderType; in { options.vim.fzf-lua = { enable = mkEnableOption "fzf-lua"; setupOpts = mkPluginSetupOption "fzf-lua" { + fzf_bin = mkOption { + type = str; + default = "${lib.getExe pkgs.fzf}"; + description = "Path to fzf executable"; + }; winopts.border = mkOption { type = borderType; default = config.vim.ui.borders.globalStyle; diff --git a/modules/plugins/utility/motion/default.nix b/modules/plugins/utility/motion/default.nix index 838fec78..10074939 100644 --- a/modules/plugins/utility/motion/default.nix +++ b/modules/plugins/utility/motion/default.nix @@ -1,5 +1,6 @@ _: { imports = [ + ./flash ./hop ./leap ./precognition diff --git a/modules/plugins/utility/motion/flash/config.nix b/modules/plugins/utility/motion/flash/config.nix new file mode 100644 index 00000000..3adf0de8 --- /dev/null +++ b/modules/plugins/utility/motion/flash/config.nix @@ -0,0 +1,34 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.binds) mkKeymap; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAnywhere; + + cfg = config.vim.utility.motion.flash-nvim; +in { + config = mkIf cfg.enable { + vim = { + lazy.plugins = { + "flash-nvim" = { + package = "flash-nvim"; + setupModule = "flash"; + setupOpts = cfg.setupOpts; + + lazy = true; + + keys = [ + (mkKeymap ["n" "o" "x"] cfg.mappings.jump "lua require(\"flash\").jump()" {desc = "Flash";}) + (mkKeymap ["n" "o" "x"] cfg.mappings.treesitter "lua require(\"flash\").treesitter()" {desc = "Flash Treesitter";}) + (mkKeymap "o" cfg.mappings.remote "lua require(\"flash\").remote()" {desc = "Remote Flash";}) + (mkKeymap ["o" "x"] cfg.mappings.treesitter_search "lua require(\"flash\").treesitter_search()" {desc = "Treesitter Search";}) + (mkKeymap "c" cfg.mappings.toggle "lua require(\"flash\").toggle()" {desc = "Toggle Flash Search";}) + ]; + }; + }; + }; + }; +} diff --git a/modules/plugins/lsp/lsplines/default.nix b/modules/plugins/utility/motion/flash/default.nix similarity index 67% rename from modules/plugins/lsp/lsplines/default.nix rename to modules/plugins/utility/motion/flash/default.nix index 359cec4f..5978df25 100644 --- a/modules/plugins/lsp/lsplines/default.nix +++ b/modules/plugins/utility/motion/flash/default.nix @@ -1,6 +1,6 @@ { imports = [ + ./flash.nix ./config.nix - ./lsplines.nix ]; } diff --git a/modules/plugins/utility/motion/flash/flash.nix b/modules/plugins/utility/motion/flash/flash.nix new file mode 100644 index 00000000..825b86a0 --- /dev/null +++ b/modules/plugins/utility/motion/flash/flash.nix @@ -0,0 +1,38 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption mkOption; + inherit (lib.types) nullOr str; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + options.vim.utility.motion.flash-nvim = { + enable = mkEnableOption "enhanced code navigation with flash.nvim"; + setupOpts = mkPluginSetupOption "flash-nvim" {}; + + mappings = { + jump = mkOption { + type = nullOr str; + default = "s"; + description = "Jump"; + }; + treesitter = mkOption { + type = nullOr str; + default = "S"; + description = "Treesitter"; + }; + remote = mkOption { + type = nullOr str; + default = "r"; + description = "Remote Flash"; + }; + treesitter_search = mkOption { + type = nullOr str; + default = "R"; + description = "Treesitter Search"; + }; + toggle = mkOption { + type = nullOr str; + default = ""; + description = "Toggle Flash Search"; + }; + }; + }; +} diff --git a/modules/plugins/utility/oil-nvim/config.nix b/modules/plugins/utility/oil-nvim/config.nix new file mode 100644 index 00000000..dca4de60 --- /dev/null +++ b/modules/plugins/utility/oil-nvim/config.nix @@ -0,0 +1,20 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + inherit (lib.nvim.lua) toLuaObject; + inherit (lib.nvim.dag) entryAnywhere; + + cfg = config.vim.utility.oil-nvim; +in { + config = mkIf cfg.enable { + vim = { + startPlugins = ["oil-nvim"]; + pluginRC.oil-nvim = entryAnywhere '' + require("oil").setup(${toLuaObject cfg.setupOpts}); + ''; + }; + }; +} diff --git a/modules/plugins/utility/oil-nvim/default.nix b/modules/plugins/utility/oil-nvim/default.nix new file mode 100644 index 00000000..1b771b07 --- /dev/null +++ b/modules/plugins/utility/oil-nvim/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./oil-nvim.nix + ]; +} diff --git a/modules/plugins/utility/oil-nvim/oil-nvim.nix b/modules/plugins/utility/oil-nvim/oil-nvim.nix new file mode 100644 index 00000000..557f3db6 --- /dev/null +++ b/modules/plugins/utility/oil-nvim/oil-nvim.nix @@ -0,0 +1,12 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption; + inherit (lib.nvim.types) mkPluginSetupOption; +in { + options.vim.utility.oil-nvim = { + enable = mkEnableOption '' + Neovim file explorer: edit your filesystem like a buffer [oil-nvim] + ''; + + setupOpts = mkPluginSetupOption "oil-nvim" {}; + }; +} diff --git a/modules/plugins/utility/sleuth/config.nix b/modules/plugins/utility/sleuth/config.nix new file mode 100644 index 00000000..d25cc140 --- /dev/null +++ b/modules/plugins/utility/sleuth/config.nix @@ -0,0 +1,10 @@ +{ + config, + lib, + ... +}: let + inherit (lib.modules) mkIf; + cfg = config.vim.utility.sleuth; +in { + vim.startPlugins = mkIf cfg.enable ["vim-sleuth"]; +} diff --git a/modules/plugins/utility/sleuth/default.nix b/modules/plugins/utility/sleuth/default.nix new file mode 100644 index 00000000..04cb4158 --- /dev/null +++ b/modules/plugins/utility/sleuth/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./sleuth.nix + ]; +} diff --git a/modules/plugins/utility/sleuth/sleuth.nix b/modules/plugins/utility/sleuth/sleuth.nix new file mode 100644 index 00000000..a86d414d --- /dev/null +++ b/modules/plugins/utility/sleuth/sleuth.nix @@ -0,0 +1,7 @@ +{lib, ...}: let + inherit (lib.options) mkEnableOption; +in { + options.vim.utility.sleuth.enable = mkEnableOption '' + automatically adjusting options such as `shiftwidth` or `expandtab`, using `vim-sleuth` + ''; +} diff --git a/modules/plugins/utility/telescope/telescope.nix b/modules/plugins/utility/telescope/telescope.nix index 0ab80380..7c01bb8f 100644 --- a/modules/plugins/utility/telescope/telescope.nix +++ b/modules/plugins/utility/telescope/telescope.nix @@ -11,6 +11,12 @@ cfg = config.vim.telescope; setupOptions = { + pickers.find_files.find_command = mkOption { + description = "cmd to use for finding files"; + type = either (listOf str) luaInline; + default = ["${pkgs.fd}/bin/fd" "--type=file"]; + }; + defaults = { vimgrep_arguments = mkOption { type = listOf str; @@ -138,8 +144,7 @@ file_ignore_patterns = mkOption { type = listOf str; - default = ["node_modules" ".git/" "dist/" "build/" "target/" "result/"]; - description = "A table of lua regex that define the files that should be ignored."; + default = ["node_modules" "%.git/" "dist/" "build/" "target/" "result/"]; }; color_devicons = mkOption { diff --git a/modules/plugins/visuals/nvim-scrollbar/config.nix b/modules/plugins/visuals/nvim-scrollbar/config.nix index 1d0ebc76..ce00d699 100644 --- a/modules/plugins/visuals/nvim-scrollbar/config.nix +++ b/modules/plugins/visuals/nvim-scrollbar/config.nix @@ -12,8 +12,7 @@ in { config = mkIf cfg.enable { vim = { startPlugins = ["nvim-scrollbar"]; - - pluginRC.cursorline = entryAnywhere '' + pluginRC.nvim-scrollbar = entryAnywhere '' require("scrollbar").setup(${toLuaObject cfg.setupOpts}) ''; }; diff --git a/modules/plugins/visuals/nvim-scrollbar/scrollbar-nvim.nix b/modules/plugins/visuals/nvim-scrollbar/scrollbar-nvim.nix index bdf48cb4..5a3f3084 100644 --- a/modules/plugins/visuals/nvim-scrollbar/scrollbar-nvim.nix +++ b/modules/plugins/visuals/nvim-scrollbar/scrollbar-nvim.nix @@ -13,7 +13,7 @@ in { setupOpts = mkPluginSetupOption "scrollbar-nvim" { excluded_filetypes = mkOption { type = listOf str; - default = ["prompt" "TelescopePrompt" "noice" "noice" "NvimTree" "neo-tree" "alpha" "notify" "Navbuddy"]; + default = ["prompt" "TelescopePrompt" "noice" "NvimTree" "neo-tree" "alpha" "notify" "Navbuddy" "fastaction_popup"]; description = "Filetypes to hide the scrollbar on"; }; }; diff --git a/modules/wrapper/build/config.nix b/modules/wrapper/build/config.nix index 3c778169..3b147571 100644 --- a/modules/wrapper/build/config.nix +++ b/modules/wrapper/build/config.nix @@ -48,16 +48,9 @@ patches = [./patches/flutter-tools.patch]; # Disable failing require check hook checks - nvimSkipModule = [ - "flutter-tools.devices" - "flutter-tools.dap" - "flutter-tools.runners.job_runner" - "flutter-tools.decorations" - "flutter-tools.commands" - "flutter-tools.executable" - "flutter-tools.dev_tools" - ]; + doCheck = false; }; + inherit (inputs.self.legacyPackages.${pkgs.stdenv.system}) blink-cmp; }; diff --git a/modules/wrapper/rc/config.nix b/modules/wrapper/rc/config.nix index ff8a4585..77a62d58 100644 --- a/modules/wrapper/rc/config.nix +++ b/modules/wrapper/rc/config.nix @@ -5,7 +5,7 @@ }: let inherit (builtins) map mapAttrs filter; inherit (lib.attrsets) mapAttrsToList; - inherit (lib.strings) concatLines concatMapStringsSep; + inherit (lib.strings) concatLines concatMapStringsSep optionalString; inherit (lib.trivial) showWarnings; inherit (lib.generators) mkLuaInline; inherit (lib.nvim.dag) entryAfter mkLuarcSection resolveDag entryAnywhere; @@ -72,6 +72,14 @@ in { dag = cfg.luaConfigRC; mapResult = result: concatLines [ + (optionalString (cfg.additionalRuntimePaths != []) '' + vim.opt.runtimepath:append(${toLuaObject cfg.additionalRuntimePaths}) + '') + (optionalString cfg.enableLuaLoader '' + if vim.loader then + vim.loader.enable() + end + '') cfg.luaConfigPre (concatMapStringsSep "\n" mkLuarcSection result) cfg.luaConfigPost diff --git a/modules/wrapper/rc/options.nix b/modules/wrapper/rc/options.nix index 4cd3026f..10abd77d 100644 --- a/modules/wrapper/rc/options.nix +++ b/modules/wrapper/rc/options.nix @@ -1,15 +1,7 @@ -{ - config, - lib, - ... -}: let +{lib, ...}: let inherit (lib.options) mkOption literalMD literalExpression; - inherit (lib.strings) optionalString; inherit (lib.types) str bool int enum attrsOf lines listOf either path submodule anything; inherit (lib.nvim.types) dagOf; - inherit (lib.nvim.lua) listToLuaTable; - - cfg = config.vim; in { options.vim = { enableLuaLoader = mkOption { @@ -286,21 +278,7 @@ in { luaConfigPre = mkOption { type = str; - default = '' - ${optionalString (cfg.additionalRuntimePaths != []) '' - -- The following list is generated from `vim.additionalRuntimePaths` - -- and is used to append additional runtime paths to the - -- `runtimepath` option. - vim.opt.runtimepath:append(${listToLuaTable cfg.additionalRuntimePaths}) - ''} - - ${optionalString cfg.enableLuaLoader '' - if vim.loader then - vim.loader.enable() - end - ''} - ''; - + default = ""; defaultText = literalMD '' By default, this option will **append** paths in [](#opt-vim.additionalRuntimePaths) diff --git a/npins/sources.json b/npins/sources.json index d1c9fb7d..04c35ede 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -9,9 +9,9 @@ }, "branch": "master", "submodules": false, - "revision": "2204cf08791449a6a2fd2ef187a29112eeefd989", - "url": "https://github.com/stevearc/aerial.nvim/archive/2204cf08791449a6a2fd2ef187a29112eeefd989.tar.gz", - "hash": "1482md9kzyrr7mjkca3nnyqgy64q8clhi6xbvgql8qjw7ifz51mx" + "revision": "2e00d1d4248f08dddfceacb8d2996e51e13e00f6", + "url": "https://github.com/stevearc/aerial.nvim/archive/2e00d1d4248f08dddfceacb8d2996e51e13e00f6.tar.gz", + "hash": "18rhmpqs8440hn4g5786znj37fzb01wa3zws33rlq9vm6sfb0grw" }, "alpha-nvim": { "type": "Git", @@ -35,9 +35,9 @@ }, "branch": "master", "submodules": false, - "revision": "3f13e15c53ea2aaf79c24ceab725309d87f0619c", - "url": "https://github.com/rrethy/base16-nvim/archive/3f13e15c53ea2aaf79c24ceab725309d87f0619c.tar.gz", - "hash": "1z6pdf707r2rpmzi057dhcmd045695v03215asn1hdn8r294zcmg" + "revision": "965160025d0facbe9caa863e5beef2a7a488e9d1", + "url": "https://github.com/rrethy/base16-nvim/archive/965160025d0facbe9caa863e5beef2a7a488e9d1.tar.gz", + "hash": "02w1mn15gydma9canvqrlwf4l5z76s1vs01zanipwwflvwclsb8f" }, "blink-cmp": { "type": "GitRelease", @@ -50,10 +50,10 @@ "version_upper_bound": null, "release_prefix": null, "submodules": false, - "version": "v0.14.1", - "revision": "7a91dc584f41f5aa2373a917faf8100b2e54d6c9", - "url": "https://api.github.com/repos/saghen/blink.cmp/tarball/v0.14.1", - "hash": "0zm6s3v9liimx28vs1g5yi7bcfrl691q81bvzmdpavcwrzcdb0c8" + "version": "v1.1.1", + "revision": "fe2e1d3e4498d60c5ce7440ff60f79f0920e34bf", + "url": "https://api.github.com/repos/saghen/blink.cmp/tarball/v1.1.1", + "hash": "0l2m4162vk6xqrx5v0zh1b5p6wrr1jailq1995f101isyjygikan" }, "blink-cmp-spell": { "type": "Git", @@ -77,9 +77,9 @@ }, "branch": "main", "submodules": false, - "revision": "4104671562c663d059d91a99da3780bead5bc467", - "url": "https://github.com/saghen/blink.compat/archive/4104671562c663d059d91a99da3780bead5bc467.tar.gz", - "hash": "0bsf8kg5s3m1xk9d4n0yl0h5xyk484hip3z8va547f6ibim9ccv4" + "revision": "f1836ed7a07f8d082ff6c3fbae1e476ba2adee84", + "url": "https://github.com/saghen/blink.compat/archive/f1836ed7a07f8d082ff6c3fbae1e476ba2adee84.tar.gz", + "hash": "0b22c943vbxn8cgfc3m0wmmia9rja6x766ywa798nx7s7x0sd53x" }, "blink-emoji-nvim": { "type": "Git", @@ -103,9 +103,9 @@ }, "branch": "main", "submodules": false, - "revision": "91aee73557237b0cc1313e4ed2b32f10de6cc65e", - "url": "https://github.com/mikavilpas/blink-ripgrep.nvim/archive/91aee73557237b0cc1313e4ed2b32f10de6cc65e.tar.gz", - "hash": "1jg4559946rzsvvny1r7jki1gmr70yjxr8qlnsjkjyxj8h0pjjwl" + "revision": "89c4d158bc6d6ca03b4059452f2f9ffaa850db8a", + "url": "https://github.com/mikavilpas/blink-ripgrep.nvim/archive/89c4d158bc6d6ca03b4059452f2f9ffaa850db8a.tar.gz", + "hash": "04xh5hzbzvm0nvipsy0cw7k1vb1kcrb09xiw0j66cqddjvvpv6zk" }, "bufdelete-nvim": { "type": "Git", @@ -142,9 +142,9 @@ }, "branch": "main", "submodules": false, - "revision": "b57cbaf8db3ac43c56c9e2c7f3812944638260ed", - "url": "https://github.com/uga-rosa/ccc.nvim/archive/b57cbaf8db3ac43c56c9e2c7f3812944638260ed.tar.gz", - "hash": "0ixqbsag43pyrvj0i9dkn28j7b2v0c75rljnw57bjl6nwz2aqxg7" + "revision": "af2cf5a963f401aad868c065222ee13d4bbc9050", + "url": "https://github.com/uga-rosa/ccc.nvim/archive/af2cf5a963f401aad868c065222ee13d4bbc9050.tar.gz", + "hash": "0h43m2rz9jcckif036n6ybyv2zhgr25l0wpdg3fdfl7xkfs7sa1i" }, "cellular-automaton-nvim": { "type": "Git", @@ -207,8 +207,8 @@ }, "branch": "main", "submodules": false, - "revision": "3022dbc9166796b644a841a02de8dd1cc1d311fa", - "url": "https://github.com/hrsh7th/cmp-buffer/archive/3022dbc9166796b644a841a02de8dd1cc1d311fa.tar.gz", + "revision": "b74fab3656eea9de20a9b8116afa3cfc4ec09657", + "url": "https://github.com/hrsh7th/cmp-buffer/archive/b74fab3656eea9de20a9b8116afa3cfc4ec09657.tar.gz", "hash": "1cwx8ky74633y0bmqmvq1lqzmphadnhzmhzkddl3hpb7rgn18vkl" }, "cmp-luasnip": { @@ -233,8 +233,8 @@ }, "branch": "main", "submodules": false, - "revision": "99290b3ec1322070bcfb9e846450a46f6efa50f0", - "url": "https://github.com/hrsh7th/cmp-nvim-lsp/archive/99290b3ec1322070bcfb9e846450a46f6efa50f0.tar.gz", + "revision": "a8912b88ce488f411177fc8aed358b04dc246d7b", + "url": "https://github.com/hrsh7th/cmp-nvim-lsp/archive/a8912b88ce488f411177fc8aed358b04dc246d7b.tar.gz", "hash": "08q5mf5jrqjjcl1s4h9zj2vd1kcizz0a5a6p65wv1rc5s1fa3a49" }, "cmp-path": { @@ -246,8 +246,8 @@ }, "branch": "main", "submodules": false, - "revision": "91ff86cd9c29299a64f968ebb45846c485725f23", - "url": "https://github.com/hrsh7th/cmp-path/archive/91ff86cd9c29299a64f968ebb45846c485725f23.tar.gz", + "revision": "c6635aae33a50d6010bf1aa756ac2398a2d54c32", + "url": "https://github.com/hrsh7th/cmp-path/archive/c6635aae33a50d6010bf1aa756ac2398a2d54c32.tar.gz", "hash": "18ixx14ibc7qrv32nj0ylxrx8w4ggg49l5vhcqd35hkp4n56j6mn" }, "cmp-treesitter": { @@ -272,9 +272,9 @@ }, "branch": "main", "submodules": false, - "revision": "4f56b047f03bf5edc0d71bf0ca694243a49b912f", - "url": "https://github.com/olimorris/codecompanion.nvim/archive/4f56b047f03bf5edc0d71bf0ca694243a49b912f.tar.gz", - "hash": "1mrb8qxd6mz5dlly9bh30pcd599gfy173f6pd4p8lszs3xhp598k" + "revision": "c861811f8b825d30c0343951336d2bb8c8f6d990", + "url": "https://github.com/olimorris/codecompanion.nvim/archive/c861811f8b825d30c0343951336d2bb8c8f6d990.tar.gz", + "hash": "0a1mzwh07lhrx893w7xdlhgiivbrwqp7a0b9wkdrna99x8kd9d77" }, "codewindow-nvim": { "type": "Git", @@ -311,9 +311,9 @@ }, "branch": "master", "submodules": false, - "revision": "db8a4a9edb217067b1d7a2e0362c74bfe9cc944d", - "url": "https://github.com/stevearc/conform.nvim/archive/db8a4a9edb217067b1d7a2e0362c74bfe9cc944d.tar.gz", - "hash": "13vpizk8ani64d3a9yrm0g3bz8m6m6cxnpzr2xgslbhxnkmbxq7j" + "revision": "372fc521f8421b7830ea6db4d6ea3bae1c77548c", + "url": "https://github.com/stevearc/conform.nvim/archive/372fc521f8421b7830ea6db4d6ea3bae1c77548c.tar.gz", + "hash": "0b6qbwyb6ashpia7pk0r5kp82pdrblhmhmx1fprgy7lmgnm8mw97" }, "copilot-cmp": { "type": "Git", @@ -337,9 +337,9 @@ }, "branch": "master", "submodules": false, - "revision": "30321e33b03cb924fdcd6a806a0dc6fa0b0eafb9", - "url": "https://github.com/zbirenbaum/copilot.lua/archive/30321e33b03cb924fdcd6a806a0dc6fa0b0eafb9.tar.gz", - "hash": "0jlwd5x0pdfxa1hg41dfvz9zji0frvlfg86vzak0d3xmn4hr8zgb" + "revision": "a5c390f8d8e85b501b22dcb2f30e0cbbd69d5ff0", + "url": "https://github.com/zbirenbaum/copilot.lua/archive/a5c390f8d8e85b501b22dcb2f30e0cbbd69d5ff0.tar.gz", + "hash": "1pk6mh40kbja49xlsqv70wl3j89i6p996gf8z95b9b50pd2dsdgk" }, "crates-nvim": { "type": "Git", @@ -350,9 +350,9 @@ }, "branch": "main", "submodules": false, - "revision": "403a0abef0e2aec12749a534dc468d6fd50c6741", - "url": "https://github.com/Saecki/crates.nvim/archive/403a0abef0e2aec12749a534dc468d6fd50c6741.tar.gz", - "hash": "19ix86nbww5vljinfwfpjkz806j7dzw4pgjyjya201jb0n22lrc6" + "revision": "73d2c590c74a0c582144987a4decb4a642755859", + "url": "https://github.com/Saecki/crates.nvim/archive/73d2c590c74a0c582144987a4decb4a642755859.tar.gz", + "hash": "08dyl4blgi0lb3s0jbl4jcpr4j1ncyrdvxjkrqmhqcg6bmwl7iqy" }, "csharpls-extended-lsp-nvim": { "type": "Git", @@ -363,9 +363,9 @@ }, "branch": "master", "submodules": false, - "revision": "991d2c43afd7c7be77edd27a2ae686f9779382da", - "url": "https://github.com/Decodetalkers/csharpls-extended-lsp.nvim/archive/991d2c43afd7c7be77edd27a2ae686f9779382da.tar.gz", - "hash": "10jj6x78k34yrarp5ydc7n1ylp2xxgxl7jqh1y4d133mgcygabak" + "revision": "53c6dfc9790d262edd3d6a4483294bedf53d70f5", + "url": "https://github.com/Decodetalkers/csharpls-extended-lsp.nvim/archive/53c6dfc9790d262edd3d6a4483294bedf53d70f5.tar.gz", + "hash": "0hy3jaq5lq72yfvy77hijp8wzpbad7a1xfwrdljzbpm4w5j59dm2" }, "dashboard-nvim": { "type": "Git", @@ -376,9 +376,9 @@ }, "branch": "master", "submodules": false, - "revision": "000448d837f6e7a47f8f342f29526c4d7e49e9ce", - "url": "https://github.com/glepnir/dashboard-nvim/archive/000448d837f6e7a47f8f342f29526c4d7e49e9ce.tar.gz", - "hash": "11kh15qp819dhr2r3q78dv9pzxrswzzpjqmdpa5nlba9mvgjzzy3" + "revision": "b0551fae871fc39454a67cca1adcf76fbe2f61f9", + "url": "https://github.com/glepnir/dashboard-nvim/archive/b0551fae871fc39454a67cca1adcf76fbe2f61f9.tar.gz", + "hash": "0m67ij62dwnzyspyckhqvcsk81nvc16gx8zphghw4w2w4vl9lsrj" }, "diffview-nvim": { "type": "Git", @@ -454,9 +454,9 @@ }, "branch": "main", "submodules": false, - "revision": "c43684448470e732387beccaff12e6667a534800", - "url": "https://github.com/Chaitanyabsprip/fastaction.nvim/archive/c43684448470e732387beccaff12e6667a534800.tar.gz", - "hash": "1ihh07j9q4089m4iw7sb33zg106g1m84bd2nk81gixfl76vg3vbi" + "revision": "2f2e8d7010a0e5e725957828476b4e1625eaf82c", + "url": "https://github.com/Chaitanyabsprip/fastaction.nvim/archive/2f2e8d7010a0e5e725957828476b4e1625eaf82c.tar.gz", + "hash": "0m2qplldlcgzb6n5lwnwiac5n56zpyf3df015abfwrwba95zflfv" }, "fidget-nvim": { "type": "Git", @@ -471,6 +471,19 @@ "url": "https://github.com/j-hui/fidget.nvim/archive/d9ba6b7bfe29b3119a610892af67602641da778e.tar.gz", "hash": "070jadci8x6zgxnsqaldjah1gm1p78wscsb9wpn5wn8mjkyk2m80" }, + "flash-nvim": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "folke", + "repo": "flash.nvim" + }, + "branch": "main", + "submodules": false, + "revision": "3c942666f115e2811e959eabbdd361a025db8b63", + "url": "https://github.com/folke/flash.nvim/archive/3c942666f115e2811e959eabbdd361a025db8b63.tar.gz", + "hash": "1xil2lkyr404zni1qmkwrl9hvbwjjk52fmncg59vqmvdybwsnqni" + }, "flutter-tools-nvim": { "type": "Git", "repository": { @@ -480,9 +493,9 @@ }, "branch": "main", "submodules": false, - "revision": "70430c32d176f4a15c6e2c80586cd2791e3a664e", - "url": "https://github.com/akinsho/flutter-tools.nvim/archive/70430c32d176f4a15c6e2c80586cd2791e3a664e.tar.gz", - "hash": "01p721ca4as9b9nn4qibb6s775fn66j13zsx2d3flhkssii06v45" + "revision": "6faf2c70bd56f1fe78620591a2bb73f4dc6f4870", + "url": "https://github.com/akinsho/flutter-tools.nvim/archive/6faf2c70bd56f1fe78620591a2bb73f4dc6f4870.tar.gz", + "hash": "0mhqzicm56xp20mm8swmick63p9sbbby394v0qykzb9l73wpqdka" }, "friendly-snippets": { "type": "Git", @@ -493,9 +506,9 @@ }, "branch": "main", "submodules": false, - "revision": "efff286dd74c22f731cdec26a70b46e5b203c619", - "url": "https://github.com/rafamadriz/friendly-snippets/archive/efff286dd74c22f731cdec26a70b46e5b203c619.tar.gz", - "hash": "1vb5l8ipfjwsrqffbq8v2z5p1cpg035b3gk57692wd7835kr3i13" + "revision": "fc8f183479a472df60aa86f00e295462f2308178", + "url": "https://github.com/rafamadriz/friendly-snippets/archive/fc8f183479a472df60aa86f00e295462f2308178.tar.gz", + "hash": "1clmyxkw0gk9p9j72d75byws75vi3r7d04wica2dq5i0zkk49b27" }, "fzf-lua": { "type": "Git", @@ -506,9 +519,9 @@ }, "branch": "main", "submodules": false, - "revision": "03eed634a3b1f4a4dc53f928868566b0b697dabe", - "url": "https://github.com/ibhagwan/fzf-lua/archive/03eed634a3b1f4a4dc53f928868566b0b697dabe.tar.gz", - "hash": "007fz9rwhcfx8l6k6dfnm91dcc4gsazr3vqbv95z5l1h1j184v6c" + "revision": "b11467c3fbfe48e4a815e4909f5c4e5b413ce6d0", + "url": "https://github.com/ibhagwan/fzf-lua/archive/b11467c3fbfe48e4a815e4909f5c4e5b413ce6d0.tar.gz", + "hash": "1yjfyz0fchibyb6wnnyxarn2v4fxxfvf9vy1pyvfc7mz5b4mzwc2" }, "gesture-nvim": { "type": "Git", @@ -549,6 +562,19 @@ "url": "https://github.com/projekt0n/github-nvim-theme/archive/c106c9472154d6b2c74b74565616b877ae8ed31d.tar.gz", "hash": "1w7lz4bgfm8hq1mir4hcr8ik585d4l4w7bjl8yl3g3zklj8223pw" }, + "gitlinker-nvim": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "linrongbin16", + "repo": "gitlinker.nvim" + }, + "branch": "master", + "submodules": false, + "revision": "23982c86f50a9c3f4bc531d41b7a4a68ddd12355", + "url": "https://github.com/linrongbin16/gitlinker.nvim/archive/23982c86f50a9c3f4bc531d41b7a4a68ddd12355.tar.gz", + "hash": "1kz3gpdysxzpb27izhq0jgk59xw01mmnfvg5yrqvxnfhyjblxvqh" + }, "gitsigns-nvim": { "type": "Git", "repository": { @@ -558,9 +584,9 @@ }, "branch": "main", "submodules": false, - "revision": "7010000889bfb6c26065e0b0f7f1e6aa9163edd9", - "url": "https://github.com/lewis6991/gitsigns.nvim/archive/7010000889bfb6c26065e0b0f7f1e6aa9163edd9.tar.gz", - "hash": "0hl572j5l1bqg51rg545bavxs8kxya02ss3fj5fxvp9ylrnaqsx9" + "revision": "9cd665f46ab7af2e49d140d328b8e72ea1cf511b", + "url": "https://github.com/lewis6991/gitsigns.nvim/archive/9cd665f46ab7af2e49d140d328b8e72ea1cf511b.tar.gz", + "hash": "110ykgvd3hbjq8ilz1yvfcic1jpqzyz4r13dswmpv7nvsi7a2lb5" }, "glow-nvim": { "type": "Git", @@ -571,9 +597,9 @@ }, "branch": "main", "submodules": false, - "revision": "238070a686c1da3bccccf1079700eb4b5e19aea4", - "url": "https://github.com/ellisonleao/glow.nvim/archive/238070a686c1da3bccccf1079700eb4b5e19aea4.tar.gz", - "hash": "1j63y3hb03n5m4jig8576sxnb3jixxlr66m9xcs8vgfm5h0mrhqs" + "revision": "5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2", + "url": "https://github.com/ellisonleao/glow.nvim/archive/5d5954b2f22e109d4a6eba8b2618c5b96e4ee7a2.tar.gz", + "hash": "11rlis4riy1w4clnkiza8x6fs8xjwsrsgfzlz2k8z041ancmrw0a" }, "gruvbox": { "type": "Git", @@ -584,9 +610,9 @@ }, "branch": "main", "submodules": false, - "revision": "15958f5ee43e144856cd2084ce6c571bfdb44504", - "url": "https://github.com/ellisonleao/gruvbox.nvim/archive/15958f5ee43e144856cd2084ce6c571bfdb44504.tar.gz", - "hash": "16nrxcpds3zacqmfw5jsd5d8qqbwllkw9xacjkglcnaynp4qghqq" + "revision": "c54db7f7e67832fbdd0ac14633f62c8a6997ddcf", + "url": "https://github.com/ellisonleao/gruvbox.nvim/archive/c54db7f7e67832fbdd0ac14633f62c8a6997ddcf.tar.gz", + "hash": "0i7dh2d3l1w6bga6gpfssam7w1qkd84q3cxyscdfsf4j9z4b62l2" }, "harpoon": { "type": "Git", @@ -610,9 +636,9 @@ }, "branch": "master", "submodules": false, - "revision": "52608d83b424de44e914711c0f505906816e7427", - "url": "https://github.com/mrcjkb/haskell-tools.nvim/archive/52608d83b424de44e914711c0f505906816e7427.tar.gz", - "hash": "1ngz8zzyni2wh0xhvrcl27am39kqaaabh5y9c4i8ym211ravzhv6" + "revision": "fda0e5082ecc1c9e892f38b715d6f61e8829081d", + "url": "https://github.com/mrcjkb/haskell-tools.nvim/archive/fda0e5082ecc1c9e892f38b715d6f61e8829081d.tar.gz", + "hash": "0hi0ww7q0j042ssjk7x3d4s4vaninawpw3s0yrv1c4l1q5v6gnz1" }, "highlight-undo-nvim": { "type": "Git", @@ -651,10 +677,10 @@ "version_upper_bound": null, "release_prefix": null, "submodules": false, - "version": "v1.0.2", - "revision": "8578056a2226ed49fc608167edc143a87f75d809", - "url": "https://api.github.com/repos/nvimtools/hydra.nvim/tarball/v1.0.2", - "hash": "13f04pmqrfl65xx9bfkdak6ll57s94anaw7nqd0fm5hp50b7c6j3" + "version": "v1.0.3", + "revision": "f3d4822060376cb253d4cc0d5af2c272c28de2a7", + "url": "https://api.github.com/repos/nvimtools/hydra.nvim/tarball/v1.0.3", + "hash": "13dd1q951pbwi36r4s1zfs02mk5pyfvwlj1pmv4l8bnc4fs242qv" }, "icon-picker-nvim": { "type": "Git", @@ -678,9 +704,9 @@ }, "branch": "master", "submodules": false, - "revision": "6ffafab2e98b5bda46bf227055aa84b90add8cdc", - "url": "https://github.com/3rd/image.nvim/archive/6ffafab2e98b5bda46bf227055aa84b90add8cdc.tar.gz", - "hash": "105k4ccv18nynm70lphb4ac3ih1ad4hlh2syrhmyi1i1jwdirjgz" + "revision": "4c51d6202628b3b51e368152c053c3fb5c5f76f2", + "url": "https://github.com/3rd/image.nvim/archive/4c51d6202628b3b51e368152c053c3fb5c5f76f2.tar.gz", + "hash": "16s1wsy9k72qiqzvwij67j2jzwgi6ggl6lhx9p6lfw8dpps3ayxg" }, "indent-blankline-nvim": { "type": "Git", @@ -691,9 +717,9 @@ }, "branch": "master", "submodules": false, - "revision": "e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78", - "url": "https://github.com/lukas-reineke/indent-blankline.nvim/archive/e10626f7fcd51ccd56d7ffc00883ba7e0aa28f78.tar.gz", - "hash": "1whsjd715rr59warfy7nmw0hzkxfkxgzx9c8r6k2vka4flifirnk" + "revision": "005b56001b2cb30bfa61b7986bc50657816ba4ba", + "url": "https://github.com/lukas-reineke/indent-blankline.nvim/archive/005b56001b2cb30bfa61b7986bc50657816ba4ba.tar.gz", + "hash": "1rmpi866bg7hyw620hbgmmmksxgll9ilbpigd1kk9b0lpvwxbbyj" }, "lazydev-nvim": { "type": "Git", @@ -717,9 +743,9 @@ }, "branch": "main", "submodules": false, - "revision": "346a16ef942635a8ca5ff92e603d07e7e8be6cbe", - "url": "https://github.com/ggandor/leap.nvim/archive/346a16ef942635a8ca5ff92e603d07e7e8be6cbe.tar.gz", - "hash": "0rq73f7sw1sf8dn6angwgns8jd811aiixmvrndgqz2939dlqaw2l" + "revision": "2b68ddc0802bd295e64c9e2e75f18f755e50dbcc", + "url": "https://github.com/ggandor/leap.nvim/archive/2b68ddc0802bd295e64c9e2e75f18f755e50dbcc.tar.gz", + "hash": "07bdhfsig70qblvk2x0n35i5apz3mjdr05ba3082mh438ikgfmvx" }, "leetcode-nvim": { "type": "Git", @@ -734,18 +760,6 @@ "url": "https://github.com/kawre/leetcode.nvim/archive/db7e1cd6b9191b34b4c1f2f96e4e3949cde9f951.tar.gz", "hash": "1d3lb7625b2qdzqm74mzrac66rxqc0qgjd3mb37l4v8wqyiyv6pp" }, - "lsp-lines": { - "type": "Git", - "repository": { - "type": "Git", - "url": "https://git.sr.ht/~whynothugo/lsp_lines.nvim" - }, - "branch": "main", - "submodules": false, - "revision": "a92c755f182b89ea91bd8a6a2227208026f27b4d", - "url": null, - "hash": "14ym4d8vgvw2vhsaxik8612wyvszd895q69n9h100yd7x5jqhy4c" - }, "lsp-signature-nvim": { "type": "Git", "repository": { @@ -755,9 +769,9 @@ }, "branch": "master", "submodules": false, - "revision": "8b681c86b0bd7f932cd91987983d91497e43d83f", - "url": "https://github.com/ray-x/lsp_signature.nvim/archive/8b681c86b0bd7f932cd91987983d91497e43d83f.tar.gz", - "hash": "1ap077hgl334klfyi2hv81hf6r9mqpkarrz0b3ky99aavz7bmn2j" + "revision": "a793d02b6a5e639fa9d3f2a89a839fa688ab2d0a", + "url": "https://github.com/ray-x/lsp_signature.nvim/archive/a793d02b6a5e639fa9d3f2a89a839fa688ab2d0a.tar.gz", + "hash": "0y5ffzj613kf0mq74yj248176fywn4vrsnn1fhip7j5yni1cyhzy" }, "lspkind-nvim": { "type": "Git", @@ -781,9 +795,9 @@ }, "branch": "main", "submodules": false, - "revision": "6063935cf68de9aa6dd79f8e1caf5df0a9385de3", - "url": "https://github.com/nvimdev/lspsaga.nvim/archive/6063935cf68de9aa6dd79f8e1caf5df0a9385de3.tar.gz", - "hash": "1pqasjg2f2yd3ci8hyxfqqs7xnkmwdc411dlm6qg1agiv1h8v205" + "revision": "920b1253e1a26732e53fac78412f6da7f674671d", + "url": "https://github.com/nvimdev/lspsaga.nvim/archive/920b1253e1a26732e53fac78412f6da7f674671d.tar.gz", + "hash": "0wkcgy2x119sd9xn6k9vs83pvrj0m4ali1ac72pah8pnlzfvkw7i" }, "lua-utils-nvim": { "type": "Git", @@ -807,9 +821,9 @@ }, "branch": "master", "submodules": false, - "revision": "b8b60c7f1d0d95ad74ee215b2291280b30482476", - "url": "https://github.com/hoob3rt/lualine.nvim/archive/b8b60c7f1d0d95ad74ee215b2291280b30482476.tar.gz", - "hash": "02xyjp446b2nypw3hh4k6b6g9f892kxmmdv23s7dypcws28v50m9" + "revision": "15884cee63a8c205334ab13ab1c891cd4d27101a", + "url": "https://github.com/hoob3rt/lualine.nvim/archive/15884cee63a8c205334ab13ab1c891cd4d27101a.tar.gz", + "hash": "0c251ywx5gsqwafgn2pb7qrv43cimrxp4wwqhlxccizf3l6l9wy1" }, "luasnip": { "type": "Git", @@ -833,9 +847,9 @@ }, "branch": "master", "submodules": false, - "revision": "d5856041d60f9500804c872709b8d5f59505d92b", - "url": "https://github.com/nvim-neorocks/lz.n/archive/d5856041d60f9500804c872709b8d5f59505d92b.tar.gz", - "hash": "1dxsy8baq7zdc047ixxxa1qkfw48jgbng4vngwlg6gc2rv16rf36" + "revision": "a10519ab5940a5364560043df9dc3db328e27f98", + "url": "https://github.com/nvim-neorocks/lz.n/archive/a10519ab5940a5364560043df9dc3db328e27f98.tar.gz", + "hash": "18q0hai33qrb950lg8w9nk83smqpp1ahiyrn6pv9dqyakbqhx1k1" }, "lzn-auto-require": { "type": "Git", @@ -872,9 +886,9 @@ }, "branch": "main", "submodules": false, - "revision": "6e01c0e5a15554852546fac9853960780ac52ed4", - "url": "https://github.com/echasnovski/mini.ai/archive/6e01c0e5a15554852546fac9853960780ac52ed4.tar.gz", - "hash": "0138rsb0rh4fjiicm3gjah0b5n1c08lil29c5ssqk3xq1bdr69j9" + "revision": "e139eb1101beb0250fea322f8c07a42f0f175688", + "url": "https://github.com/echasnovski/mini.ai/archive/e139eb1101beb0250fea322f8c07a42f0f175688.tar.gz", + "hash": "1lc7nwxlm4ndf2d2m4y90dybscig39qh5ijacns5r40w31rfgpmc" }, "mini-align": { "type": "Git", @@ -885,9 +899,9 @@ }, "branch": "main", "submodules": false, - "revision": "3bdf6f0b91b31db5300a7b04f53f296a7fb150c1", - "url": "https://github.com/echasnovski/mini.align/archive/3bdf6f0b91b31db5300a7b04f53f296a7fb150c1.tar.gz", - "hash": "1255r5c9q0nnb7vnhs7xk45vqigmbhbim02ciczv8i80amfh9yw3" + "revision": "2b42ac0be7d570c2208f9e334ecef13453cd222d", + "url": "https://github.com/echasnovski/mini.align/archive/2b42ac0be7d570c2208f9e334ecef13453cd222d.tar.gz", + "hash": "12k8jv9f4kzn4gn507539v1llm1zn0afl2pwihv4gsr62l9gbmw9" }, "mini-animate": { "type": "Git", @@ -898,9 +912,9 @@ }, "branch": "main", "submodules": false, - "revision": "13e170c13030b043aa8ad4311012ec0eaba0d5c7", - "url": "https://github.com/echasnovski/mini.animate/archive/13e170c13030b043aa8ad4311012ec0eaba0d5c7.tar.gz", - "hash": "153hrx7i0kn65lz4yjgkaxkvj0xvqamm3mi6ciq9b0q3c2ngh7rj" + "revision": "9b518c39c0e25b7b5e4e61db3f1407f7b4889f4e", + "url": "https://github.com/echasnovski/mini.animate/archive/9b518c39c0e25b7b5e4e61db3f1407f7b4889f4e.tar.gz", + "hash": "197fgvnh05j5s0bhablgvlz1h6fl4m3n9d1sxzyf6p661dk8chcf" }, "mini-base16": { "type": "Git", @@ -911,9 +925,9 @@ }, "branch": "main", "submodules": false, - "revision": "44240f11871c15aba8fc49959ebd27c0b4768a40", - "url": "https://github.com/echasnovski/mini.base16/archive/44240f11871c15aba8fc49959ebd27c0b4768a40.tar.gz", - "hash": "0z4vvsm2hc1cab5qqd28x6jzyzh23cdijrrs1hkkkj0nj3si3zkn" + "revision": "2eb2d2b889a8c861d1a66ec651bd0edb417d5c7f", + "url": "https://github.com/echasnovski/mini.base16/archive/2eb2d2b889a8c861d1a66ec651bd0edb417d5c7f.tar.gz", + "hash": "0g09bgk7y2j83phckg9wlm82ih1ya5j0sgz6xbscbj6jh0w75lvz" }, "mini-basics": { "type": "Git", @@ -924,9 +938,9 @@ }, "branch": "main", "submodules": false, - "revision": "e8fbcf96e4e8262d452ddc851acea6c50449fa79", - "url": "https://github.com/echasnovski/mini.basics/archive/e8fbcf96e4e8262d452ddc851acea6c50449fa79.tar.gz", - "hash": "0v3j61qik4mv2r246b7q7h4ndg68x373dr5jag3a4hwszgpf7jcl" + "revision": "9904890cf863a7cbc3f57a1cbac3d298a33e90a4", + "url": "https://github.com/echasnovski/mini.basics/archive/9904890cf863a7cbc3f57a1cbac3d298a33e90a4.tar.gz", + "hash": "0k9xzdgmyrjvazvi2j1pgy8wsdbm3g3wcq4nnhdxl51i9ib5i3wj" }, "mini-bracketed": { "type": "Git", @@ -937,9 +951,9 @@ }, "branch": "main", "submodules": false, - "revision": "0ec65567ffde0ad4d94d794d55f3b627203b496a", - "url": "https://github.com/echasnovski/mini.bracketed/archive/0ec65567ffde0ad4d94d794d55f3b627203b496a.tar.gz", - "hash": "05xg63hw83n99al5sylysbq1xpschlj547s3j484jjs7wsbzzp6c" + "revision": "cd77e1e498a561a0f11b41a650caa1ba3a6a3fcc", + "url": "https://github.com/echasnovski/mini.bracketed/archive/cd77e1e498a561a0f11b41a650caa1ba3a6a3fcc.tar.gz", + "hash": "1490iv3j7ks3c04x48xqysq62kya9ygxca84avhah4pg43h1pws9" }, "mini-bufremove": { "type": "Git", @@ -950,9 +964,9 @@ }, "branch": "main", "submodules": false, - "revision": "bba1d8b413d37081756f59200b8cf756181e5b9a", - "url": "https://github.com/echasnovski/mini.bufremove/archive/bba1d8b413d37081756f59200b8cf756181e5b9a.tar.gz", - "hash": "0lbh2azsa9fmb8qp8gzhv36riiafybmjgg0prppchik8lsbhjzy4" + "revision": "66019ecebdc5bc0759e04747586994e2e3f98416", + "url": "https://github.com/echasnovski/mini.bufremove/archive/66019ecebdc5bc0759e04747586994e2e3f98416.tar.gz", + "hash": "0pqwi0ix7zl7sg74p19q61mizv48mjmbijigsssi9fbyk0hwmkww" }, "mini-clue": { "type": "Git", @@ -963,9 +977,9 @@ }, "branch": "main", "submodules": false, - "revision": "08901d2223797aa25611c33aaf9d8a1049a653bb", - "url": "https://github.com/echasnovski/mini.clue/archive/08901d2223797aa25611c33aaf9d8a1049a653bb.tar.gz", - "hash": "026d647acwxr0wrf43lffmzw4x84jm6v5lipbqqpicqgqs8b4rfv" + "revision": "298ece93383cf7feb82ff726ebe3570573cd6308", + "url": "https://github.com/echasnovski/mini.clue/archive/298ece93383cf7feb82ff726ebe3570573cd6308.tar.gz", + "hash": "09av4cxvfqc8vfhdhfa6dlv1l47hqfq9ip6w23xpdfv8acdhqr44" }, "mini-colors": { "type": "Git", @@ -976,9 +990,9 @@ }, "branch": "main", "submodules": false, - "revision": "d49e0764821d40adbf3f9e92091dfba0b0590378", - "url": "https://github.com/echasnovski/mini.colors/archive/d49e0764821d40adbf3f9e92091dfba0b0590378.tar.gz", - "hash": "1kn5012q6x1hfpyjqhssydln3v6b25gvvjw1zhw93m8x9km2j524" + "revision": "c45b8ee96f0347134e34ba3f0adaf08a9a8826d3", + "url": "https://github.com/echasnovski/mini.colors/archive/c45b8ee96f0347134e34ba3f0adaf08a9a8826d3.tar.gz", + "hash": "1px2x50h613f3jahhr24bmkkwxpwnf68c5acz51r89rmj5dl5v9r" }, "mini-comment": { "type": "Git", @@ -989,9 +1003,9 @@ }, "branch": "main", "submodules": false, - "revision": "264b8a63edd5a9a41d5361a1d52c13131c3c51a2", - "url": "https://github.com/echasnovski/mini.comment/archive/264b8a63edd5a9a41d5361a1d52c13131c3c51a2.tar.gz", - "hash": "1s4jl8sa7l6kibgsz0d6w2h4xnbpbf3k4rqq90x4l4dmx8if9vkb" + "revision": "fb867a9246f9b892cf51a8c84a3f8479cdf1558c", + "url": "https://github.com/echasnovski/mini.comment/archive/fb867a9246f9b892cf51a8c84a3f8479cdf1558c.tar.gz", + "hash": "0d3yl412f95alg5rlvq387sbx3gwyqa0nc2f8ivgw5vllnwycj3a" }, "mini-completion": { "type": "Git", @@ -1002,9 +1016,25 @@ }, "branch": "main", "submodules": false, - "revision": "8f439dfb5432f9a78fb172ec7e03ee31f18551c4", - "url": "https://github.com/echasnovski/mini.completion/archive/8f439dfb5432f9a78fb172ec7e03ee31f18551c4.tar.gz", - "hash": "0y4zzp4najk2bydwzx72nbn18n32v6ar0dc2qgialszivy0nnhgh" + "revision": "f0c324ff2142b02871cfb43049461e4f3f022a11", + "url": "https://github.com/echasnovski/mini.completion/archive/f0c324ff2142b02871cfb43049461e4f3f022a11.tar.gz", + "hash": "0q8w733i3428gzz6bk4ldc57smj55916imnpzx33arhfdvmzp8l0" + }, + "mini-cursorword": { + "type": "GitRelease", + "repository": { + "type": "GitHub", + "owner": "echasnovski", + "repo": "mini.cursorword" + }, + "pre_releases": false, + "version_upper_bound": null, + "release_prefix": null, + "submodules": false, + "version": "v0.15.0", + "revision": "6683f04509c380e3147cca368f90bbdb99641775", + "url": "https://api.github.com/repos/echasnovski/mini.cursorword/tarball/v0.15.0", + "hash": "0vqr4hkzq13ap6giyyp8asn5g6nnm406piq1a07a5nmkfxiskp9v" }, "mini-diff": { "type": "Git", @@ -1015,9 +1045,9 @@ }, "branch": "main", "submodules": false, - "revision": "bc3a7be30fd45ed4961ea90de1d9d04637cdeae6", - "url": "https://github.com/echasnovski/mini.diff/archive/bc3a7be30fd45ed4961ea90de1d9d04637cdeae6.tar.gz", - "hash": "0mjl819rd7hbsk3my9ypsl7q7kvxaiyms6a8z63d63nljsbs8ycf" + "revision": "7e268d0241255abaa07b8aa0ddff028f7315fe21", + "url": "https://github.com/echasnovski/mini.diff/archive/7e268d0241255abaa07b8aa0ddff028f7315fe21.tar.gz", + "hash": "0isw55vz55pcpsyi27lx7i2wrvc9r5rbi6ndljcbn8rbmx36xlyq" }, "mini-doc": { "type": "Git", @@ -1028,9 +1058,9 @@ }, "branch": "main", "submodules": false, - "revision": "466c340917b76d16a79fcbb2545c397fc49b110e", - "url": "https://github.com/echasnovski/mini.doc/archive/466c340917b76d16a79fcbb2545c397fc49b110e.tar.gz", - "hash": "16aglk95hw9wbgz4vzpv3bf3hqzqa2qrrzsxqjva2smg9f59c7rl" + "revision": "9b3e1b20508c7a6218cadf59b177a79a5df290f6", + "url": "https://github.com/echasnovski/mini.doc/archive/9b3e1b20508c7a6218cadf59b177a79a5df290f6.tar.gz", + "hash": "1anxn3lasm1x3yn1i0hd4im7y8fvf0fhyazn3yj6hzpm4vb12p0k" }, "mini-extra": { "type": "Git", @@ -1041,9 +1071,9 @@ }, "branch": "main", "submodules": false, - "revision": "7725a82b4d9c0acdc370385b9c04bb0791017230", - "url": "https://github.com/echasnovski/mini.extra/archive/7725a82b4d9c0acdc370385b9c04bb0791017230.tar.gz", - "hash": "0vndliykk98dn9qy8r3ip73y8zflyr40qml7jg522lq5ql546my6" + "revision": "dc571df8f1f61debd59e200adfe7f701c0d67eca", + "url": "https://github.com/echasnovski/mini.extra/archive/dc571df8f1f61debd59e200adfe7f701c0d67eca.tar.gz", + "hash": "14zbqrwcxyhax10q082n4wqmqb3519i5kmj0zc8flwmswv742gyr" }, "mini-files": { "type": "Git", @@ -1054,9 +1084,9 @@ }, "branch": "main", "submodules": false, - "revision": "0a396f5ca5516a07959ae2c00667e1a26c20f0ea", - "url": "https://github.com/echasnovski/mini.files/archive/0a396f5ca5516a07959ae2c00667e1a26c20f0ea.tar.gz", - "hash": "1axjd6a6c02jllhi1l8c9xfplipvz4g82hnxjbsgx4kzc9b60zdq" + "revision": "432142ada983ec5863ba480f0e4891b7d64ce3f6", + "url": "https://github.com/echasnovski/mini.files/archive/432142ada983ec5863ba480f0e4891b7d64ce3f6.tar.gz", + "hash": "0422sf8jx5sxws2kssi3ynynpmm1xpgk7i50dqml1kc8nymx4z5b" }, "mini-fuzzy": { "type": "Git", @@ -1067,9 +1097,9 @@ }, "branch": "main", "submodules": false, - "revision": "fb42763285075e316fd4250739af9b8c442503de", - "url": "https://github.com/echasnovski/mini.fuzzy/archive/fb42763285075e316fd4250739af9b8c442503de.tar.gz", - "hash": "0hl5ygzlf73g70j7pdd1x4975368sqpynpja1zx7bc5jln698vr4" + "revision": "c33d6a93c4fe395ae8a9bd02fed35315a90b688a", + "url": "https://github.com/echasnovski/mini.fuzzy/archive/c33d6a93c4fe395ae8a9bd02fed35315a90b688a.tar.gz", + "hash": "0n3rnvhz1hzj32l006il96zf61iv4wc0fy6dqp1lyrqm13skadvp" }, "mini-git": { "type": "Git", @@ -1080,9 +1110,9 @@ }, "branch": "main", "submodules": false, - "revision": "05f9ec07534ce8e2bf797c05c0a8bd826d9d24a2", - "url": "https://github.com/echasnovski/mini-git/archive/05f9ec07534ce8e2bf797c05c0a8bd826d9d24a2.tar.gz", - "hash": "0irvwbxhi9y4wf04khgv1l8z4a2hff3r7f2j3r0p76slqjgd7x19" + "revision": "a0ddc6302f654523053c28109e8b6dbbf05c08f8", + "url": "https://github.com/echasnovski/mini-git/archive/a0ddc6302f654523053c28109e8b6dbbf05c08f8.tar.gz", + "hash": "0vf0ys710yf1apalglxj7kcdyrnrd7jkz1ksi9v1vj3h60pvany2" }, "mini-hipatterns": { "type": "Git", @@ -1093,9 +1123,9 @@ }, "branch": "main", "submodules": false, - "revision": "fbf1e2195fdd65cf1bc970316c28098257728868", - "url": "https://github.com/echasnovski/mini.hipatterns/archive/fbf1e2195fdd65cf1bc970316c28098257728868.tar.gz", - "hash": "09g9b2jm1hac7pppmmncqpgaddd3yrlw9anhr4jw7lldr2bpwrqa" + "revision": "e5083df391171dc9d8172645606f8496d9443374", + "url": "https://github.com/echasnovski/mini.hipatterns/archive/e5083df391171dc9d8172645606f8496d9443374.tar.gz", + "hash": "116vpf4b86qbwrcax7dfhiswb4pwf3nmj2dh4kafj9vnpwyw1c3w" }, "mini-hues": { "type": "Git", @@ -1106,9 +1136,9 @@ }, "branch": "main", "submodules": false, - "revision": "7a88e67dfb953820718106d8fc83d0f97c4d9173", - "url": "https://github.com/echasnovski/mini.hues/archive/7a88e67dfb953820718106d8fc83d0f97c4d9173.tar.gz", - "hash": "1kgjkx9bqycmm077i4jk0fnyl47fkmmd2vv0qf6lqsnnliivqxqw" + "revision": "f1fa8ad34788eada276f0b8a41d96a15622933de", + "url": "https://github.com/echasnovski/mini.hues/archive/f1fa8ad34788eada276f0b8a41d96a15622933de.tar.gz", + "hash": "0yap91dqnr4jpwz1krmzay5p89pxb8v6m5457b6sm6f98956zgqq" }, "mini-icons": { "type": "Git", @@ -1119,9 +1149,9 @@ }, "branch": "main", "submodules": false, - "revision": "ec61af6e606fc89ee3b1d8f2f20166a3ca917a36", - "url": "https://github.com/echasnovski/mini.icons/archive/ec61af6e606fc89ee3b1d8f2f20166a3ca917a36.tar.gz", - "hash": "0y5b4bswykf8mf429y29lahmjzjsri0qspwyimnb1d73028qn8ck" + "revision": "397ed3807e96b59709ef3292f0a3e253d5c1dc0a", + "url": "https://github.com/echasnovski/mini.icons/archive/397ed3807e96b59709ef3292f0a3e253d5c1dc0a.tar.gz", + "hash": "110bglbbyafjym4md2slgccyjhf90bgg8h9h2ipya6cfqfs4pizy" }, "mini-indentscope": { "type": "Git", @@ -1132,9 +1162,9 @@ }, "branch": "main", "submodules": false, - "revision": "8ce41a77eed7f4121c83c67fda5e2e86af999e6d", - "url": "https://github.com/echasnovski/mini.indentscope/archive/8ce41a77eed7f4121c83c67fda5e2e86af999e6d.tar.gz", - "hash": "0dv4c6yf1s5fzvwy1n0chq553353bsix3g8ysajp9lswnd9lhbh4" + "revision": "8af2569a7d7fd37300dfa760e44e71efbbf322fd", + "url": "https://github.com/echasnovski/mini.indentscope/archive/8af2569a7d7fd37300dfa760e44e71efbbf322fd.tar.gz", + "hash": "1xk31bl9gchc8r1pv6f2z7nfkr6q7f1i4qrrj3h4crxb6nhpxmry" }, "mini-jump": { "type": "Git", @@ -1145,9 +1175,9 @@ }, "branch": "main", "submodules": false, - "revision": "1fb371cfdcb314c5faa272976f23514f264bd755", - "url": "https://github.com/echasnovski/mini.jump/archive/1fb371cfdcb314c5faa272976f23514f264bd755.tar.gz", - "hash": "1975qyjzcziya2w121cjkqaj17wxp205jl3b7lrl25db6l6ggjcs" + "revision": "65bf2c55680d8be63d29ce0c5ee4e33031426115", + "url": "https://github.com/echasnovski/mini.jump/archive/65bf2c55680d8be63d29ce0c5ee4e33031426115.tar.gz", + "hash": "17ilfgsazwq20rw42am1jzxvcdzbzsk65jzsxa5s8zs65sx6rdch" }, "mini-jump2d": { "type": "Git", @@ -1158,9 +1188,9 @@ }, "branch": "main", "submodules": false, - "revision": "3de91ea974627c4c2645e288bf0a6e6717a4dfa8", - "url": "https://github.com/echasnovski/mini.jump2d/archive/3de91ea974627c4c2645e288bf0a6e6717a4dfa8.tar.gz", - "hash": "0n40jmjbqnz1bbgal3j8m9cgzyma59ss8lxsqmi9230mkgd4xsnq" + "revision": "c90f7f8cebf3282d0f0b228015fceefb841375c6", + "url": "https://github.com/echasnovski/mini.jump2d/archive/c90f7f8cebf3282d0f0b228015fceefb841375c6.tar.gz", + "hash": "04wv8q8g5p1sv6hdaq83rik9x7fq8ki4d617v5gk5d3nv0i6pqq0" }, "mini-map": { "type": "Git", @@ -1171,9 +1201,9 @@ }, "branch": "main", "submodules": false, - "revision": "7f4c785b95ff6d266588fe6e5b6ea696cf654e61", - "url": "https://github.com/echasnovski/mini.map/archive/7f4c785b95ff6d266588fe6e5b6ea696cf654e61.tar.gz", - "hash": "0f8mlszgi1fnmy0npqw27g28h9bgavy7mc97zivgsxgx2whgz6al" + "revision": "f3c156693a9f68a10ae285d537edd36f4cf0e64f", + "url": "https://github.com/echasnovski/mini.map/archive/f3c156693a9f68a10ae285d537edd36f4cf0e64f.tar.gz", + "hash": "1z2rf664z7krs40w66b5fjmq3xffv357mv689425i5nyc1q0gr4n" }, "mini-misc": { "type": "Git", @@ -1184,9 +1214,9 @@ }, "branch": "main", "submodules": false, - "revision": "a477a9d5790f6d899d3055c87f2e771118f91180", - "url": "https://github.com/echasnovski/mini.misc/archive/a477a9d5790f6d899d3055c87f2e771118f91180.tar.gz", - "hash": "1fp60lhv93jiygc0hvchzdzjgs8scczp7kv9cm3kzzimcfa84ky6" + "revision": "f7252c5b8ff27d0856b91a410efe8e528370d919", + "url": "https://github.com/echasnovski/mini.misc/archive/f7252c5b8ff27d0856b91a410efe8e528370d919.tar.gz", + "hash": "02jrwcmbi74512240p8grlc9awivyihl6s71d60s46nslgqlnsqf" }, "mini-move": { "type": "Git", @@ -1197,9 +1227,9 @@ }, "branch": "main", "submodules": false, - "revision": "c8b30e92dd2668dd6e56a9a23cb7d4ee38c2266d", - "url": "https://github.com/echasnovski/mini.move/archive/c8b30e92dd2668dd6e56a9a23cb7d4ee38c2266d.tar.gz", - "hash": "0cnzfn706s90bc0m49jkx3fjghrcv0byqbajdhwbrv8f77c6crg3" + "revision": "4fe4a855fee53c66b0f3255a4b54ddc2ae6b308c", + "url": "https://github.com/echasnovski/mini.move/archive/4fe4a855fee53c66b0f3255a4b54ddc2ae6b308c.tar.gz", + "hash": "0dd29nx1z54ljjz9m4m9ghhv39x7ajjx43hbr4gn7p1lv2kvjv7p" }, "mini-notify": { "type": "Git", @@ -1210,9 +1240,9 @@ }, "branch": "main", "submodules": false, - "revision": "e71f08013db6812d9ce95c2624ae405a4267f4f3", - "url": "https://github.com/echasnovski/mini.notify/archive/e71f08013db6812d9ce95c2624ae405a4267f4f3.tar.gz", - "hash": "0fmy3d62283j2cwlxk97fyylad2zkd5j2r7pg7fb3cq8k1021d0s" + "revision": "3a06b21dd0b335b95d125eae813276113b5e9ce7", + "url": "https://github.com/echasnovski/mini.notify/archive/3a06b21dd0b335b95d125eae813276113b5e9ce7.tar.gz", + "hash": "13pa82zmz6w8is4gfh33fqcd2yx3f1bmd5r3q4sp1kfgf2c68c30" }, "mini-operators": { "type": "Git", @@ -1223,9 +1253,9 @@ }, "branch": "main", "submodules": false, - "revision": "02cfac95919b945c19221f0fcebe883c6dce04f6", - "url": "https://github.com/echasnovski/mini.operators/archive/02cfac95919b945c19221f0fcebe883c6dce04f6.tar.gz", - "hash": "1b51b3d1qkbzh68yadx3fcx9dgk405cb2ghln999fl5czvc3crmd" + "revision": "c6d87731f1a2c849888754347ffc5a1395bf2977", + "url": "https://github.com/echasnovski/mini.operators/archive/c6d87731f1a2c849888754347ffc5a1395bf2977.tar.gz", + "hash": "1ijnhxajpii17a1rz1avp1i5j35an2dq0ji28v2wrvaa0b5jg13a" }, "mini-pairs": { "type": "Git", @@ -1236,9 +1266,9 @@ }, "branch": "main", "submodules": false, - "revision": "1a3e73649c0eaef2f6c48ce1e761c6f0a7c11918", - "url": "https://github.com/echasnovski/mini.pairs/archive/1a3e73649c0eaef2f6c48ce1e761c6f0a7c11918.tar.gz", - "hash": "0d0188v3gw2sdqnfly6i12v9036hdk1sg362lkngjmlpnq3m8574" + "revision": "69864a2efb36c030877421634487fd90db1e4298", + "url": "https://github.com/echasnovski/mini.pairs/archive/69864a2efb36c030877421634487fd90db1e4298.tar.gz", + "hash": "0avjjikmz3b8676hzcqck3r2lv0zxsdr8hqs65zn2dr12q8zh41r" }, "mini-pick": { "type": "Git", @@ -1249,9 +1279,9 @@ }, "branch": "main", "submodules": false, - "revision": "12ea14f8e285d1bcc909116685fdbb129a89d546", - "url": "https://github.com/echasnovski/mini.pick/archive/12ea14f8e285d1bcc909116685fdbb129a89d546.tar.gz", - "hash": "1ssa7ym6zxhazx551bjsnfdmvm1553kj6amvcczw9jrqbf4ynjqy" + "revision": "417c273861971b451687e847383e61687463b06e", + "url": "https://github.com/echasnovski/mini.pick/archive/417c273861971b451687e847383e61687463b06e.tar.gz", + "hash": "0xyw2wns9fpv1yxzflb18mmfajihy45g163q4bka0vylj77858xa" }, "mini-sessions": { "type": "Git", @@ -1262,9 +1292,9 @@ }, "branch": "main", "submodules": false, - "revision": "f38354b72c11d5bbb2153183fa6ba0cf238147d5", - "url": "https://github.com/echasnovski/mini.sessions/archive/f38354b72c11d5bbb2153183fa6ba0cf238147d5.tar.gz", - "hash": "1m08i9b235bpgyjgajj85i10z991yigrhp3hg5xji9hajn0d67iw" + "revision": "dd7fe484dfcbf270a788e9291545df509cdb9691", + "url": "https://github.com/echasnovski/mini.sessions/archive/dd7fe484dfcbf270a788e9291545df509cdb9691.tar.gz", + "hash": "0m8l1hw8y3mwhcnyzhxb7j4jvvwmf8i7ybxddy2r2rq89rc7x3ln" }, "mini-snippets": { "type": "Git", @@ -1275,9 +1305,9 @@ }, "branch": "main", "submodules": false, - "revision": "04e1c0f8538a4ee0ddc054e30e92a93cb4c1b568", - "url": "https://github.com/echasnovski/mini.snippets/archive/04e1c0f8538a4ee0ddc054e30e92a93cb4c1b568.tar.gz", - "hash": "17fqgsr7id11f1wp6wri1zi67m2vh6i9hdrwj9bgjy4528x7gi6f" + "revision": "d005684e620e76eb2a5fbbbd211a1eba7212b4aa", + "url": "https://github.com/echasnovski/mini.snippets/archive/d005684e620e76eb2a5fbbbd211a1eba7212b4aa.tar.gz", + "hash": "19xmqzgx0lv6m6lp6dn4pcr53clgjyrlnh45j795cy9szizw4y0x" }, "mini-splitjoin": { "type": "Git", @@ -1288,9 +1318,9 @@ }, "branch": "main", "submodules": false, - "revision": "efe24ba54f9623cb05698355981ec05278976788", - "url": "https://github.com/echasnovski/mini.splitjoin/archive/efe24ba54f9623cb05698355981ec05278976788.tar.gz", - "hash": "0xnc61cm1zpj8j7j10zgpx4438vmqpdwbqick9rrw9jbmbzcc0p5" + "revision": "70240d5d3881ff1b2b1d7902450f98a6fa303800", + "url": "https://github.com/echasnovski/mini.splitjoin/archive/70240d5d3881ff1b2b1d7902450f98a6fa303800.tar.gz", + "hash": "1sp4p0s4cv888n0nmgy04j5k51ndxpmksy235rg9jkk7j5gg47qb" }, "mini-starter": { "type": "Git", @@ -1301,9 +1331,9 @@ }, "branch": "main", "submodules": false, - "revision": "736c5177bd90cc852c05d903f662f0fc395a4b4b", - "url": "https://github.com/echasnovski/mini.starter/archive/736c5177bd90cc852c05d903f662f0fc395a4b4b.tar.gz", - "hash": "0w2awkcrabbsybvv2hlzjlqgcr53480pg5p3fhaaparrhd90c7na" + "revision": "d8038690eadf203a40863c3a9423df880a901d39", + "url": "https://github.com/echasnovski/mini.starter/archive/d8038690eadf203a40863c3a9423df880a901d39.tar.gz", + "hash": "06rglm7m32lrgba47vb96kaxdsyz8pl2ivbr41m1swy3ihrv69y3" }, "mini-statusline": { "type": "Git", @@ -1314,9 +1344,9 @@ }, "branch": "main", "submodules": false, - "revision": "83209bfbca156f9e4a5ec47a2a8ce1e5ce26311d", - "url": "https://github.com/echasnovski/mini.statusline/archive/83209bfbca156f9e4a5ec47a2a8ce1e5ce26311d.tar.gz", - "hash": "1hma81mnylbnx812km7zc0xjxbs3bp2pb3bqzsny9w1llxwv7zrr" + "revision": "e331175f10d9f400b42523b3890841aba202ce16", + "url": "https://github.com/echasnovski/mini.statusline/archive/e331175f10d9f400b42523b3890841aba202ce16.tar.gz", + "hash": "1hhd4fln3m04d9v5pwa3mb1n4nifsilrxp8hs14njcgk2rxv6qar" }, "mini-surround": { "type": "Git", @@ -1327,9 +1357,9 @@ }, "branch": "main", "submodules": false, - "revision": "f90069c7441a5fb04c3de42eacf93e16b64dd3eb", - "url": "https://github.com/echasnovski/mini.surround/archive/f90069c7441a5fb04c3de42eacf93e16b64dd3eb.tar.gz", - "hash": "0bs7y0ai67jlwdz76x6945xvj9f4vqr4qx4vyfg7z7b6k1gzc092" + "revision": "5aab42fcdcf31fa010f012771eda5631c077840a", + "url": "https://github.com/echasnovski/mini.surround/archive/5aab42fcdcf31fa010f012771eda5631c077840a.tar.gz", + "hash": "0hsy7ngqz17a663k4gkj9ambbcn24jvqx7010aiv8g4b0gbmzhky" }, "mini-tabline": { "type": "Git", @@ -1340,9 +1370,9 @@ }, "branch": "main", "submodules": false, - "revision": "46108e2d32b0ec8643ee46df14badedb33f3defe", - "url": "https://github.com/echasnovski/mini.tabline/archive/46108e2d32b0ec8643ee46df14badedb33f3defe.tar.gz", - "hash": "19n37b89dxssx3p3lzr9l7pxmbdh0k2mb14ankpq3cy0ax3mi79c" + "revision": "ff7a050721352580184db1ff203286c1032d5b54", + "url": "https://github.com/echasnovski/mini.tabline/archive/ff7a050721352580184db1ff203286c1032d5b54.tar.gz", + "hash": "142vv5nwg3bvia21frmcyps1ycyqqj1l0v5vclrm46cwaz2b2qfb" }, "mini-test": { "type": "Git", @@ -1353,9 +1383,9 @@ }, "branch": "main", "submodules": false, - "revision": "16a909c3ce39d9af9ec4dacca16205d36f85d823", - "url": "https://github.com/echasnovski/mini.test/archive/16a909c3ce39d9af9ec4dacca16205d36f85d823.tar.gz", - "hash": "1qf8ay763d011rvy9qwpv8q3mlxjlymvc4gx3bjfv0n56k5dzpg0" + "revision": "4c70379d07ea44f697d96c7a6f04c79f17b34bb3", + "url": "https://github.com/echasnovski/mini.test/archive/4c70379d07ea44f697d96c7a6f04c79f17b34bb3.tar.gz", + "hash": "0si92d4jc7lmzj2mppz0vcmgqgsbgy64fl4bj8jwdl7z78bhpjwk" }, "mini-trailspace": { "type": "Git", @@ -1366,9 +1396,9 @@ }, "branch": "main", "submodules": false, - "revision": "9bbbf568c06fe424dc21d2c228fa76098008a5f3", - "url": "https://github.com/echasnovski/mini.trailspace/archive/9bbbf568c06fe424dc21d2c228fa76098008a5f3.tar.gz", - "hash": "1ihd8fbs5imnp5xcllcj6fgpx0y4vclrkfz802q9fl7fqh00dcay" + "revision": "39a0460c025a605519fdd6bea1ce870642429996", + "url": "https://github.com/echasnovski/mini.trailspace/archive/39a0460c025a605519fdd6bea1ce870642429996.tar.gz", + "hash": "1d95vcxm7fhav8gz9n8m36q3hkxi6j1p0f6y35qnps1x7yz1wyfg" }, "mini-visits": { "type": "Git", @@ -1379,9 +1409,9 @@ }, "branch": "main", "submodules": false, - "revision": "46e7a4074032d0340308c3379bc3650626c85da8", - "url": "https://github.com/echasnovski/mini.visits/archive/46e7a4074032d0340308c3379bc3650626c85da8.tar.gz", - "hash": "1776i3xn9dpccjjamy5ys5acc3nxd3zph4a77sbw2dipfd8zpasi" + "revision": "c0a3b02f5d82080a2aa6cd9185ff16944ce2451a", + "url": "https://github.com/echasnovski/mini.visits/archive/c0a3b02f5d82080a2aa6cd9185ff16944ce2451a.tar.gz", + "hash": "02wr34zzd5x6zn4iwhbv5g4shibpvb8536hr5lk0aw7i55aqg5x8" }, "minimap-vim": { "type": "Git", @@ -1418,9 +1448,9 @@ }, "branch": "main", "submodules": false, - "revision": "1e34663c32e8f5d915921a938e0dc4e3e788ceb8", - "url": "https://github.com/mvllow/modes.nvim/archive/1e34663c32e8f5d915921a938e0dc4e3e788ceb8.tar.gz", - "hash": "07dara1m8igb6yr8jx62rl8jr71s51vxphiyk8i206bzmbx120ay" + "revision": "7c6ca20de4c9acb22ef06074e39fd2c021b99935", + "url": "https://github.com/mvllow/modes.nvim/archive/7c6ca20de4c9acb22ef06074e39fd2c021b99935.tar.gz", + "hash": "088bacsy76imlyd4njgrw7cg2l82dddr23g25qx81ihlaf3vmdjp" }, "multicursors-nvim": { "type": "GitRelease", @@ -1447,9 +1477,9 @@ }, "branch": "main", "submodules": false, - "revision": "d9544c74ec43cca0564fdc334c116fbe0be8a807", - "url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/d9544c74ec43cca0564fdc334c116fbe0be8a807.tar.gz", - "hash": "0wiw4aipg3qmzw6k9vrljh4cg09kyqd28s6xpv2zhsg05mm38nhb" + "revision": "299e174c3b8373c9c1f9be0bc3967c852712d0f3", + "url": "https://github.com/nvim-neo-tree/neo-tree.nvim/archive/299e174c3b8373c9c1f9be0bc3967c852712d0f3.tar.gz", + "hash": "0vm7hbcqj548pvl9vfmzsgpx73lmrnmhp399bprizg87zn73m005" }, "neocord": { "type": "Git", @@ -1473,9 +1503,9 @@ }, "branch": "main", "submodules": false, - "revision": "6f0b4eefa591fbc4c9344f110b0c0bac5b49078c", - "url": "https://github.com/nvim-neorg/neorg/archive/6f0b4eefa591fbc4c9344f110b0c0bac5b49078c.tar.gz", - "hash": "1x8h5hxzg06g1d849bna6rs4jzjf248g59v87zvlc4scmp9pzjga" + "revision": "35da593c55d78086a3203ee3e6d749fafe2e4e73", + "url": "https://github.com/nvim-neorg/neorg/archive/35da593c55d78086a3203ee3e6d749fafe2e4e73.tar.gz", + "hash": "0kxygwpfffa0blcy54g7cvm5laj77q0f72p69s43j9dpsps1h63y" }, "neorg-telescope": { "type": "Git", @@ -1486,9 +1516,9 @@ }, "branch": "main", "submodules": false, - "revision": "ddb2556644cae922699a239bbb0fe16e25b084b7", - "url": "https://github.com/nvim-neorg/neorg-telescope/archive/ddb2556644cae922699a239bbb0fe16e25b084b7.tar.gz", - "hash": "0p2s3n22fy1vkqc9n55x6kssqs4n0znwlszfrs532hj8m992wbks" + "revision": "7fb6ca6a632c3c095601d379a664c0c1f802dc6c", + "url": "https://github.com/nvim-neorg/neorg-telescope/archive/7fb6ca6a632c3c095601d379a664c0c1f802dc6c.tar.gz", + "hash": "12pbixkb7175qb9wblq01mbpkccm9h0si7b2jjaf7yip8j8frxmn" }, "neovim-session-manager": { "type": "Git", @@ -1551,9 +1581,9 @@ }, "branch": "main", "submodules": false, - "revision": "bb680d752cec37949faca7a1f509e2fe67ab418a", - "url": "https://github.com/nvimtools/none-ls.nvim/archive/bb680d752cec37949faca7a1f509e2fe67ab418a.tar.gz", - "hash": "11zgc86cjkv1vi183mplx3bsqa2x7ardk7ybyrp702xx5hmd882l" + "revision": "751349f21bdf1acf7af091fead456866bf9a7e7d", + "url": "https://github.com/nvimtools/none-ls.nvim/archive/751349f21bdf1acf7af091fead456866bf9a7e7d.tar.gz", + "hash": "1zhqyjs914ib1yq42xq3aphw8pl4168h2k3ybm92z00ahi51kbqn" }, "nord": { "type": "Git", @@ -1577,9 +1607,9 @@ }, "branch": "main", "submodules": false, - "revision": "8d3bce9764e627b62b07424e0df77f680d47ffdb", - "url": "https://github.com/MunifTanjim/nui.nvim/archive/8d3bce9764e627b62b07424e0df77f680d47ffdb.tar.gz", - "hash": "0ia8q5d4xcss45vw6jlaanyr0migy03cjzq9g0kipfyqxkcxi105" + "revision": "8d5b0b568517935d3c84f257f272ef004d9f5a59", + "url": "https://github.com/MunifTanjim/nui.nvim/archive/8d5b0b568517935d3c84f257f272ef004d9f5a59.tar.gz", + "hash": "0z5md64qly2dzm9pq46ldid45l44mfwqk3r1hirk8lj6djyrxv9m" }, "nvim-autopairs": { "type": "Git", @@ -1590,9 +1620,9 @@ }, "branch": "master", "submodules": false, - "revision": "68f0e5c3dab23261a945272032ee6700af86227a", - "url": "https://github.com/windwp/nvim-autopairs/archive/68f0e5c3dab23261a945272032ee6700af86227a.tar.gz", - "hash": "1ai3s1083dx6bddhrkv7d3hyq3zsrblizbvpgl09r1w9cijxhj8m" + "revision": "4d74e75913832866aa7de35e4202463ddf6efd1b", + "url": "https://github.com/windwp/nvim-autopairs/archive/4d74e75913832866aa7de35e4202463ddf6efd1b.tar.gz", + "hash": "0q6pv89x05l71nfg2chqf9p0d2ha72agmll2svimq0npp84ymfxz" }, "nvim-bufferline-lua": { "type": "Git", @@ -1616,9 +1646,9 @@ }, "branch": "main", "submodules": false, - "revision": "1e1900b0769324a9675ef85b38f99cca29e203b3", - "url": "https://github.com/hrsh7th/nvim-cmp/archive/1e1900b0769324a9675ef85b38f99cca29e203b3.tar.gz", - "hash": "1yqg4gnzmlm9h5rcmzv7msjmqna0ffn7gllf5knfkps5ns0ynpyf" + "revision": "b5311ab3ed9c846b585c0c15b7559be131ec4be9", + "url": "https://github.com/hrsh7th/nvim-cmp/archive/b5311ab3ed9c846b585c0c15b7559be131ec4be9.tar.gz", + "hash": "07674djcyac9wlj08y9p5gsmdpsm8zxjfgk3fwyvvx8j7qyzx74p" }, "nvim-colorizer-lua": { "type": "Git", @@ -1655,9 +1685,9 @@ }, "branch": "master", "submodules": false, - "revision": "a720d4966f758ab22e8ec28812b6df90a53e0f02", - "url": "https://github.com/mfussenegger/nvim-dap/archive/a720d4966f758ab22e8ec28812b6df90a53e0f02.tar.gz", - "hash": "0b979dhl5jr3kx9j5zih39jbrv22d554ws6y8g1cgsm2i3412s4h" + "revision": "8df427aeba0a06c6577dc3ab82de3076964e3b8d", + "url": "https://github.com/mfussenegger/nvim-dap/archive/8df427aeba0a06c6577dc3ab82de3076964e3b8d.tar.gz", + "hash": "13d04z1dnkrhslq6s1xba5myqkgxar3i3p2lhqvpawicbba8yp22" }, "nvim-dap-go": { "type": "Git", @@ -1681,9 +1711,9 @@ }, "branch": "master", "submodules": false, - "revision": "bc81f8d3440aede116f821114547a476b082b319", - "url": "https://github.com/rcarriga/nvim-dap-ui/archive/bc81f8d3440aede116f821114547a476b082b319.tar.gz", - "hash": "0hk34mfjxqiq82faf3q75ixpxd822vh8zbl1i5pvx6akn4v3mxk7" + "revision": "73a26abf4941aa27da59820fd6b028ebcdbcf932", + "url": "https://github.com/rcarriga/nvim-dap-ui/archive/73a26abf4941aa27da59820fd6b028ebcdbcf932.tar.gz", + "hash": "1h71y3pjbbgh8kgghs0sb721bl9pd7l7ak3mj1j27fv6x6kbmgar" }, "nvim-docs-view": { "type": "Git", @@ -1694,9 +1724,9 @@ }, "branch": "master", "submodules": false, - "revision": "1b97f8f954d74c46061bf289b6cea9232484c12c", - "url": "https://github.com/amrbashir/nvim-docs-view/archive/1b97f8f954d74c46061bf289b6cea9232484c12c.tar.gz", - "hash": "1xi0w20fq3yziwdjld1xhkm7dr0ihbbq2hik0qsckd7y73qqg5kg" + "revision": "f674ba57349849bce894efdd54096483c88e810b", + "url": "https://github.com/amrbashir/nvim-docs-view/archive/f674ba57349849bce894efdd54096483c88e810b.tar.gz", + "hash": "0ifbfhifly5sdsbxv1p71wvl644jz505ln9j1yr6qwvyk6a2krm1" }, "nvim-lightbulb": { "type": "Git", @@ -1707,9 +1737,9 @@ }, "branch": "master", "submodules": false, - "revision": "f7f61c47af5bf701b1f4af127bc565ab6491acbf", - "url": "https://github.com/kosayoda/nvim-lightbulb/archive/f7f61c47af5bf701b1f4af127bc565ab6491acbf.tar.gz", - "hash": "1wg7yib9qn8ybsk615kw1g8b3g5zbpdldp6bb7ax0jwxsn5nwwfb" + "revision": "aa3a8b0f4305b25cfe368f6c9be9923a7c9d0805", + "url": "https://github.com/kosayoda/nvim-lightbulb/archive/aa3a8b0f4305b25cfe368f6c9be9923a7c9d0805.tar.gz", + "hash": "0wp8f6yphb28iaxlhg326kvrh3h8xn5fkkcfn1whbacch6562wym" }, "nvim-lint": { "type": "Git", @@ -1720,9 +1750,9 @@ }, "branch": "master", "submodules": false, - "revision": "6e9dd545a1af204c4022a8fcd99727ea41ffdcc8", - "url": "https://github.com/mfussenegger/nvim-lint/archive/6e9dd545a1af204c4022a8fcd99727ea41ffdcc8.tar.gz", - "hash": "0b318dahzf9kd043mjsa41rj44zfbs7k8i4bz0rqhcqipr19rwhk" + "revision": "9dfb77ef6c5092a19502883c02dc5a02ec648729", + "url": "https://github.com/mfussenegger/nvim-lint/archive/9dfb77ef6c5092a19502883c02dc5a02ec648729.tar.gz", + "hash": "0772bgl09jcrvvhvpic2b07qb21kf2pr479g792jlwbr5jfa1pa0" }, "nvim-lspconfig": { "type": "Git", @@ -1733,9 +1763,9 @@ }, "branch": "master", "submodules": false, - "revision": "8a1529e46eef5efc86c34c8d9bdd313abc2ecba0", - "url": "https://github.com/neovim/nvim-lspconfig/archive/8a1529e46eef5efc86c34c8d9bdd313abc2ecba0.tar.gz", - "hash": "0l9mns71hh0jssxblr1q286z8hmxwbgyq1nw6scki9ffn23jwnz0" + "revision": "641e567f975feab3815b47c7d29e6148e07afa77", + "url": "https://github.com/neovim/nvim-lspconfig/archive/641e567f975feab3815b47c7d29e6148e07afa77.tar.gz", + "hash": "1238hk6v3mm6hzjbipz60rva7crv95h2vzg6ph9wzplq52kzryav" }, "nvim-metals": { "type": "Git", @@ -1746,9 +1776,9 @@ }, "branch": "main", "submodules": false, - "revision": "fe6125f633c1b2f68d468a2041e81e2e5e8933d4", - "url": "https://github.com/scalameta/nvim-metals/archive/fe6125f633c1b2f68d468a2041e81e2e5e8933d4.tar.gz", - "hash": "1xpav9ykwk7kz61c6y33kyjxf0nf47risdj0q9gf5rnl88cln4by" + "revision": "04d8ce24638412a2c93dd79fecca4b2c7b9c07f9", + "url": "https://github.com/scalameta/nvim-metals/archive/04d8ce24638412a2c93dd79fecca4b2c7b9c07f9.tar.gz", + "hash": "19mdfn5ni35ldjmwdg25cwiy9cvkg2cxrdhcjr9xplx7ln6zsld9" }, "nvim-navbuddy": { "type": "Git", @@ -1772,9 +1802,9 @@ }, "branch": "master", "submodules": false, - "revision": "8649f694d3e76ee10c19255dece6411c29206a54", - "url": "https://github.com/SmiteshP/nvim-navic/archive/8649f694d3e76ee10c19255dece6411c29206a54.tar.gz", - "hash": "0964wgwh6i4nm637vx36bshkpd5i63ipwzqmrdbkz5h9bzyng7nj" + "revision": "39231352aec0d1e09cebbffdd9dc20a5dc691ffe", + "url": "https://github.com/SmiteshP/nvim-navic/archive/39231352aec0d1e09cebbffdd9dc20a5dc691ffe.tar.gz", + "hash": "1xj2bzax8hynm2x9zbvsaxv1j22chklyygzm1kbqxxs077qn45ws" }, "nvim-neoclip-lua": { "type": "Git", @@ -1811,9 +1841,9 @@ }, "branch": "master", "submodules": false, - "revision": "22f29093eae7785773ee9d543f8750348b1a195c", - "url": "https://github.com/rcarriga/nvim-notify/archive/22f29093eae7785773ee9d543f8750348b1a195c.tar.gz", - "hash": "0nnxmi65ppmn8dzwh38vx2w7w6piq0i28mw0s32wa31xn5rmzwza" + "revision": "b5825cf9ee881dd8e43309c93374ed5b87b7a896", + "url": "https://github.com/rcarriga/nvim-notify/archive/b5825cf9ee881dd8e43309c93374ed5b87b7a896.tar.gz", + "hash": "13qlkncpmjvmkpcx5sv366i7scsh90wjvcqy8qlv31ccmgq511wv" }, "nvim-scrollbar": { "type": "Git", @@ -1837,9 +1867,9 @@ }, "branch": "main", "submodules": false, - "revision": "6c54643ef42016b744888b06d2381abd23f9b7ea", - "url": "https://github.com/kylechui/nvim-surround/archive/6c54643ef42016b744888b06d2381abd23f9b7ea.tar.gz", - "hash": "1c5agqfffmjxc73bv8d4hmrnzx62ikqpv7pii19v5alfdcnh5j48" + "revision": "0e62500b98f4513feaaf7425c135472457ea5b7d", + "url": "https://github.com/kylechui/nvim-surround/archive/0e62500b98f4513feaaf7425c135472457ea5b7d.tar.gz", + "hash": "0rwzz98n8gyx2bffxg7ga7vxxxcc4crbwimvglx6bxkdg2abwyrn" }, "nvim-tree-lua": { "type": "Git", @@ -1850,9 +1880,9 @@ }, "branch": "master", "submodules": false, - "revision": "c09ff35de503a41fa62465c6b4ae72d96e7a7ce4", - "url": "https://github.com/nvim-tree/nvim-tree.lua/archive/c09ff35de503a41fa62465c6b4ae72d96e7a7ce4.tar.gz", - "hash": "0bnc2fc9ipz9yp917l61vvcaqmbdg5fhqxrp7jfjxj5qmvadhai9" + "revision": "582ae48c9e43d2bcd55dfcc8e2e7a1f29065d924", + "url": "https://github.com/nvim-tree/nvim-tree.lua/archive/582ae48c9e43d2bcd55dfcc8e2e7a1f29065d924.tar.gz", + "hash": "1xpal45q4mvplvgz06z4wzsq1ml5awv8v4m0k9jh9s4xlnc0va24" }, "nvim-treesitter-context": { "type": "Git", @@ -1863,9 +1893,9 @@ }, "branch": "master", "submodules": false, - "revision": "572e534c9f881bb9bf9f388e4c87f360446c72d4", - "url": "https://github.com/nvim-treesitter/nvim-treesitter-context/archive/572e534c9f881bb9bf9f388e4c87f360446c72d4.tar.gz", - "hash": "0bg3x75j8mwvpdhwd945lxbwmhw2j1qi135zn0yli78c9jn8g0ay" + "revision": "6daca3ad780f045550b820f262002f35175a6c04", + "url": "https://github.com/nvim-treesitter/nvim-treesitter-context/archive/6daca3ad780f045550b820f262002f35175a6c04.tar.gz", + "hash": "0qprwd44hw9sz0vh14p6lpvs9vxrick462pfkradmal6ak1kfwn3" }, "nvim-ts-autotag": { "type": "Git", @@ -1889,9 +1919,9 @@ }, "branch": "main", "submodules": false, - "revision": "a52c92c3bbaa10f0c9b547a50adaa8c7d8b29f94", - "url": "https://github.com/kevinhwang91/nvim-ufo/archive/a52c92c3bbaa10f0c9b547a50adaa8c7d8b29f94.tar.gz", - "hash": "1fv3rhny1d8wgxd3h3fy4vv05nb0fz506sk2in8rkmwlzwixl2wn" + "revision": "d4c8bdb06b7a589f004a53bf710196967752c63d", + "url": "https://github.com/kevinhwang91/nvim-ufo/archive/d4c8bdb06b7a589f004a53bf710196967752c63d.tar.gz", + "hash": "11zcr6vvj6gm5di63w55ccvwf2x7his8v9v8bingsz6l6n79dk6v" }, "nvim-web-devicons": { "type": "Git", @@ -1902,9 +1932,9 @@ }, "branch": "master", "submodules": false, - "revision": "d0cafff5c4347a604a07edf7bb9a91fda7eb577e", - "url": "https://github.com/nvim-tree/nvim-web-devicons/archive/d0cafff5c4347a604a07edf7bb9a91fda7eb577e.tar.gz", - "hash": "1j5ccksn2lkd1f1fvhhjs2amhq17wxmgcqv6jk05jpdbngw2mv98" + "revision": "50b5b06bff13a9b4eab946de7c7033649a6618a1", + "url": "https://github.com/nvim-tree/nvim-web-devicons/archive/50b5b06bff13a9b4eab946de7c7033649a6618a1.tar.gz", + "hash": "1jsrwcsyjwlzk2l3x417pr6s6cq4zk6b6k417hhmrprrw66ajdb6" }, "obsidian-nvim": { "type": "Git", @@ -1919,6 +1949,19 @@ "url": "https://github.com/epwalsh/obsidian.nvim/archive/14e0427bef6c55da0d63f9a313fd9941be3a2479.tar.gz", "hash": "15ycmhn48ryaqzch6w3w6llq2qgmjx8xwkb9dn0075z60dybpflr" }, + "oil-nvim": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "stevearc", + "repo": "oil.nvim" + }, + "branch": "master", + "submodules": false, + "revision": "685cdb4ffa74473d75a1b97451f8654ceeab0f4a", + "url": "https://github.com/stevearc/oil.nvim/archive/685cdb4ffa74473d75a1b97451f8654ceeab0f4a.tar.gz", + "hash": "1wqbsfh274wkyyx8nf5gbcnsk92y4bwsrwq2vl85x3cx73kkzlhv" + }, "omnisharp-extended-lsp-nvim": { "type": "Git", "repository": { @@ -1941,9 +1984,9 @@ }, "branch": "master", "submodules": false, - "revision": "67a74c275d1116d575ab25485d1bfa6b2a9c38a6", - "url": "https://github.com/navarasu/onedark.nvim/archive/67a74c275d1116d575ab25485d1bfa6b2a9c38a6.tar.gz", - "hash": "1pfyz3ascxs3sxl878qcirp9jsz77kpl2ks3wxkcv8ql4psymc9l" + "revision": "0e5512d1bebd1f08954710086f87a5caa173a924", + "url": "https://github.com/navarasu/onedark.nvim/archive/0e5512d1bebd1f08954710086f87a5caa173a924.tar.gz", + "hash": "14ixrvcp3h06kngq5ji54lf2l10k33vrmzs609xf7sqdy6rflm4j" }, "orgmode": { "type": "Git", @@ -1954,9 +1997,9 @@ }, "branch": "master", "submodules": false, - "revision": "abf8890a9b0612c51d738268c759c4331bc2109c", - "url": "https://github.com/nvim-orgmode/orgmode/archive/abf8890a9b0612c51d738268c759c4331bc2109c.tar.gz", - "hash": "0j4f2y47s5ymii1w0r9gk39z4vks5fc9cy0rvj1vzml4vf4wijsi" + "revision": "27ab1cf9e7ae142f9e9ffb218be50dd920f04cb3", + "url": "https://github.com/nvim-orgmode/orgmode/archive/27ab1cf9e7ae142f9e9ffb218be50dd920f04cb3.tar.gz", + "hash": "176v9y36258jm8h3aaph57wgr6s7rgmgdnq9hgwialwn4bygfym0" }, "otter-nvim": { "type": "Git", @@ -1967,9 +2010,9 @@ }, "branch": "main", "submodules": false, - "revision": "e37053d2c6a17463e705483122eee04d41e3d4af", - "url": "https://github.com/jmbuhr/otter.nvim/archive/e37053d2c6a17463e705483122eee04d41e3d4af.tar.gz", - "hash": "0sq7x2mcxl7z0j4s3a395fy0bzz13h4rxd03lp6674y6hsjxcm55" + "revision": "a7766be1592bfa9e88e67512646e343d0b4b2ff5", + "url": "https://github.com/jmbuhr/otter.nvim/archive/a7766be1592bfa9e88e67512646e343d0b4b2ff5.tar.gz", + "hash": "18lcqr5qpa50jxmh5h53k0bsz0n3lzbihi8dchww3kz64b52hl5p" }, "oxocarbon": { "type": "Git", @@ -2019,9 +2062,9 @@ }, "branch": "main", "submodules": false, - "revision": "4223fb903cbafc3bd8a87a314dac375bbd1c01ce", - "url": "https://github.com/tris203/precognition.nvim/archive/4223fb903cbafc3bd8a87a314dac375bbd1c01ce.tar.gz", - "hash": "11ng6p0xmrjky5xr9jdkrrav7is9r090qhs2fsnbg16124bgb0g5" + "revision": "80ac0a99064eba71894dd164e891cc5d7e05827e", + "url": "https://github.com/tris203/precognition.nvim/archive/80ac0a99064eba71894dd164e891cc5d7e05827e.tar.gz", + "hash": "1v1knpvd3wxvixmfyzrjwg9r7xbixg53n4dvvk7r8d05y5cgbzmc" }, "project-nvim": { "type": "Git", @@ -2058,9 +2101,9 @@ }, "branch": "master", "submodules": false, - "revision": "f1e5490e87478cf0b528250ebb51552f3d08436a", - "url": "https://github.com/HiPhish/rainbow-delimiters.nvim/archive/f1e5490e87478cf0b528250ebb51552f3d08436a.tar.gz", - "hash": "02265awjpkd8v6s22wx8qrk2wxq8b7c7h5lr9n7pi6d4lwyrkrxf" + "revision": "55ad4fb76ab68460f700599b7449385f0c4e858e", + "url": "https://github.com/HiPhish/rainbow-delimiters.nvim/archive/55ad4fb76ab68460f700599b7449385f0c4e858e.tar.gz", + "hash": "1wb18hp5yz4vhw9ajm50006n4d1mp1krri6kidxh8rkhs0d6zqhi" }, "registers-nvim": { "type": "Git", @@ -2084,9 +2127,9 @@ }, "branch": "main", "submodules": false, - "revision": "08e1fa4e281e48ee4aa892428de9fb91e66edca6", - "url": "https://github.com/MeanderingProgrammer/render-markdown.nvim/archive/08e1fa4e281e48ee4aa892428de9fb91e66edca6.tar.gz", - "hash": "1kiwa88l2262ycfj6z70hdriml0y2wnji3l9w27jbky9zxwhazrs" + "revision": "78ffe3b0500bbc7e37fabde723d96661538e8b32", + "url": "https://github.com/MeanderingProgrammer/render-markdown.nvim/archive/78ffe3b0500bbc7e37fabde723d96661538e8b32.tar.gz", + "hash": "00dn9cpdvm7dy4xyhaij2rs0g0l926cqvjn03v06sray3adbyij5" }, "rose-pine": { "type": "Git", @@ -2097,9 +2140,9 @@ }, "branch": "main", "submodules": false, - "revision": "7d1b5c7dcd274921f0f58e90a8bf935f6a95fbf3", - "url": "https://github.com/rose-pine/neovim/archive/7d1b5c7dcd274921f0f58e90a8bf935f6a95fbf3.tar.gz", - "hash": "0iy9is76bhgb17v0l7mr95mkhd9b4ah917v9shx74jp1xsgc481q" + "revision": "96ff3993a67356ee85d1cdab9be652cdc1c5d1ac", + "url": "https://github.com/rose-pine/neovim/archive/96ff3993a67356ee85d1cdab9be652cdc1c5d1ac.tar.gz", + "hash": "0p712rivi5i3zlrigm86p8vrn1nvg4qils86snlw717cq3scj9gj" }, "rtp-nvim": { "type": "Git", @@ -2136,9 +2179,9 @@ }, "branch": "master", "submodules": false, - "revision": "c7cc0e00ec53cafaa38e258cba4a6507c180289b", - "url": "https://github.com/mrcjkb/rustaceanvim/archive/c7cc0e00ec53cafaa38e258cba4a6507c180289b.tar.gz", - "hash": "1514w2x5vpn790rz8wkah0chr7yz9sm5whaprnm1qc26fz4jwc17" + "revision": "3f2b7a94b7fa3c0f301dfa9644c94b543000efc2", + "url": "https://github.com/mrcjkb/rustaceanvim/archive/3f2b7a94b7fa3c0f301dfa9644c94b543000efc2.tar.gz", + "hash": "1y3x6m3yglkyv37xgli9k3dlw59yy3jbsp1phx75xqma1480dzy5" }, "smartcolumn-nvim": { "type": "Git", @@ -2178,9 +2221,9 @@ }, "branch": "main", "submodules": false, - "revision": "a514379f5f89bf72955ed3bf5c1c31a40b8a1472", - "url": "https://github.com/nanotee/sqls.nvim/archive/a514379f5f89bf72955ed3bf5c1c31a40b8a1472.tar.gz", - "hash": "0rdhfjzfqhpjimi7b398d8ivfrg3ay084gz92fp0g4sgr3m876x3" + "revision": "d1bc5421ef3e8edc5101e37edbb7de6639207a09", + "url": "https://github.com/nanotee/sqls.nvim/archive/d1bc5421ef3e8edc5101e37edbb7de6639207a09.tar.gz", + "hash": "1j4n5c8h1iriqzsjxr0wvz70g9lf6d4lm3nyxlpwy9dqmbj8w0kd" }, "tabular": { "type": "Git", @@ -2204,9 +2247,9 @@ }, "branch": "master", "submodules": false, - "revision": "814f102cd1da3dc78c7d2f20f2ef3ed3cdf0e6e4", - "url": "https://github.com/nvim-telescope/telescope.nvim/archive/814f102cd1da3dc78c7d2f20f2ef3ed3cdf0e6e4.tar.gz", - "hash": "0lbsq6x5bf7l54x7rkdkh7pa63afsgf0jnm0zf9ig7fw2lh18b8f" + "revision": "a4ed82509cecc56df1c7138920a1aeaf246c0ac5", + "url": "https://github.com/nvim-telescope/telescope.nvim/archive/a4ed82509cecc56df1c7138920a1aeaf246c0ac5.tar.gz", + "hash": "0vc2fr5nhbc39d55zn09fh8zpy4472ic4xmwvmk5dda8fqw76p8q" }, "tiny-devicons-auto-colors-nvim": { "type": "Git", @@ -2295,9 +2338,9 @@ }, "branch": "master", "submodules": false, - "revision": "ddcc71126f910ec83037622bc8d506f91a290ade", - "url": "https://github.com/chomosuke/typst-preview.nvim/archive/ddcc71126f910ec83037622bc8d506f91a290ade.tar.gz", - "hash": "1iqcbpgk87gcgnqd5dv8n4h4hbildp5hbjhnlwjx5zlzcg5qv2my" + "revision": "dea4525d5420b7c32eebda7de15a6beb9d6574fa", + "url": "https://github.com/chomosuke/typst-preview.nvim/archive/dea4525d5420b7c32eebda7de15a6beb9d6574fa.tar.gz", + "hash": "0y658l2ibq0x4cwa4rl3lab7aw4ba68xcrdnxp81p2rsk0d60qq4" }, "vim-dirtytalk": { "type": "Git", @@ -2334,9 +2377,9 @@ }, "branch": "master", "submodules": false, - "revision": "19cb21f513fc2b02f0c66be70107741e837516a1", - "url": "https://github.com/RRethy/vim-illuminate/archive/19cb21f513fc2b02f0c66be70107741e837516a1.tar.gz", - "hash": "1wfri17br6yqxnci43g69mvbckb7ajhj3c0mlcn1g0s7jkxz4acd" + "revision": "f985f5a4fbc410c9e5367f6b5863a8fa502e516d", + "url": "https://github.com/RRethy/vim-illuminate/archive/f985f5a4fbc410c9e5367f6b5863a8fa502e516d.tar.gz", + "hash": "0igx2i4k59vadhw7kgqvxjw9594n8p2n9yqszif9by8xq5gsd7g6" }, "vim-markdown": { "type": "Git", @@ -2364,6 +2407,19 @@ "url": "https://github.com/tpope/vim-repeat/archive/65846025c15494983dafe5e3b46c8f88ab2e9635.tar.gz", "hash": "0n8sx6s2sbjb21dv9j6y5lyqda9vvxraffg2jz423daamn96dxqv" }, + "vim-sleuth": { + "type": "Git", + "repository": { + "type": "GitHub", + "owner": "tpope", + "repo": "vim-sleuth" + }, + "branch": "master", + "submodules": false, + "revision": "be69bff86754b1aa5adcbb527d7fcd1635a84080", + "url": "https://github.com/tpope/vim-sleuth/archive/be69bff86754b1aa5adcbb527d7fcd1635a84080.tar.gz", + "hash": "0wqxdjgplf04nq428ialw1w03f8nh5vb629a17vl5gc9gf3zfanq" + }, "vim-startify": { "type": "Git", "repository": { @@ -2399,9 +2455,9 @@ }, "branch": "main", "submodules": false, - "revision": "80d9385dbebe7049fd1961d7909b835a58ce9dcc", - "url": "https://github.com/gbprod/yanky.nvim/archive/80d9385dbebe7049fd1961d7909b835a58ce9dcc.tar.gz", - "hash": "1lg9nxc01shkazqk5g3j0iskiqbwr9sxv07sqrwkwlh36jn59rcp" + "revision": "04775cc6e10ef038c397c407bc17f00a2f52b378", + "url": "https://github.com/gbprod/yanky.nvim/archive/04775cc6e10ef038c397c407bc17f00a2f52b378.tar.gz", + "hash": "024dw52ji4691ndkaz3k12fx6qyvhdpd2r69r9d2isy81fbs2fjm" } }, "version": 5 diff --git a/npins/sources.nix b/npins/sources.nix index 162f1d94..3ae0b99e 100644 --- a/npins/sources.nix +++ b/npins/sources.nix @@ -98,7 +98,9 @@ builtins.mapAttrs Channel = getZip; Tarball = getUrl; } - .${spec.type} + .${ + spec.type + } or (builtins.throw "Unknown source type ${spec.type}"); in spec // {outPath = mayOverride (func spec);}