/
types.go
58 lines (47 loc) · 1.13 KB
/
types.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
package filesystem
import (
"io/fs"
"log"
"os"
"github.com/glennsarti/blog-wasm-vscode/lsp/internal/source"
)
type Document interface {
DocumentHandler
Text() ([]byte, error)
Lines() source.Lines
LanguageID() string
Version() int
}
type DocumentHandler interface {
URI() string
FullPath() string
Dir() string
Filename() string
}
type VersionedDocumentHandler interface {
DocumentHandler
Version() int
}
type DocumentChange interface {
Text() string
Range() *Range
}
type DocumentChanges []DocumentChange
type DocumentStorage interface {
// LS-specific methods
CreateDocument(DocumentHandler, string, []byte) error
CreateAndOpenDocument(DocumentHandler, string, []byte) error
GetDocument(DocumentHandler) (Document, error)
CloseAndRemoveDocument(DocumentHandler) error
ChangeDocument(VersionedDocumentHandler, DocumentChanges) error
HasOpenFiles(path string) (bool, error)
}
type Filesystem interface {
DocumentStorage
SetLogger(*log.Logger)
// direct FS methods
ReadFile(name string) ([]byte, error)
ReadDir(name string) ([]fs.DirEntry, error)
Open(name string) (fs.File, error)
Stat(name string) (os.FileInfo, error)
}