From 87b3522b1afb1025d730ef2d0649cee290eb5a60 Mon Sep 17 00:00:00 2001 From: glaulher Date: Fri, 4 Jul 2025 21:30:58 -0300 Subject: [PATCH] docs(readme): add configuration index with plugin links and line references --- README.md | 29 ++++++++++++++++++++++ init.lua | 74 ++++++++++++++++++++++++++++++++++++------------------- 2 files changed, 77 insertions(+), 26 deletions(-) diff --git a/README.md b/README.md index 41139505..848438d0 100644 --- a/README.md +++ b/README.md @@ -150,6 +150,35 @@ examples of adding popularly requested plugins. * [Restructure the configuration](https://github.com/nvim-lua/kickstart.nvim/issues/218) * [Reorganize init.lua into a multi-file setup](https://github.com/nvim-lua/kickstart.nvim/pull/473) + +## Configuration + +This section provides quick links to the configuration of each plugin. + +### Plugins configured in `init.lua` + +- [guess-indent.nvim](init.lua#L250) +- [gitsigns.nvim](init.lua#L275) +- [which-key.nvim](init.lua#L302) +- [telescope.nvim](init.lua#L362) +- [lazydev.nvim](init.lua#L469) +- [nvim-lspconfig](init.lua#L480) +- [conform.nvim](init.lua#L762) +- [blink.cmp](init.lua#L803) +- [tokyonight.nvim](init.lua#L906) +- [todo-comments.nvim](init.lua#L924) +- [mini.nvim](init.lua#L927) +- [nvim-treesitter](init.lua#L964) + +### Plugins with dedicated configuration files + +- [autopairs.lua](lua/kickstart/plugins/autopairs.lua) +- [debug.lua](lua/kickstart/plugins/debug.lua) +- [gitsigns.lua](lua/kickstart/plugins/gitsigns.lua) +- [indent_line.lua](lua/kickstart/plugins/indent_line.lua) +- [lint.lua](lua/kickstart/plugins/lint.lua) +- [neo-tree.lua](lua/kickstart/plugins/neo-tree.lua) + ### Install Recipes Below you can find OS specific install instructions for Neovim and dependencies. diff --git a/init.lua b/init.lua index b98ffc61..6de2a9d0 100644 --- a/init.lua +++ b/init.lua @@ -628,32 +628,54 @@ require('lazy').setup({ -- Diagnostic Config -- See :help vim.diagnostic.Opts - vim.diagnostic.config { - severity_sort = true, - float = { border = 'rounded', source = 'if_many' }, - underline = { severity = vim.diagnostic.severity.ERROR }, - signs = vim.g.have_nerd_font and { - text = { - [vim.diagnostic.severity.ERROR] = '󰅚 ', - [vim.diagnostic.severity.WARN] = '󰀪 ', - [vim.diagnostic.severity.INFO] = '󰋽 ', - [vim.diagnostic.severity.HINT] = '󰌶 ', - }, - } or {}, - virtual_text = { - source = 'if_many', - spacing = 2, - format = function(diagnostic) - local diagnostic_message = { - [vim.diagnostic.severity.ERROR] = diagnostic.message, - [vim.diagnostic.severity.WARN] = diagnostic.message, - [vim.diagnostic.severity.INFO] = diagnostic.message, - [vim.diagnostic.severity.HINT] = diagnostic.message, - } - return diagnostic_message[diagnostic.severity] - end, - }, - } + -- Diagnostic configuration similar to VS Code's Error Lens. + -- In insert mode, diagnostics are displayed as inline virtual text. + -- In normal mode, diagnostics are shown as virtual lines below the affected lines. + + local function set_virtual_text(enable) + local diagnostic_icons = { + [vim.diagnostic.severity.ERROR] = '󰅚 ', + [vim.diagnostic.severity.WARN] = '󰀪 ', + [vim.diagnostic.severity.INFO] = '󰋽 ', + [vim.diagnostic.severity.HINT] = '󰌶 ', + } + + vim.diagnostic.config { + update_in_insert = true, -- error messages in insert mode + severity_sort = true, + float = { border = 'rounded', source = 'if_many' }, + underline = { severity = vim.diagnostic.severity.ERROR }, + signs = vim.g.have_nerd_font and { + text = diagnostic_icons, + } or {}, + + virtual_lines = not enable and { + format = function(diagnostic) + return (diagnostic_icons[diagnostic.severity] or '') .. diagnostic.message + end, + } or false, + + virtual_text = enable and { + source = 'if_many', + spacing = 2, + format = function(diagnostic) + return (diagnostic_icons[diagnostic.severity] or '') .. diagnostic.message + end, + } or false, + } + end + + vim.api.nvim_create_autocmd('InsertEnter', { + callback = function() + set_virtual_text(true) + end, + }) + + vim.api.nvim_create_autocmd('InsertLeave', { + callback = function() + set_virtual_text(false) + end, + }) -- LSP servers and clients are able to communicate to each other what features they support. -- By default, Neovim doesn't support everything that is in the LSP specification.