refactor(home/base/tui/edistors): neovim - adjust the classification of lsp/treesitter

This commit is contained in:
Ryan Yin
2024-07-19 16:51:59 +08:00
parent 66949f6b8f
commit 5fcf0d0995
4 changed files with 186 additions and 163 deletions

View File

@@ -30,8 +30,10 @@ in {
viAlias = true; viAlias = true;
vimAlias = true; vimAlias = true;
# currently we use lazy.nvim as neovim's package manager, so comment this one. # Currently we use lazy.nvim as neovim's package manager, so comment this one.
# Install packages that will compile locally or download FHS binaries via Nix! #
# NOTE: These plugins will not be used by astronvim by default!
# We should install packages that will compile locally or download FHS binaries via Nix!
# and use lazy.nvim's `dir` option to specify the package directory in nix store. # and use lazy.nvim's `dir` option to specify the package directory in nix store.
# so that these plugins can work on NixOS. # so that these plugins can work on NixOS.
# #
@@ -40,6 +42,8 @@ in {
plugins = with pkgs.vimPlugins; [ plugins = with pkgs.vimPlugins; [
# search all the plugins using https://search.nixos.org/packages # search all the plugins using https://search.nixos.org/packages
telescope-fzf-native-nvim telescope-fzf-native-nvim
nvim-treesitter.withAllGrammars
]; ];
}; };
}; };

View File

