class LSProtocol::CompletionItemApplyKinds

Overview

Specifies how fields from a completion item should be combined with those from completionList.itemDefaults.

If unspecified, all fields will be treated as "replace".

If a field's value is "replace", the value from a completion item (if provided and not null) will always be used instead of the value from completionItem.itemDefaults.

If a field's value is "merge", the values will be merged using the rules defined against each field below.

Servers are only allowed to return applyKind if the client signals support for this via the completionList.applyKindSupport capability.

@since 3.18.0

Included Modules

Defined in:

lsprotocol/types.cr

Constructors

Instance Method Summary

Constructor Detail

def self.new(pull : JSON::PullParser) #

[View source]
def self.new(commit_characters : ApplyKind | Nil = nil, data : ApplyKind | Nil = nil) #

[View source]

Instance Method Detail

def commit_characters : ApplyKind | Nil #

[View source]
def data : ApplyKind | Nil #

Specifies whether the #data field on a completion will replace or be merged with data from completionList.itemDefaults.data.

If "replace", the data from the completion item will be used if provided (and not null), otherwise completionList.itemDefaults.data will be used. An empty object can be used if a completion item does not have any data but also should not use the value from completionList.itemDefaults.data.

If "merge", a shallow merge will be performed between completionList.itemDefaults.data and the completion's own data using the following rules:

  • If a completion's #data field is not provided (or null), the entire #data field from completionList.itemDefaults.data will be used as-is.
  • If a completion's #data field is provided, each field will overwrite the field of the same name in completionList.itemDefaults.data but no merging of nested fields within that value will occur.

@since 3.18.0


[View source]