This configuration is compatible with neovim 0.8+ version.
git clone --depth=1 https://github.com/Avimitin/nvim.git ~/.config/nvim
Finally, input nvim
to open the editor, and all plugins will be downloaded automatically.
nvim
To use this in your home-manager, you can use the xdg.configFile attribute:
{ pkgs }:
{
xdg.configFile = {
neovim = {
target = "nvim";
source = pkgs.fetchFromGitHub {
repo = "nvim";
owner = "Avimitin";
rev = "...";
hash = "...";
}
};
};
}
lua
: the configuration core
key-mapping.lua
: my modification to the built-in key mappingspack.lua
: script to download lazy.nvim plugin managercore/
: my modification to the built-in options and auto commandscompletion/
: plugins and configuration for LSP and vim command completiongit/
: plugin and configuration for using git in Neovimlang/
: plugins and configuration for using LSP server and get diagnostic in Neovimlibs/
: functions that I don't want to write twicenote/
: markdown and neorg support for neovimtools/
: miscellaneous plugins that can enhance editing experiencetreesitter/
: plugins for text object highlight and editingui/
: plugins for decorating the neovimafter/ftplugin/<lang>.lua
: configured LSP settings for each different language
ftdetect
: list of script to help neovim identify filetype for some file
indent
: list of script to help neovim properly set indentation
syntax
: additional syntax detection for some file type
vsnip
: my snippets
Ignore this if you are not a nix user
To make treesitter compatible with the stable neovim and my current configuration, and to make the share library compilation process reproducible and clean,
this configuration provides a custom treesitter parser nix builder to manage the treesitter parser plugin.
The flake output an overlay providing a nix function generate-nvim-treesitter-parsers
.
To use it, you can use home-manager to help you put this package into neovim's data directory.
Below is an example named laptop.nix
, which show an example of how to link the lua script in $XDG_DATA_HOME
to let neovim automatically load those parsers:
{ pkgs, ... }:
{
xdg.dataFile.generate-nvim-treesitter-parsers = let
tsLoader = pkgs.generate-nvim-treesitter-parsers [
{ name = "bash"; hash = "sha256-b1r/T+Y4Kmui/pHsncozP8OO6rMMHJj+Xaa2Qzwo/cI="; }
{ name = "c"; hash = "sha256-sB8fNfusjC9yTlrizb2mufDzQPvBajTJC+ewF9awBqA="; }
{ name = "cpp"; hash = "sha256-27QjVy8quWyGhFCv/6GATG1xjGnkB9LTcvlPMuR3NB0="; }
];
in
{
source = "${tsLoader}${tsLoader.passthru.luaPath}";
# Target will be substitute into ~/.local/share/nvim/site/plugin/treesitter-parsers.lua, and neovim will automatically load script in this path.
target = "nvim/site/plugin/treesitter-parsers.lua";
};
}
The array expect the argument in this form: [{ name: xxx; hash: xxx; }, ...]
,
where:
See my home configuration for detail examples.
Also you might found update the parser hash one by one really annoying, so the generate-nvim-treesitter-parsers
also contains a update script.
To use it, first you will need to place the script file somewhere:
xdg.dataFile =
let
tsLoader = pkgs.generate-nvim-treesitter-parsers [
{ name = "bash"; hash = "sha256-b1r/T+Y4Kmui/pHsncozP8OO6rMMHJj+Xaa2Qzwo/cI="; }
{ name = "c"; hash = "sha256-sB8fNfusjC9yTlrizb2mufDzQPvBajTJC+ewF9awBqA="; }
{ name = "cpp"; hash = "sha256-27QjVy8quWyGhFCv/6GATG1xjGnkB9LTcvlPMuR3NB0="; }
{ name = "yaml"; hash = "sha256-RrYFKrhqFLsjQG+7XFbcQ2eYy2eyig5/r+MYO8DId4g="; }
];
in
{
nvim-treesitter-parsers = {
source = "${tsLoader}${tsLoader.passthru.luaPath}";
target = "nvim/site/plugin/treesitter-parsers.lua";
};
nvim-treesitter-updater = {
source = "${tsLoader.passthru.updateScript}/bin/treesitter-hash-batch-updater";
target = "nvim/assets/treesitter-updater.bash"; # or any other path you like
};
};
This script accept single argument, which should point to the hash definition file.
In our example above, it is the 'laptop.nix' file, so run the bash script ~/.local/share/nvim/assets/treesitter-updater.bash laptop.nix
,
and wait for it finish its job.
Easy in-file jump |
---|
Markdown Preview |
---|
Table |
---|
LSP Progress |
---|
Symbol Tree |
---|
Code Completion |
---|
Command Completion |
---|
Errorlens Like diagnostic |
---|
Signature Help |
---|
Code Actions |
---|
Diagnostic |
---|
Code navigate |
---|
Project grep |
---|
Symbol search |
---|
neotree |
---|
Find file |
---|
Kanagawa Theme |
---|
This configuration since commit 912416ae9c4b55501b23a91d774b567ba8697dd1
are
licenced under the Apache 2.0 license.
另附:禁止在 CSDN,bilibili 等国内平台使用该配置文件进行任何活动。 你只保有自己修改部分的权利。