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.json
for global settings<project>/.nvim/settings.json
for 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 = true
servers 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.