Personal Neovim setup focused on Python and Rust. C/C++ (with CMake) is supported but secondary. Used for coding, notes, and general editing.
Recommended terminal: Kitty
- Modular Lua config with clear plugin groups.
- LSP + diagnostics + inlay hints with per-filetype enablement.
- Treesitter + textobjects and UI polish.
- Git workflow: gitsigns, diffview, neogit, and helpers.
- Fuzzy finding + file navigation (Snacks picker, neo-tree).
- Formatting, linting, DAP, and task runner integrations.
- Optional AI tools (sidekick).
Required:
- Neovim 0.10+ (for current APIs/inlay hints).
- Git (plugin bootstrap).
Recommended:
- A Nerd Font (icons/glyphs).
- ripgrep (live grep).
- fzf (optional, used by some UI integrations when available).
- fd (used by Snacks picker).
Optional (install as needed):
- LSP servers via Mason (
:Mason). - Formatters/linters: ruff, cmakelint, cmake-format, stylua, clang-format, rustfmt.
- Debuggers/adapters: gdb, codelldb, OpenDebugAD7.
- lazygit (terminal git UI).
- Install Neovim and Git.
- Clone this repo into
$XDG_CONFIG_HOME/nvim(usually~/.config/nvim). - Start
nvimto auto-install plugins. - Run
:checkhealthif you want to validate the setup.
- Leader key:
<Space> - Local leader:
, - Plugin manager:
:Lazy - LSP tooling:
:Mason
- Modules and layout:
doc/modules.md - Language support:
doc/languages.md - Q&A and implementation notes:
doc/faq.md - Toast API notes:
doc/abel-toast.md
High-level layout of the repo:
- Tree view:
nvim/
├─ init.lua
├─ luarc.json
├─ lazy-lock.json
├─ README.md
├─ lua/abel/
│ ├─ init.lua
│ ├─ config/
│ │ ├─ autocmds.lua
│ │ ├─ capabilities.lua
│ │ ├─ custom.lua
│ │ ├─ dap.lua
│ │ ├─ gui.lua
│ │ ├─ keymaps.lua
│ │ ├─ lang.lua
│ │ ├─ lazy-plugins.lua
│ │ ├─ locals.lua
│ │ ├─ lsp.lua
│ │ ├─ misc.lua
│ │ ├─ options.lua
│ │ └─ overseer/
│ │ ├─ run_script.lua
│ │ └─ cpp/
│ │ └─ cpp_build.lua
│ ├─ plugins/
│ │ ├─ init.lua
│ │ ├─ colorscheme/
│ │ ├─ dap/
│ │ ├─ editor/
│ │ ├─ efficiency/
│ │ ├─ filetype/
│ │ ├─ git/
│ │ ├─ lib/
│ │ ├─ lsp/
│ │ ├─ mini/
│ │ ├─ snacks/
│ │ ├─ tool/
│ │ ├─ treesitter/
│ │ └─ ui/
│ └─ util/
│ ├─ base/
│ ├─ core/
│ ├─ editor/
│ ├─ lsp/
│ ├─ plugin/
│ ├─ tool/
│ └─ ui/
├─ after/
│ └─ ftplugin/
├─ lsp/
├─ doc/
├─ scripts/
└─ extend-snippets/
init.lua: entry point.lua/abel/config/: core settings (options, keymaps, LSP, UI, etc).lua/abel/plugins/: plugin specs grouped by area.after/: filetype and after-load tweaks.lsp/: per-server LSP configs.doc/: docs and assets (screenshots).scripts/: helper scripts.extend-snippets/: custom snippets.
:Lazy syncto update plugins.:Masonto update LSP servers/tools.
