From dc977703b15bf94696eb0f547561527b91454577 Mon Sep 17 00:00:00 2001 From: orip Date: Sat, 26 Apr 2025 14:35:04 +0300 Subject: [PATCH] Add type hints to plugin options where possible This could help beginners to get autocompletion, catch mistakes earlier, and allow them to skip the docs for simple configs. This is not perfect because a lot of the plugins type all of their keys as required, even though they have defaults, but this is good enough. --- init.lua | 48 +++++++++++++++++++++------ lua/custom/plugins/init.lua | 3 ++ lua/kickstart/plugins/autopairs.lua | 2 ++ lua/kickstart/plugins/debug.lua | 4 +++ lua/kickstart/plugins/gitsigns.lua | 5 +++ lua/kickstart/plugins/indent_line.lua | 4 +++ lua/kickstart/plugins/lint.lua | 2 ++ lua/kickstart/plugins/neo-tree.lua | 4 +++ 8 files changed, 62 insertions(+), 10 deletions(-) diff --git a/init.lua b/init.lua index b98ffc61..ba3c18a0 100644 --- a/init.lua +++ b/init.lua @@ -273,13 +273,16 @@ require('lazy').setup({ -- See `:help gitsigns` to understand what the configuration keys do { -- Adds git related signs to the gutter, as well as utilities for managing changes 'lewis6991/gitsigns.nvim', + ---@module 'gitsigns' + ---@type Gitsigns.Config + ---@diagnostic disable-next-line: missing-fields opts = { signs = { - add = { text = '+' }, - change = { text = '~' }, - delete = { text = '_' }, - topdelete = { text = '‾' }, - changedelete = { text = '~' }, + add = { text = '+' }, ---@diagnostic disable-line: missing-fields + change = { text = '~' }, ---@diagnostic disable-line: missing-fields + delete = { text = '_' }, ---@diagnostic disable-line: missing-fields + topdelete = { text = '‾' }, ---@diagnostic disable-line: missing-fields + changedelete = { text = '~' }, ---@diagnostic disable-line: missing-fields }, }, }, @@ -301,6 +304,9 @@ require('lazy').setup({ { -- Useful plugin to show you pending keybinds. 'folke/which-key.nvim', event = 'VimEnter', -- Sets the loading event to 'VimEnter' + ---@module 'which-key' + ---@type wk.Opts + ---@diagnostic disable-next-line: missing-fields opts = { -- delay between pressing a key and opening which-key (milliseconds) -- this setting is independent of vim.o.timeoutlen @@ -468,6 +474,9 @@ require('lazy').setup({ -- used for completion, annotations and signatures of Neovim apis 'folke/lazydev.nvim', ft = 'lua', + ---@module 'lazydev' + ---@type lazydev.Config + ---@diagnostic disable-next-line: missing-fields opts = { library = { -- Load luvit types when the `vim.uv` word is found @@ -482,7 +491,13 @@ require('lazy').setup({ -- Automatically install LSPs and related tools to stdpath for Neovim -- Mason must be loaded before its dependents so we need to set it up here. -- NOTE: `opts = {}` is the same as calling `require('mason').setup({})` - { 'mason-org/mason.nvim', opts = {} }, + { + 'mason-org/mason.nvim', + ---@module 'mason.settings' + ---@type MasonSettings + ---@diagnostic disable-next-line: missing-fields + opts = {}, + }, 'mason-org/mason-lspconfig.nvim', 'WhoIsSethDaniel/mason-tool-installer.nvim', @@ -750,6 +765,8 @@ require('lazy').setup({ desc = '[F]ormat buffer', }, }, + ---@module 'conform' + ---@type conform.setupOpts opts = { notify_on_error = false, format_on_save = function(bufnr) @@ -810,8 +827,8 @@ require('lazy').setup({ }, 'folke/lazydev.nvim', }, - --- @module 'blink.cmp' - --- @type blink.cmp.Config + ---@module 'blink.cmp' + ---@type blink.cmp.Config opts = { keymap = { -- 'default' (recommended) for mappings similar to built-in completions @@ -899,7 +916,15 @@ require('lazy').setup({ }, -- Highlight todo, notes, etc in comments - { 'folke/todo-comments.nvim', event = 'VimEnter', dependencies = { 'nvim-lua/plenary.nvim' }, opts = { signs = false } }, + { + 'folke/todo-comments.nvim', + event = 'VimEnter', + dependencies = { 'nvim-lua/plenary.nvim' }, + ---@module 'todo-comments' + ---@type TodoOptions + ---@diagnostic disable-next-line: missing-fields + opts = { signs = false }, + }, { -- Collection of various small independent plugins/modules 'echasnovski/mini.nvim', @@ -943,6 +968,9 @@ require('lazy').setup({ build = ':TSUpdate', main = 'nvim-treesitter.configs', -- Sets main module to use for opts -- [[ Configure Treesitter ]] See `:help nvim-treesitter` + ---@module 'nvim-treesitter.configs' + ---@type TSConfig + ---@diagnostic disable-next-line: missing-fields opts = { ensure_installed = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }, -- Autoinstall languages that are not installed @@ -990,7 +1018,7 @@ require('lazy').setup({ -- Or use telescope! -- In normal mode type `sh` then write `lazy.nvim-plugin` -- you can continue same window with `sr` which resumes last telescope search -}, { +}, { ---@diagnostic disable-line: missing-fields ui = { -- If you are using a Nerd Font: set icons to an empty table which will use the -- default lazy.nvim defined Nerd Font icons, otherwise define a unicode icons table diff --git a/lua/custom/plugins/init.lua b/lua/custom/plugins/init.lua index be0eb9d8..b3ddcfdd 100644 --- a/lua/custom/plugins/init.lua +++ b/lua/custom/plugins/init.lua @@ -2,4 +2,7 @@ -- I promise not to create any merge conflicts in this directory :) -- -- See the kickstart.nvim README for more information + +---@module 'lazy' +---@type LazySpec return {} diff --git a/lua/kickstart/plugins/autopairs.lua b/lua/kickstart/plugins/autopairs.lua index 386d392e..351dad86 100644 --- a/lua/kickstart/plugins/autopairs.lua +++ b/lua/kickstart/plugins/autopairs.lua @@ -1,6 +1,8 @@ -- autopairs -- https://github.com/windwp/nvim-autopairs +---@module 'lazy' +---@type LazySpec return { 'windwp/nvim-autopairs', event = 'InsertEnter', diff --git a/lua/kickstart/plugins/debug.lua b/lua/kickstart/plugins/debug.lua index 753cb0ce..e8bae7ea 100644 --- a/lua/kickstart/plugins/debug.lua +++ b/lua/kickstart/plugins/debug.lua @@ -6,6 +6,8 @@ -- be extended to other languages as well. That's why it's called -- kickstart.nvim and not kitchen-sink.nvim ;) +---@module 'lazy' +---@type LazySpec return { -- NOTE: Yes, you can install new plugins here! 'mfussenegger/nvim-dap', @@ -100,11 +102,13 @@ return { -- Dap UI setup -- For more information, see |:help nvim-dap-ui| + ---@diagnostic disable-next-line: missing-fields dapui.setup { -- Set icons to characters that are more likely to work in every terminal. -- Feel free to remove or use ones that you like more! :) -- Don't feel like these are good choices. icons = { expanded = '▾', collapsed = '▸', current_frame = '*' }, + ---@diagnostic disable-next-line: missing-fields controls = { icons = { pause = '⏸', diff --git a/lua/kickstart/plugins/gitsigns.lua b/lua/kickstart/plugins/gitsigns.lua index cbbd22d2..3913d189 100644 --- a/lua/kickstart/plugins/gitsigns.lua +++ b/lua/kickstart/plugins/gitsigns.lua @@ -2,9 +2,14 @@ -- NOTE: gitsigns is already included in init.lua but contains only the base -- config. This will add also the recommended keymaps. +---@module 'lazy' +---@type LazySpec return { { 'lewis6991/gitsigns.nvim', + ---@module 'gitsigns' + ---@type Gitsigns.Config + ---@diagnostic disable-next-line: missing-fields opts = { on_attach = function(bufnr) local gitsigns = require 'gitsigns' diff --git a/lua/kickstart/plugins/indent_line.lua b/lua/kickstart/plugins/indent_line.lua index ed7f2693..6a95da80 100644 --- a/lua/kickstart/plugins/indent_line.lua +++ b/lua/kickstart/plugins/indent_line.lua @@ -1,9 +1,13 @@ +---@module 'lazy' +---@type LazySpec return { { -- Add indentation guides even on blank lines 'lukas-reineke/indent-blankline.nvim', -- Enable `lukas-reineke/indent-blankline.nvim` -- See `:help ibl` main = 'ibl', + ---@module 'ibl' + ---@type ibl.config opts = {}, }, } diff --git a/lua/kickstart/plugins/lint.lua b/lua/kickstart/plugins/lint.lua index dec42f09..5ff8e34b 100644 --- a/lua/kickstart/plugins/lint.lua +++ b/lua/kickstart/plugins/lint.lua @@ -1,3 +1,5 @@ +---@module 'lazy' +---@type LazySpec return { { -- Linting diff --git a/lua/kickstart/plugins/neo-tree.lua b/lua/kickstart/plugins/neo-tree.lua index c7067891..af8d4495 100644 --- a/lua/kickstart/plugins/neo-tree.lua +++ b/lua/kickstart/plugins/neo-tree.lua @@ -1,6 +1,8 @@ -- Neo-tree is a Neovim plugin to browse the file system -- https://github.com/nvim-neo-tree/neo-tree.nvim +---@module 'lazy' +---@type LazySpec return { 'nvim-neo-tree/neo-tree.nvim', version = '*', @@ -13,6 +15,8 @@ return { keys = { { '\\', ':Neotree reveal', desc = 'NeoTree reveal', silent = true }, }, + ---@module 'neo-tree' + ---@type neotree.Config opts = { filesystem = { window = {