package lsp import ( "context" "sync" "go.lsp.dev/protocol" "go.lsp.dev/uri" "olexsmir.xyz/clerk/journal/printer" ) type docState struct { text string version int32 languageID protocol.LanguageKind } type server struct { protocol.UnimplementedServer client protocol.Client version string printerCfg *printer.Config mu sync.RWMutex docs map[uri.URI]docState } func (s *server) Initialize(ctx context.Context, params *protocol.InitializeParams) (*protocol.InitializeResult, error) { return &protocol.InitializeResult{ ServerInfo: protocol.ServerInfo{ Name: "clerk", Version: protocol.NewOptional(s.version), }, Capabilities: protocol.ServerCapabilities{ DocumentFormattingProvider: &protocol.DocumentFormattingOptions{}, TextDocumentSync: &protocol.TextDocumentSyncOptions{ OpenClose: new(true), Change: new(protocol.TextDocumentSyncKindFull), // TODO: Incremental }, // TODO: diagnostics provider // TODO: completion }, }, nil } func (s *server) Initialized(ctx context.Context, params *protocol.InitializedParams) error { return nil } func (s *server) Shutdown(ctx context.Context) error { return nil } func (s *server) Exit(ctx context.Context) error { return nil }