Skip to content

bug: wrong ClientCapabilities in LSP initialization #114

@Hoblovski

Description

@Hoblovski

The problem

In the current implementation, the client capabilities for lsp initialization is defined as

func initLSPClient() {
	cs := map[string]interface{}{
		"documentSymbol": map[string]interface{}{
			"hierarchicalDocumentSymbolSupport": true,
		},
	}
	initParams := initializeParams{ Capabilities: cs,

But, the specification says otherwise

interface InitializeParams extends WorkDoneProgressParams {
	capabilities: ClientCapabilities; }

interface ClientCapabilities {
	textDocument?: TextDocumentClientCapabilities; }

export interface TextDocumentClientCapabilities {
	documentSymbol?: DocumentSymbolClientCapabilities; }


export interface DocumentSymbolClientCapabilities {
	hierarchicalDocumentSymbolSupport?: boolean; }

We need something like

        cs := map[string]interface{}{
--              "documentSymbol": map[string]interface{}{
--                      "hierarchicalDocumentSymbolSupport": true,
++              "textDocument": map[string]interface{}{
++                      "documentSymbol": map[string]interface{}{
++                              "hierarchicalDocumentSymbolSupport": true,
++                      },
                },

Complications

Subsequent processing in abcoder DOES NOT ASSUME hierarchical symbols.
A simple fix as above won't work.

Metadata

Metadata

Assignees

Labels

C-bugThis is a bug-report. Bug-fix PRs use `C-enhancement` instead.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions