chore: remove neo-tree; add CHANGELOG.md and Makefile for deps

This commit is contained in:
Kontrol 2026-07-07 09:12:41 -03:00
parent ed8b347cff
commit 4f789780d9
4 changed files with 103 additions and 134 deletions

58
CHANGELOG.md Normal file
View File

@ -0,0 +1,58 @@
# Changelog
## 2026-07-07 — Full Decoupling Refactor
### Architecture: Monolith → Modular
Extracted all plugin configurations from `init.lua` into individual files under `lua/kickstart/plugins/`. init.lua shrank from **949 → 334 lines** and now serves as a spine: options, keymaps, build hooks, and a clean `require` table in Section 10.
Each plugin is now a self-contained file — to enable or disable, comment or uncomment a single `require` line.
### New Files Created
| File | Purpose |
|---|---|
| `lua/kickstart/util.lua` | Shared `gh()` helper for GitHub URL shorthand |
| `lua/kickstart/plugins/guess-indent.lua` | Auto-detect indentation |
| `lua/kickstart/plugins/gitsigns.lua` | Git signs + hunk keymaps (consolidated) |
| `lua/kickstart/plugins/which-key.lua` | Pending keybind display |
| `lua/kickstart/plugins/tokyonight.lua` | Colorscheme (tokyonight-night) |
| `lua/kickstart/plugins/todo-comments.lua` | Highlight TODO/FIXME in comments |
| `lua/kickstart/plugins/mini.lua` | mini.ai + mini.surround + mini.statusline |
| `lua/kickstart/plugins/telescope.lua` | Fuzzy finder + LSP pickers + keymaps |
| `lua/kickstart/plugins/lsp.lua` | LSP servers + Mason + LspAttach keymaps |
| `lua/kickstart/plugins/conform.lua` | Formatting (go, hcl, ps1, lua) + hclfmt |
| `lua/kickstart/plugins/blink.lua` | blink.cmp + LuaSnip autocomplete |
| `lua/kickstart/plugins/treesitter.lua` | Syntax parsing + auto-install |
### Existing Files Modified
| File | Change |
|---|---|
| `init.lua` | Sections 4-9 extracted into plugin files; Section 10 rewritten as clean require table |
| `lua/kickstart/plugins/lint.lua` | Expanded from markdown-only to shell/bash/zsh + Go linting |
| `lua/kickstart/plugins/gitsigns.lua` | Consolidated signs config + on_attach keymaps (was duplicated) |
| `README.md` | Rewritten with full stack docs, keymap table, modular architecture guide |
### Files Removed
- `lazy-lock.json` — leftover from lazy.nvim era (migrated to vim.pack)
- `lua/kickstart/plugins/neo-tree.lua` — removed (user prefers Telescope for file navigation)
- `lua/custom/plugins/init.lua` — removed in prior cleanup
- `containerfix` branch — deprecated, deleted
### New Features
- **Linting enabled**: shellcheck for bash/sh/zsh, golangci-lint for Go
- **Gitsigns keymaps**: hunk navigation (`]c`/`[c`), staging (`<leader>hs`), blame (`<leader>tb`), word diff (`<leader>tw`)
- **System deps documented**: `Makefile` for one-command dependency installation
### How to Use
```bash
# Install system dependencies
make install
# Enable/disable plugins: edit init.lua Section 10
# Add a plugin: create lua/kickstart/plugins/<name>.lua, add require in Section 10
```

44
Makefile Normal file
View File

@ -0,0 +1,44 @@
# Neovim Config — Dependency Installation
# Run: make install
.PHONY: install check clean help
# Core dependencies (required)
CORE_DEPS := neovim gcc make git ripgrep fd tree-sitter-cli unzip xclip
# Linting (recommended)
LINT_DEPS := shellcheck golangci-lint
# All deps combined
ALL_DEPS := $(CORE_DEPS) $(LINT_DEPS)
install:
@echo "==> Installing core dependencies..."
sudo pacman -S --needed --noconfirm $(CORE_DEPS)
@echo "==> Installing linting dependencies..."
sudo pacman -S --needed --noconfirm $(LINT_DEPS) 2>/dev/null || true
@echo "==> Done. Launch nvim to auto-install plugins."
check:
@echo "==> Checking dependencies..."
@missing=0; \
for dep in $(ALL_DEPS); do \
if command -v $$dep >/dev/null 2>&1; then \
echo " [OK] $$dep"; \
else \
echo " [MISSING] $$dep"; \
missing=1; \
fi; \
done; \
if [ $$missing -eq 0 ]; then echo "==> All dependencies installed."; \
else echo "==> Run 'make install' to install missing deps."; fi
clean:
@echo "==> This removes Neovim's local data (plugins, cache). Use with caution."
@echo " Run: rm -rf ~/.local/share/nvim ~/.local/state/nvim ~/.cache/nvim"
help:
@echo "Targets:"
@echo " make install Install all system dependencies via pacman"
@echo " make check Check which dependencies are installed"
@echo " make clean Instructions for wiping Neovim data"

