Skip to content

Commit c36cf56

Browse files
committed
Improved support for LSP 1.17/clangd 11.0
1 parent e807d55 commit c36cf56

File tree

1 file changed

+36
-10
lines changed

1 file changed

+36
-10
lines changed

Diff for: lsp/service.go

+36-10
Original file line numberDiff line numberDiff line change
@@ -540,16 +540,42 @@ var completionItemKindName = map[CompletionItemKind]string{
540540
}
541541

542542
type CompletionItem struct {
543-
Label string `json:"label"`
544-
Kind CompletionItemKind `json:"kind,omitempty"`
545-
Detail string `json:"detail,omitempty"`
546-
Documentation string `json:"documentation,omitempty"`
547-
SortText string `json:"sortText,omitempty"`
548-
FilterText string `json:"filterText,omitempty"`
549-
InsertText string `json:"insertText,omitempty"`
550-
InsertTextFormat InsertTextFormat `json:"insertTextFormat,omitempty"`
551-
TextEdit *TextEdit `json:"textEdit,omitempty"`
552-
Data interface{} `json:"data,omitempty"`
543+
Label string `json:"label"`
544+
Kind CompletionItemKind `json:"kind,omitempty"`
545+
Detail string `json:"detail,omitempty"`
546+
Documentation *StringOrMarkupContent `json:"documentation,omitempty"`
547+
SortText string `json:"sortText,omitempty"`
548+
FilterText string `json:"filterText,omitempty"`
549+
InsertText string `json:"insertText,omitempty"`
550+
InsertTextFormat InsertTextFormat `json:"insertTextFormat,omitempty"`
551+
TextEdit *TextEdit `json:"textEdit,omitempty"`
552+
Data interface{} `json:"data,omitempty"`
553+
}
554+
555+
type StringOrMarkupContent struct {
556+
String *string
557+
MarkupContent *MarkupContent
558+
}
559+
560+
// MarshalJSON implements json.Marshaler.
561+
func (v *StringOrMarkupContent) MarshalJSON() ([]byte, error) {
562+
if v.String != nil {
563+
return json.Marshal(v.String)
564+
}
565+
return json.Marshal(v.MarkupContent)
566+
}
567+
568+
// UnmarshalJSON implements json.Unmarshaler.
569+
func (v *StringOrMarkupContent) UnmarshalJSON(data []byte) error {
570+
var s string
571+
if err := json.Unmarshal(data, &s); err == nil {
572+
v.String = &s
573+
v.MarkupContent = nil
574+
return nil
575+
}
576+
v.String = nil
577+
err := json.Unmarshal(data, &v.MarkupContent)
578+
return err
553579
}
554580

555581
type CompletionList struct {

0 commit comments

Comments
 (0)