mirror of
https://github.com/laravel-ls/protocol.git
synced 2026-06-16 03:54:56 +02:00
Initial commit
This commit is contained in:
commit
9061064e97
21 changed files with 1699 additions and 0 deletions
144
base.go
Normal file
144
base.go
Normal file
|
|
@ -0,0 +1,144 @@
|
|||
package protocol
|
||||
|
||||
// LSPAny can be a primitive (string, number, boolean, null), an object, or an array.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#lspAny
|
||||
//
|
||||
// @since 3.17.0
|
||||
type LSPAny = any
|
||||
|
||||
// DocumentURI This is just a string alias, typically a `file://` or other scheme URI.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#documentUri
|
||||
type DocumentURI string
|
||||
|
||||
// Position in a text document expressed as zero-based line and character offset.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#position
|
||||
type Position struct {
|
||||
// Line position in a document (zero-based).
|
||||
Line uint32 `json:"line"`
|
||||
|
||||
// Character offset on a line in a document (zero-based).
|
||||
//
|
||||
// The meaning of this offset is determined by the negotiated
|
||||
// `PositionEncodingKind`.
|
||||
Character uint32 `json:"character"`
|
||||
}
|
||||
|
||||
// PositionEncodingKind A set of predefined position encoding kinds.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#positionEncodingKind
|
||||
//
|
||||
// @since 3.17.0
|
||||
type PositionEncodingKind string
|
||||
|
||||
const (
|
||||
// Character offsets count UTF-8 code units.
|
||||
PositionEncodingKindUTF8 PositionEncodingKind = "utf-8"
|
||||
|
||||
// Character offsets count UTF-16 code units.
|
||||
// This is the default and must always be supported by servers
|
||||
PositionEncodingKindUTF16 PositionEncodingKind = "utf-16"
|
||||
|
||||
// Character offsets count UTF-32 code units.
|
||||
// Implementation note: these are the same as Unicode code points,
|
||||
// so this `PositionEncodingKind` may also be used for an
|
||||
// encoding-agnostic representation of character offsets.
|
||||
PositionEncodingKindUTF32 PositionEncodingKind = "utf-32"
|
||||
)
|
||||
|
||||
// Range A range in a text document expressed as (zero-based) start and end positions.
|
||||
// A range is comparable to a selection in an editor. Therefore, the end position is exclusive.
|
||||
// If you want to specify a range that contains a line including the line ending character(s)
|
||||
// then use an end position denoting the start of the next line.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#range
|
||||
type Range struct {
|
||||
// The range's start position.
|
||||
Start Position `json:"start"`
|
||||
|
||||
// The range's end position.
|
||||
End Position `json:"end"`
|
||||
}
|
||||
|
||||
// LanguageID - language identifier represented as a string.
|
||||
type LanguageID string
|
||||
|
||||
const (
|
||||
// LanguagePHP is the identifier for PHP documents.
|
||||
LanguagePHP LanguageID = "php"
|
||||
|
||||
// LanguageBlade is the identifier for blade documents.
|
||||
LanguageBlade LanguageID = "blade"
|
||||
)
|
||||
|
||||
// Location inside a resource, such as a line inside a text file.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#location
|
||||
type Location struct {
|
||||
// URI of the document.
|
||||
URI DocumentURI `json:"uri"`
|
||||
|
||||
// The range within the document.
|
||||
Range Range `json:"range"`
|
||||
}
|
||||
|
||||
// LocationLink represents a link between a source and a target location.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#locationLink
|
||||
//
|
||||
// @since 3.14.0
|
||||
type LocationLink struct {
|
||||
// Span of the origin of this link.
|
||||
// Used as the underlined span for mouse interaction.
|
||||
// Clients should omit this property if the origin selection range is not applicable.
|
||||
OriginSelectionRange *Range `json:"originSelectionRange,omitempty"`
|
||||
|
||||
// The target resource identifier.
|
||||
TargetURI DocumentURI `json:"targetUri"`
|
||||
|
||||
// The full target range of this link.
|
||||
// If the target for example is a symbol then target range is the range enclosing this symbol not including leading/trailing whitespace but everything else
|
||||
// like comments. This information is typically used to highlight the range in the editor.
|
||||
TargetRange Range `json:"targetRange"`
|
||||
|
||||
// The range that should be selected and revealed when this link is being followed, e.g. the name of a function.
|
||||
// Must be contained by the `targetRange`. See also `DocumentSymbol#range`.
|
||||
TargetSelectionRange Range `json:"targetSelectionRange"`
|
||||
}
|
||||
|
||||
// ChangeAnnotation represents additional information that describes a change.
|
||||
//
|
||||
// See https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#changeAnnotation
|
||||
//
|
||||
// @since 3.16.0
|
||||
type ChangeAnnotation struct {
|
||||
// A human-readable string describing the actual change. The string is
|
||||
// rendered prominent in the user interface.
|
||||
Label string `json:"label"`
|
||||
|
||||
// A flag which indicates that user confirmation is needed
|
||||
// before applying the change.
|
||||
NeedsConfirmation *bool `json:"needsConfirmation,omitempty"`
|
||||
|
||||
// A human-readable string which is rendered less prominent in the
|
||||
// user interface.
|
||||
Description string `json:"description,omitempty"`
|
||||
}
|
||||
|
||||
// MarkupKind describes the content type that a client supports in various
|
||||
// result literals like `Hover`, `ParameterInfo` or `CompletionItem`.
|
||||
//
|
||||
// Please note that `MarkupKinds` must not start with a `$`. This kinds
|
||||
// are reserved for internal usage.
|
||||
//
|
||||
// @see https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#markupContent
|
||||
type MarkupKind string
|
||||
|
||||
const (
|
||||
// Plain text is supported as a content format
|
||||
MarkupKindPlainText MarkupKind = "plaintext"
|
||||
// Markdown is supported as a content format
|
||||
MarkupKindMarkdown MarkupKind = "markdown"
|
||||
)
|
||||
Loading…
Add table
Add a link
Reference in a new issue