From db2c84df02bf69d947715445b3dd9227f23a6781 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juan=20M=20G=C3=B3mez?= Date: Mon, 23 Sep 2024 10:31:48 +0100 Subject: [PATCH] Adds lastKnown cmd to projectError. Adds orc back (#243) * Adds lastKnown cmd to projectError. Adds orc back * add missing file --- config.nims | 2 -- ls.nim | 12 ++++++++---- protocol/types.nim | 4 +++- suggestapi.nim | 4 +++- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/config.nims b/config.nims index 8c1f47d..640a610 100644 --- a/config.nims +++ b/config.nims @@ -1,8 +1,6 @@ - # begin Nimble config (version 2) --noNimblePath when withDir(thisDir(), system.fileExists("nimble.paths")): include "nimble.paths" # end Nimble config ---mm:refc diff --git a/ls.nim b/ls.nim index 9544642..928b863 100644 --- a/ls.nim +++ b/ls.nim @@ -332,6 +332,7 @@ proc toPendingRequestStatus(pr: PendingRequest): PendingRequestStatus = result.state = $pr.state proc getLspStatus*(ls: LanguageServer): NimLangServerStatus {.raises: [].} = + result.lspPath = getAppFilename() result.version = LSPVersion result.extensionCapabilities = ls.extensionCapabilities.toSeq for project in ls.projectFiles.values: @@ -672,10 +673,13 @@ proc onErrorCallback(args: (LanguageServer, string), project: Project) = error "An error has ocurred while handling nimsuggest err", msg = ex.msg writeStacktrace(ex) finally: - ls.projectErrors.add ProjectError( - projectFile: project.file, errorMessage: project.errorMessage - ) - ls.sendStatusChanged() + if project.file != "": + ls.projectErrors.add ProjectError( + projectFile: project.file, + errorMessage: project.errorMessage, + lastKnownCmd: project.lastCmd + ) + ls.sendStatusChanged() proc createOrRestartNimsuggest*( ls: LanguageServer, projectFile: string, uri = "" diff --git a/protocol/types.nim b/protocol/types.nim index b61a06f..6332514 100644 --- a/protocol/types.nim +++ b/protocol/types.nim @@ -1005,9 +1005,11 @@ type ProjectError* = object projectFile*: string - errorMessage*: string #last known cmd? last know request? + errorMessage*: string + lastKnownCmd*: string NimLangServerStatus* = object + lspPath*: string version*: string nimsuggestInstances*: seq[NimSuggestStatus] openFiles*: seq[string] diff --git a/suggestapi.nim b/suggestapi.nim index 72158ba..819e33f 100644 --- a/suggestapi.nim +++ b/suggestapi.nim @@ -99,6 +99,7 @@ type errorCallback*: ProjectCallback errorMessage*: string failed*: bool + lastCmd*: string func canHandleUnknown*(ns: Nimsuggest): bool = nsUnknownFile in ns.capabilities @@ -298,7 +299,7 @@ proc getNimsuggestCapabilities*(nimsuggestPath: string): proc logNsError(project: Project) {.async.} = let err = string.fromBytes(project.process.stderrStream.read().await) error "NimSuggest Error (stderr)", err = err - project.markFailed(err) #TODO Error handling should be at the project level + project.markFailed(err) proc createNimsuggest*(root: string, nimsuggestPath: string, @@ -367,6 +368,7 @@ proc processQueue(self: Nimsuggest): Future[void] {.async.}= debug "processQueue", size = self.requestQueue.len while self.requestQueue.len != 0: let req = self.requestQueue.popFirst + self.project.lastCmd = req.commandString logScope: command = req.commandString if req.future.finished: