diff --git a/modules/core/packages/appimages/helium.nix b/modules/core/packages/appimages/helium.nix index 6188be6..e11495a 100644 --- a/modules/core/packages/appimages/helium.nix +++ b/modules/core/packages/appimages/helium.nix @@ -37,3 +37,4 @@ in }; } # https://github.com/imputnet/helium-linux/releases/download/0.11.7.1/helium-0.11.7.1-x86_64.AppImage + diff --git a/modules/home/zed/extensions.nix b/modules/home/zed/extensions.nix index ba16332..755e99e 100644 --- a/modules/home/zed/extensions.nix +++ b/modules/home/zed/extensions.nix @@ -4,7 +4,7 @@ _: { "dockerfile" "git-firefly" "vue" - "astro" + # "astro" "docker-compose" "nix" "csv" diff --git a/modules/home/zed/extra-packages.nix b/modules/home/zed/extra-packages.nix index adeafec..36b1bdb 100644 --- a/modules/home/zed/extra-packages.nix +++ b/modules/home/zed/extra-packages.nix @@ -9,5 +9,7 @@ python314 ruff deputy + tailwindcss-language-server + typescript-language-server ]; } diff --git a/modules/home/zed/user-settings/languages.nix b/modules/home/zed/user-settings/languages.nix index 1edca75..bf146fd 100644 --- a/modules/home/zed/user-settings/languages.nix +++ b/modules/home/zed/user-settings/languages.nix @@ -25,6 +25,8 @@ _: { tab_size = 2; }; TypeScript = { + language_servers = ["typescript-language-server" "!vtsls"]; + colorize_brackets = true; formatter.language_server.name = "biome"; code_actions_on_format = { "source.fixAll.biome" = true; @@ -33,6 +35,7 @@ _: { tab_size = 2; }; Astro = { + language_servers = ["typescript-language-server" "!vtsls"]; formatter.language_server.name = "biome"; code_actions_on_format = { "source.fixAll.biome" = true; @@ -41,6 +44,8 @@ _: { tab_size = 2; }; "Vue.js" = { + language_servers = ["vue-language-server" "!vetur" "typescript-language-server" "!vtsls"]; + colorize_brackets = true; formatter.language_server.name = "biome"; code_actions_on_format = { "source.fixAll.biome" = true; @@ -65,6 +70,10 @@ _: { tab_size = 2; }; CSS = { + language_servers = [ + "tailwindcss-intellisense-css" + "!vscode-css-language-server" + ]; formatter.language_server.name = "biome"; code_actions_on_format = { "source.fixAll.biome" = true; diff --git a/modules/home/zed/user-settings/lsp.nix b/modules/home/zed/user-settings/lsp.nix index e0b2255..c27ffc5 100644 --- a/modules/home/zed/user-settings/lsp.nix +++ b/modules/home/zed/user-settings/lsp.nix @@ -15,6 +15,62 @@ # ]; # }; # }; + vue-language-server = { + initialization_options = { + vue.hybridMode = true; + typescript.tsdk = "./node_modules/typescript/lib"; + }; + settings = { + "vue.inlayHints.inlineHandlerLeading" = true; + "vue.inlayHints.missingProps" = true; + "vue.inlayHints.optionsWrapper" = true; + "vue.inlayHints.vBindShorthand" = true; + "vue.inlayHints.destructuredProps" = true; + + "vue.format.template.initialIndent" = true; + "vue.format.script.initialIndent" = true; + "vue.format.style.initialIndent" = true; + + "vue.editor.focusMode" = true; + "vue.editor.reactivityVisualization" = true; + "vue.editor.templateInterpolationDecorators" = true; + + "vue.hover.rich" = true; + "vue.autoInsert.bracketSpacing" = true; + }; + }; + typescript-language-server.initialization_options.preferences = { + includeInlayParameterNameHints = "all"; + includeInlayParameterNameHintsWhenArgumentMatchesName = true; + includeInlayFunctionParameterTypeHints = true; + includeInlayVariableTypeHints = true; + includeInlayVariableTypeHintsWhenTypeMatchesName = true; + includeInlayPropertyDeclarationTypeHints = true; + includeInlayFunctionLikeReturnTypeHints = true; + includeInlayEnumMemberValueHints = true; + }; + tailwindcss-language-server = { + settings = { + includeLanguages.vue = "html"; + classFunctions = ["cva" "cx" "cn"]; + }; + experimental.classRegex = [ + "class=\"([^\"]*)\"" + "class='([^']*)'" + ":class=\"([^\"]*)\"" + ":class='([^']*)'" + "\\.className\\s*[+]?=\\s*['\"]([^'\"]*)['\"]" + "\\.setAttributeNS\\(.*,\\s*['\"]class['\"],\\s*['\"]([^'\"]*)['\"]" + "\\.setAttribute\\(['\"]class['\"],\\s*['\"]([^'\"]*)['\"]" + "\\.classList\\.add\\(['\"]([^'\"]*)['\"]" + "\\.classList\\.remove\\(['\"]([^'\"]*)['\"]" + "\\.classList\\.toggle\\(['\"]([^'\"]*)['\"]" + "\\.classList\\.contains\\(['\"]([^'\"]*)['\"]" + "\\.classList\\.replace\\(\\s*['\"]([^'\"]*)['\"]" + "\\.classList\\.replace\\([^,)]+,\\s*['\"]([^'\"]*)['\"]" + "[cls|cn|className]\\s\\:\\=\\s\"([^\"]*)" + ]; + }; deputy = { binary = { path = lib.getExe pkgs.deputy;