thing
This commit is contained in:
parent
ddba4459ff
commit
6d7ac09a9e
17
init.lua
17
init.lua
|
|
@ -1,7 +1,16 @@
|
||||||
--[[
|
--[[
|
||||||
Neovim entrypoint: `lua/kickstart/init.lua` sets options, keymaps, autocommands,
|
Path: init.lua (Neovim config root)
|
||||||
diagnostics, then bootstraps lazy.nvim and loads `kickstart.plugins.spec`.
|
Module: none — Neovim executes this file before any Lua `require`.
|
||||||
Kickstart’s long banner lived here originally; see upstream kickstart.nvim README if you want it back.
|
|
||||||
|
Purpose
|
||||||
|
Single entrypoint for your configuration. Everything else lives under
|
||||||
|
`lua/` so this file stays small and easy to skim.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
A minimal root `init.lua` avoids duplicating logic that belongs in modular
|
||||||
|
Lua modules and matches common Neovim + lazy.nvim layouts.
|
||||||
|
|
||||||
|
See `:help config` and `:help lua-require`.
|
||||||
]]
|
]]
|
||||||
|
|
||||||
require 'kickstart'
|
require 'plugins.kickstart'
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/custom/git_links.lua
|
||||||
|
Module: custom.git_links
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Opens the current buffer’s file on GitHub (or compatible origin) in the
|
||||||
|
browser, including a line or range anchor from Normal or Visual mode.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Small, focused utility used by `plugins.kickstart.keymaps` (`<leader>go`).
|
||||||
|
Kept under `custom/` so it stays clearly “yours” vs. generated plugin specs.
|
||||||
|
|
||||||
|
Dependencies: git(1), xdg-open (Linux); file must be tracked by git.
|
||||||
|
]]
|
||||||
|
|
||||||
local M = {}
|
local M = {}
|
||||||
|
|
||||||
M.open_github = function()
|
M.open_github = function()
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,18 @@
|
||||||
-- Add plugins here (neo-tree lives in `lua/kickstart/plugins/neo-tree.lua`).
|
--[[
|
||||||
|
Path: lua/custom/plugins/init.lua
|
||||||
|
Module: custom.plugins
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy.nvim specs for plugins that are not part of the main `plugins.kickstart`
|
||||||
|
tree (e.g. HTTP client, experimental additions).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
`plugins.kickstart.plugins.spec` appends this module last so your personal
|
||||||
|
plugins stay merge-friendly and easy to find. Neo-tree and core stack live
|
||||||
|
under `plugins.kickstart.plugins` instead.
|
||||||
|
|
||||||
|
See `:help lazy.nvim-plugin-spec`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@module 'lazy'
|
---@module 'lazy'
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
|
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
vim.api.nvim_create_autocmd('TextYankPost', {
|
|
||||||
desc = 'Highlight when yanking (copying) text',
|
|
||||||
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
|
||||||
callback = function() vim.hl.on_yank() end,
|
|
||||||
})
|
|
||||||
|
|
||||||
vim.api.nvim_create_autocmd('FileType', {
|
|
||||||
group = vim.api.nvim_create_augroup('kickstart-markdown-safe-read', { clear = true }),
|
|
||||||
pattern = 'markdown',
|
|
||||||
callback = function()
|
|
||||||
vim.opt_local.modeline = false
|
|
||||||
end,
|
|
||||||
})
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
vim.g.mapleader = ' '
|
|
||||||
vim.g.maplocalleader = ' '
|
|
||||||
|
|
||||||
vim.g.have_nerd_font = true
|
|
||||||
|
|
||||||
require 'kickstart.options'
|
|
||||||
require 'kickstart.keymaps'
|
|
||||||
require 'kickstart.autocmds'
|
|
||||||
require 'kickstart.diagnostics'
|
|
||||||
require 'kickstart.lazy'
|
|
||||||
|
|
@ -1,10 +0,0 @@
|
||||||
-- autopairs
|
|
||||||
-- https://github.com/windwp/nvim-autopairs
|
|
||||||
|
|
||||||
---@module 'lazy'
|
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
'windwp/nvim-autopairs',
|
|
||||||
event = 'InsertEnter',
|
|
||||||
opts = {},
|
|
||||||
}
|
|
||||||
|
|
@ -1,4 +0,0 @@
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
{ 'NMAC427/guess-indent.nvim', opts = {} },
|
|
||||||
}
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
-- Add indentation guides even on blank lines
|
|
||||||
|
|
||||||
---@module 'lazy'
|
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
'lukas-reineke/indent-blankline.nvim',
|
|
||||||
-- Enable `lukas-reineke/indent-blankline.nvim`
|
|
||||||
-- See `:help ibl`
|
|
||||||
main = 'ibl',
|
|
||||||
---@module 'ibl'
|
|
||||||
---@type ibl.config
|
|
||||||
opts = {},
|
|
||||||
}
|
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
'nvim-mini/mini.icons',
|
|
||||||
opts = {
|
|
||||||
file = {
|
|
||||||
['.go-version'] = { glyph = '', hl = 'MiniIconsBlue' },
|
|
||||||
},
|
|
||||||
filetype = {
|
|
||||||
gotmpl = { glyph = '', hl = 'MiniIconsGrey' },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,6 +0,0 @@
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
'fredrikaverpil/neotest-golang',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,12 +0,0 @@
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
'MeanderingProgrammer/render-markdown.nvim',
|
|
||||||
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' },
|
|
||||||
ft = { 'markdown', 'markdown.mdx' },
|
|
||||||
opts = {
|
|
||||||
latex = { enabled = false },
|
|
||||||
completions = { lsp = { enabled = true }, blink = { enabled = true } },
|
|
||||||
},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,43 +0,0 @@
|
||||||
---@param out table
|
|
||||||
---@param chunk LazySpec|LazySpec[]
|
|
||||||
local function append_specs(out, chunk)
|
|
||||||
if type(chunk[1]) == 'string' then
|
|
||||||
out[#out + 1] = chunk
|
|
||||||
return
|
|
||||||
end
|
|
||||||
for i = 1, #chunk do
|
|
||||||
out[#out + 1] = chunk[i]
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
---@type LazySpec
|
|
||||||
local specs = {}
|
|
||||||
local mods = {
|
|
||||||
'kickstart.plugins.guess_indent',
|
|
||||||
'kickstart.plugins.gitsigns',
|
|
||||||
'kickstart.plugins.which_key',
|
|
||||||
'kickstart.plugins.render_markdown',
|
|
||||||
'kickstart.plugins.telescope',
|
|
||||||
'kickstart.plugins.lsp',
|
|
||||||
'kickstart.plugins.conform',
|
|
||||||
'kickstart.plugins.blink',
|
|
||||||
'kickstart.plugins.tokyonight',
|
|
||||||
'kickstart.plugins.todo_comments',
|
|
||||||
'kickstart.plugins.mini',
|
|
||||||
'kickstart.plugins.treesitter',
|
|
||||||
'kickstart.plugins.vim_helm',
|
|
||||||
'kickstart.plugins.neotest_golang',
|
|
||||||
'kickstart.plugins.mini_icons',
|
|
||||||
'kickstart.plugins.debug',
|
|
||||||
'kickstart.plugins.indent_line',
|
|
||||||
'kickstart.plugins.lint',
|
|
||||||
'kickstart.plugins.autopairs',
|
|
||||||
'kickstart.plugins.neo-tree',
|
|
||||||
'custom.plugins',
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, mod in ipairs(mods) do
|
|
||||||
append_specs(specs, require(mod))
|
|
||||||
end
|
|
||||||
|
|
||||||
return specs
|
|
||||||
|
|
@ -1,13 +0,0 @@
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
-- Highlight todo, notes, etc in comments
|
|
||||||
{
|
|
||||||
'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 },
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +0,0 @@
|
||||||
---@type LazySpec
|
|
||||||
return {
|
|
||||||
{
|
|
||||||
'towolf/vim-helm',
|
|
||||||
event = 'BufReadPre',
|
|
||||||
config = function()
|
|
||||||
-- This plugin automatically detects helm files (including .tpl)
|
|
||||||
-- and sets the filetype to "helm" instead of "yaml"
|
|
||||||
end,
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
@ -0,0 +1,28 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/autocmds.lua
|
||||||
|
Module: plugins.kickstart.autocmds
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Small, global autocommand hooks: yank highlight feedback and safer defaults
|
||||||
|
for Markdown buffers (modelines off in untrusted README-style files).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Autocommands belong next to options/keymaps so “editor shell” behavior is
|
||||||
|
grouped separately from per-plugin `config = function()` blocks.
|
||||||
|
|
||||||
|
See `:help autocmd`, `:help vim.hl.on_yank()`, `:help 'modeline'`.
|
||||||
|
]]
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('TextYankPost', {
|
||||||
|
desc = 'Highlight when yanking (copying) text',
|
||||||
|
group = vim.api.nvim_create_augroup('kickstart-highlight-yank', { clear = true }),
|
||||||
|
callback = function() vim.hl.on_yank() end,
|
||||||
|
})
|
||||||
|
|
||||||
|
vim.api.nvim_create_autocmd('FileType', {
|
||||||
|
group = vim.api.nvim_create_augroup('kickstart-markdown-safe-read', { clear = true }),
|
||||||
|
pattern = 'markdown',
|
||||||
|
callback = function()
|
||||||
|
vim.opt_local.modeline = false
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/diagnostics.lua
|
||||||
|
Module: plugins.kickstart.diagnostics
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
One global `vim.diagnostic.config` for how LSP diagnostics render: signs,
|
||||||
|
virtual text, floating previews, underline, and sort order.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
A single module avoids conflicting `vim.diagnostic.config` calls (e.g. one
|
||||||
|
at startup and another inside LSP setup) overwriting each other.
|
||||||
|
|
||||||
|
See `:help vim.diagnostic.config()`, `:help diagnostic-signs`.
|
||||||
|
]]
|
||||||
|
|
||||||
vim.diagnostic.config {
|
vim.diagnostic.config {
|
||||||
severity_sort = true,
|
severity_sort = true,
|
||||||
float = { border = 'rounded', source = 'if_many' },
|
float = { border = 'rounded', source = 'if_many' },
|
||||||
|
|
@ -1,9 +1,17 @@
|
||||||
--[[
|
--[[
|
||||||
--
|
Path: lua/plugins/kickstart/health.lua
|
||||||
-- This file is not required for your own configuration,
|
Module: plugins.kickstart.health
|
||||||
-- but helps people determine if their system is setup correctly.
|
|
||||||
--
|
Purpose
|
||||||
--]]
|
Optional `:checkhealth` provider: Neovim version gate, common CLI tools
|
||||||
|
(git, make, unzip, rg), and contextual notes for Mason-related warnings.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Health checks catch environment issues before debugging “mystery” plugin
|
||||||
|
failures. Safe to ignore if you do not run `:checkhealth`; harmless if loaded.
|
||||||
|
|
||||||
|
See `:help health-dev`, `:checkhealth`.
|
||||||
|
]]
|
||||||
|
|
||||||
local check_version = function()
|
local check_version = function()
|
||||||
local verstr = tostring(vim.version())
|
local verstr = tostring(vim.version())
|
||||||
|
|
@ -20,7 +28,6 @@ local check_version = function()
|
||||||
end
|
end
|
||||||
|
|
||||||
local check_external_reqs = function()
|
local check_external_reqs = function()
|
||||||
-- Basic utils: `git`, `make`, `unzip`
|
|
||||||
for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
|
for _, exe in ipairs { 'git', 'make', 'unzip', 'rg' } do
|
||||||
local is_executable = vim.fn.executable(exe) == 1
|
local is_executable = vim.fn.executable(exe) == 1
|
||||||
if is_executable then
|
if is_executable then
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/init.lua
|
||||||
|
Module: plugins.kickstart
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Orchestrates core editor setup: globals, options, keymaps, autocommands,
|
||||||
|
diagnostics, then installs and loads third-party plugins via lazy.nvim.
|
||||||
|
|
||||||
|
Load order
|
||||||
|
1. Leader keys and UI flags must be set before lazy.nvim (plugin keymaps).
|
||||||
|
2. Options, keymaps, autocommands, and diagnostics run before plugins so
|
||||||
|
baseline behavior exists even if a plugin fails to load.
|
||||||
|
3. `lazy.lua` runs last and pulls in the full Lazy plugin spec list.
|
||||||
|
|
||||||
|
See `:help mapleader`, `:help vim.g`, `:help lazy.nvim.txt`.
|
||||||
|
]]
|
||||||
|
|
||||||
|
vim.g.mapleader = ' '
|
||||||
|
vim.g.maplocalleader = ' '
|
||||||
|
|
||||||
|
vim.g.have_nerd_font = true
|
||||||
|
|
||||||
|
require 'plugins.kickstart.options'
|
||||||
|
require 'plugins.kickstart.keymaps'
|
||||||
|
require 'plugins.kickstart.autocmds'
|
||||||
|
require 'plugins.kickstart.diagnostics'
|
||||||
|
require 'plugins.kickstart.lazy'
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/keymaps.lua
|
||||||
|
Module: plugins.kickstart.keymaps
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Non-plugin (or minimally coupled) normal-mode maps: search, diagnostics
|
||||||
|
quickfix, terminal escape, window navigation, GitHub “open in browser,”
|
||||||
|
Neo-tree toggles, and visual paste without clobbering a register.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Keeping these maps here avoids scattering `vim.keymap.set` across plugin
|
||||||
|
config files and ensures they exist even before lazy.nvim finishes loading.
|
||||||
|
|
||||||
|
See `:help vim.keymap.set()`, `:help diagnostic-loclist`.
|
||||||
|
]]
|
||||||
|
|
||||||
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
vim.keymap.set('n', '<Esc>', '<cmd>nohlsearch<CR>')
|
||||||
|
|
||||||
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
vim.keymap.set('n', '<leader>q', vim.diagnostic.setloclist, { desc = 'Open diagnostic [Q]uickfix list' })
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/lazy.lua
|
||||||
|
Module: plugins.kickstart.lazy
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Bootstraps folke/lazy.nvim if missing, prepends it to runtimepath, and calls
|
||||||
|
`lazy.setup()` with the aggregated plugin specification plus UI icon prefs.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
lazy.nvim must be on `runtimepath` before `require('lazy')`. Keeping clone +
|
||||||
|
setup here isolates plugin-manager mechanics from editor options/keymaps.
|
||||||
|
|
||||||
|
See `:help lazy.nvim.txt`, `:help rtp`.
|
||||||
|
]]
|
||||||
|
|
||||||
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
local lazypath = vim.fn.stdpath 'data' .. '/lazy/lazy.nvim'
|
||||||
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
if not (vim.uv or vim.loop).fs_stat(lazypath) then
|
||||||
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
local lazyrepo = 'https://github.com/folke/lazy.nvim.git'
|
||||||
|
|
@ -9,7 +24,7 @@ end
|
||||||
local rtp = vim.opt.rtp
|
local rtp = vim.opt.rtp
|
||||||
rtp:prepend(lazypath)
|
rtp:prepend(lazypath)
|
||||||
|
|
||||||
require('lazy').setup(require 'kickstart.plugins.spec', {
|
require('lazy').setup(require 'plugins.kickstart.plugins.spec', {
|
||||||
ui = {
|
ui = {
|
||||||
icons = vim.g.have_nerd_font and {} or {
|
icons = vim.g.have_nerd_font and {} or {
|
||||||
cmd = '⌘',
|
cmd = '⌘',
|
||||||
|
|
@ -1,4 +1,17 @@
|
||||||
-- Options: see `:help vim.o` and `:help option-list`
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/options.lua
|
||||||
|
Module: plugins.kickstart.options
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Sets buffer-agnostic Neovim options (`vim.o` / `vim.opt`): editing feel,
|
||||||
|
UI chrome, search, splits, and persistence (e.g. undofile).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Centralizing options keeps behavior predictable and documents defaults in
|
||||||
|
one place. Clipboard is scheduled after UI enter to avoid slowing startup.
|
||||||
|
|
||||||
|
See `:help vim.o`, `:help option-list`, `:help 'clipboard'`.
|
||||||
|
]]
|
||||||
|
|
||||||
vim.o.number = true
|
vim.o.number = true
|
||||||
|
|
||||||
|
|
@ -0,0 +1,22 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/autopairs.lua
|
||||||
|
Module: plugins.kickstart.plugins.autopairs
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for nvim-autopairs: inserts/closes paired brackets and quotes in
|
||||||
|
Insert mode; integrates cleanly with completion when configured.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Loaded on `InsertEnter` so startup stays fast. Empty `opts` uses plugin
|
||||||
|
defaults; customize here if you need rule exceptions or cmp integration.
|
||||||
|
|
||||||
|
See https://github.com/windwp/nvim-autopairs
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@module 'lazy'
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
'windwp/nvim-autopairs',
|
||||||
|
event = 'InsertEnter',
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/blink.lua
|
||||||
|
Module: plugins.kickstart.plugins.blink
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for saghen/blink.cmp: completion menu, LSP source, snippets via
|
||||||
|
LuaSnip, signature help, and keymap preset (`super-tab`).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Standalone entry complements the `blink.cmp` dependency pinned under
|
||||||
|
`lsp.lua` so capabilities exist before servers start; lazy merges duplicate
|
||||||
|
plugin IDs by version.
|
||||||
|
|
||||||
|
See `:help blink.cmp`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Autocompletion
|
{ -- Autocompletion
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/conform.lua
|
||||||
|
Module: plugins.kickstart.plugins.conform
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for conform.nvim: formatter orchestration (`<leader>f`), per-FT
|
||||||
|
formatter lists (stylua, sql_formatter, prettier), and format-on-save policy.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Keeps formatting separate from LSP where you explicitly disable or gate LSP
|
||||||
|
format fallback per filetype.
|
||||||
|
|
||||||
|
See `:help conform.nvim`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Autoformat
|
{ -- Autoformat
|
||||||
|
|
@ -1,10 +1,17 @@
|
||||||
-- debug.lua
|
--[[
|
||||||
--
|
Path: lua/plugins/kickstart/plugins/debug.lua
|
||||||
-- Shows how to use the DAP plugin to debug your code.
|
Module: plugins.kickstart.plugins.debug
|
||||||
--
|
|
||||||
-- Primarily focused on configuring the debugger for Go, but can
|
Purpose
|
||||||
-- be extended to other languages as well. That's why it's called
|
Lazy spec for nvim-dap + nvim-dap-ui + mason-nvim-dap + nvim-dap-go: debug
|
||||||
-- kickstart.nvim and not kitchen-sink.nvim ;)
|
sessions, UI controls, breakpoint signs, and Go/Delve configurations.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Debugging is optional but heavy; isolating DAP keeps optional tooling out of
|
||||||
|
LSP startup. Extend `dap.configurations` for other languages as needed.
|
||||||
|
|
||||||
|
See `:help dap.txt`, plugin READMEs.
|
||||||
|
]]
|
||||||
|
|
||||||
---@module 'lazy'
|
---@module 'lazy'
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/gitsigns.lua
|
||||||
|
Module: plugins.kickstart.plugins.gitsigns
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for lewis6991/gitsigns.nvim: gutter hunks, stage/reset, blame,
|
||||||
|
diff against index / HEAD / default branch, and buffer-local keymaps.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Single source of truth for Git-in-editor UX; pairs with which-key groups
|
||||||
|
under `<leader>h` and avoids duplicating gitsigns setup in `init.lua`.
|
||||||
|
|
||||||
|
See `:help gitsigns`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
|
{ -- Adds git related signs to the gutter, as well as utilities for managing changes
|
||||||
|
|
@ -0,0 +1,19 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/guess_indent.lua
|
||||||
|
Module: plugins.kickstart.plugins.guess_indent
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for guess-indent.nvim: detects indentation style per buffer so new
|
||||||
|
lines match tabs vs. spaces without manual `:set sw=`.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Lightweight, runs early in the spec list; no keymaps. Keeps indent behavior
|
||||||
|
consistent before Treesitter or LSP attach.
|
||||||
|
|
||||||
|
See plugin README; `:help 'shiftwidth'`.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
{ 'NMAC427/guess-indent.nvim', opts = {} },
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,26 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/indent_line.lua
|
||||||
|
Module: plugins.kickstart.plugins.indent_line
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for indent-blankline.nvim (`ibl`): optional vertical guides aligned
|
||||||
|
with indentation levels for readability in deeply nested code.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Purely visual; lazy-loads via `main = 'ibl'`. Defaults are minimal; extend
|
||||||
|
`opts` if you want scope rules or excluded filetypes.
|
||||||
|
|
||||||
|
See `:help ibl.txt`.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@module 'lazy'
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
'lukas-reineke/indent-blankline.nvim',
|
||||||
|
-- Enable `lukas-reineke/indent-blankline.nvim`
|
||||||
|
-- See `:help ibl`
|
||||||
|
main = 'ibl',
|
||||||
|
---@module 'ibl'
|
||||||
|
---@type ibl.config
|
||||||
|
opts = {},
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,17 @@
|
||||||
-- Linting
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/lint.lua
|
||||||
|
Module: plugins.kickstart.plugins.lint
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for nvim-lint: asynchronous linters per filetype (here Markdown
|
||||||
|
via markdownlint) triggered on buffer enter / write / leaving Insert mode.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Complements LSP diagnostics where you want CLI linters or faster feedback.
|
||||||
|
Extend `linters_by_ft` as you add tools to Mason or the host system.
|
||||||
|
|
||||||
|
See `:help nvim-lint.txt`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@module 'lazy'
|
---@module 'lazy'
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
|
|
@ -1,3 +1,19 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/lsp.lua
|
||||||
|
Module: plugins.kickstart.plugins.lsp
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for nvim-lspconfig + Mason + blink.cmp integration: LspAttach
|
||||||
|
keymaps, server table (clangd, gopls, pyright, rust, ts_ls, lua_ls, etc.),
|
||||||
|
Mason tool installer, and 0.11 `vim.lsp.config` / `vim.lsp.enable` wiring.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Concentrates all LSP lifecycle logic in one place. Blink is both a
|
||||||
|
dependency (capabilities) and a top-level plugin spec in `blink.lua`.
|
||||||
|
|
||||||
|
See `:help lsp`, `:help mason.nvim`, `:help blink.cmp`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{
|
{
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/mini.lua
|
||||||
|
Module: plugins.kickstart.plugins.mini
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for nvim-mini/mini.nvim: loads `mini.ai`, `mini.surround`, and
|
||||||
|
`mini.statusline` with nerd-font aware icons and a compact location section.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Bundles small quality-of-life modules under one plugin id to reduce Lazy
|
||||||
|
node count; adjust `mini.ai` mappings if they collide with Treesitter.
|
||||||
|
|
||||||
|
See `:help mini.nvim`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Collection of various small independent plugins/modules
|
{ -- Collection of various small independent plugins/modules
|
||||||
|
|
@ -0,0 +1,29 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/mini_icons.lua
|
||||||
|
Module: plugins.kickstart.plugins.mini_icons
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for mini.icons: consistent glyphs/highlights for special filenames
|
||||||
|
(e.g. `.go-version`) and filetypes like `gotmpl`.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Complements web-devicons and Treesitter; keeps icon tweaks in one small
|
||||||
|
table instead of scattering `nvim_set_hl` calls.
|
||||||
|
|
||||||
|
See `:help mini.icons`.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'nvim-mini/mini.icons',
|
||||||
|
opts = {
|
||||||
|
file = {
|
||||||
|
['.go-version'] = { glyph = '', hl = 'MiniIconsBlue' },
|
||||||
|
},
|
||||||
|
filetype = {
|
||||||
|
gotmpl = { glyph = '', hl = 'MiniIconsGrey' },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,4 +1,17 @@
|
||||||
-- Neo-tree: https://github.com/nvim-neo-tree/neo-tree.nvim
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/neo-tree.lua
|
||||||
|
Module: plugins.kickstart.plugins.neo-tree
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for nvim-neo-tree/neo-tree.nvim: filesystem sidebar, reveal/toggle
|
||||||
|
keymaps, and tuned `filesystem` options (hidden files, libuv watcher, root).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Centralizes file-tree UX; `<leader>x` / `<leader>z` maps live in keymaps.lua.
|
||||||
|
Kept separate from `custom.plugins` so “core” navigation stays discoverable.
|
||||||
|
|
||||||
|
See https://github.com/nvim-neo-tree/neo-tree.nvim
|
||||||
|
]]
|
||||||
|
|
||||||
---@module 'lazy'
|
---@module 'lazy'
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
|
|
@ -0,0 +1,21 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/neotest_golang.lua
|
||||||
|
Module: plugins.kickstart.plugins.neotest_golang
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for neotest-golang: Neotest adapter for Go tests (table-driven,
|
||||||
|
subtests) when you wire Neotest core elsewhere.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Declared as a standalone plugin entry so enabling `nvim-neotest/neotest`
|
||||||
|
later only requires adding the core plugin + runners; this stays inert until then.
|
||||||
|
|
||||||
|
See https://github.com/nvim-neotest/neotest and adapter README.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'fredrikaverpil/neotest-golang',
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/render_markdown.lua
|
||||||
|
Module: plugins.kickstart.plugins.render_markdown
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for render-markdown.nvim: in-buffer Markdown preview (no external
|
||||||
|
server), with LaTeX disabled and LSP/blink completion hooks enabled.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Filetype-limited load keeps startup lean; pairs with Treesitter + mini.nvim
|
||||||
|
as declared dependencies.
|
||||||
|
|
||||||
|
See plugin README; `:help render-markdown.nvim` if bundled.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'MeanderingProgrammer/render-markdown.nvim',
|
||||||
|
dependencies = { 'nvim-treesitter/nvim-treesitter', 'nvim-mini/mini.nvim' },
|
||||||
|
ft = { 'markdown', 'markdown.mdx' },
|
||||||
|
opts = {
|
||||||
|
latex = { enabled = false },
|
||||||
|
completions = { lsp = { enabled = true }, blink = { enabled = true } },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,59 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/spec.lua
|
||||||
|
Module: plugins.kickstart.plugins.spec
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Builds the complete lazy.nvim plugin list: requires each per-plugin module,
|
||||||
|
normalizes return shapes (single spec vs. `{ spec }`), and returns one flat
|
||||||
|
`LazySpec` array for `lazy.setup()`.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Splitting each plugin into its own file keeps diffs small and matches how
|
||||||
|
lazy.nvim expects multiple tables to be merged at setup time.
|
||||||
|
|
||||||
|
See `:help lazy.nvim-plugin-spec`, `:help LazySpec`.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@param out table
|
||||||
|
---@param chunk LazySpec|LazySpec[]
|
||||||
|
local function append_specs(out, chunk)
|
||||||
|
if type(chunk[1]) == 'string' then
|
||||||
|
out[#out + 1] = chunk
|
||||||
|
return
|
||||||
|
end
|
||||||
|
for i = 1, #chunk do
|
||||||
|
out[#out + 1] = chunk[i]
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
local specs = {}
|
||||||
|
local mods = {
|
||||||
|
'plugins.kickstart.plugins.guess_indent',
|
||||||
|
'plugins.kickstart.plugins.gitsigns',
|
||||||
|
'plugins.kickstart.plugins.which_key',
|
||||||
|
'plugins.kickstart.plugins.render_markdown',
|
||||||
|
'plugins.kickstart.plugins.telescope',
|
||||||
|
'plugins.kickstart.plugins.lsp',
|
||||||
|
'plugins.kickstart.plugins.conform',
|
||||||
|
'plugins.kickstart.plugins.blink',
|
||||||
|
'plugins.kickstart.plugins.tokyonight',
|
||||||
|
'plugins.kickstart.plugins.todo_comments',
|
||||||
|
'plugins.kickstart.plugins.mini',
|
||||||
|
'plugins.kickstart.plugins.treesitter',
|
||||||
|
'plugins.kickstart.plugins.vim_helm',
|
||||||
|
'plugins.kickstart.plugins.neotest_golang',
|
||||||
|
'plugins.kickstart.plugins.mini_icons',
|
||||||
|
'plugins.kickstart.plugins.debug',
|
||||||
|
'plugins.kickstart.plugins.indent_line',
|
||||||
|
'plugins.kickstart.plugins.lint',
|
||||||
|
'plugins.kickstart.plugins.autopairs',
|
||||||
|
'plugins.kickstart.plugins.neo-tree',
|
||||||
|
'custom.plugins',
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, mod in ipairs(mods) do
|
||||||
|
append_specs(specs, require(mod))
|
||||||
|
end
|
||||||
|
|
||||||
|
return specs
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/telescope.lua
|
||||||
|
Module: plugins.kickstart.plugins.telescope
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for telescope.nvim: fuzzy finder for files, grep, diagnostics,
|
||||||
|
git, help, and LSP pickers; includes fzf-native and ui-select extensions.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Large `config` function registers `<leader>s*` maps and theme extensions.
|
||||||
|
Deferred `require('telescope.builtin')` from LSP attach remains valid.
|
||||||
|
|
||||||
|
See `:help telescope`, `:help telescope.setup()`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Fuzzy Finder (files, lsp, etc)
|
{ -- Fuzzy Finder (files, lsp, etc)
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/todo_comments.lua
|
||||||
|
Module: plugins.kickstart.plugins.todo_comments
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for todo-comments.nvim: highlights TODO/FIXME/HACK-style comment
|
||||||
|
tokens and can integrate with Telescope (optional).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Purely visual aid for scanning large codebases; `signs = false` avoids
|
||||||
|
gutter clutter if you prefer highlight-only.
|
||||||
|
|
||||||
|
See https://github.com/folke/todo-comments.nvim
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'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 },
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/tokyonight.lua
|
||||||
|
Module: plugins.kickstart.plugins.tokyonight
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for tokyonight.nvim: colorscheme plugin with high priority so it
|
||||||
|
loads before most UI; disables italic comments then sets `colorscheme`.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Centralizes theme choice. Swap plugin name + `vim.cmd.colorscheme` here if
|
||||||
|
you change distributions.
|
||||||
|
|
||||||
|
See `:help colorscheme`, plugin README.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- You can easily change to a different colorscheme.
|
{ -- You can easily change to a different colorscheme.
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/treesitter.lua
|
||||||
|
Module: plugins.kickstart.plugins.treesitter
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for nvim-treesitter: parser install list, `TSUpdate` build step,
|
||||||
|
highlight/indent toggles, and `lazy = false` so buffers get treesitter early.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Syntax/folds/indent for supported languages; `auto_install` pulls missing
|
||||||
|
parsers on demand. Ruby keeps vim regex highlighting per upstream note.
|
||||||
|
|
||||||
|
See `:help nvim-treesitter`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Highlight, edit, and navigate code
|
{ -- Highlight, edit, and navigate code
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/vim_helm.lua
|
||||||
|
Module: plugins.kickstart.plugins.vim_helm
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for towolf/vim-helm: sets `filetype=helm` on Helm templates so
|
||||||
|
Treesitter/YAML tooling attach to the correct grammar instead of plain YAML.
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Small filetype shim; loaded on `BufReadPre` before heavy YAML LSP hooks run.
|
||||||
|
|
||||||
|
See Helm tooling docs; plugin README.
|
||||||
|
]]
|
||||||
|
|
||||||
|
---@type LazySpec
|
||||||
|
return {
|
||||||
|
{
|
||||||
|
'towolf/vim-helm',
|
||||||
|
event = 'BufReadPre',
|
||||||
|
config = function()
|
||||||
|
-- This plugin automatically detects helm files (including .tpl)
|
||||||
|
-- and sets the filetype to "helm" instead of "yaml"
|
||||||
|
end,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
@ -1,3 +1,18 @@
|
||||||
|
--[[
|
||||||
|
Path: lua/plugins/kickstart/plugins/which_key.lua
|
||||||
|
Module: plugins.kickstart.plugins.which_key
|
||||||
|
|
||||||
|
Purpose
|
||||||
|
Lazy spec for which-key.nvim: discoverable pop-up of pending key sequences
|
||||||
|
and group labels for `<leader>` chains (search, toggle, git hunks, LSP).
|
||||||
|
|
||||||
|
Rationale
|
||||||
|
Loaded on `VimEnter` so it does not delay first screen paint. `spec` entries
|
||||||
|
document chains used elsewhere (Telescope, gitsigns, LSP maps).
|
||||||
|
|
||||||
|
See `:help which-key.nvim.txt`.
|
||||||
|
]]
|
||||||
|
|
||||||
---@type LazySpec
|
---@type LazySpec
|
||||||
return {
|
return {
|
||||||
{ -- Useful plugin to show you pending keybinds.
|
{ -- Useful plugin to show you pending keybinds.
|
||||||
Loading…
Reference in New Issue