lsp

package
v0.35.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 9, 2025 License: MIT Imports: 18 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func FindScriptAtPosition

func FindScriptAtPosition(content string, pos protocol.Position) (scriptContent string, startLine int, endLine int, found bool)

FindScriptAtPosition finds the script content and boundaries for the cursor position

func IsInFrontmatter

func IsInFrontmatter(pos protocol.Position, content string) bool

IsInFrontmatter checks if position is within frontmatter region

func IsInScript

func IsInScript(pos protocol.Position, content string) bool

IsInScript checks if position is within a <script> tag

Types

type ComponentInfo

type ComponentInfo struct {
	FilePath string
	Props    []PropInfo
}

func ParseComponentProps

func ParseComponentProps(filePath string, content string) (*ComponentInfo, error)

type DocumentState

type DocumentState struct {
	URI     protocol.DocumentURI
	Content string
	Version int32
}

type FieldInfo

type FieldInfo struct {
	Name string
	Type string
}

type GoplsProxy

type GoplsProxy struct {
	// contains filtered or unexported fields
}

GoplsProxy wraps gopls subprocess

func NewGoplsProxy

func NewGoplsProxy(rootDir string) (*GoplsProxy, error)

NewGoplsProxy spawns gopls and initializes it

func (*GoplsProxy) Close

func (gp *GoplsProxy) Close() error

func (*GoplsProxy) Completion

func (gp *GoplsProxy) Completion(ctx context.Context, goPath string, line, char int) (*protocol.CompletionList, error)

Completion requests completion from gopls

func (*GoplsProxy) CreateVirtualGoFile

func (gp *GoplsProxy) CreateVirtualGoFile(uri string, frontmatter string) (string, error)

CreateVirtualGoFile converts frontmatter to valid Go file

func (*GoplsProxy) CreateVirtualGoFileFromScript

func (gp *GoplsProxy) CreateVirtualGoFileFromScript(uri string, scriptContent string) (string, error)

CreateVirtualGoFileFromScript converts script content to valid Go file

func (*GoplsProxy) Hover

func (gp *GoplsProxy) Hover(ctx context.Context, goPath string, line, char int) (*protocol.Hover, error)

Hover requests hover info from gopls

type PositionMapper

type PositionMapper struct {
	// contains filtered or unexported fields
}

PositionMapper maps between .gxc and virtual .go positions

func NewPositionMapper

func NewPositionMapper(content string) *PositionMapper

NewPositionMapper analyzes gxc content

func (*PositionMapper) GoToGxc

func (pm *PositionMapper) GoToGxc(line, char int) (int, int)

GoToGxc converts virtual .go position back to .gxc position

func (*PositionMapper) GxcToGo

func (pm *PositionMapper) GxcToGo(line, char int) (int, int)

GxcToGo converts .gxc position to virtual .go position

func (*PositionMapper) TransformCompletionItem

func (pm *PositionMapper) TransformCompletionItem(item protocol.CompletionItem) protocol.CompletionItem

TransformCompletionItem transforms all position-related fields in a CompletionItem

func (*PositionMapper) TransformPosition

func (pm *PositionMapper) TransformPosition(pos protocol.Position) protocol.Position

TransformPosition transforms a protocol.Position from .go to .gxc

func (*PositionMapper) TransformRange

func (pm *PositionMapper) TransformRange(r protocol.Range) protocol.Range

TransformRange transforms a protocol.Range from .go to .gxc

func (*PositionMapper) TransformTextEdit

func (pm *PositionMapper) TransformTextEdit(edit protocol.TextEdit) protocol.TextEdit

TransformTextEdit transforms a protocol.TextEdit from .go to .gxc

type ProjectContext

type ProjectContext struct {
	ModulePath  string
	Structs     map[string]*StructInfo // fully qualified name -> struct
	ImportPaths []string
	RootDir     string
}

ProjectContext holds project-wide type information

func NewProjectContext

func NewProjectContext(rootDir string) (*ProjectContext, error)

NewProjectContext scans project and extracts type info

func (*ProjectContext) GetImportPaths

func (pc *ProjectContext) GetImportPaths() []string

func (*ProjectContext) GetStruct

func (pc *ProjectContext) GetStruct(typeName string) (*StructInfo, bool)

type PropInfo

type PropInfo struct {
	Name          string
	Type          string
	DefaultValue  string
	Documentation string
	Position      protocol.Range
}

func ExtractPropsFromFrontmatter

func ExtractPropsFromFrontmatter(frontmatter string) []PropInfo

type ScriptPositionMapper

type ScriptPositionMapper struct {
	// contains filtered or unexported fields
}

ScriptPositionMapper maps between .gxc script positions and virtual .go positions

func NewScriptPositionMapper

func NewScriptPositionMapper(scriptContent string, scriptStart int) *ScriptPositionMapper

NewScriptPositionMapper creates a mapper for script tags

func (*ScriptPositionMapper) GoToGxc

func (spm *ScriptPositionMapper) GoToGxc(line, char int) (int, int)

GoToGxc converts virtual .go position back to .gxc script position

func (*ScriptPositionMapper) GxcToGo

func (spm *ScriptPositionMapper) GxcToGo(line, char int) (int, int)

GxcToGo converts .gxc script position to virtual .go position

func (*ScriptPositionMapper) TransformCompletionItem

func (spm *ScriptPositionMapper) TransformCompletionItem(item protocol.CompletionItem) protocol.CompletionItem

TransformCompletionItem transforms all position-related fields in a CompletionItem

func (*ScriptPositionMapper) TransformPosition

func (spm *ScriptPositionMapper) TransformPosition(pos protocol.Position) protocol.Position

TransformPosition transforms a protocol.Position from .go to .gxc

func (*ScriptPositionMapper) TransformRange

func (spm *ScriptPositionMapper) TransformRange(r protocol.Range) protocol.Range

TransformRange transforms a protocol.Range from .go to .gxc

func (*ScriptPositionMapper) TransformTextEdit

func (spm *ScriptPositionMapper) TransformTextEdit(edit protocol.TextEdit) protocol.TextEdit

TransformTextEdit transforms a protocol.TextEdit from .go to .gxc

type Server

type Server struct {
	// contains filtered or unexported fields
}

func NewServer

func NewServer(conn jsonrpc2.Conn) *Server

func (*Server) Completion

func (s *Server) Completion(ctx context.Context, params *protocol.CompletionParams) (*protocol.CompletionList, error)

func (*Server) Definition

func (s *Server) Definition(ctx context.Context, params *protocol.DefinitionParams) ([]protocol.Location, error)

func (*Server) DidChange

func (s *Server) DidChange(ctx context.Context, params *protocol.DidChangeTextDocumentParams) error

func (*Server) DidClose

func (s *Server) DidClose(ctx context.Context, params *protocol.DidCloseTextDocumentParams) error

func (*Server) DidOpen

func (s *Server) DidOpen(ctx context.Context, params *protocol.DidOpenTextDocumentParams) error

func (*Server) DidSave

func (s *Server) DidSave(ctx context.Context, params *protocol.DidSaveTextDocumentParams) error

func (*Server) Exit

func (s *Server) Exit(ctx context.Context) error

func (*Server) Hover

func (s *Server) Hover(ctx context.Context, params *protocol.HoverParams) (*protocol.Hover, error)

func (*Server) Initialize

func (*Server) Initialized

func (s *Server) Initialized(ctx context.Context, params *protocol.InitializedParams) error

func (*Server) Shutdown

func (s *Server) Shutdown(ctx context.Context) error

type StructInfo

type StructInfo struct {
	Name       string
	Package    string
	Fields     map[string]FieldInfo
	ImportPath string
}

type TypeInferencer

type TypeInferencer struct {
	// contains filtered or unexported fields
}

TypeInferencer infers types from Go AST without execution

func NewTypeInferencer

func NewTypeInferencer() *TypeInferencer

func NewTypeInferencerWithProject

func NewTypeInferencerWithProject(project *ProjectContext) *TypeInferencer

func (*TypeInferencer) GetAllTypes

func (ti *TypeInferencer) GetAllTypes() map[string]TypeInfo

func (*TypeInferencer) GetType

func (ti *TypeInferencer) GetType(name string) (TypeInfo, bool)

func (*TypeInferencer) InferTypes

func (ti *TypeInferencer) InferTypes(frontmatter string) error

InferTypes parses frontmatter and extracts type information

type TypeInfo

type TypeInfo struct {
	Name     string
	TypeName string
	IsStruct bool
	IsMap    bool
	IsSlice  bool
	Fields   map[string]TypeInfo // For structs/maps
}

TypeInfo represents type information for a variable

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL