Documentation ¶
Index ¶
- func NewOverlayFS(delegate FileSource) *overlayFS
- type AST
- type Cache
- type DiskFile
- type FileChange
- type FileChangeType
- type FileHandle
- type FileID
- type FileIdentity
- type FileSource
- type FilesMap
- type Hash
- type IncludeGraph
- type IncludeNode
- type Overlay
- type ParseCaches
- type ParsedFile
- type Position
- type Session
- func (s *Session) CreateView(folder uri.URI)
- func (s *Session) Initialize(fn func())
- func (fs Session) Overlays() []*Overlay
- func (fs Session) ReadFile(ctx context.Context, uri uri.URI) (FileHandle, error)
- func (fs Session) Update(ctx context.Context, changes []*FileChange) error
- func (s *Session) UpdateOverlayFS(ctx context.Context, changes []*FileChange) error
- func (s *Session) ViewOf(fileURI uri.URI) (*View, error)
- type Snapshot
- func (s *Snapshot) Acquire() func()
- func (s *Snapshot) ForgetFile(uri uri.URI)
- func (s *Snapshot) Graph() *IncludeGraph
- func (s *Snapshot) Initialize(ctx context.Context)
- func (s *Snapshot) Parse(ctx context.Context, uri uri.URI) (*ParsedFile, error)
- func (s *Snapshot) ReadFile(ctx context.Context, uri uri.URI) (FileHandle, error)
- func (s *Snapshot) Tokens() map[string]struct{}
- type View
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func NewOverlayFS ¶
func NewOverlayFS(delegate FileSource) *overlayFS
Types ¶
type DiskFile ¶
type DiskFile struct {
// contains filtered or unexported fields
}
A DiskFile is a file on the filesystem, or a failure to read one. It implements the source.FileHandle interface.
func (*DiskFile) FileIdentity ¶
func (h *DiskFile) FileIdentity() FileIdentity
type FileChange ¶
type FileChange struct { URI uri.URI Version int Content []byte From FileChangeType }
func FileChangeFromLSPDidChange ¶
func FileChangeFromLSPDidChange(params *protocol.DidChangeTextDocumentParams) []*FileChange
func (*FileChange) FullContent ¶
func (f *FileChange) FullContent(base []byte) []byte
type FileChangeType ¶
type FileChangeType string
const ( FileChangeTypeInitialize FileChangeType = "Initialize" FileChangeTypeDidOpen FileChangeType = "DidOpen" FileChangeTypeDidChange FileChangeType = "DidChange" FileChangeTypeDidSave FileChangeType = "DidSave" )
type FileHandle ¶
type FileHandle interface { // URI is the URI for this file handle. // TODO(rfindley): this is not actually well-defined. In some cases, there // may be more than one URI that resolve to the same FileHandle. Which one is // this? URI() uri.URI // FileIdentity returns a FileIdentity for the file, even if there was an // error reading it. FileIdentity() FileIdentity // Saved reports whether the file has the same content on disk: // it is false for files open on an editor with unsaved edits. Saved() bool // Version returns the file version, as defined by the LSP client. // For on-disk file handles, Version returns 0. Version() int32 // Content returns the contents of a file. // If the file is not available, returns a nil slice and an error. Content() ([]byte, error) }
A FileHandle represents the URI, content, hash, and optional version of a file tracked by the LSP session.
File content may be provided by the file system (for Saved files) or from an overlay, for open files with unsaved edits. A FileHandle may record an attempt to read a non-existent file, in which case Content returns an error.
type FileID ¶
type FileID struct {
// contains filtered or unexported fields
}
A FileID uniquely identifies a file in the file system.
If GetFileID(name1) returns the same ID as GetFileID(name2), the two file names denote the same file. A FileID is comparable, and thus suitable for use as a map key.
type FileIdentity ¶
FileIdentity uniquely identifies a file at a version from a FileSystem.
func (FileIdentity) String ¶
func (id FileIdentity) String() string
type FileSource ¶
type FileSource interface { // ReadFile returns the FileHandle for a given URI, either by // reading the content of the file or by obtaining it from a cache. ReadFile(ctx context.Context, uri uri.URI) (FileHandle, error) }
A FileSource maps URIs to FileHandles.
type FilesMap ¶
type FilesMap struct {
// contains filtered or unexported fields
}
FilesMap holds files on disk and overlay files
type Hash ¶
type IncludeGraph ¶
type IncludeGraph struct {
// contains filtered or unexported fields
}
func NewIncludeGraph ¶
func NewIncludeGraph() *IncludeGraph
func (*IncludeGraph) Clone ¶
func (g *IncludeGraph) Clone() *IncludeGraph
func (*IncludeGraph) Debug ¶
func (g *IncludeGraph) Debug()
func (*IncludeGraph) Get ¶
func (g *IncludeGraph) Get(file uri.URI) *IncludeNode
func (*IncludeGraph) Remove ¶
func (g *IncludeGraph) Remove(file uri.URI)
type IncludeNode ¶
type IncludeNode struct {
// contains filtered or unexported fields
}
func (*IncludeNode) Clone ¶
func (n *IncludeNode) Clone() *IncludeNode
func (*IncludeNode) InDegree ¶
func (n *IncludeNode) InDegree() []uri.URI
func (*IncludeNode) OutDegree ¶
func (n *IncludeNode) OutDegree() []uri.URI
type Overlay ¶
type Overlay struct {
// contains filtered or unexported fields
}
An Overlay is a file open in the editor. It may have unsaved edits. It implements the source.FileHandle interface.
func (*Overlay) FileIdentity ¶
func (o *Overlay) FileIdentity() FileIdentity
type ParseCaches ¶
type ParseCaches struct {
// contains filtered or unexported fields
}
func NewParseCaches ¶
func NewParseCaches() *ParseCaches
func (*ParseCaches) Clone ¶
func (c *ParseCaches) Clone() *ParseCaches
func (*ParseCaches) Forget ¶
func (c *ParseCaches) Forget(filePath uri.URI)
func (*ParseCaches) Get ¶
func (c *ParseCaches) Get(filePath uri.URI) *ParsedFile
func (*ParseCaches) Set ¶
func (c *ParseCaches) Set(filePath uri.URI, res *ParsedFile)
func (*ParseCaches) Tokens ¶
func (c *ParseCaches) Tokens() map[string]struct{}
type ParsedFile ¶
type ParsedFile struct {
// contains filtered or unexported fields
}
func (*ParsedFile) AST ¶
func (p *ParsedFile) AST() *parser.Document
func (*ParsedFile) AggregatedError ¶
func (p *ParsedFile) AggregatedError() error
func (*ParsedFile) Errors ¶
func (p *ParsedFile) Errors() []parser.ParserError
func (*ParsedFile) Mapper ¶
func (p *ParsedFile) Mapper() *mapper.Mapper
type Position ¶
type Session ¶
type Session struct {
// contains filtered or unexported fields
}
func NewSession ¶
func (*Session) CreateView ¶
func (*Session) Initialize ¶
func (s *Session) Initialize(fn func())
func (Session) Overlays ¶
func (fs Session) Overlays() []*Overlay
Overlays returns a new unordered array of overlays.
func (Session) Update ¶
func (fs Session) Update(ctx context.Context, changes []*FileChange) error
Update only updates overlays
func (*Session) UpdateOverlayFS ¶
func (s *Session) UpdateOverlayFS(ctx context.Context, changes []*FileChange) error
type Snapshot ¶
type Snapshot struct {
// contains filtered or unexported fields
}
func BuildSnapshotForTest ¶
func BuildSnapshotForTest(files []*FileChange) *Snapshot
func (*Snapshot) ForgetFile ¶
ForgetFile is called when file changed or removed it remove file cache and parsed cache
func (*Snapshot) Graph ¶
func (s *Snapshot) Graph() *IncludeGraph
func (*Snapshot) Initialize ¶
type View ¶
type View struct {
// contains filtered or unexported fields
}
func (*View) FileChange ¶
func (v *View) FileChange(ctx context.Context, changes []*FileChange, postFns ...func())