language server start
This commit is contained in:
24
compiler/NubLang.LSP/DiagnosticsPublisher.cs
Normal file
24
compiler/NubLang.LSP/DiagnosticsPublisher.cs
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Document;
|
||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
|
||||||
|
|
||||||
|
namespace NubLang.LSP;
|
||||||
|
|
||||||
|
public class DiagnosticsPublisher
|
||||||
|
{
|
||||||
|
private readonly ILanguageServerFacade _server;
|
||||||
|
|
||||||
|
public DiagnosticsPublisher(ILanguageServerFacade server)
|
||||||
|
{
|
||||||
|
_server = server;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Publish(Uri uri, IEnumerable<Diagnostic> diagnostics)
|
||||||
|
{
|
||||||
|
_server.TextDocument.PublishDiagnostics(new PublishDiagnosticsParams
|
||||||
|
{
|
||||||
|
Uri = uri,
|
||||||
|
Diagnostics = new Container<Diagnostic>(diagnostics)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
18
compiler/NubLang.LSP/HoverHandler.cs
Normal file
18
compiler/NubLang.LSP/HoverHandler.cs
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Client.Capabilities;
|
||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Document;
|
||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Models;
|
||||||
|
|
||||||
|
namespace NubLang.LSP;
|
||||||
|
|
||||||
|
internal class HoverHandler : HoverHandlerBase
|
||||||
|
{
|
||||||
|
protected override HoverRegistrationOptions CreateRegistrationOptions(HoverCapability capability, ClientCapabilities clientCapabilities)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<Hover?> Handle(HoverParams request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
throw new NotImplementedException();
|
||||||
|
}
|
||||||
|
}
|
||||||
71
compiler/NubLang.LSP/TextDocumentSyncHandler.cs
Normal file
71
compiler/NubLang.LSP/TextDocumentSyncHandler.cs
Normal file
@@ -0,0 +1,71 @@
|
|||||||
|
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;
|
||||||
|
using OmniSharp.Extensions.LanguageServer.Protocol.Server;
|
||||||
|
|
||||||
|
namespace NubLang.LSP;
|
||||||
|
|
||||||
|
internal class TextDocumentSyncHandler : TextDocumentSyncHandlerBase
|
||||||
|
{
|
||||||
|
private readonly DiagnosticsPublisher _diagnostics;
|
||||||
|
|
||||||
|
public TextDocumentSyncHandler(DiagnosticsPublisher diagnostics)
|
||||||
|
{
|
||||||
|
_diagnostics = diagnostics;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override TextDocumentAttributes GetTextDocumentAttributes(DocumentUri uri)
|
||||||
|
{
|
||||||
|
return new TextDocumentAttributes(uri, "nub-lang");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<Unit> Handle(DidOpenTextDocumentParams request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return Unit.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<Unit> Handle(DidChangeTextDocumentParams request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
_diagnostics.Publish(new Uri("https://example.com"), [new Diagnostic
|
||||||
|
{
|
||||||
|
Severity = DiagnosticSeverity.Error,
|
||||||
|
}]);
|
||||||
|
return Unit.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<Unit> Handle(DidSaveTextDocumentParams request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return Unit.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Task<Unit> Handle(DidCloseTextDocumentParams request, CancellationToken cancellationToken)
|
||||||
|
{
|
||||||
|
return Unit.Task;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override TextDocumentSyncRegistrationOptions CreateRegistrationOptions(TextSynchronizationCapability capability, ClientCapabilities clientCapabilities)
|
||||||
|
{
|
||||||
|
return new TextDocumentSyncRegistrationOptions();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DiagnosticsPublisher
|
||||||
|
{
|
||||||
|
private readonly ILanguageServerFacade _server;
|
||||||
|
|
||||||
|
public DiagnosticsPublisher(ILanguageServerFacade server)
|
||||||
|
{
|
||||||
|
_server = server;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void Publish(Uri uri, IEnumerable<Diagnostic> diagnostics)
|
||||||
|
{
|
||||||
|
_server.TextDocument.PublishDiagnostics(new PublishDiagnosticsParams
|
||||||
|
{
|
||||||
|
Uri = uri,
|
||||||
|
Diagnostics = new Container<Diagnostic>(diagnostics)
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
6
compiler/NubLang.LSP/WorkspaceManager.cs
Normal file
6
compiler/NubLang.LSP/WorkspaceManager.cs
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
namespace NubLang.LSP;
|
||||||
|
|
||||||
|
public class WorkspaceManager
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user