Skip to content

feat(lsp): add Vue Language Server support #11

Description

@amondnet

Add Vue Language Server support to packages/lsp with Full Hybrid Mode architecture matching the Python reference implementation (ref/serena/src/solidlsp/language_servers/vue_language_server.py).

Architecture

  • VueServer - Main Vue language server using @vue/language-server
    • hybridMode: true enabled
    • Handles .vue file operations
  • Companion TypeScript Server - typescript-language-server + @vue/typescript-plugin
    • Provides cross-file TypeScript intelligence
    • Vue plugin enables .vue file awareness

Dependencies (npm install to ~/.cache/dora/vue-lsp/)

  • @vue/language-server@2.2.0
  • @vue/typescript-plugin@2.2.0
  • typescript@5.7.2
  • typescript-language-server@4.3.3

Tasks

  • T001 [P] Add VUE_RUNTIME_DEPS configuration constant
  • T002 [P] Add getVueResourcesDir() and getVueExpectedVersion() helpers
  • T003 Add setupVueDependencies() function with npm install (depends on T001, T002)
  • T004 Add VueServer definition with dual-server spawn (depends on T003)
  • T005 [P] Export VueServer from index.ts (depends on T004)
  • T006 [P] Add VueServer to LSP_SERVERS array (depends on T004)
  • T007 Add unit tests for VueServer (depends on T006)
  • T008 [P] Create vue-project test fixture
  • T009 Add integration tests for VueServer (depends on T007, T008)

Dependencies & Execution Order

Parallel Group 1 (independent, no dependencies):

  • T001: VUE_RUNTIME_DEPS constant
  • T002: Helper functions

Sequential:

  • T003: setupVueDependencies (needs T001, T002)
  • T004: VueServer definition (needs T003)

Parallel Group 2 (depends on T004):

  • T005: Export from index.ts
  • T006: Add to LSP_SERVERS

Testing:

  • T007: Unit tests (needs T006)
  • T008: Test fixture (parallel)
  • T009: Integration tests (needs T007, T008)

Files to Modify/Create

  • packages/lsp/src/server.ts - Add VueServer (~300 lines)
  • packages/lsp/src/index.ts - Export VueServer
  • packages/lsp/test/unit/server.test.ts - Add VueServer unit tests
  • packages/lsp/test/integration/vue.integration.test.ts - Create
  • packages/lsp/test/fixtures/vue-project/ - Create test fixture

Metadata

Metadata

Assignees

No one assigned

    Labels

    lspp2Priority 2 - Mediumtype:featureNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions