internal/protocol/experimental.go (25 lines of code) (raw):
package protocol
type ExperimentalServerCapabilities struct {
ReferenceCountCodeLens bool `json:"referenceCountCodeLens"`
}
type ExpClientCapabilities map[string]interface{}
func ExperimentalClientCapabilities(input interface{}) ExpClientCapabilities {
if m, ok := input.(map[string]interface{}); ok && len(m) > 0 {
return ExpClientCapabilities(m)
}
return make(ExpClientCapabilities)
}
func (cc ExpClientCapabilities) ShowReferencesCommandId() (string, bool) {
if cc == nil {
return "", false
}
cmdId, ok := cc["showReferencesCommandId"].(string)
return cmdId, ok
}
func (cc ExpClientCapabilities) TelemetryVersion() (int, bool) {
if cc == nil {
return 0, false
}
// numbers are unmarshalled as float64 from JSON
// per https://pkg.go.dev/encoding/json#Unmarshal
v, ok := cc["telemetryVersion"].(float64)
return int(v), ok
}