Skip to content

Monaco wrapper missing providers for newly added LSP features #2073

@STRd6

Description

@STRd6

The @danielx/civet-monaco wrapper currently registers four Monaco providers — semantic tokens, hover, definition, and completion. PR #2069 adds eight new LSP handlers on the server side (signatureHelp, prepareRename, documentHighlight, typeDefinition, implementation, foldingRange, selectionRange, linkedEditingRange), but the Monaco wrapper has no corresponding register* adapters, so none of those features surface in Monaco-hosted editors that consume this wrapper.

VS Code is unaffected: vscode-languageclient/node auto-negotiates standard LSP capabilities from serverCapabilities and routes requests transparently, so the VS Code extension needs no per-feature wiring. Monaco's monaco.languages.* providers, on the other hand, must be registered explicitly.

Work to do

Add registerCivet*Provider functions (and Civet*Client interfaces) in lsp/monaco/source/monaco.civet mirroring the existing hover/definition pattern:

  • registerCivetSignatureHelpProvidermonaco.languages.registerSignatureHelpProvider
  • registerCivetDocumentHighlightProviderregisterDocumentHighlightProvider
  • registerCivetTypeDefinitionProviderregisterTypeDefinitionProvider
  • registerCivetImplementationProviderregisterImplementationProvider
  • registerCivetFoldingRangeProviderregisterFoldingRangeProvider
  • registerCivetSelectionRangeProviderregisterSelectionRangeProvider
  • registerCivetLinkedEditingRangeProviderregisterLinkedEditingRangeProvider
  • registerCivetRenameProviderregisterRenameProvider (covers both provideRenameEdits from the existing onRenameRequest handler and resolveRenameLocation from the new onPrepareRename; the prepareRename half can't be exposed alone — Monaco requires provideRenameEdits on the same provider)

registerCivetLspProviders should be extended to register the new providers, with a correspondingly extended CivetLspProviderClient intersection. Each new adapter needs unit tests in lsp/monaco/test/monaco.civet to keep the 100% coverage gate.

Why a separate issue

The Monaco additions roughly double the wrapper's surface area, and review for the adapter pattern (type conversions, error handling, dispose semantics) is independent of the server-side delegation work in #2069. Splitting keeps each PR focused.

Context: this was raised by @edemaine on #2069.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions