From 8221a5b596fbf7dad7fe4d98f4d714b938163696 Mon Sep 17 00:00:00 2001 From: Cristian Maglie Date: Fri, 12 Feb 2021 14:55:15 +0100 Subject: [PATCH] Ensure buildPath is initialized before accepting requests --- handler/handler.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/handler/handler.go b/handler/handler.go index 776998d..267663e 100644 --- a/handler/handler.go +++ b/handler/handler.go @@ -126,12 +126,6 @@ func NewInoHandler(stdio io.ReadWriteCloser, board lsp.Board) *InoHandler { }, } handler.clangdStarted = sync.NewCond(&handler.dataMux) - stdStream := jsonrpc2.NewBufferedStream(stdio, jsonrpc2.VSCodeObjectCodec{}) - var stdHandler jsonrpc2.Handler = jsonrpc2.HandlerWithError(handler.HandleMessageFromIDE) - handler.StdioConn = jsonrpc2.NewConn(context.Background(), stdStream, stdHandler, - jsonrpc2.OnRecv(streams.JSONRPCConnLogOnRecv("IDE --> LS CL:")), - jsonrpc2.OnSend(streams.JSONRPCConnLogOnSend("IDE <-- LS CL:")), - ) if buildPath, err := paths.MkTempDir("", "arduino-language-server"); err != nil { log.Fatalf("Could not create temp folder: %s", err) @@ -139,15 +133,21 @@ func NewInoHandler(stdio io.ReadWriteCloser, board lsp.Board) *InoHandler { handler.buildPath = buildPath.Canonical() handler.buildSketchRoot = handler.buildPath.Join("sketch") } - - handler.progressHandler = NewProgressProxy(handler.StdioConn) - if enableLogging { log.Println("Initial board configuration:", board) log.Println("Language server build path:", handler.buildPath) log.Println("Language server build sketch root:", handler.buildSketchRoot) } + stdStream := jsonrpc2.NewBufferedStream(stdio, jsonrpc2.VSCodeObjectCodec{}) + var stdHandler jsonrpc2.Handler = jsonrpc2.HandlerWithError(handler.HandleMessageFromIDE) + handler.StdioConn = jsonrpc2.NewConn(context.Background(), stdStream, stdHandler, + jsonrpc2.OnRecv(streams.JSONRPCConnLogOnRecv("IDE --> LS CL:")), + jsonrpc2.OnSend(streams.JSONRPCConnLogOnSend("IDE <-- LS CL:")), + ) + + handler.progressHandler = NewProgressProxy(handler.StdioConn) + go handler.rebuildEnvironmentLoop() return handler }