From 7196e822a73d7332024ff6fd94bf540cb503efc3 Mon Sep 17 00:00:00 2001 From: Chris Simon Date: Sat, 14 Oct 2023 12:07:57 +0000 Subject: [PATCH] fix(language-server): fix issue with survey prompt Caused by native compilation as explained here: https://github.com/dotnet/corert/issues/5467 --- .../SurveyTests.fs | 11 ++--------- .../Contextive.LanguageServer/Server.fs | 16 ++++++++++------ 2 files changed, 12 insertions(+), 15 deletions(-) diff --git a/src/language-server/Contextive.LanguageServer.Tests/SurveyTests.fs b/src/language-server/Contextive.LanguageServer.Tests/SurveyTests.fs index f2744aec..75671e90 100644 --- a/src/language-server/Contextive.LanguageServer.Tests/SurveyTests.fs +++ b/src/language-server/Contextive.LanguageServer.Tests/SurveyTests.fs @@ -31,6 +31,8 @@ let showMessageRequestHandlerBuilder: HandlerBuilder = handlerBuilder "window/showDocument" +let latchFile = Path.Combine(System.AppContext.BaseDirectory, "survey-prompted.txt") + [] let initializationTests = testSequenced @@ -39,9 +41,6 @@ let initializationTests = [ testAsync "Server shows survey prompt and creates latch file, if latch-file doesn't exit" { let messageAwaiter = ConditionAwaiter.create () - let latchFile = - Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "survey-prompted.txt") - File.Delete(latchFile) let pathValue = Guid.NewGuid().ToString() @@ -69,9 +68,6 @@ let initializationTests = testAsync "Server does not show prompt if latch-file already exists" { let messageAwaiter = ConditionAwaiter.create () - let latchFile = - Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "survey-prompted.txt") - File.Create(latchFile).Close() let pathValue = Guid.NewGuid().ToString() @@ -95,9 +91,6 @@ let initializationTests = let messageAwaiter = ConditionAwaiter.create () let showDocAwaiter = ConditionAwaiter.create () - let latchFile = - Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "survey-prompted.txt") - File.Delete(latchFile) let pathValue = Guid.NewGuid().ToString() diff --git a/src/language-server/Contextive.LanguageServer/Server.fs b/src/language-server/Contextive.LanguageServer/Server.fs index e735a28a..52da1b99 100644 --- a/src/language-server/Contextive.LanguageServer/Server.fs +++ b/src/language-server/Contextive.LanguageServer/Server.fs @@ -56,10 +56,10 @@ let private getWorkspaceFolder (s: ILanguageServer) = else None -let showSurveyPrompt (s: ILanguageServer) = +let private showSurveyPrompt (s: ILanguageServer) = task { let latchFile = - Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "survey-prompted.txt") + Path.Combine(System.AppContext.BaseDirectory, "survey-prompted.txt") if not <| File.Exists(latchFile) then File.Create(latchFile).Close() @@ -87,10 +87,13 @@ let showSurveyPrompt (s: ILanguageServer) = } -let private onStartup definitions = - OnLanguageServerStartedDelegate(fun (s: ILanguageServer) _cancellationToken -> - showSurveyPrompt (s) |> ignore +let private onStartupShowSurveyPrompt = + OnLanguageServerStartedDelegate(fun (s: ILanguageServer) _cancellationToken -> + showSurveyPrompt (s) + ) +let private onStartupConfigureServer definitions = + OnLanguageServerStartedDelegate(fun (s: ILanguageServer) _cancellationToken -> async { s.Window.LogInfo $"Starting {name} v{version}..." let configGetter () = getConfig s configSection pathKey @@ -130,7 +133,8 @@ let private configureServer (input: Stream) (output: Stream) (opts: LanguageServ .WithInput(input) .WithOutput(output) - .OnStarted(onStartup definitions) + .OnStarted(onStartupConfigureServer definitions) + .OnStarted(onStartupShowSurveyPrompt) .WithConfigurationSection(configSection) // Add back in when implementing didConfigurationChanged handling .ConfigureLogging(fun z -> z