3 LSP
Fangrui Song edited this page 2019-07-20 19:17:27 -07:00

MaskRay's random complaints about Language Server Protocol

Completion

  • VSCode sorts sortText case insensitively.
  • VSCode only allows length-one strings in CompletionRegistrationOptions.triggerCharacters https://github.com/Microsoft/language-server-protocol/issues/138 (closed) Server developers have to work around that. CompletionTriggerKind::TriggerCharacter should extend as well.
  • The order of textEdit additionTextEdits is not specified.
  • Initially ParameterInformation.label was a string (this made it difficult to highlight the label), then changed to string | [number, number] (https://github.com/microsoft/language-server-protocol/issues/640). Specifying [start,end) ([number, number]) allows to highlight the label, but then it will not be able to supply a detailed string.

Formatting

  • firstTriggerCharacter and moreTriggerCharacter should be unified

Miscellaneous

  • interface Position uses UTF-16 counting for character. https://github.com/Microsoft/language-server-protocol/issues/376
  • interface Command (workspace/executeCommand) is VSCode centric.
  • textDocument/implementation isn't clear. textDocument/definition isn't clear when it comes to the difference of declaration/definition.
  • namespace DocumentHighlightKind is not a bitmask. Read and Write cannot coexist.
  • Why can't we get more namespace SymbolKind constants sooner? https://github.com/Microsoft/language-server-protocol/issues/344
  • textDocument/signatureHelp: the position of ParameterInformation::label is unspecified: it is difficult to highlight ParameterInformation::label in SignatureInformation::label

Stuff that needs attention

textDocument/calls https://github.com/Microsoft/vscode-languageserver-node/pull/420/files

$ccls/call