@@ -3,7 +3,6 @@
-- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) -- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`)
-- as this provides autocomplete and documentation while editing -- as this provides autocomplete and documentation while editing
---@type LazySpec ---@type LazySpec
return { return {
"AstroNvim/astrolsp", "AstroNvim/astrolsp",
@@ -42,40 +41,51 @@ return {
-- end -- end
}, },
-- enable servers that you already have installed without mason -- enable servers that you already have installed without mason
-- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md
servers = { servers = {
---- Frontend & NodeJS ---- Data & Configuration Languages
"jsonls", -- json language server
"jsonnet_ls", -- jsonnet language server
"yamlls", -- yaml language server
"taplo", -- toml language server
"dagger", -- cuelsp - cue language server
"terraformls", -- terraform hcl
"marksman", -- markdown ls
"nickel_ls", -- nickel language server
"nil_ls", -- nix language server
"bufls", -- protocol buffer language server
"dockerls", -- dockerfile
"cmake", -- cmake language server
"sqls", -- sql language server
---- General Purpose Languages
"clangd", -- c/c++
"gopls", -- go
"jdtls", -- java language server, provides only basic features
"rust_analyzer", -- rust
"pyright", -- python
"ruff_lsp", -- extremely fast Python linter and code transformation
-- "julials", -- julia language server
-- "zls", -- zig language server
"lua_ls", -- lua
"bashls", -- bash
"nushell", -- nushell language server
---- Web Development
"tsserver", -- typescript/javascript language server "tsserver", -- typescript/javascript language server
"tailwindcss", -- tailwindcss language server "tailwindcss", -- tailwindcss language server
"html", -- html language server "html", -- html language server
"cssls", -- css language server "cssls", -- css language server
"prismals", -- prisma language server "prismals", -- prisma language server
"volar", -- vue language server "volar", -- vue language server
---- Configuration Language
"marksman", -- markdown ls ---- Lisp Like
"jsonls", -- json language server
"yamlls", -- yaml language server
"taplo", -- toml language server
---- Backend
"lua_ls", -- lua
"gopls", -- go
"rust_analyzer", -- rust
"pyright", -- python
"ruff_lsp", -- extremely fast Python linter and code transformation
"jdtls", -- java
"nil_ls", -- nix language server
"bufls", -- protocol buffer language server
"zls", -- zig language server
---- HDL
"verible", -- verilog language server
---- Operation & Cloud Nativautoindente
"bashls", -- bash
"cmake", -- cmake language server
"clangd", -- c/c++
"dockerls", -- dockerfile
"jsonnet_ls", -- jsonnet language server
"terraformls", -- terraform hcl
"nushell", -- nushell language server
"scheme_langserver", -- scheme language server "scheme_langserver", -- scheme language server
"elixirls", -- elixir language server
-- "clojure_lsp", -- clojure language server"
---- Circuit Design
"verible", -- verilog language server
}, },
-- customize language server configuration options passed to `lspconfig` -- customize language server configuration options passed to `lspconfig`
---@diagnostic disable: missing-fields ---@diagnostic disable: missing-fields

View File

@@ -20,31 +20,23 @@ return {
opts.ignore_install = { "gotmpl", "wing" } opts.ignore_install = { "gotmpl", "wing" }
-- add more things to the ensure_installed table protecting against community packs modifying it -- add more things to the ensure_installed table protecting against community packs modifying it
-- https://github.com/nvim-treesitter/nvim-treesitter/tree/master
opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, { opts.ensure_installed = require("astrocore").list_insert_unique(opts.ensure_installed, {
-- neovim -- please add only the tree-sitters that are not available in nixpkgs here
"vim",
"lua", "kdl",
-- operation & cloud native
"dockerfile",
"hcl",
"jsonnet",
"regex",
"terraform",
"nix",
"csv", "csv",
"nickel", -- nickel language "xml",
"just", -- justfile "vhdl",
-- other programming language
---- Misc
"diff", "diff",
"git_config",
"git_rebase",
"gitignore", "gitignore",
"gitcommit", "gitcommit",
"latex", "gitattributes",
"sql", "ssh_config",
-- Lisp like
"fennel",
"clojure",
"commonlisp",
"scheme",
}) })
end, end,
} }

View File

@@ -5,134 +5,151 @@
''; '';
}; };
home.packages = with pkgs; [ home.packages = with pkgs; (
#-- c/c++ # -*- Data & Configuration Languages -*-#
cmake [
cmake-language-server #-- nix
gnumake nil
checkmake # rnix-lsp
# c/c++ compiler, required by nvim-treesitter! # nixd
gcc statix # Lints and suggestions for the nix programming language
# c/c++ tools with clang-tools, the unwrapped version won't deadnix # Find and remove unused code in .nix source files
# add alias like `cc` and `c++`, so that it won't conflict with gcc alejandra # Nix Code Formatter
# llvmPackages.clang-unwrapped
clang-tools
lldb
#-- python #-- nickel lang
nodePackages.pyright # python language server nickel
(python311.withPackages (
ps:
with ps; [
ruff-lsp
black # python formatter
# debugpy
# my commonly used python packages #-- json like
jupyter # terraform # install via brew on macOS
ipython terraform-ls
pandas jsonnet
requests jsonnet-language-server
pyquery taplo # TOML language server / formatter / validator
pyyaml nodePackages.yaml-language-server
boto3 actionlint # GitHub Actions linter
## emacs's lsp-bridge dependenciesge #-- dockerfile
# epc hadolint # Dockerfile linter
# orjson nodePackages.dockerfile-language-server-nodejs
# sexpdata
# six
# setuptools
# paramiko
# rapidfuzz
]
))
#-- rust #-- markdown
rust-analyzer marksman # language server for markdown
cargo # rust package manager glow # markdown previewer
rustfmt pandoc # document converter
hugo # static site generator
#-- nix #-- sql
nil sqlfluff
# rnix-lsp
# nixd
statix # Lints and suggestions for the nix programming language
deadnix # Find and remove unused code in .nix source files
alejandra # Nix Code Formatter
#-- golang #-- protocol buffer
go buf # linting and formatting
gomodifytags ]
iferr # generate error handling code for go ++
impl # generate function implementation for go #-*- General Purpose Languages -*-#
gotools # contains tools like: godoc, goimports, etc. [
gopls # go language server #-- c/c++
delve # go debugger cmake
cmake-language-server
gnumake
checkmake
# c/c++ compiler, required by nvim-treesitter!
gcc
gdb
# c/c++ tools with clang-tools, the unwrapped version won't
# add alias like `cc` and `c++`, so that it won't conflict with gcc
# llvmPackages.clang-unwrapped
clang-tools
lldb
# -- java #-- python
jdk17 nodePackages.pyright # python language server
gradle (python311.withPackages (
maven ps:
spring-boot-cli with ps; [
jdt-language-server ruff-lsp
black # python formatter
# debugpy
#-- lua # my commonly used python packages
stylua jupyter
lua-language-server ipython
pandas
requests
pyquery
pyyaml
boto3
#-- bash ## emacs's lsp-bridge dependenciesge
nodePackages.bash-language-server # epc
shellcheck # orjson
shfmt # sexpdata
# six
# setuptools
# paramiko
# rapidfuzz
]
))
#-- javascript/typescript --# #-- rust
nodePackages.nodejs rust-analyzer
nodePackages.typescript cargo # rust package manager
nodePackages.typescript-language-server rustfmt
# HTML/CSS/JSON/ESLint language servers extracted from vscode
nodePackages.vscode-langservers-extracted
nodePackages."@tailwindcss/language-server"
emmet-ls
# -- Lisp like Languages #-- golang
guile go
racket-minimal gomodifytags
fnlfmt # fennel iferr # generate error handling code for go
impl # generate function implementation for go
gotools # contains tools like: godoc, goimports, etc.
gopls # go language server
delve # go debugger
#-- Others # -- java
taplo # TOML language server / formatter / validator jdk17
nodePackages.yaml-language-server gradle
sqlfluff # SQL linter maven
actionlint # GitHub Actions linter spring-boot-cli
buf # protoc plugin for linting and formatting jdt-language-server
proselint # English prose linter
#-- Misc #-- zig
tree-sitter # common language parser/highlighter zls
nodePackages.prettier # common code formatter
marksman # language server for markdown
glow # markdown previewer
fzf
pandoc # document converter
hugo # static site generator
#-- Optional Requirements: #-- lua
gdu # disk usage analyzer, required by AstroNvim stylua
(ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern lua-language-server
#-- CloudNative #-- bash
nodePackages.dockerfile-language-server-nodejs nodePackages.bash-language-server
# terraform # install via brew on macOS shellcheck
terraform-ls shfmt
jsonnet ]
jsonnet-language-server #-*- Web Development -*-#
hadolint # Dockerfile linter ++ [
nodePackages.nodejs
nodePackages.typescript
nodePackages.typescript-language-server
# HTML/CSS/JSON/ESLint language servers extracted from vscode
nodePackages.vscode-langservers-extracted
nodePackages."@tailwindcss/language-server"
emmet-ls
]
# -*- Lisp like Languages -*-#
++ [
guile
racket-minimal
fnlfmt # fennel
]
++ [
proselint # English prose linter
#-- zig #-- verilog / systemverilog
zls verible
#-- verilog / systemverilog
verible #-- Optional Requirements:
gdb nodePackages.prettier # common code formatter
]; fzf
gdu # disk usage analyzer, required by AstroNvim
(ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern
]
);
} }