refactor: complete whipsmart.nvim rebrand and architecture cleanup

- Rename lua/kickstart/ -> lua/whipsmart/ (health check, opt-in extras)
- Replace doc/kickstart.txt with doc/whipsmart.txt; regenerate help tags
- Rename all kickstart-* augroups to whipsmart-* in lsp.lua and telescope.lua
- Fix missed kickstart-lsp-highlight reference in nvim_clear_autocmds
- Wire up custom/plugins loading (was silently never called)
- Replace implicit glob plugin loader with explicit ordered list in init.lua
- Remove dead mason-lspconfig dependency (unused with 0.12 native LSP)
- Simplify format.lua format_on_save to a clear user-editable ft table

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Geoff Cheshire 2026-05-10 13:49:52 -04:00
parent 822be0f573
commit 64ff5eb6a3
15 changed files with 57 additions and 46 deletions

View File

@ -1,24 +0,0 @@
================================================================================
INTRODUCTION *kickstart.nvim*
Kickstart.nvim is a project to help you get started on your neovim journey.
*kickstart-is-not*
It is not:
- Complete framework for every plugin under the sun
- Place to add every plugin that could ever be useful
*kickstart-is*
It is:
- Somewhere that has a good start for the most common "IDE" type features:
- autocompletion
- goto-definition
- find references
- fuzzy finding
- and hinting at what more can be done :)
- A place to _kickstart_ your journey.
- You should fork this project and use/modify it so that it matches your
style and preferences. If you don't want to do that, there are probably
other projects that would fit much better for you (and that's great!)!
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,3 +1,3 @@
kickstart-is kickstart.txt /*kickstart-is*
kickstart-is-not kickstart.txt /*kickstart-is-not*
kickstart.nvim kickstart.txt /*kickstart.nvim*
whipsmart-is whipsmart.txt /*whipsmart-is*
whipsmart-is-not whipsmart.txt /*whipsmart-is-not*
whipsmart.nvim whipsmart.txt /*whipsmart.nvim*

26
doc/whipsmart.txt Normal file
View File

@ -0,0 +1,26 @@
================================================================================
INTRODUCTION *whipsmart.nvim*
Whipsmart.nvim is a modular, native-first Neovim configuration built on the
Neovim 0.12+ `vim.pack` system. It evolved from kickstart.nvim into a
machine-aware, reproducible starting point.
*whipsmart-is-not*
It is not:
- A complete framework bundling every plugin under the sun
- A distro you passively consume
*whipsmart-is*
It is:
- A clean, well-documented foundation with the most common IDE features:
- autocompletion (blink.cmp + LuaSnip)
- LSP with Mason tooling
- goto-definition, references, fuzzy finding (Telescope)
- syntax highlighting (nvim-treesitter)
- git integration (gitsigns)
- A place to build your own config from, with a modular structure you can
extend in lua/custom/plugins/ without merge conflicts.
Run `:checkhealth whipsmart` to verify your environment is set up correctly.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -148,13 +148,21 @@ do
end,
})
-- Load all modules in lua/plugins/
local plugin_dir = vim.fn.stdpath('config') .. '/lua/plugins'
local files = vim.fn.globpath(plugin_dir, '*.lua', false, true)
for _, file in ipairs(files) do
local module_name = 'plugins.' .. vim.fn.fnamemodify(file, ':t:r')
require(module_name)
-- Load plugin modules in explicit order
for _, mod in ipairs {
'plugins.pack_manager',
'plugins.core_ui',
'plugins.telescope',
'plugins.lsp',
'plugins.cmp',
'plugins.treesitter',
'plugins.format',
} do
require(mod)
end
-- Load user custom plugins from lua/custom/plugins/
require 'custom.plugins'
end
-- vim: ts=2 sts=2 sw=2 et

View File

@ -1,7 +1,7 @@
-- You can add your own plugins here or in other files in this directory!
-- I promise not to create any merge conflicts in this directory :)
--
-- See the kickstart.nvim README for more information
-- See the whipsmart.nvim README for more information
-- Iterate over all Lua files in the plugins directory and load them
local plugins_dir = vim.fs.joinpath(vim.fn.stdpath 'config', 'lua', 'custom', 'plugins')

View File

@ -6,14 +6,15 @@ local function gh(repo) return 'https://github.com/' .. repo end
-- ============================================================
vim.pack.add { gh 'stevearc/conform.nvim' }
-- Add filetypes here to enable format-on-save for them, e.g. lua = true
local fmt_on_save_fts = {}
require('conform').setup {
notify_on_error = false,
format_on_save = function(bufnr)
local enabled_filetypes = {}
if enabled_filetypes[vim.bo[bufnr].filetype] then
return { timeout_ms = 500 }
else
return nil
if fmt_on_save_fts[vim.bo[bufnr].filetype] then
return { timeout_ms = 500, lsp_format = 'fallback' }
end
end,
default_format_opts = { lsp_format = 'fallback' },

View File

@ -9,7 +9,7 @@ vim.pack.add { gh 'j-hui/fidget.nvim' }
require('fidget').setup {}
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('kickstart-lsp-attach', { clear = true }),
group = vim.api.nvim_create_augroup('whipsmart-lsp-attach', { clear = true }),
callback = function(event)
local map = function(keys, func, desc, mode)
mode = mode or 'n'
@ -22,7 +22,7 @@ vim.api.nvim_create_autocmd('LspAttach', {
local client = vim.lsp.get_client_by_id(event.data.client_id)
if client and client:supports_method('textDocument/documentHighlight', event.buf) then
local highlight_augroup = vim.api.nvim_create_augroup('kickstart-lsp-highlight', { clear = false })
local highlight_augroup = vim.api.nvim_create_augroup('whipsmart-lsp-highlight', { clear = false })
vim.api.nvim_create_autocmd({ 'CursorHold', 'CursorHoldI' }, {
buffer = event.buf,
group = highlight_augroup,
@ -34,10 +34,10 @@ vim.api.nvim_create_autocmd('LspAttach', {
callback = vim.lsp.buf.clear_references,
})
vim.api.nvim_create_autocmd('LspDetach', {
group = vim.api.nvim_create_augroup('kickstart-lsp-detach', { clear = true }),
group = vim.api.nvim_create_augroup('whipsmart-lsp-detach', { clear = true }),
callback = function(event2)
vim.lsp.buf.clear_references()
vim.api.nvim_clear_autocmds { group = 'kickstart-lsp-highlight', buffer = event2.buf }
vim.api.nvim_clear_autocmds { group = 'whipsmart-lsp-highlight', buffer = event2.buf }
end,
})
end
@ -75,7 +75,6 @@ local servers = {
vim.pack.add {
gh 'neovim/nvim-lspconfig',
gh 'mason-org/mason.nvim',
gh 'mason-org/mason-lspconfig.nvim',
gh 'WhoIsSethDaniel/mason-tool-installer.nvim',
}

View File

@ -37,7 +37,7 @@ vim.keymap.set('n', '<leader>sc', builtin.commands, { desc = '[S]earch [C]ommand
vim.keymap.set('n', '<leader><leader>', builtin.buffers, { desc = '[ ] Find existing buffers' })
vim.api.nvim_create_autocmd('LspAttach', {
group = vim.api.nvim_create_augroup('telescope-lsp-attach', { clear = true }),
group = vim.api.nvim_create_augroup('whipsmart-telescope-lsp-attach', { clear = true }),
callback = function(event)
local buf = event.buf
vim.keymap.set('n', 'grr', builtin.lsp_references, { buffer = buf, desc = '[G]oto [R]eferences' })

View File

@ -2,6 +2,7 @@
--
-- This file is not required for your own configuration,
-- but helps people determine if their system is setup correctly.
-- Run :checkhealth whipsmart to use it.
--
--]]
@ -35,7 +36,7 @@ end
return {
check = function()
vim.health.start 'kickstart.nvim'
vim.health.start 'whipsmart.nvim'
vim.health.info [[NOTE: Not every warning is a 'must-fix' in `:checkhealth`