From 20f4d97cc4c819f35c8593fecf48d9e627c432f6 Mon Sep 17 00:00:00 2001 From: tracer Date: Sat, 27 Jun 2026 17:06:13 +0200 Subject: [PATCH] Document Neovim Vue language server design --- ...06-27-neovim-vue-language-server-design.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 docs/superpowers/specs/2026-06-27-neovim-vue-language-server-design.md diff --git a/docs/superpowers/specs/2026-06-27-neovim-vue-language-server-design.md b/docs/superpowers/specs/2026-06-27-neovim-vue-language-server-design.md new file mode 100644 index 0000000..63c99e2 --- /dev/null +++ b/docs/superpowers/specs/2026-06-27-neovim-vue-language-server-design.md @@ -0,0 +1,33 @@ +# Neovim Vue Language Server Design + +## Goal + +Add current Vue 3 language-server support without changing language-server behavior in non-Vue JavaScript and TypeScript projects. + +## Design + +- Keep `ts_ls` enabled for JavaScript and TypeScript files. +- Enable `vue_ls` for Vue single-file components. +- Use nvim-lspconfig's current `vue_ls` configuration and its built-in request forwarding to `ts_ls`. +- Let Mason install the `vue-language-server` package through the existing automatic-installation integration. +- Extend the local Mason health check so Vue's runtime requirement and executable are visible. +- Do not reproduce the tutorial's Volar Take Over Mode because Vue Language Server 3 removed it. +- Do not add Tailwind support in this change. + +## Files + +- Update `nvim/lua/tracer/plugins/lspconfig.lua` to enable `vue_ls`. +- Update `nvim/lua/mason/health.lua` to mention Vue Language Server and check `vue-language-server`. + +## Verification + +- Confirm the pre-change check fails because `vue_ls` is not enabled. +- Confirm Neovim starts headlessly without configuration errors after the change. +- Confirm `vue_ls` appears in Neovim's enabled LSP configurations. +- Confirm Mason installs `vue-language-server` and its executable is available. +- Preserve the existing `ts_ls` configuration for non-Vue projects. + +## Constraints + +- Preserve unrelated working-tree changes. +- Use the Neovim 0.12 `vim.lsp.enable()` API already used by this configuration.