View File

@ -285,7 +285,7 @@ do
require 'kickstart.plugins.treesitter' require 'kickstart.plugins.treesitter'
-- Optional plugins (uncomment to enable) -- Optional plugins (uncomment to enable)
require 'kickstart.plugins.neo-tree' -- require 'kickstart.plugins.neo-tree'
require 'kickstart.plugins.lint' require 'kickstart.plugins.lint'
-- require 'kickstart.plugins.debug' -- require 'kickstart.plugins.debug'
-- require 'kickstart.plugins.autopairs' -- require 'kickstart.plugins.autopairs'

View File

@ -1,133 +0,0 @@
-- Neo-tree is a Neovim plugin to browse the file system
-- https://github.com/nvim-neo-tree/neo-tree.nvim
local neo_tree_spec = {
src = 'https://github.com/nvim-neo-tree/neo-tree.nvim',
version = vim.version.range '*',
dependencies = {
'nvim-lua/plenary.nvim',
'MunifTanjim/nui.nvim',
},
}
vim.pack.add { neo_tree_spec }
require('neo-tree').setup {
-- Show file explorer by default on NeoTree open
default_file_explorer = true,
-- Components which are displayed in the neo-tree window
components = {
'file_icons', -- File icons
'filename', -- File names
'modified', -- Modified file indicators
'git_status', -- Git status (when available via gitsigns)
'group_empty', -- Empty folder markers
'buffers_indicator' -- Buffer indicator icons
},
window = {
position = 'left', -- Position: left | right | bottom | top
width = 35, -- Width of the neo-tree window
close_if_last_window = true, -- Close neo-tree if it's the only window
float = {
enabled = true, -- Enable floating windows (for file creation)
padding = 2, -- Padding around floating windows
border = 'single', -- Border style
position = '50%', -- Position: 50% center
size = {
width = '50%', -- Width percentage of floating window
height = '80%' -- Height percentage of floating window
}
},
},
-- Configuration for filesystem source (files, folders)
filesystem = {
hijack_netrw_behavior = "disabled", -- Don't auto-open on `nvim .`
filtered_items = {
visibility = 'all', -- Show: all | visible_filtered | filtered
hide_dotfiles = false, -- Hide files starting with .
hide_gitignored = false, -- Hide git-ignored files
always_show_path = true, -- Always show file paths in the tree view
always_show_root = true -- Always show root directory when entering it
},
default_component_config = {
indent_markers = {
enable = true,
highlight_groups = {
folder_open = function(_, item_data)
local group_name = 'NeoTreeIndentMarker'
if item_data.item.type == 'directory' then
return group_name .. '.open'
end
return group_name .. '.closed'
end,
folder_closed = function(_, item_data)
local group_name = 'NeoTreeIndentMarker'
if item_data.item.type == 'directory' then
return group_name .. '.closed'
end
return group_name .. '.open'
end,
default = 'NeoTreeIndentMarker'
},
},
icons = {
folder_open = '',
folder_closed = '',
default = '', -- empty string for non-folder items
git = {
modified = '↗︎', -- Git modified file icon
unstaged = '', -- Git unstaged changes
staged = '↙︎', -- Git staged changes
ignored = '↖︎' -- Git ignored file
}
},
indent_guides = true, -- Show indentation guides for tree structure
},
use_default_document_colors = false,
auto_clean_after_buffer_close = true, -- Automatically clean up after closing files
},
buffers = {
show_unloaded = true, -- Show unloaded buffers in the tree
mapped_names = true, -- Use mapped names for buffer icons/names
get_buffer_icon = function(buffer)
if vim.bo[buffer].modified then return '' end
if vim.bo[buffer].readonly then return '📖' end
if vim.bo[buffer].filetype == 'NERDTree' then return '' end
return ''
end,
get_buffer_name = function(buffer)
local bufname = vim.api.nvim_buf_get_name(buffer)
-- Get short path by removing prefix up to first slash
if bufname:find('/') then
return bufname:gsub('.*(%p)[^-]*-', '')
end
return bufname
end,
},
git_status = {
use_icons_for_git_status = true,
icons = {
unstaged_changes = { symbol = '', color = 'red' },
staged_changes = { symbol = '↙︎', color = 'green' },
ignored_files = { symbol = '↖︎', color = 'gray' }
},
file_icons = {
modified = 'M',
added = '+',
deleted = 'D',
ignored = 'i'
}
}
}
-- Add convenient mappings for neo-tree using which-key
vim.keymap.set('n', '<leader>ff', ':Neotree filesystem toggle<CR>', { desc = 'Toggle file explorer' })
vim.keymap.set('n', '<leader>fb', ':Neotree buffers toggle<CR>', { desc = 'Toggle buffer explorer' })
vim.keymap.set('n', '<leader>fF', ':Neotree float open<CR>', { desc = 'Open floating window' })