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.