* Move configs into config subdirectory * Move LSP logic into classes * Make it possible to define mason package in lsp config, including nested dependency resolution and post install steps * replace jedi_language_server with pylsp
Notice
Welcome!
This is where I host my Neovim configuration. Feel free to look around or use it for yourself, but keep in mind the following:
- This is a work in progress. Many things may change without warning.
- This is my prefered setup, the goal of this project is not to accomodate the general users needs.
If you are looking to get started with Neovim, I would instead recommend one of these awesome projects:
- kickstart.nvim
- Recommended for a minimal setup to build upon yourself.
- LunarVim
- NvChad
- LazyVim
- AstroNvim
System Requirements
Only supports Linux, macOS and other BSD variants. These are the general requirements to get started:
- Neovim (latest git master)
- git
- tar
- curl or wget
- unzip
- gzip
If you are coming from a previous neovim configuration, it's probably also a good idea to delete your neovim data directory. To check where it is you can run:
nvim --headless --clean -c 'echo stdpath("data") .. "\n"|q'
Optional
The following are optional but provides additional features:
- make
- gcc and g++
- npm
- python3 with venv
- java runtime
- shellcheck
- php
- composer
- golang
- A nerd font
The sections below describes this in more detail.
Treesitter
Some parsers require tools for compilation, like gcc and/or g++. There are
far too many parsers for me to list (and keep track of) all their dependencies
here, but gcc and g++ should cover a lot of them. You will generally
encounter an error that describes if something is missing upon opening specific
filetypes, because treesitter is configured to automatically install parsers
when needed.
Language servers
Language servers are installed automatically to the nvim data directory
(:echo stdpath('data') .. '/mason') upon entering a buffer of related
filetype. Automatic installation can be turned off, see the end of this section
for instructions.
Some language servers have additional dependencies. If they are missing a
warning will show up and the server will be disabled. Each dependency is listed
in the server configuration under lua/lsp/<server>.lua.
If you don't need some specific language server, you may either remove them from
the top of lua/lsp.lua or disable them in lua/lsp/<server>.lua.
To disable automatic installation of a selected language server, remove or
comment out the mason part of the configuration at lua/lsp/<server>.lua.
Nerd Font
It's recommended to use a Nerd Font, v3.0.0+, otherwise some icons might not load properly.
With some terminals it's possible to use a regular font and use the "symbols only" nerd font as fallback for icons. In those cases it should be enough to simply install the symbols-only nerd font and it should get picked up automatically.
Kitty
To map it explicitly you will probably need to change the symbol_map for v3 to the following:
U+23FB-U+23FE,U+2630,U+2665,U+26A1,U+276C-U+2771,U+2B58,U+E000-U+E00A,U+E0A0-U+E0A3,U+E0B0-U+E0C8,U+E0CA,U+E0CC-U+E0D2,U+E0D4,U+E200-U+E2A9,U+E300-U+E3E3,U+E5FA-U+E6AD,U+E700-U+E7C5,U+EA60-U+EA88,U+EA8A-U+EA8C,U+EA8F-U+EAC7,U+EAC9,U+EACC-U+EB09,U+EB0B-U+EB4E,U+EB50-U+EBEB,U+F000-U+F00E,U+F010-U+F01E,U+F021-U+F03E,U+F040-U+F04E,U+F050-U+F05E,U+F060-U+F06E,U+F070-U+F07E,U+F080-U+F08E,U+F090-U+F09E,U+F0A0-U+F0AE,U+F0B0-U+F0B2,U+F0C0-U+F0CE,U+F0D0-U+F0DE,U+F0E0-U+F0EE,U+F0F0-U+F0FE,U+F100-U+F10E,U+F110-U+F11E,U+F120-U+F12E,U+F130-U+F13E,U+F140-U+F14E,U+F150-U+F15E,U+F160-U+F16E,U+F170-U+F17E,U+F180-U+F18E,U+F190-U+F19E,U+F1A0-U+F1AE,U+F1B0-U+F1BE,U+F1C0-U+F1CE,U+F1D0-U+F1DE,U+F1E0-U+F1EE,U+F1F0-U+F1FE,U+F200-U+F20E,U+F210-U+F21E,U+F221-U+F23E,U+F240-U+F24E,U+F250-U+F25E,U+F260-U+F26E,U+F270-U+F27E,U+F280-U+F28E,U+F290-U+F29E,U+F2A0-U+F2AE,U+F2B0-U+F2BE,U+F2C0-U+F2CE,U+F2D0-U+F2DE,U+F2E0,U+F300-U+F32F,U+F400-U+F533,U+F0001-U+F1AF0 Symbols Nerd Font Mono
Alternatively generate it yourself with:
fc-query /path/to/your/font.ttf --format='%{charset}\n' | sed -r 's/([0-9a-f]+)/U+\U\1/g' | sed 's/ /,/g'
Alacritty
Alacritty should automatically pick it up from the symbols-only nerd font. But as of writing it is not possible to configure explicitly.
Wezterm
Wezterm has built-in fallback for nerd fonts symbols, so there's no need to install it separately. It is also possible to configure fallbacks manually.
Clipboard
see :checkhealth and :h clipboard.
License
See the included LICENSE file.