Some setup notes about my config for my future self and any travelers.
- LSPs are configured in the /lsp directory as they should be in Neovim 0.11+
- The LSP servers and formatters are installed as OS packages
I prefer the Codebook LSP for spell checking code. Spell checkers in general don't understand coding conventions, this spell checker does taking language syntax into consideration before making a suggestion.
- codebook
- Disable Neovim spell check when in use, otherwise default back to Neovim's builtin spell check. See options.lua for the auto command snippet.
Simple Markdown, JSON, TOML linting and formatting.
- marksman
- dprint (plugin based formatter)
I only really use this for Neovim configuration, basic LSP with a lua style formatter.
- lua_ls
- stylua
Python requires multiple LSPs for different things. ruff is primarily used for formatting/linting and basedpyright is used for type checking, completions, go to definition, etc (everything else).
- pylsp (incomplete)
- Rope (optional dep)
- pyright (disabled)
- basedpyright
- Ruff (documentation hover is disabled in favor of pyright/basedpyright)
Rustup manages the Rust toolchain. Once Rustup is installed, its relevant components are added to Neovim.
- rustup
- rust-analyzer
- clippy (swapped for 'cargo check')
- rustfmt
- rust-analyzer
lazy.nvim is being used to manage plugins (not to be confused with Lazy.nvim).
Some of my favorite themes that don't bother my eyes.
- Kanso
- Vague (Customized)
Peek is being used to render markdown in a Github like format. One thing to note with this plugin is that webkit may have a problem if Nvidia proprietary drivers (linux) are being used. Peek depends on webkit to create the preview window. The following snippet should be added to .zshrc or the like to fix it for now (it will have no effect if AMD drivers are being used).
#.zshrc
# Check if an nvidia driver is actively running.
if [[ -f /proc/driver/nvidia/version ]]; then
export WEBKIT_DISABLE_COMPOSITING_MODE=1
fi
- peek (may require the build command to be run manually from the root of the plugin on failure during first install)
Blink is being used to power completions via LSPs/snippets. I chose this over nvim-cmp because it is much easier to setup and works well enough.
- Blink
Conform is used with my formatters for keymap consistency.
- Conform
Treesitter is being used for highlighting, indentation, and incremental selection.
Neovim smartindent is disabled when using this.
NOTE: This should be updated to the 'main' branch eventually.
- Treesitter
- TODO: Treesitter text objects to jump between functions and such.
Telescope is being used to fuzzy find over buffer, files, grep, jumps, diagnostics, etc.
- Telescope w/ fzf-native
I like a customizable inline LSP code action popup.
- Tiny code action
Jump to to a location in view directly.
- Flash
Manipulate matching characters pairs easily.
- Vim Surround
Gitsigns is being used to work with hunks in the buffer as well as mark changes, Neogit is used for everything else.
- Git signs
- Neogit
- Todo comments
Center windows while gaining some scratch buffers. I use the scratch buffers similarly to the Jetbrains scratch file feature.
- No Neck Pain
Netrw with features!
- Neotree
Switch around bookmarked buffers easily.
- Arrow buffer manager