2025-10-15 10:12:44 +03:00

46 lines
1.5 KiB
Go

package project
import (
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/collections"
"efprojects.com/kitten-ipc/kitcom/internal/tsgo/lsp/lsproto"
"github.com/zeebo/xxh3"
)
type FileChangeKind int
const (
FileChangeKindOpen FileChangeKind = iota
FileChangeKindClose
FileChangeKindChange
FileChangeKindSave
FileChangeKindWatchCreate
FileChangeKindWatchChange
FileChangeKindWatchDelete
)
type FileChange struct {
Kind FileChangeKind
URI lsproto.DocumentUri
Hash xxh3.Uint128 // Only set for Close
Version int32 // Only set for Open/Change
Content string // Only set for Open
LanguageKind lsproto.LanguageKind // Only set for Open
Changes []lsproto.TextDocumentContentChangePartialOrWholeDocument // Only set for Change
}
type FileChangeSummary struct {
// Only one file can be opened at a time per request
Opened lsproto.DocumentUri
// Values are the content hashes of the overlays before closing.
Closed map[lsproto.DocumentUri]xxh3.Uint128
Changed collections.Set[lsproto.DocumentUri]
// Only set when file watching is enabled
Created collections.Set[lsproto.DocumentUri]
// Only set when file watching is enabled
Deleted collections.Set[lsproto.DocumentUri]
}
func (f FileChangeSummary) IsEmpty() bool {
return f.Opened == "" && len(f.Closed) == 0 && f.Changed.Len() == 0 && f.Created.Len() == 0 && f.Deleted.Len() == 0
}