This repository hosts my Neovim configuration.
Lua configuration files are loaded in this order (see init.lua):
- vim.lua: general Vim options
- colors.lua: colorscheme configuration
- treesitter.lua: Tree-sitter configuration
- lsp.lua: configuration for Language Server Protocol and completion
- directory.lua: configuration for file/directory manager
- above.lua: configuration for plugins that are displayed above buffer
- bars.lua: configuration for bars displayed on top or bottom of the buffer
- tabline.lua: custom tabline
- buffer.lua: configuration for buffer mapping and plugins that interact with the buffer
Some modules can be loaded on demand:
- menu.lua: custom menu opened with
<leader><Space> - ide.lua: IDE mode, togglable from the menu
- terminal.lua: terminal popup, opened from the menu
- Catppuccin: Catppuccin colorscheme
- nvim-treesitter: installs Tree-sitter parsers and manages their configuration
- nvim-lspconfig: configuration for many LSP servers
- Blink Completion: completion with LSP integration
- Neo-tree: file manager, replaces netrw, configured to open in a pop-up
- nvim-notify: library for displaying notifications in pop-ups, used by Noice
- Noice (fork): enter commands and searches from a pop-up in the middle of the editor, show messages in pop-ups
- Which Key: pop-up for listing key maps as I type
- Fzf-lua: fuzzy finder
- Diffview: Git diff viewer
- Gitsigns: show lines modified from Git on the left of the buffer
- Indent Blankline: show indent levels in buffer
- Mini Trailspace: show trailing whitespaces
- guess-indent (fork): detect file indentation style
- Conform: formatter manager
- Friendly Snippets: collection of code snippets, integrated in Blink Completion
- nui: UI library, used by Neo-tree and Noice
- plenary: utility function library, used by Neo-tree and nvim-notify
- Neovim 0.12+
- fzf: for fzf-lua
- curl: for downloads made by nvim-treesitter and Blink Completion
- ripgrep (rg): for fzf-lua (optional)
- fd: for fzf-lua (optional)
Minimal list of recommended servers. All servers are optional.
- Bash Language Server (bashls): Bash, sh
- clang (comes with
clangd): C, C++ - Deno: JavaScript, TypeScript (only for Deno projects)
- gopls: Go
- Ruff: Python
- Tinymist: Typst
- ZLS: Zig
- YAML Language Server (yamlls): YAML
- ShellCheck: Bash, sh
- clang (comes with
clang-format): C, C++ - Go (comes with
gofmt): Go - Deno: JavaScript, TypeScript, Markdown
- for JavaScript and TypeScript, LSP is used over Deno
- Ruff: Python
- Zig (comes with
zig fmt): Zig
Some files or parts of files were written using an AI model. This is indicated in file headers.
Unless otherwise stated, software in this repository is released under the 3-Clause BSD License (see COPYING).