From 5fcf0d09952c4e04bce33b279e35c87e88d18c6b Mon Sep 17 00:00:00 2001 From: Ryan Yin Date: Fri, 19 Jul 2024 16:51:59 +0800 Subject: [PATCH] refactor(home/base/tui/edistors): neovim - adjust the classification of lsp/treesitter --- home/base/tui/editors/neovim/default.nix | 8 +- .../neovim/nvim/lua/plugins/astrolsp.lua | 64 +++-- .../neovim/nvim/lua/plugins/treesitter.lua | 32 +-- home/base/tui/editors/packages.nix | 245 ++++++++++-------- 4 files changed, 186 insertions(+), 163 deletions(-) diff --git a/home/base/tui/editors/neovim/default.nix b/home/base/tui/editors/neovim/default.nix index 5e5353b2..9d261db0 100644 --- a/home/base/tui/editors/neovim/default.nix +++ b/home/base/tui/editors/neovim/default.nix @@ -30,8 +30,10 @@ in { viAlias = true; vimAlias = true; - # 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! + # Currently we use lazy.nvim as neovim's package manager, so comment this one. + # + # 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. # so that these plugins can work on NixOS. # @@ -40,6 +42,8 @@ in { plugins = with pkgs.vimPlugins; [ # search all the plugins using https://search.nixos.org/packages telescope-fzf-native-nvim + + nvim-treesitter.withAllGrammars ]; }; }; diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua index ad0fa1d8..569d3fd2 100644 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua +++ b/home/base/tui/editors/neovim/nvim/lua/plugins/astrolsp.lua @@ -3,7 +3,6 @@ -- NOTE: We highly recommend setting up the Lua Language Server (`:LspInstall lua_ls`) -- as this provides autocomplete and documentation while editing - ---@type LazySpec return { "AstroNvim/astrolsp", @@ -42,40 +41,51 @@ return { -- end }, -- enable servers that you already have installed without mason + -- https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md 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 "tailwindcss", -- tailwindcss language server "html", -- html language server "cssls", -- css language server "prismals", -- prisma language server "volar", -- vue language server - ---- Configuration Language - "marksman", -- markdown ls - "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 + + ---- Lisp Like "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` ---@diagnostic disable: missing-fields diff --git a/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua b/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua index 2538d987..518881cc 100644 --- a/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua +++ b/home/base/tui/editors/neovim/nvim/lua/plugins/treesitter.lua @@ -20,31 +20,23 @@ return { opts.ignore_install = { "gotmpl", "wing" } -- 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, { - -- neovim - "vim", - "lua", - -- operation & cloud native - "dockerfile", - "hcl", - "jsonnet", - "regex", - "terraform", - "nix", + -- please add only the tree-sitters that are not available in nixpkgs here + + "kdl", "csv", - "nickel", -- nickel language - "just", -- justfile - -- other programming language + "xml", + "vhdl", + + ---- Misc "diff", + "git_config", + "git_rebase", "gitignore", "gitcommit", - "latex", - "sql", - -- Lisp like - "fennel", - "clojure", - "commonlisp", - "scheme", + "gitattributes", + "ssh_config", }) end, } diff --git a/home/base/tui/editors/packages.nix b/home/base/tui/editors/packages.nix index e1f59866..b82e20d0 100644 --- a/home/base/tui/editors/packages.nix +++ b/home/base/tui/editors/packages.nix @@ -5,134 +5,151 @@ ''; }; - home.packages = with pkgs; [ - #-- c/c++ - cmake - cmake-language-server - gnumake - checkmake - # c/c++ compiler, required by nvim-treesitter! - gcc - # 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 + home.packages = with pkgs; ( + # -*- Data & Configuration Languages -*-# + [ + #-- nix + nil + # 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 - #-- python - nodePackages.pyright # python language server - (python311.withPackages ( - ps: - with ps; [ - ruff-lsp - black # python formatter - # debugpy + #-- nickel lang + nickel - # my commonly used python packages - jupyter - ipython - pandas - requests - pyquery - pyyaml - boto3 + #-- json like + # terraform # install via brew on macOS + terraform-ls + jsonnet + jsonnet-language-server + taplo # TOML language server / formatter / validator + nodePackages.yaml-language-server + actionlint # GitHub Actions linter - ## emacs's lsp-bridge dependenciesge - # epc - # orjson - # sexpdata - # six - # setuptools - # paramiko - # rapidfuzz - ] - )) + #-- dockerfile + hadolint # Dockerfile linter + nodePackages.dockerfile-language-server-nodejs - #-- rust - rust-analyzer - cargo # rust package manager - rustfmt + #-- markdown + marksman # language server for markdown + glow # markdown previewer + pandoc # document converter + hugo # static site generator - #-- nix - nil - # 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 + #-- sql + sqlfluff - #-- golang - go - gomodifytags - 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 + #-- protocol buffer + buf # linting and formatting + ] + ++ + #-*- General Purpose Languages -*-# + [ + #-- c/c++ + 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 - jdk17 - gradle - maven - spring-boot-cli - jdt-language-server + #-- python + nodePackages.pyright # python language server + (python311.withPackages ( + ps: + with ps; [ + ruff-lsp + black # python formatter + # debugpy - #-- lua - stylua - lua-language-server + # my commonly used python packages + jupyter + ipython + pandas + requests + pyquery + pyyaml + boto3 - #-- bash - nodePackages.bash-language-server - shellcheck - shfmt + ## emacs's lsp-bridge dependenciesge + # epc + # orjson + # sexpdata + # six + # setuptools + # paramiko + # rapidfuzz + ] + )) - #-- javascript/typescript --# - 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 + #-- rust + rust-analyzer + cargo # rust package manager + rustfmt - # -- Lisp like Languages - guile - racket-minimal - fnlfmt # fennel + #-- golang + go + gomodifytags + 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 - taplo # TOML language server / formatter / validator - nodePackages.yaml-language-server - sqlfluff # SQL linter - actionlint # GitHub Actions linter - buf # protoc plugin for linting and formatting - proselint # English prose linter + # -- java + jdk17 + gradle + maven + spring-boot-cli + jdt-language-server - #-- Misc - tree-sitter # common language parser/highlighter - nodePackages.prettier # common code formatter - marksman # language server for markdown - glow # markdown previewer - fzf - pandoc # document converter - hugo # static site generator + #-- zig + zls - #-- Optional Requirements: - gdu # disk usage analyzer, required by AstroNvim - (ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern + #-- lua + stylua + lua-language-server - #-- CloudNative - nodePackages.dockerfile-language-server-nodejs - # terraform # install via brew on macOS - terraform-ls - jsonnet - jsonnet-language-server - hadolint # Dockerfile linter + #-- bash + nodePackages.bash-language-server + shellcheck + shfmt + ] + #-*- Web Development -*-# + ++ [ + 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 - zls - #-- verilog / systemverilog - verible - gdb - ]; + #-- verilog / systemverilog + verible + + #-- Optional Requirements: + nodePackages.prettier # common code formatter + fzf + gdu # disk usage analyzer, required by AstroNvim + (ripgrep.override {withPCRE2 = true;}) # recursively searches directories for a regex pattern + ] + ); }