From 07c5b35d5518a41b3e26d06859940a78c396596c Mon Sep 17 00:00:00 2001 From: Yatao Li Date: Tue, 9 Jul 2019 18:38:31 +0800 Subject: [PATCH] fix #29 --- Program.fs | 6 ++---- neovim/neovim.rpc.fs | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/Program.fs b/Program.fs index 5b0b3fc..341b4cd 100644 --- a/Program.fs +++ b/Program.fs @@ -89,10 +89,6 @@ module Program = extKey.SetValue("", progId) } - - // Initialization code. Don't use any Avalonia, third-party APIs or any - // SynchronizationContext-reliant code before AppMain is called: things aren't initialized - // yet and stuff might break. [] [] let main(args: string[]) = @@ -103,6 +99,8 @@ module Program = builder.Instance.ApplicationLifetime <- lifetime let _ = builder.SetupWithoutStarting() + // Avalonia is initialized. SynchronizationContext-reliant code should be working by now; + AppDomain.CurrentDomain.UnhandledException.Add(fun exArgs -> let filename = Path.Combine(config.configdir, sprintf "fvim-crash-%s.txt" (DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss"))) use dumpfile = new StreamWriter(filename) diff --git a/neovim/neovim.rpc.fs b/neovim/neovim.rpc.fs index b0bb8e9..5b05552 100644 --- a/neovim/neovim.rpc.fs +++ b/neovim/neovim.rpc.fs @@ -264,7 +264,7 @@ type Process() = | _, Some(_) -> failwith "neovim: already started" | _ -> () - let args = "--embed" :: args + let args = "--embed" :: (List.map (fun (x: string) -> if x.Contains(' ') then "'" + x + "'" else x) args) let psi = ProcessStartInfo(prog, String.Join(" ", preargs @ args)) psi.CreateNoWindow <- true psi.ErrorDialog <- false