diff --git a/.github/workflows/stylua.yml b/.github/workflows/stylua.yml
index 75db6c33..eb60303f 100644
--- a/.github/workflows/stylua.yml
+++ b/.github/workflows/stylua.yml
@@ -9,13 +9,12 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Checkout Code
- uses: actions/checkout@v2
+ uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha }}
- name: Stylua Check
- uses: JohnnyMorganz/stylua-action@v3
+ uses: JohnnyMorganz/stylua-action@v4
with:
token: ${{ secrets.GITHUB_TOKEN }}
version: latest
args: --check .
-
diff --git a/.gitignore b/.gitignore
index d12a5c88..3bec00f5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -5,8 +5,9 @@ nvim
spell/
-# You can uncomment this yourself if you want to lock the lazy-lock.json,
-# but for kickstart, it makes sense to leave it ignored.
+# You likely want to comment this, since it's recommended to track lazy-lock.json in version
+# control, see https://lazy.folke.io/usage/lockfile
+# For kickstart, it makes sense to leave it ignored.
lazy-lock.json
.DS_Store
diff --git a/README.md b/README.md
index 2b9e52da..093e42a6 100644
--- a/README.md
+++ b/README.md
@@ -32,6 +32,7 @@ External Requirements:
- Basic utils: `git`, `make`, `unzip`, C Compiler (`gcc`)
- [ripgrep](https://github.com/BurntSushi/ripgrep#installation),
[fd-find](https://github.com/sharkdp/fd#installation)
+- [tree-sitter CLI](https://github.com/tree-sitter/tree-sitter/blob/master/crates/cli/README.md#installation)
- Clipboard tool (xclip/xsel/win32yank or other depending on the platform)
- A [Nerd Font](https://www.nerdfonts.com/): optional, provides various icons
- if you have it set `vim.g.have_nerd_font` in `init.lua` to true
@@ -192,7 +193,7 @@ winget install --accept-source-agreements chocolatey.chocolatey
2. install all requirements using choco, exit the previous cmd and
open a new one so that choco path is set, and run in cmd as **admin**:
```
-choco install -y neovim git ripgrep wget fd unzip gzip mingw make
+choco install -y neovim git ripgrep wget fd unzip gzip mingw make tree-sitter
```
WSL (Windows Subsystem for Linux)
@@ -202,7 +203,7 @@ wsl --install
wsl
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
-sudo apt install make gcc ripgrep unzip git xclip neovim
+sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip neovim
```
@@ -212,14 +213,14 @@ sudo apt install make gcc ripgrep unzip git xclip neovim
```
sudo add-apt-repository ppa:neovim-ppa/unstable -y
sudo apt update
-sudo apt install make gcc ripgrep unzip git xclip neovim
+sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip neovim
```
Debian Install Steps
```
sudo apt update
-sudo apt install make gcc ripgrep unzip git xclip curl
+sudo apt install make gcc ripgrep fd-find tree-sitter-cli unzip git xclip curl
# Now we install nvim
curl -LO https://github.com/neovim/neovim/releases/latest/download/nvim-linux-x86_64.tar.gz
@@ -235,14 +236,14 @@ sudo ln -sf /opt/nvim-linux-x86_64/bin/nvim /usr/local/bin/
Fedora Install Steps
```
-sudo dnf install -y gcc make git ripgrep fd-find unzip neovim
+sudo dnf install -y gcc make git ripgrep fd-find tree-sitter-cli unzip neovim
```
Arch Install Steps
```
-sudo pacman -S --noconfirm --needed gcc make git ripgrep fd unzip neovim
+sudo pacman -S --noconfirm --needed gcc make git ripgrep fd tree-sitter-cli unzip neovim
```
@@ -261,7 +262,7 @@ available methods being discussed
Bob
[Bob](https://github.com/MordechaiHadad/bob) is a Neovim version manager for
-all plattforms. Simply install
+all platforms. Simply install
[rustup](https://rust-lang.github.io/rustup/installation/other.html),
and run the following commands:
diff --git a/init.lua b/init.lua
index f80af8c1..01daf5f4 100644
--- a/init.lua
+++ b/init.lua
@@ -119,7 +119,7 @@ vim.schedule(function() vim.o.clipboard = 'unnamedplus' end)
-- Enable break indent
vim.o.breakindent = true
--- Save undo history
+-- Enable undo/redo changes even after closing and reopening a file
vim.o.undofile = true
-- Case-insensitive searching UNLESS \C or one or more capital letters in the search term
@@ -177,11 +177,11 @@ vim.diagnostic.config {
update_in_insert = false,
severity_sort = true,
float = { border = 'rounded', source = 'if_many' },
- underline = { severity = vim.diagnostic.severity.ERROR },
+ underline = { severity = { min = vim.diagnostic.severity.WARN } },
-- Can switch between these as you prefer
virtual_text = true, -- Text shows up at the end of the line
- virtual_lines = false, -- Teest shows up underneath the line, with virtual lines
+ virtual_lines = false, -- Text shows up underneath the line, with virtual lines
-- Auto open the float, so you can easily read the errors when jumping with `[d` and `]d`
jump = { float = true },
@@ -275,13 +275,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
},
},
},
@@ -303,6 +306,9 @@ require('lazy').setup({
{ -- Useful plugin to show you pending keybinds.
'folke/which-key.nvim',
event = 'VimEnter',
+ ---@module 'which-key'
+ ---@type wk.Opts
+ ---@diagnostic disable-next-line: missing-fields
opts = {
-- delay between pressing a key and opening which-key (milliseconds)
delay = 0,
@@ -312,8 +318,8 @@ require('lazy').setup({
spec = {
{ 's', group = '[S]earch', mode = { 'n', 'v' } },
{ 't', group = '[T]oggle' },
- { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } },
-
+ { 'h', group = 'Git [H]unk', mode = { 'n', 'v' } }, -- Enable gitsigns recommended keymaps first
+ { 'gr', group = 'LSP Actions', mode = { 'n' } },
{ 'g', group = '[G]it' },
{ 'n', group = '[N]otepad' },
},
@@ -484,14 +490,24 @@ 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 = {
+ registries = {
+ 'github:mason-org/mason-registry',
+ 'github:Crashdummyy/mason-registry',
+ },
+ },
+ },
+ -- Maps LSP server names between nvim-lspconfig and Mason package names.
+ 'mason-org/mason-lspconfig.nvim',
'WhoIsSethDaniel/mason-tool-installer.nvim',
-- Useful status updates for LSP.
{ 'j-hui/fidget.nvim', opts = {} },
-
- -- Allows extra capabilities provided by blink.cmp
- 'saghen/blink.cmp',
},
config = function()
-- Brief aside: **What is LSP?**
@@ -587,20 +603,54 @@ require('lazy').setup({
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.
- -- When you add blink.cmp, luasnip, etc. Neovim now has *more* capabilities.
- -- So, we create new capabilities with blink.cmp, and then broadcast that to the servers.
- local capabilities = require('blink.cmp').get_lsp_capabilities()
-
-- Enable the following language servers
-- Feel free to add/remove any LSPs that you want here. They will automatically be installed.
-- See `:help lsp-config` for information about keys and how to configure
+ ---@type table
local servers = {
clangd = {},
-- gopls = {},
pyright = {},
-- rust_analyzer = {},
+ --
+ -- Some languages (like typescript) have entire language plugins that can be useful:
+ -- https://github.com/pmizio/typescript-tools.nvim
+ --
+ -- But for many setups, the LSP (`ts_ls`) will work just fine
+ -- ts_ls = {},
+
+ omnisharp = {},
+
+ stylua = {}, -- Used to format Lua code
+
+ -- Special Lua Config, as recommended by neovim help docs
+ lua_ls = {
+ on_init = function(client)
+ if client.workspace_folders then
+ local path = client.workspace_folders[1].name
+ if path ~= vim.fn.stdpath 'config' and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) then return end
+ end
+
+ client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
+ runtime = {
+ version = 'LuaJIT',
+ path = { 'lua/?.lua', 'lua/?/init.lua' },
+ },
+ workspace = {
+ checkThirdParty = false,
+ -- NOTE: this is a lot slower and will cause issues when working on your own configuration.
+ -- See https://github.com/neovim/nvim-lspconfig/issues/3189
+ library = vim.tbl_extend('force', vim.api.nvim_get_runtime_file('', true), {
+ '${3rd}/luv/library',
+ '${3rd}/busted/library',
+ }),
+ },
+ })
+ end,
+ settings = {
+ Lua = {},
+ },
+ },
}
-- Ensure the servers and tools above are installed
@@ -612,46 +662,16 @@ require('lazy').setup({
-- You can press `g?` for help in this menu.
local ensure_installed = vim.tbl_keys(servers or {})
vim.list_extend(ensure_installed, {
- 'lua-language-server', -- Lua Language server
- 'stylua', -- Used to format Lua code
-- You can add other tools here that you want Mason to install
- 'omnisharp', -- C# Language Server
+ 'omnisharp',
})
require('mason-tool-installer').setup { ensure_installed = ensure_installed }
for name, server in pairs(servers) do
- server.capabilities = vim.tbl_deep_extend('force', {}, capabilities, server.capabilities or {})
vim.lsp.config(name, server)
vim.lsp.enable(name)
end
-
- -- Special Lua Config, as recommended by neovim help docs
- vim.lsp.config('lua_ls', {
- on_init = function(client)
- if client.workspace_folders then
- local path = client.workspace_folders[1].name
- if path ~= vim.fn.stdpath 'config' and (vim.uv.fs_stat(path .. '/.luarc.json') or vim.uv.fs_stat(path .. '/.luarc.jsonc')) then return end
- end
-
- client.config.settings.Lua = vim.tbl_deep_extend('force', client.config.settings.Lua, {
- runtime = {
- version = 'LuaJIT',
- path = { 'lua/?.lua', 'lua/?/init.lua' },
- },
- workspace = {
- checkThirdParty = false,
- -- NOTE: this is a lot slower and will cause issues when working on your own configuration.
- -- See https://github.com/neovim/nvim-lspconfig/issues/3189
- library = vim.api.nvim_get_runtime_file('', true),
- },
- })
- end,
- settings = {
- Lua = {},
- },
- })
- vim.lsp.enable 'lua_ls'
end,
},
@@ -667,6 +687,8 @@ require('lazy').setup({
desc = '[F]ormat buffer',
},
},
+ ---@module 'conform'
+ ---@type conform.setupOpts
opts = {
notify_on_error = false,
format_on_save = function(bufnr)
@@ -727,8 +749,8 @@ require('lazy').setup({
opts = {},
},
},
- --- @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
@@ -752,7 +774,7 @@ require('lazy').setup({
-- : Toggle signature help
--
-- See :h blink-cmp-config-keymap for defining your own keymap
- preset = 'default',
+ preset = 'super-tab',
-- For more advanced Luasnip keymaps (e.g. selecting choice nodes, expansion) see:
-- https://github.com/L3MON4D3/LuaSnip?tab=readme-ov-file#keymaps
@@ -816,16 +838,45 @@ 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 },
+ },
{ -- Highlight, edit, and navigate code
'nvim-treesitter/nvim-treesitter',
+ lazy = false,
+ build = ':TSUpdate',
+ branch = 'main',
+ -- [[ Configure Treesitter ]] See `:help nvim-treesitter-intro`
config = function()
- local filetypes = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }
- require('nvim-treesitter').install(filetypes)
+ local parsers = { 'bash', 'c', 'diff', 'html', 'lua', 'luadoc', 'markdown', 'markdown_inline', 'query', 'vim', 'vimdoc' }
+ require('nvim-treesitter').install(parsers)
vim.api.nvim_create_autocmd('FileType', {
- pattern = filetypes,
- callback = function() vim.treesitter.start() end,
+ callback = function(args)
+ local buf, filetype = args.buf, args.match
+
+ local language = vim.treesitter.language.get_lang(filetype)
+ if not language then return end
+
+ -- check if parser exists and load it
+ if not vim.treesitter.language.add(language) then return end
+ -- enables syntax highlighting and other treesitter features
+ vim.treesitter.start(buf, language)
+
+ -- enables treesitter based folds
+ -- for more info on folds see `:help folds`
+ -- vim.wo.foldexpr = 'v:lua.vim.treesitter.foldexpr()'
+ -- vim.wo.foldmethod = 'expr'
+
+ -- enables treesitter based indentation
+ vim.bo.indentexpr = "v:lua.require'nvim-treesitter'.indentexpr()"
+ end,
})
end,
},
@@ -844,7 +895,7 @@ require('lazy').setup({
-- require 'kickstart.plugins.lint',
require 'kickstart.plugins.autopairs',
-- require 'kickstart.plugins.neo-tree',
- -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps
+ -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommended keymaps
-- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua`
-- This is the easiest way to modularize your config.
@@ -856,7 +907,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 1e3570f9..7e58905e 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',
@@ -26,42 +28,14 @@ return {
},
keys = {
-- Basic debugging keymaps, feel free to change to your liking!
- {
- '',
- function() require('dap').continue() end,
- desc = 'Debug: Start/Continue',
- },
- {
- '',
- function() require('dap').step_into() end,
- desc = 'Debug: Step Into',
- },
- {
- '',
- function() require('dap').step_over() end,
- desc = 'Debug: Step Over',
- },
- {
- '',
- function() require('dap').step_out() end,
- desc = 'Debug: Step Out',
- },
- {
- 'b',
- function() require('dap').toggle_breakpoint() end,
- desc = 'Debug: Toggle Breakpoint',
- },
- {
- 'B',
- function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end,
- desc = 'Debug: Set Breakpoint',
- },
+ { '', function() require('dap').continue() end, desc = 'Debug: Start/Continue' },
+ { '', function() require('dap').step_into() end, desc = 'Debug: Step Into' },
+ { '', function() require('dap').step_over() end, desc = 'Debug: Step Over' },
+ { '', function() require('dap').step_out() end, desc = 'Debug: Step Out' },
+ { 'b', function() require('dap').toggle_breakpoint() end, desc = 'Debug: Toggle Breakpoint' },
+ { 'B', function() require('dap').set_breakpoint(vim.fn.input 'Breakpoint condition: ') end, desc = 'Debug: Set Breakpoint' },
-- Toggle to see last session result. Without this, you can't see session output in case of unhandled exception.
- {
- '',
- function() require('dapui').toggle() end,
- desc = 'Debug: See last session result.',
- },
+ { '', function() require('dapui').toggle() end, desc = 'Debug: See last session result.' },
},
config = function()
local dap = require 'dap'
@@ -86,11 +60,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 777e470a..5f5652f9 100644
--- a/lua/kickstart/plugins/gitsigns.lua
+++ b/lua/kickstart/plugins/gitsigns.lua
@@ -2,54 +2,57 @@
-- 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',
- opts = {
- on_attach = function(bufnr)
- local gitsigns = require 'gitsigns'
+ 'lewis6991/gitsigns.nvim',
+ ---@module 'gitsigns'
+ ---@type Gitsigns.Config
+ ---@diagnostic disable-next-line: missing-fields
+ opts = {
+ on_attach = function(bufnr)
+ local gitsigns = require 'gitsigns'
- local function map(mode, l, r, opts)
- opts = opts or {}
- opts.buffer = bufnr
- vim.keymap.set(mode, l, r, opts)
+ local function map(mode, l, r, opts)
+ opts = opts or {}
+ opts.buffer = bufnr
+ vim.keymap.set(mode, l, r, opts)
+ end
+
+ -- Navigation
+ map('n', ']c', function()
+ if vim.wo.diff then
+ vim.cmd.normal { ']c', bang = true }
+ else
+ gitsigns.nav_hunk 'next'
end
+ end, { desc = 'Jump to next git [c]hange' })
- -- Navigation
- map('n', ']c', function()
- if vim.wo.diff then
- vim.cmd.normal { ']c', bang = true }
- else
- gitsigns.nav_hunk 'next'
- end
- end, { desc = 'Jump to next git [c]hange' })
+ map('n', '[c', function()
+ if vim.wo.diff then
+ vim.cmd.normal { '[c', bang = true }
+ else
+ gitsigns.nav_hunk 'prev'
+ end
+ end, { desc = 'Jump to previous git [c]hange' })
- map('n', '[c', function()
- if vim.wo.diff then
- vim.cmd.normal { '[c', bang = true }
- else
- gitsigns.nav_hunk 'prev'
- end
- end, { desc = 'Jump to previous git [c]hange' })
-
- -- Actions
- -- visual mode
- map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' })
- map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' })
- -- normal mode
- map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
- map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
- map('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
- map('n', 'hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' })
- map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
- map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
- map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
- map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
- map('n', 'hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' })
- -- Toggles
- map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
- map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
- end,
- },
+ -- Actions
+ -- visual mode
+ map('v', 'hs', function() gitsigns.stage_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [s]tage hunk' })
+ map('v', 'hr', function() gitsigns.reset_hunk { vim.fn.line '.', vim.fn.line 'v' } end, { desc = 'git [r]eset hunk' })
+ -- normal mode
+ map('n', 'hs', gitsigns.stage_hunk, { desc = 'git [s]tage hunk' })
+ map('n', 'hr', gitsigns.reset_hunk, { desc = 'git [r]eset hunk' })
+ map('n', 'hS', gitsigns.stage_buffer, { desc = 'git [S]tage buffer' })
+ map('n', 'hu', gitsigns.stage_hunk, { desc = 'git [u]ndo stage hunk' })
+ map('n', 'hR', gitsigns.reset_buffer, { desc = 'git [R]eset buffer' })
+ map('n', 'hp', gitsigns.preview_hunk, { desc = 'git [p]review hunk' })
+ map('n', 'hb', gitsigns.blame_line, { desc = 'git [b]lame line' })
+ map('n', 'hd', gitsigns.diffthis, { desc = 'git [d]iff against index' })
+ map('n', 'hD', function() gitsigns.diffthis '@' end, { desc = 'git [D]iff against last commit' })
+ -- Toggles
+ map('n', 'tb', gitsigns.toggle_current_line_blame, { desc = '[T]oggle git show [b]lame line' })
+ map('n', 'tD', gitsigns.preview_hunk_inline, { desc = '[T]oggle git show [D]eleted' })
+ end,
},
}
diff --git a/lua/kickstart/plugins/indent_line.lua b/lua/kickstart/plugins/indent_line.lua
index ed7f2693..946ac793 100644
--- a/lua/kickstart/plugins/indent_line.lua
+++ b/lua/kickstart/plugins/indent_line.lua
@@ -1,9 +1,13 @@
+-- Add indentation guides even on blank lines
+
+---@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',
- opts = {},
- },
+ '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 f8a73485..326fc3f6 100644
--- a/lua/kickstart/plugins/lint.lua
+++ b/lua/kickstart/plugins/lint.lua
@@ -1,58 +1,59 @@
+-- Linting
+
+---@module 'lazy'
+---@type LazySpec
return {
+ 'mfussenegger/nvim-lint',
+ event = { 'BufReadPre', 'BufNewFile' },
+ config = function()
+ local lint = require 'lint'
+ lint.linters_by_ft = {
+ markdown = { 'markdownlint' },
+ }
- { -- Linting
- 'mfussenegger/nvim-lint',
- event = { 'BufReadPre', 'BufNewFile' },
- config = function()
- local lint = require 'lint'
- lint.linters_by_ft = {
- markdown = { 'markdownlint' },
- }
+ -- To allow other plugins to add linters to require('lint').linters_by_ft,
+ -- instead set linters_by_ft like this:
+ -- lint.linters_by_ft = lint.linters_by_ft or {}
+ -- lint.linters_by_ft['markdown'] = { 'markdownlint' }
+ --
+ -- However, note that this will enable a set of default linters,
+ -- which will cause errors unless these tools are available:
+ -- {
+ -- clojure = { "clj-kondo" },
+ -- dockerfile = { "hadolint" },
+ -- inko = { "inko" },
+ -- janet = { "janet" },
+ -- json = { "jsonlint" },
+ -- markdown = { "vale" },
+ -- rst = { "vale" },
+ -- ruby = { "ruby" },
+ -- terraform = { "tflint" },
+ -- text = { "vale" }
+ -- }
+ --
+ -- You can disable the default linters by setting their filetypes to nil:
+ -- lint.linters_by_ft['clojure'] = nil
+ -- lint.linters_by_ft['dockerfile'] = nil
+ -- lint.linters_by_ft['inko'] = nil
+ -- lint.linters_by_ft['janet'] = nil
+ -- lint.linters_by_ft['json'] = nil
+ -- lint.linters_by_ft['markdown'] = nil
+ -- lint.linters_by_ft['rst'] = nil
+ -- lint.linters_by_ft['ruby'] = nil
+ -- lint.linters_by_ft['terraform'] = nil
+ -- lint.linters_by_ft['text'] = nil
- -- To allow other plugins to add linters to require('lint').linters_by_ft,
- -- instead set linters_by_ft like this:
- -- lint.linters_by_ft = lint.linters_by_ft or {}
- -- lint.linters_by_ft['markdown'] = { 'markdownlint' }
- --
- -- However, note that this will enable a set of default linters,
- -- which will cause errors unless these tools are available:
- -- {
- -- clojure = { "clj-kondo" },
- -- dockerfile = { "hadolint" },
- -- inko = { "inko" },
- -- janet = { "janet" },
- -- json = { "jsonlint" },
- -- markdown = { "vale" },
- -- rst = { "vale" },
- -- ruby = { "ruby" },
- -- terraform = { "tflint" },
- -- text = { "vale" }
- -- }
- --
- -- You can disable the default linters by setting their filetypes to nil:
- -- lint.linters_by_ft['clojure'] = nil
- -- lint.linters_by_ft['dockerfile'] = nil
- -- lint.linters_by_ft['inko'] = nil
- -- lint.linters_by_ft['janet'] = nil
- -- lint.linters_by_ft['json'] = nil
- -- lint.linters_by_ft['markdown'] = nil
- -- lint.linters_by_ft['rst'] = nil
- -- lint.linters_by_ft['ruby'] = nil
- -- lint.linters_by_ft['terraform'] = nil
- -- lint.linters_by_ft['text'] = nil
-
- -- Create autocommand which carries out the actual linting
- -- on the specified events.
- local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
- vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
- group = lint_augroup,
- callback = function()
- -- Only run the linter in buffers that you can modify in order to
- -- avoid superfluous noise, notably within the handy LSP pop-ups that
- -- describe the hovered symbol using Markdown.
- if vim.bo.modifiable then lint.try_lint() end
- end,
- })
- end,
- },
+ -- Create autocommand which carries out the actual linting
+ -- on the specified events.
+ local lint_augroup = vim.api.nvim_create_augroup('lint', { clear = true })
+ vim.api.nvim_create_autocmd({ 'BufEnter', 'BufWritePost', 'InsertLeave' }, {
+ group = lint_augroup,
+ callback = function()
+ -- Only run the linter in buffers that you can modify in order to
+ -- avoid superfluous noise, notably within the handy LSP pop-ups that
+ -- describe the hovered symbol using Markdown.
+ if vim.bo.modifiable then lint.try_lint() end
+ end,
+ })
+ end,
}
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 = {