Skip to content

Depend on the Expressif syntax extension for language registration and lexical highlighting #117

Description

@Seddryck

Context

The VS Code extension in this repository currently contributes the expressif language id and .expr / .expressif file associations itself, while the main Seddryck/Expressif repository already produces a dedicated syntax-only VS Code extension containing the same language registration plus the generated TextMate grammar.

The desired user experience has two tiers:

  • a minimal syntax-only installation with immediate lexical highlighting and no language server footprint
  • a full LanguageServer installation with semantic tokens, completion, diagnostics, hover, execution commands, etc.

To avoid duplicate ownership of language registration and grammar assets, the full LanguageServer extension should build on the syntax-only extension.

Blocked by

The syntax extension must have a stable Marketplace identity before this dependency can be declared reliably.

Proposal

Declare the syntax-only extension as a VS Code extension dependency:

"extensionDependencies": [
  "seddryck.expressif-syntax-highlighting"
]

Then remove duplicate lexical-language ownership from this extension.

Required changes

  • Add seddryck.expressif-syntax-highlighting to extensionDependencies in vscode-extension/package.json.
  • Remove the duplicated contributes.languages entry from the LanguageServer extension once the dependency is in place.
  • Do not bundle or download a separate TextMate grammar in this repository.
  • Do not contribute a second grammar for source.expressif.
  • Continue activating on onLanguage:expressif.
  • Keep all LanguageServer-specific contributions here, including semantic tokens, completion, hover, diagnostics, signature help and execution commands.
  • Ensure semantic highlighting continues to refine/override the lexical TextMate highlighting supplied by the syntax extension.
  • Update the extension README to explain that installing the LanguageServer extension automatically installs the lightweight Expressif syntax extension.
  • Make clear that users who only want syntax highlighting can install seddryck.expressif-syntax-highlighting alone.

Resulting architecture

Expressif Syntax Highlighting
├── language id: expressif
├── .expr / .expressif
├── language configuration
└── TextMate grammar (source.expressif)
          ↑
          │ extensionDependencies
          │
Expressif Language Support
├── bundled language server
├── semantic tokens
├── completion / hover / diagnostics / signature help
└── run-expression commands

This preserves immediate syntax coloring from the TextMate grammar while allowing semantic tokens from the LanguageServer to refine the highlighting when the server becomes available.

Acceptance criteria

  • Installing the LanguageServer VSIX/Marketplace extension automatically installs the syntax-only extension.
  • The LanguageServer extension no longer owns duplicate expressif language registration or TextMate grammar assets.
  • .expr and .expressif files receive lexical highlighting immediately from the syntax extension.
  • Semantic token highlighting from the LanguageServer still works on top of the TextMate highlighting.
  • The LanguageServer can still be developed/tested locally with the syntax extension dependency installed.
  • Users can install only the syntax extension when they want the smallest possible VS Code footprint.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    new-featureRequest for a new feature in the tool

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions