This is my neovim configurations, for working, studying and other scenarios. And it's expected with high flexiblity for different working.
- core configurations of neovim
- support different languages with nvim-lspconfig
- Lua
- C/C++
- Python
- CMake
- Rust
- SystemVerilog(also Verilog)
- Json
- Yaml
- Toml(for rustc/cargo)
- code formatting
- health check in nvim style
- requested softwares, e.g. git
- dynamic dependencies, requested by LSP servers
- more flexible settings with setting.json
$XDG_CONFIG_HOME/nvim/settings.jsonfor global settings<project>/.nvim/settings.jsonfor project-specified settings
- nvim auto command
- lazy-loading modules, powered by lazy.nvim
- auto completions, powered by nvim-cmp and its extensions
- better nvim terminals
- debugger adapter protocol
Well, I want to make neovim be a complex IDE...
There are some pre-requesties for basic functions:
- a v3.0+ patched font from Nerd Fonts for unicode icons
- git for plugins installation
For language servers, there are some pre-requesties for different languages
- no check for language servers, which are not installed by mason.nvim,
- if a server should be installed by mason.nvim:
- git for language servers, which have type
git, - nodejs for language servers, which have type
npm, - python3 & pip3 for language servers, which have type
pypi, - cargo for language servers, which have type
crates,
- git for language servers, which have type
- only
enabled = trueservers would be checked by health check.
All of built-in options and keymaps could be found here, and some user-defined auto commands & auto command groups.
And bootstraped lazy.nvim configuration could be found in lua/core/plugins.lua, other plugins should be loaded here.
Declarative key-valued settings, for customed plugin configuration and environment variables could be found here.
The default settings could be found lua/settings/default.lua. User could create vim.fn.stdpath('data')/settings.json or <proj_root>/.nvim/settings.json to have more settings custom-made. Settings in <proj_root>/.nvim has the highest priority and the default.lua has the lowest.
New language server configuration could be declared in any of settings.json, instead of changing the default.lua, which is basic configuration for language servers.
Specifications and configurations for plugins.
Utility functions for all neovim configurations.
In the planning, null-ls.nvim is the base of code formatting, but I am not sure what the dependencies are.
Planning... But a dynamic checking is required.
To be done.