private static async Task Main(string[] args) { StartAnalytics(); AnalyticsApi.UserAgent = EditorName = GetEditorNameByArgs(args); AnalyticsApi.TrackEvent("SessionStart", "Session Start", extraValues: new { sc = "start" }); AnalyticsApi.TrackEvent("ServerStart", "Started LSP Server", extraValues: new { sc = "start" }); if (args.Any(a => a.ToLower().Equals("-d"))) { while (!Debugger.IsAttached) { await Task.Delay(100); } } ILanguageServer server = null; server = await LanguageServer.From(options => { options .WithInput(Console.OpenStandardInput()) .WithOutput(Console.OpenStandardOutput()) .ConfigureLogging(c => c.AddLanguageProtocolLogging()) .WithHandler <TextDocumentHandler>() .WithHandler <TextHoverHandler>(); options.OnRequest <object, int>("insight/inspectionsCount", _ => Task.FromResult(WorkspaceManager.Instance.InspectionsManager.CodeInspections.Count)); var debouncedParseRange = Debouncer.Debounce <SkriptFile>(file => file.NotifyVisibleNodesRangeChanged(), TimeSpan.FromMilliseconds(500)); options.OnNotification <ViewportChangedParams>("insight/viewportRangeChanged", e => { var file = WorkspaceManager.CurrentWorkspace.WorkspaceManager.GetOrCreateByUri(e.Uri.ToUri()); if (file == null) { return; } file.VisibleRanges = e.Ranges; debouncedParseRange.Run(file); }); options.OnNotification("insight/notifySupportsExtendedCapabilities", async() => { if (WorkspaceManager.CurrentHost == null) { return; } var sendRequest = WorkspaceManager.CurrentHost.SendRawRequest <ExtendedHostCapabilities>( "insight/queryExtendedCapabilities"); if (sendRequest != null) { WorkspaceManager.CurrentHost.ExtendedCapabilities = await sendRequest; } }); }); WorkspaceManager.CurrentHost = new LspSkriptInsightHost(server); WorkspaceManager.CurrentHost.LogInfo("SkriptInsight loaded successfully."); #pragma warning disable 4014 Task.Run(() => StartDiscordRichPresence(WorkspaceManager.CurrentWorkspace)); #pragma warning restore 4014 await server.WaitForExit; DiscordRpcClient?.Dispose(); AnalyticsApi.CancellationToken.Cancel(); AnalyticsApi.TrackEvent("ServerStop", "Stopped LSP Server"); AnalyticsApi.TrackEvent("SessionStop", "Session Stop", extraValues: new { sc = "stop" }); }
public LspSkriptInsightHost(ILanguageServer server) { Server = server; }
public DiagnosticReporter(OmniSharp.Extensions.LanguageServer.Protocol.Server.ILanguageServer router) { this.router = router; }