111 lines
3.7 KiB
Go
111 lines
3.7 KiB
Go
// SPDX-FileCopyrightText: 2021 The Go Language Server Authors
|
|
// SPDX-License-Identifier: BSD-3-Clause
|
|
|
|
package protocol
|
|
|
|
// SelectionRangeProviderOptions selection range provider options interface.
|
|
type SelectionRangeProviderOptions interface{}
|
|
|
|
// SelectionRange represents a selection range represents a part of a selection hierarchy.
|
|
//
|
|
// A selection range may have a parent selection range that contains it.
|
|
//
|
|
// @since 3.15.0.
|
|
type SelectionRange struct {
|
|
// Range is the Range of this selection range.
|
|
Range Range `json:"range"`
|
|
|
|
// Parent is the parent selection range containing this range. Therefore `parent.range` must contain this Range.
|
|
Parent *SelectionRange `json:"parent,omitempty"`
|
|
}
|
|
|
|
// EnableSelectionRange is the whether the selection range.
|
|
type EnableSelectionRange bool
|
|
|
|
// compile time check whether the EnableSelectionRange implements a SelectionRangeProviderOptions interface.
|
|
var _ SelectionRangeProviderOptions = (*EnableSelectionRange)(nil)
|
|
|
|
// Value implements SelectionRangeProviderOptions interface.
|
|
func (v EnableSelectionRange) Value() interface{} {
|
|
return bool(v)
|
|
}
|
|
|
|
// NewEnableSelectionRange returns the new EnableSelectionRange underlying types SelectionRangeProviderOptions.
|
|
func NewEnableSelectionRange(enable bool) SelectionRangeProviderOptions {
|
|
v := EnableSelectionRange(enable)
|
|
|
|
return &v
|
|
}
|
|
|
|
// SelectionRangeOptions is the server capability of selection range.
|
|
type SelectionRangeOptions struct {
|
|
WorkDoneProgressOptions
|
|
}
|
|
|
|
// compile time check whether the EnableSelectionRange implements a SelectionRangeProviderOptions interface.
|
|
var _ SelectionRangeProviderOptions = (*EnableSelectionRange)(nil)
|
|
|
|
// Value implements SelectionRangeProviderOptions interface.
|
|
func (v *SelectionRangeOptions) Value() interface{} {
|
|
return v
|
|
}
|
|
|
|
// NewSelectionRangeOptions returns the new SelectionRangeOptions underlying types SelectionRangeProviderOptions.
|
|
func NewSelectionRangeOptions(enableWorkDoneProgress bool) SelectionRangeProviderOptions {
|
|
v := SelectionRangeOptions{
|
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
|
WorkDoneProgress: enableWorkDoneProgress,
|
|
},
|
|
}
|
|
|
|
return &v
|
|
}
|
|
|
|
// SelectionRangeRegistrationOptions is the server capability of selection range registration.
|
|
type SelectionRangeRegistrationOptions struct {
|
|
SelectionRangeOptions
|
|
TextDocumentRegistrationOptions
|
|
StaticRegistrationOptions
|
|
}
|
|
|
|
// compile time check whether the SelectionRangeRegistrationOptions implements a SelectionRangeProviderOptions interface.
|
|
var _ SelectionRangeProviderOptions = (*SelectionRangeRegistrationOptions)(nil)
|
|
|
|
// Value implements SelectionRangeProviderOptions interface.
|
|
func (v *SelectionRangeRegistrationOptions) Value() interface{} {
|
|
return v
|
|
}
|
|
|
|
// NewSelectionRangeRegistrationOptions returns the new SelectionRangeRegistrationOptions underlying types SelectionRangeProviderOptions.
|
|
func NewSelectionRangeRegistrationOptions(enableWorkDoneProgress bool, selector DocumentSelector, id string) SelectionRangeProviderOptions {
|
|
v := SelectionRangeRegistrationOptions{
|
|
SelectionRangeOptions: SelectionRangeOptions{
|
|
WorkDoneProgressOptions: WorkDoneProgressOptions{
|
|
WorkDoneProgress: enableWorkDoneProgress,
|
|
},
|
|
},
|
|
TextDocumentRegistrationOptions: TextDocumentRegistrationOptions{
|
|
DocumentSelector: selector,
|
|
},
|
|
StaticRegistrationOptions: StaticRegistrationOptions{
|
|
ID: id,
|
|
},
|
|
}
|
|
|
|
return &v
|
|
}
|
|
|
|
// SelectionRangeParams represents a parameter literal used in selection range requests.
|
|
//
|
|
// @since 3.15.0.
|
|
type SelectionRangeParams struct {
|
|
WorkDoneProgressParams
|
|
PartialResultParams
|
|
|
|
// TextDocument is the text document.
|
|
TextDocument TextDocumentIdentifier `json:"textDocument"`
|
|
|
|
// Positions is the positions inside the text document.
|
|
Positions []Position `json:"positions"`
|
|
}
|