using MediatR; using OmniSharp.Extensions.LanguageServer.Protocol; using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities; using OmniSharp.Extensions.LanguageServer.Protocol.Document; using OmniSharp.Extensions.LanguageServer.Protocol.Models; namespace NubLang.LSP; internal class TextDocumentSyncHandler(WorkspaceManager workspaceManager) : TextDocumentSyncHandlerBase { public override TextDocumentAttributes GetTextDocumentAttributes(DocumentUri uri) { return new TextDocumentAttributes(uri, "nub-lang"); } public override Task Handle(DidOpenTextDocumentParams request, CancellationToken cancellationToken) { workspaceManager.UpdateFile(request.TextDocument.Uri); return Unit.Task; } public override Task Handle(DidChangeTextDocumentParams request, CancellationToken cancellationToken) { workspaceManager.UpdateFile(request.TextDocument.Uri); return Unit.Task; } public override Task Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken) { workspaceManager.UpdateFile(request.TextDocument.Uri); return Unit.Task; } public override Task Handle(DidCloseTextDocumentParams request, CancellationToken cancellationToken) { workspaceManager.UpdateFile(request.TextDocument.Uri); return Unit.Task; } protected override TextDocumentSyncRegistrationOptions CreateRegistrationOptions(TextSynchronizationCapability capability, ClientCapabilities clientCapabilities) { return new TextDocumentSyncRegistrationOptions(); } }