diff --git a/configuration.nix b/configuration.nix index 011d6fae..78dad9c7 100644 --- a/configuration.nix +++ b/configuration.nix @@ -25,6 +25,7 @@ isMaximal: { trouble.enable = true; lspSignature.enable = true; otter-nvim.enable = isMaximal; + lsplines.enable = isMaximal; nvim-docs-view.enable = isMaximal; }; diff --git a/docs/release-notes/rl-0.8.md b/docs/release-notes/rl-0.8.md index 8b87ae99..3642df7b 100644 --- a/docs/release-notes/rl-0.8.md +++ b/docs/release-notes/rl-0.8.md @@ -87,10 +87,6 @@ - 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 @@ -257,8 +253,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. +- 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): @@ -299,8 +295,6 @@ - Add catppuccin integration for Bufferline, Lspsaga. - Add neo-tree integration for Bufferline. - Add more applicable filetypes to illuminate denylist. -- Disable mini.indentscope for applicable filetypes. -- Enable inlay hints support - `config.vim.lsp.inlayHints`. [tebuevd](https://github.com/tebuevd): diff --git a/modules/extra/deprecations.nix b/modules/extra/deprecations.nix index 86497130..5efe2ae2 100644 --- a/modules/extra/deprecations.nix +++ b/modules/extra/deprecations.nix @@ -104,13 +104,6 @@ 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/default.nix b/modules/neovim/init/default.nix index 0e7a4c6b..ac9d29e5 100644 --- a/modules/neovim/init/default.nix +++ b/modules/neovim/init/default.nix @@ -3,7 +3,6 @@ ./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 deleted file mode 100644 index 18717edf..00000000 --- a/modules/neovim/init/diagnostics.nix +++ /dev/null @@ -1,109 +0,0 @@ -{ - 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/plugins/lsp/config.nix b/modules/plugins/lsp/config.nix index 3702ac5f..0fa16e47 100644 --- a/modules/plugins/lsp/config.nix +++ b/modules/plugins/lsp/config.nix @@ -4,7 +4,6 @@ pkgs, ... }: let - inherit (lib.generators) mkLuaInline; inherit (lib.modules) mkIf; inherit (lib.strings) optionalString; inherit (lib.trivial) boolToString; @@ -29,25 +28,6 @@ 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 eb694583..421f5fda 100644 --- a/modules/plugins/lsp/default.nix +++ b/modules/plugins/lsp/default.nix @@ -15,6 +15,7 @@ ./lightbulb ./otter ./lspkind + ./lsplines ./nvim-docs-view ]; } diff --git a/modules/plugins/lsp/lsplines/config.nix b/modules/plugins/lsp/lsplines/config.nix new file mode 100644 index 00000000..bb07edc9 --- /dev/null +++ b/modules/plugins/lsp/lsplines/config.nix @@ -0,0 +1,21 @@ +{ + 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/default.nix b/modules/plugins/lsp/lsplines/default.nix new file mode 100644 index 00000000..359cec4f --- /dev/null +++ b/modules/plugins/lsp/lsplines/default.nix @@ -0,0 +1,6 @@ +{ + imports = [ + ./config.nix + ./lsplines.nix + ]; +} diff --git a/modules/plugins/lsp/lsplines/lsplines.nix b/modules/plugins/lsp/lsplines/lsplines.nix new file mode 100644 index 00000000..aac4cbbc --- /dev/null +++ b/modules/plugins/lsp/lsplines/lsplines.nix @@ -0,0 +1,11 @@ +{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/module.nix b/modules/plugins/lsp/module.nix index f408d873..b16f9c13 100644 --- a/modules/plugins/lsp/module.nix +++ b/modules/plugins/lsp/module.nix @@ -5,9 +5,6 @@ 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/mini/indentscope/config.nix b/modules/plugins/mini/indentscope/config.nix index a6fd16d7..2e6ec03d 100644 --- a/modules/plugins/mini/indentscope/config.nix +++ b/modules/plugins/mini/indentscope/config.nix @@ -3,7 +3,6 @@ lib, ... }: let - inherit (lib.generators) mkLuaInline; inherit (lib.modules) mkIf; inherit (lib.nvim.dag) entryAnywhere; inherit (lib.nvim.lua) toLuaObject; @@ -11,21 +10,6 @@ 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 6a2224c8..6feffaee 100644 --- a/modules/plugins/mini/indentscope/indentscope.nix +++ b/modules/plugins/mini/indentscope/indentscope.nix @@ -1,16 +1,13 @@ -{lib, ...}: let - inherit (lib.options) mkOption mkEnableOption; +{ + config, + lib, + ... +}: let + inherit (lib.options) mkEnableOption; inherit (lib.nvim.types) mkPluginSetupOption; - inherit (lib.types) str listOf; in { options.vim.mini.indentscope = { enable = mkEnableOption "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"; - }; - }; + setupOpts = mkPluginSetupOption "mini.indentscope" {}; }; } diff --git a/npins/sources.json b/npins/sources.json index 140b3b24..86fa0f6b 100644 --- a/npins/sources.json +++ b/npins/sources.json @@ -747,6 +747,18 @@ "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": {