nwolverson / purescript-language-server

MIT License
183 stars 41 forks source link

Warning/Error reporting not working? #199

Open ntwilson opened 11 months ago

ntwilson commented 11 months ago

I'm using NeoVim 0.9.0, and this week the highlighting for errors and warnings stopped working, even though the language server is working for other features. I upgraded to version 0.17.2 of the language server, and the broken highlighting seemed to correspond to the upgrade, but the problem persisted after downgrading back to 0.17.1. I can tell the language server is detecting warnings, because if I (for example) add an unused import at the top of the file and open the code actions menu, it will include a suggestion to delete the unused import, it just won't render the warning in any way. The only way I have been able to see errors or warnings is to run spago build to see the console output, but autocomplete and other tooltips still show up. image

I've noticed that VS Code is working as expected (using 0.17.2), but the LSP logs from NeoVim and those from VS Code look identical to me.

I'm out of ideas on what to try to diagnose this any further. Is there any chance that installing 0.17.2 updated some cache or something that remained broken even after downgrading to 0.17.1? I've certainly tried removing the entire .spago/ and output/ folders and rebuilding everything from scratch. Are there any suggestions for what else I can look at to try to get any further information?

nwolverson commented 10 months ago

Reading this again, if you have actions to fix unused imports, the warnings would seem to be there.

The LSP logs are the only place I would expect to find an issue. Failing that I struggle to see what could be going on, I can't offer any neovim support. Perhaps we can find out if other neovim users see this

ntwilson commented 10 months ago

Hi, thanks for your comments! Do you think this issue would be better in purescript-vim instead of purescript-language-server? I'm just not entirely sure where the problem is.

I've reproduced this with what I think is a minimal example with purescript-language-server + nvim-lspconfig + nvim-cmp here, and I captured the verbose log of the problem, and put it at the bottom. Basically I just open a file, get a normal tooltip on Web.HTTP.Window.location, then introduce a typo to try to access Web.HTTP.Window.locationn. I can see the error in the logs:

[INFO][2023-11-03 17:05:30] ...lsp/handlers.lua:539 'Unmatched diagnostics: (fromFoldable [(Tuple DocumentUri "file:///c%3A/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs" [{ code: "UnknownName", message: "  Unknown value Window.locationn\\n", range: Range(Position(28,20),Position(28,36)), severity: 1, source: "PureScript" }])])'

but nothing shows up in the IDE. I do see suggestions for fixing the error, so I know the IDE is aware of it: image

I did however discover while looking into this that it works just fine in Ubuntu (WSL), but doesn't work on Windows 10! I thought maybe it was my system, but I've uninstalled everything related to neovim (uninstalled all the neovim files in Program Files, the config in AppData\Local\nvim, and the data in AppData\Local\nvim-data) and reinstalled everything and still have the same issue. In other programming languages I do see error messages.

Thanks for any information you can give! I understand that this might not get a resolution here.


[START][2023-11-03 17:04:47] LSP logging initiated
[INFO][2023-11-03 17:04:47] .../vim/lsp/rpc.lua:662 "Starting RPC client"   {  args = { "/C", "purescript-language-server", "--stdio" },  cmd = "cmd.exe",  extra = {    cwd = "C:/Git/WebPlatform"  }}
[DEBUG][2023-11-03 17:04:47] .../vim/lsp/rpc.lua:284    "rpc.send"  {  id = 1,  jsonrpc = "2.0",  method = "initialize",  params = {    capabilities = {      textDocument = {        callHierarchy = {          dynamicRegistration = false        },        codeAction = {          codeActionLiteralSupport = {            codeActionKind = {              valueSet = { "", "quickfix", "refactor", "refactor.extract", "refactor.inline", "refactor.rewrite", "source", "source.organizeImports" }            }          },          dataSupport = true,          dynamicRegistration = false,          isPreferredSupport = true,          resolveSupport = {            properties = { "edit" }          }        },        completion = {          completionItem = {            commitCharactersSupport = false,            deprecatedSupport = false,            documentationFormat = { "markdown", "plaintext" },            preselectSupport = false,            snippetSupport = false          },          completionItemKind = {            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25 }          },          contextSupport = false,          dynamicRegistration = false        },        declaration = {          linkSupport = true        },        definition = {          linkSupport = true        },        documentHighlight = {          dynamicRegistration = false        },        documentSymbol = {          dynamicRegistration = false,          hierarchicalDocumentSymbolSupport = true,          symbolKind = {            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }          }        },        hover = {          contentFormat = { "markdown", "plaintext" },          dynamicRegistration = false        },        implementation = {          linkSupport = true        },        publishDiagnostics = {          relatedInformation = true,          tagSupport = {            valueSet = { 1, 2 }          }        },        references = {          dynamicRegistration = false        },        rename = {          dynamicRegistration = false,          prepareSupport = true        },        semanticTokens = {          augmentsSyntaxTokens = true,          dynamicRegistration = false,          formats = { "relative" },          multilineTokenSupport = false,          overlappingTokenSupport = true,          requests = {            full = {              delta = true            },            range = false          },          serverCancelSupport = false,          tokenModifiers = { "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary" },          tokenTypes = { "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator", "decorator" }        },        signatureHelp = {          dynamicRegistration = false,          signatureInformation = {            activeParameterSupport = true,            documentationFormat = { "markdown", "plaintext" },            parameterInformation = {              labelOffsetSupport = true            }          }        },        synchronization = {          didSave = true,          dynamicRegistration = false,          willSave = true,          willSaveWaitUntil = true        },        typeDefinition = {          linkSupport = true        }      },      window = {        showDocument = {          support = true        },        showMessage = {          messageActionItem = {            additionalPropertiesSupport = false          }        },        workDoneProgress = true      },      workspace = {        applyEdit = true,        configuration = true,        didChangeWatchedFiles = {          dynamicRegistration = false,          relativePatternSupport = true        },        semanticTokens = {          refreshSupport = true        },        symbol = {          dynamicRegistration = false,          hierarchicalWorkspaceSymbolSupport = true,          symbolKind = {            valueSet = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26 }          }        },        workspaceEdit = {          resourceOperations = { "rename", "create", "delete" }        },        workspaceFolders = true      }    },    clientInfo = {      name = "Neovim",      version = "0.9.4"    },    initializationOptions = vim.empty_dict(),    processId = 21816,    rootPath = "C:\\Git\\WebPlatform",    rootUri = "file:///C:/Git/WebPlatform",    trace = "off",    workspaceFolders = { {        name = "C:/Git/WebPlatform",        uri = "file:///C:/Git/WebPlatform"      } }  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "PureScript Language Server started (0.17.3)",    type = 4  }}
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "PureScript Language Server started (0.17.3)"
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = 'Starting with args: ["C:\\\\Program Files\\\\nodejs\\\\node.exe","C:\\\\Users\\\\nathan.wilson\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\purescript-language-server\\\\server.js","--stdio"]',    type = 4  }}
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 'Starting with args: ["C:\\\\Program Files\\\\nodejs\\\\node.exe","C:\\\\Users\\\\nathan.wilson\\\\AppData\\\\Roaming\\\\npm\\\\node_modules\\\\purescript-language-server\\\\server.js","--stdio"]'
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Starting with cwd: C:\\Git\\WebPlatform and using root path: c:\\Git\\WebPlatform",    type = 4  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  id = 1,  jsonrpc = "2.0",  result = {    capabilities = {      codeActionProvider = {        codeActionKinds = { "", "source.organizeImports", "source.sortImports", "source.fixAll", "source" }      },      codeLensProvider = {        resolveProvider = false      },      completionProvider = {        resolveProvider = false,        triggerCharacters = { "." }      },      definitionProvider = true,      documentFormattingProvider = true,      documentSymbolProvider = true,      executeCommandProvider = {        commands = { "purescript.addCompletionImport", "purescript.caseSplit-explicit", "purescript.addClause-explicit", "purescript.replaceSuggestion", "purescript.build", "purescript.clean", "purescript.startPscIde", "purescript.stopPscIde", "purescript.restartPscIde", "purescript.typedHole-explicit", "purescript.replaceAllSuggestions", "purescript.fixTypo" }      },      foldingRangeProvider = true,      hoverProvider = true,      referencesProvider = true,      renameProvider = {        prepareProvider = true,        workDoneProgress = true      },      textDocumentSync = {        change = 2,        openClose = true,        save = {          includeText = false        }      },      workspaceSymbolProvider = true    }  }}
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "Starting with cwd: C:\\Git\\WebPlatform and using root path: c:\\Git\\WebPlatform"
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "initialized",  params = vim.empty_dict()}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "workspace/didChangeConfiguration",  params = {    settings = {      purescript = {        addSpagoSources = true      }    }  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "workspace/didChangeConfiguration",  params = {    settings = {      purescript = {        addSpagoSources = true      }    }  }}
[INFO][2023-11-03 17:04:48] .../lua/vim/lsp.lua:1344    "LSP[purescriptls]" "server_capabilities"   {  server_capabilities = {    codeActionProvider = {      codeActionKinds = { "", "source.organizeImports", "source.sortImports", "source.fixAll", "source" }    },    codeLensProvider = {      resolveProvider = false    },    completionProvider = {      resolveProvider = false,      triggerCharacters = { "." }    },    definitionProvider = true,    documentFormattingProvider = true,    documentSymbolProvider = true,    executeCommandProvider = {      commands = { "purescript.addCompletionImport", "purescript.caseSplit-explicit", "purescript.addClause-explicit", "purescript.replaceSuggestion", "purescript.build", "purescript.clean", "purescript.startPscIde", "purescript.stopPscIde", "purescript.restartPscIde", "purescript.typedHole-explicit", "purescript.replaceAllSuggestions", "purescript.fixTypo" }    },    foldingRangeProvider = true,    hoverProvider = true,    referencesProvider = true,    renameProvider = {      prepareProvider = true,      workDoneProgress = true    },    textDocumentSync = {      change = 2,      openClose = true,      save = {        includeText = false      }    },    workspaceSymbolProvider = true  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "textDocument/didOpen",  params = {    textDocument = {      languageId = "purescript",      text = "module GasDay.WebSockets where\r\n\r\nimport GasDay.Prelude\r\n\r\nimport Data.Time.Duration (Milliseconds(..))\r\nimport Effect.Aff (forkAff, joinFiber, makeAff, nonCanceler)\r\nimport Effect.Aff as Aff\r\nimport Foreign (FT)\r\nimport Foreign as Foreign\r\nimport GasDay.API (logDebugErr)\r\nimport GasDay.ErrorHandling (launchAffWithHandler, liftError)\r\nimport Web.Event.Event (Event)\r\nimport Web.Event.EventTarget (addEventListener, eventListener)\r\nimport Web.File.Blob (Blob)\r\nimport Web.HTML (window)\r\nimport Web.HTML.Location as Location\r\nimport Web.HTML.Window (alert)\r\nimport Web.HTML.Window as Window\r\nimport Web.Socket.Event.CloseEvent as WebSocket.CloseEvent\r\nimport Web.Socket.Event.EventTypes as WebSocket.Event\r\nimport Web.Socket.Event.MessageEvent (MessageEvent)\r\nimport Web.Socket.Event.MessageEvent as WebSocket.MessageEvent\r\nimport Web.Socket.ReadyState (ReadyState(..))\r\nimport Web.Socket.WebSocket (WebSocket)\r\nimport Web.Socket.WebSocket as WebSocket\r\n\r\nwebSocketFromURL :: String -> Effect WebSocket\r\nwebSocketFromURL url = do\r\n  loc <- window >>= Window.locationn\r\n  h <- Location.host loc\r\n  p <- Location.protocol loc\r\n\r\n  let wsProtocol = if p == \"https:\" then \"wss:\" else \"ws:\"\r\n\r\n  let socketUrl = wsProtocol <> \"//\" <> h <> url \r\n\r\n  WebSocket.create socketUrl []\r\n\r\nwaitUntilConnected :: WebSocket -> Aff Unit\r\nwaitUntilConnected ws = do\r\n  readyState <- liftEffect $ WebSocket.readyState ws\r\n  case readyState of\r\n    Open -> pure unit\r\n    _ -> do\r\n      Aff.delay $ Milliseconds 200.0\r\n      waitUntilConnected ws\r\n\r\nclass ReadableMessageEvent a where\r\n  readForeign :: ∀ m. Monad m => Foreign -> FT m a\r\n\r\ninstance ReadableMessageEvent String where readForeign = Foreign.readString\r\ninstance ReadableMessageEvent Blob where readForeign = Foreign.unsafeReadTagged \"Blob\"\r\n\r\nreadAs :: ∀ a. ReadableMessageEvent a => MessageEvent -> Maybe a\r\nreadAs me = \r\n  me # WebSocket.MessageEvent.data_ # readForeign # copiedHush\r\n  where \r\n    copiedHush :: forall b. Foreign.F b -> Maybe b\r\n    copiedHush = hush <<< unwrap <<< unwrap\r\n\r\nonMessageCall :: ∀ a. ReadableMessageEvent a => (Either Error a -> Effect Unit) -> WebSocket -> Event -> Effect Unit\r\nonMessageCall handleMessage socket event = do  \r\n  flip catchError (handleMessage <<< Left) do\r\n    let maybeResult = WebSocket.MessageEvent.fromEvent event >>= readAs\r\n    resultInner <- maybeResult # note \"No data received\" # liftError \r\n    handleMessage $ Right resultInner\r\n\r\n  WebSocket.close socket\r\n\r\nonCloseCall :: ∀ a. String -> (Either Error a -> Effect Unit) -> Event -> Effect Unit\r\nonCloseCall task reportStatus event = do\r\n  case WebSocket.CloseEvent.fromEvent event of \r\n    -- References:\r\n    -- https://docs.microsoft.com/en-us/dotnet/api/system.net.websockets.websocketclosestatus?view=net-5.0\r\n    -- https://datatracker.ietf.org/doc/html/draft-ietf-hybi-thewebsocketprotocol-06#section-7.4\r\n    Just e | 1000 <- WebSocket.CloseEvent.code e -> pure unit -- Empty Close Event\r\n    Just e | 1005 <- WebSocket.CloseEvent.code e -> pure unit -- Normal Close Event\r\n    Just e | 1006 <- WebSocket.CloseEvent.code e -> pure unit -- No Close status code specified - we closed the socket ourselves\r\n    Just e -> failwith $ WebSocket.CloseEvent.reason e\r\n    Nothing -> do\r\n      logDebugErr \"web sockets onCloseCall responded to an Event that wasn't an onClose Event\"\r\n      failwith \"Unable to download data at this time\"\r\n\r\n  where\r\n  failwith reason = do\r\n    logDebugErr (\"web socket for \" <> task <> \" failed with \" <> reason)\r\n    window >>= alert (task <> \" failed with \" <> reason)\r\n    reportStatus $ Left $ error reason\r\n\r\nonErrorCall :: ∀ a. String -> (Either Error a -> Effect Unit) -> Event -> Effect Unit\r\nonErrorCall task reportStatus _event = launchAffWithHandler (const reportGenericError) do\r\n  -- https://developer.mozilla.org/en-US/docs/Web/API/WebSockets_API/Writing_WebSocket_client_applications#connection_errors\r\n  -- onerror can run before onclose, but onclose is the event that contains all the information about why it was closed.\r\n  -- Our strategy is to just wait half a second before running the handler so that onclose has a chance to run first.\r\n  Aff.delay $ Milliseconds 500.0\r\n  liftEffect $ reportGenericError\r\n\r\n  where\r\n  message = \"An unspecified error occurred while attempting download data for \" <> task\r\n  reportGenericError = do\r\n    logDebugErr $ \"web sockets: \" <> message\r\n    window >>= alert message\r\n    reportStatus $ Left $ error message\r\n\r\n-- | Opens a websocket channel to the server and passes along the requested URL.\r\n-- | Executes `handleMessage` with the server response, and executes `reportStatus` to update any UI.\r\nrequestViaWebSocketsWithParams :: ∀ @a. ReadableMessageEvent a => String -> String -> Json -> Aff a \r\nrequestViaWebSocketsWithParams task url parameters = do\r\n  ws <- liftEffect $ webSocketFromURL url\r\n  fiber <- forkAff $ makeAff \\callback -> do\r\n    onMessage <- eventListener (onMessageCall callback ws)\r\n    onClose <- eventListener (onCloseCall task callback)\r\n    onError <- eventListener (onErrorCall task callback)\r\n    \r\n    let eventTarget = WebSocket.toEventTarget ws\r\n    addEventListener WebSocket.Event.onMessage onMessage false eventTarget\r\n    addEventListener WebSocket.Event.onClose onClose false eventTarget\r\n    addEventListener WebSocket.Event.onError onError false eventTarget\r\n\r\n    pure nonCanceler\r\n\r\n  waitUntilConnected ws\r\n  liftEffect $ WebSocket.sendString ws (stringify parameters)\r\n  joinFiber fiber\r\n\r\n-- | Opens a websocket channel to the server and passes along the requested URL.\r\nrequestViaWebSockets :: ∀ @a. ReadableMessageEvent a => String -> String -> Aff a \r\nrequestViaWebSockets task url = makeAff \\callback -> do\r\n  ws <- webSocketFromURL url\r\n  onMessage <- eventListener (onMessageCall callback ws )\r\n  onClose <- eventListener (onCloseCall task callback)\r\n  onError <- eventListener (onErrorCall task callback)\r\n  let eventTarget = WebSocket.toEventTarget ws\r\n  addEventListener WebSocket.Event.onMessage onMessage false eventTarget\r\n  addEventListener WebSocket.Event.onClose onClose false eventTarget\r\n  addEventListener WebSocket.Event.onError onError false eventTarget\r\n\r\n  pure nonCanceler\r\n",      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs",      version = 0    }  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Got new config (client push)",    type = 4  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Going to start purs IDE server",    type = 3  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  id = 0,  jsonrpc = "2.0",  method = "window/workDoneProgress/create",  params = {    token = "6005603c-278d-4202-8630-dc0649233671"  }}
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "Got new config (client push)"
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "Going to start purs IDE server"
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:403    "server_request: callback result"   {  result = vim.NIL,  status = true}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:284    "rpc.send"  {  id = 0,  jsonrpc = "2.0",  result = vim.NIL}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Got new config (client push)",    type = 4  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Not starting server, already started",    type = 4  }}
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "Got new config (client push)"
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "Not starting server, already started"
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "$/progress",  params = {    token = "6005603c-278d-4202-8630-dc0649233671",    value = {      cancellable = true,      kind = "begin",      title = "Starting PureScript IDE server"    }  }}
[DEBUG][2023-11-03 17:04:48] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Using sources from psc-package/spago packages (PURS_IDE_SOURCES not set)",    type = 3  }}
[INFO][2023-11-03 17:04:48] ...lsp/handlers.lua:539 "Using sources from psc-package/spago packages (PURS_IDE_SOURCES not set)"
[DEBUG][2023-11-03 17:04:49] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Using PATH env variable value: C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Program Files\\PowerShell\\7;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\wbin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files\\dotnet;C:\\Program Files (x86)\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\DTS\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Intel\\WiFi\\bin;C:\\Program Files\\Common Files\\Intel\\WirelessCommon;C:\\Program Files (x86)\\Microsoft SQL Server\\150\\DTS\\Binn;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Azure Data Studio\\bin;C:\\Program Files\\GitHub CLI;C:\\Program Files\\TortoiseGit\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\PowerShell\\7;C:\\Program Files\\nodejs;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Program Files\\PowerShell\\7;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\wbin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files\\dotnet;C:\\Program Files (x86)\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\DTS\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Intel\\WiFi\\bin;C:\\Program Files\\Common Files\\Intel\\WirelessCommon;C:\\Program Files (x86)\\Microsoft SQL Server\\150\\DTS\\Binn;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Azure Data Studio\\bin;C:\\Program Files\\TortoiseGit\\bin;C:\\Program Files\\GitHub CLI;C:\\Program Files\\Git\\cmd;C:\\Program Files\\nodejs;C:\\Program Files\\PowerShell\\7;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Program Files (x86)\\dotnet;C:\\Users\\nathan.wilson\\Miniconda3\\condabin;C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\170\\Tools\\Binn;C:\\Users\\nathan.wilson\\.cargo\\bin;C:\\Users\\nathan.wilson\\AppData\\Roaming\\local\\bin;C:\\Users\\nathan.wilson\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\nathan.wilson\\.dotnet\\tools;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\Common7\\IDE\\CommonExtensions\\Microsoft\\FSharp;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\MSBuild\\Current\\Bin;C:\\Program Files\\Paket;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\MSBuild\\Current\\Bin\\Roslyn;C:\\Program Files\\Git;C:\\Program Files (x86)\\NuGet;C:\\Program Files (x86)\\ChromeDriver;C:\\idris;C:\\Program Files\\PerfView;C:\\Program Files\\SQLite;C:\\;C:\\Program Files (x86)\\Vim\\vim82;C:\\Users\\nathan.wilson\\AppData\\Local\\Pandoc;C:\\Users\\nathan.wilson\\AppData\\Local\\qutebrowser;C:\\Users\\nathan.wilson\\AppData\\Roaming\\Spotify;C:\\Program Files (x86)\\GitHub CLI;C:\\Program Files (x86)\\Git Credential Manager Core;C:\\Program Files (x86)\\Google\\Chrome\\Application;C:\\Program Files (x86)\\Microsoft\\Edge\\Application;C:\\Program Files\\summon;C:\\Program Files\\heroku\\bin;C:\\Program Files\\PostgreSQL\\12\\bin;C:\\Program Files\\Git\\bin;C:\\Program Files\\newlisp;C:\\Users\\nathan.wilson\\AppData\\Roaming\\npm;C:\\Program Files\\sqlpackage;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\oh-my-posh\\bin;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\oh-my-posh\\themes;G:\\My Drive\\Scripts\\Windows;C:\\ghcup\\bin;C:\\Users\\nathan.wilson\\.dotnet\\tools;C:\\Users\\nathan.wilson\\AppData\\Local\\mambaforge\\Scripts;C:\\Program Files\\Neovim\\bin;C:\\Program Files\\Neovim\\bin;C:\\Program Files\\Neovim\\bin",    type = 3  }}
[INFO][2023-11-03 17:04:49] ...lsp/handlers.lua:539 "Using PATH env variable value: C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Program Files\\PowerShell\\7;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\wbin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files\\dotnet;C:\\Program Files (x86)\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\DTS\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Intel\\WiFi\\bin;C:\\Program Files\\Common Files\\Intel\\WirelessCommon;C:\\Program Files (x86)\\Microsoft SQL Server\\150\\DTS\\Binn;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Azure Data Studio\\bin;C:\\Program Files\\GitHub CLI;C:\\Program Files\\TortoiseGit\\bin;C:\\Program Files\\Git\\cmd;C:\\Program Files\\PowerShell\\7;C:\\Program Files\\nodejs;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Program Files\\PowerShell\\7;C:\\Program Files (x86)\\Common Files\\Oracle\\Java\\javapath;C:\\Program Files (x86)\\Microsoft SDKs\\Azure\\CLI2\\wbin;C:\\WINDOWS\\system32;C:\\WINDOWS;C:\\WINDOWS\\System32\\Wbem;C:\\WINDOWS\\System32\\WindowsPowerShell\\v1.0;C:\\WINDOWS\\System32\\OpenSSH;C:\\Program Files\\dotnet;C:\\Program Files (x86)\\Microsoft SQL Server\\Client SDK\\ODBC\\130\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\DTS\\Binn;C:\\Program Files (x86)\\Microsoft SQL Server\\140\\Tools\\Binn\\ManagementStudio;C:\\Program Files\\Microsoft SQL Server\\130\\Tools\\Binn;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\Microsoft VS Code\\bin;C:\\Program Files\\Microsoft VS Code\\bin;C:\\Program Files\\Intel\\WiFi\\bin;C:\\Program Files\\Common Files\\Intel\\WirelessCommon;C:\\Program Files (x86)\\Microsoft SQL Server\\150\\DTS\\Binn;C:\\ProgramData\\chocolatey\\bin;C:\\Program Files\\Azure Data Studio\\bin;C:\\Program Files\\TortoiseGit\\bin;C:\\Program Files\\GitHub CLI;C:\\Program Files\\Git\\cmd;C:\\Program Files\\nodejs;C:\\Program Files\\PowerShell\\7;C:\\Program Files\\Docker\\Docker\\resources\\bin;C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Users\\nathan.wilson\\Miniconda3;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\mingw-w64\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\usr\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Library\\bin;C:\\Users\\nathan.wilson\\Miniconda3\\Scripts;C:\\Users\\nathan.wilson\\Miniconda3\\bin;C:\\Program Files (x86)\\dotnet;C:\\Users\\nathan.wilson\\Miniconda3\\condabin;C:\\Program Files\\Microsoft SQL Server\\Client SDK\\ODBC\\170\\Tools\\Binn;C:\\Users\\nathan.wilson\\.cargo\\bin;C:\\Users\\nathan.wilson\\AppData\\Roaming\\local\\bin;C:\\Users\\nathan.wilson\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\nathan.wilson\\.dotnet\\tools;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\Common7\\IDE\\CommonExtensions\\Microsoft\\FSharp;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\MSBuild\\Current\\Bin;C:\\Program Files\\Paket;C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Professional\\MSBuild\\Current\\Bin\\Roslyn;C:\\Program Files\\Git;C:\\Program Files (x86)\\NuGet;C:\\Program Files (x86)\\ChromeDriver;C:\\idris;C:\\Program Files\\PerfView;C:\\Program Files\\SQLite;C:\\;C:\\Program Files (x86)\\Vim\\vim82;C:\\Users\\nathan.wilson\\AppData\\Local\\Pandoc;C:\\Users\\nathan.wilson\\AppData\\Local\\qutebrowser;C:\\Users\\nathan.wilson\\AppData\\Roaming\\Spotify;C:\\Program Files (x86)\\GitHub CLI;C:\\Program Files (x86)\\Git Credential Manager Core;C:\\Program Files (x86)\\Google\\Chrome\\Application;C:\\Program Files (x86)\\Microsoft\\Edge\\Application;C:\\Program Files\\summon;C:\\Program Files\\heroku\\bin;C:\\Program Files\\PostgreSQL\\12\\bin;C:\\Program Files\\Git\\bin;C:\\Program Files\\newlisp;C:\\Users\\nathan.wilson\\AppData\\Roaming\\npm;C:\\Program Files\\sqlpackage;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\oh-my-posh\\bin;C:\\Users\\nathan.wilson\\AppData\\Local\\Programs\\oh-my-posh\\themes;G:\\My Drive\\Scripts\\Windows;C:\\ghcup\\bin;C:\\Users\\nathan.wilson\\.dotnet\\tools;C:\\Users\\nathan.wilson\\AppData\\Local\\mambaforge\\Scripts;C:\\Program Files\\Neovim\\bin;C:\\Program Files\\Neovim\\bin;C:\\Program Files\\Neovim\\bin"
[DEBUG][2023-11-03 17:04:49] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Using found IDE server bin (npm-bin: false): C:\\Users\\nathan.wilson\\AppData\\Roaming\\npm\\purs.CMD: 0.15.10",    type = 3  }}
[DEBUG][2023-11-03 17:04:49] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Starting IDE server on port 15025 with cwd c:\\Git\\WebPlatform",    type = 3  }}
[INFO][2023-11-03 17:04:49] ...lsp/handlers.lua:539 "Using found IDE server bin (npm-bin: false): C:\\Users\\nathan.wilson\\AppData\\Roaming\\npm\\purs.CMD: 0.15.10"
[INFO][2023-11-03 17:04:49] ...lsp/handlers.lua:539 "Starting IDE server on port 15025 with cwd c:\\Git\\WebPlatform"
[DEBUG][2023-11-03 17:04:49] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Started IDE server (port 15025)",    type = 4  }}
[DEBUG][2023-11-03 17:04:49] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Retrying starting server after 500ms: Error: connect ECONNREFUSED 127.0.0.1:15025\n    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16)",    type = 3  }}
[INFO][2023-11-03 17:04:49] ...lsp/handlers.lua:539 "Started IDE server (port 15025)"
[INFO][2023-11-03 17:04:49] ...lsp/handlers.lua:539 "Retrying starting server after 500ms: Error: connect ECONNREFUSED 127.0.0.1:15025\n    at TCPConnectWrap.afterConnect [as oncomplete] (node:net:1595:16)"
[DEBUG][2023-11-03 17:04:50] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "[Info] cachedb was changed from: Nothing, to: Just 2023-11-03 20:50:30.1459345 UTC @(main:Command.Ide app\\Command\\Ide.hs:199:24)\n",    type = 3  }}
[INFO][2023-11-03 17:04:50] ...lsp/handlers.lua:539 "[Info] cachedb was changed from: Nothing, to: Just 2023-11-03 20:50:30.1459345 UTC @(main:Command.Ide app\\Command\\Ide.hs:199:24)\n"
[DEBUG][2023-11-03 17:04:51] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "textDocument/didChange",  params = {    contentChanges = { {        range = {          ["end"] = {            character = 36,            line = 28          },          start = {            character = 35,            line = 28          }        },        rangeLength = 1,        text = ""      } },    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs",      version = 4    }  }}
[DEBUG][2023-11-03 17:04:52] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "textDocument/didSave",  params = {    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"    }  }}
[DEBUG][2023-11-03 17:05:05] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "$/progress",  params = {    token = "6005603c-278d-4202-8630-dc0649233671",    value = {      kind = "end"    }  }}
[DEBUG][2023-11-03 17:05:05] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "textDocument/diagnosticsBegin",  params = { vim.NIL }}
[DEBUG][2023-11-03 17:05:07] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Getting diagnostics took: (Just (Milliseconds 1898.0))",    type = 3  }}
[INFO][2023-11-03 17:05:07] ...lsp/handlers.lua:539 "Getting diagnostics took: (Just (Milliseconds 1898.0))"
[DEBUG][2023-11-03 17:05:07] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = 'Built with 0/0 issues for file: "c:\\\\Git\\\\WebPlatform\\\\frontend\\\\src\\\\GasDay\\\\Utilities\\\\WebSockets.purs", all diagnostic files: []',    type = 3  }}
[DEBUG][2023-11-03 17:05:07] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "textDocument/publishDiagnostics",  params = {    diagnostics = {},    uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"  }}
[DEBUG][2023-11-03 17:05:07] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "textDocument/diagnosticsEnd",  params = { vim.NIL }}
[INFO][2023-11-03 17:05:07] ...lsp/handlers.lua:539 'Built with 0/0 issues for file: "c:\\\\Git\\\\WebPlatform\\\\frontend\\\\src\\\\GasDay\\\\Utilities\\\\WebSockets.purs", all diagnostic files: []'
[DEBUG][2023-11-03 17:05:13] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = '[Warn] Failed to resolve reexports for GasDay.PreludePrim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Nub"})Prim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Union"})\n',    type = 3  }}
[INFO][2023-11-03 17:05:13] ...lsp/handlers.lua:539 '[Warn] Failed to resolve reexports for GasDay.PreludePrim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Nub"})Prim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Union"})\n'
[DEBUG][2023-11-03 17:05:13] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = '[Warn] Failed to resolve reexports for GasDay.PreludePrim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Nub"})Prim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Union"})\n',    type = 3  }}
[INFO][2023-11-03 17:05:13] ...lsp/handlers.lua:539 '[Warn] Failed to resolve reexports for GasDay.PreludePrim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Nub"})Prim.RowTypeClassRef (SourceSpan {spanName = "frontend\\\\src\\\\GasDay\\\\Prelude.purs", spanStart = SourcePos {sourcePosLine = 1, sourcePosColumn = 1}, spanEnd = SourcePos {sourcePosLine = 65, sourcePosColumn = 64}}) (ProperName {runProperName = "Union"})\n'
[DEBUG][2023-11-03 17:05:24] .../lua/vim/lsp.lua:1391   "LSP[purescriptls]" "client.request"    1   "textDocument/hover"    {  position = {    character = 31,    line = 28  },  textDocument = {    uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"  }}   <function 1>    1
[DEBUG][2023-11-03 17:05:24] .../vim/lsp/rpc.lua:284    "rpc.send"  {  id = 2,  jsonrpc = "2.0",  method = "textDocument/hover",  params = {    position = {      character = 31,      line = 28    },    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"    }  }}
[DEBUG][2023-11-03 17:05:24] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  id = 2,  jsonrpc = "2.0",  result = {    contents = {      kind = "markdown",      value = "```purescript\nlocation :: Window → Effect Location\n```\n"    }  }}
[DEBUG][2023-11-03 17:05:28] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "textDocument/didChange",  params = {    contentChanges = { {        range = {          ["end"] = {            character = 35,            line = 28          },          start = {            character = 35,            line = 28          }        },        rangeLength = 0,        text = "n"      } },    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs",      version = 6    }  }}
[DEBUG][2023-11-03 17:05:28] .../lua/vim/lsp.lua:1391   "LSP[purescriptls]" "client.request"    1   "textDocument/completion"   {  context = {    triggerKind = 1  },  position = {    character = 36,    line = 28  },  textDocument = {    uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"  }}   <function 1>    1
[DEBUG][2023-11-03 17:05:28] .../vim/lsp/rpc.lua:284    "rpc.send"  {  id = 3,  jsonrpc = "2.0",  method = "textDocument/completion",  params = {    context = {      triggerKind = 1    },    position = {      character = 36,      line = 28    },    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"    }  }}
[DEBUG][2023-11-03 17:05:28] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "[Warn] Listing the loaded modules command is DEPRECATED, use the completion command and filter it to modules instead\n",    type = 3  }}
[DEBUG][2023-11-03 17:05:28] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  id = 3,  jsonrpc = "2.0",  result = {    isIncomplete = false,    items = {}  }}
[INFO][2023-11-03 17:05:28] ...lsp/handlers.lua:539 "[Warn] Listing the loaded modules command is DEPRECATED, use the completion command and filter it to modules instead\n"
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:284    "rpc.send"  {  jsonrpc = "2.0",  method = "textDocument/didSave",  params = {    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"    }  }}
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "textDocument/diagnosticsBegin",  params = { vim.NIL }}
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = "Getting diagnostics took: (Just (Milliseconds 398.0))",    type = 3  }}
[INFO][2023-11-03 17:05:30] ...lsp/handlers.lua:539 "Getting diagnostics took: (Just (Milliseconds 398.0))"
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = 'Built with 0/1 issues for file: "c:\\\\Git\\\\WebPlatform\\\\frontend\\\\src\\\\GasDay\\\\Utilities\\\\WebSockets.purs", all diagnostic files: ["c:\\\\Git\\\\WebPlatform\\\\frontend\\\\src\\\\GasDay\\\\Utilities\\\\WebSockets.purs"]',    type = 3  }}
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "window/logMessage",  params = {    message = 'Unmatched diagnostics: (fromFoldable [(Tuple DocumentUri "file:///c%3A/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs" [{ code: "UnknownName", message: "  Unknown value Window.locationn\\n", range: Range(Position(28,20),Position(28,36)), severity: 1, source: "PureScript" }])])',    type = 3  }}
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "textDocument/publishDiagnostics",  params = {    diagnostics = {},    uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"  }}
[DEBUG][2023-11-03 17:05:30] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  jsonrpc = "2.0",  method = "textDocument/diagnosticsEnd",  params = { vim.NIL }}
[INFO][2023-11-03 17:05:30] ...lsp/handlers.lua:539 'Built with 0/1 issues for file: "c:\\\\Git\\\\WebPlatform\\\\frontend\\\\src\\\\GasDay\\\\Utilities\\\\WebSockets.purs", all diagnostic files: ["c:\\\\Git\\\\WebPlatform\\\\frontend\\\\src\\\\GasDay\\\\Utilities\\\\WebSockets.purs"]'
[INFO][2023-11-03 17:05:30] ...lsp/handlers.lua:539 'Unmatched diagnostics: (fromFoldable [(Tuple DocumentUri "file:///c%3A/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs" [{ code: "UnknownName", message: "  Unknown value Window.locationn\\n", range: Range(Position(28,20),Position(28,36)), severity: 1, source: "PureScript" }])])'
[DEBUG][2023-11-03 17:05:38] .../lua/vim/lsp.lua:1391   "LSP[purescriptls]" "client.request"    1   "textDocument/hover"    {  position = {    character = 32,    line = 28  },  textDocument = {    uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"  }}   <function 1>    1
[DEBUG][2023-11-03 17:05:38] .../vim/lsp/rpc.lua:284    "rpc.send"  {  id = 4,  jsonrpc = "2.0",  method = "textDocument/hover",  params = {    position = {      character = 32,      line = 28    },    textDocument = {      uri = "file:///C:/Git/WebPlatform/frontend/src/GasDay/Utilities/WebSockets.purs"    }  }}
[DEBUG][2023-11-03 17:05:38] .../vim/lsp/rpc.lua:387    "rpc.receive"   {  id = 4,  jsonrpc = "2.0"}
nwolverson commented 10 months ago

That's interesting, I made an issue a long time ago suggesting there may be some windows path problems and never went anywhere with it. Nobody really confirmed any issue and of course I don't write code on windows. Some suspicious \\\\ (edit: actually think those are in nested quotes and fine), the URIs used to identify files between editor and LSP should be fine as-is but I can imagine paths are screwed up somewhere else

nwolverson commented 10 months ago

Possibly URI normalisation issue, I see file:///c%3A/Git vs "file:///C:/Git. I suspect this is an issue in the language server (at least that is where the failed matching is taking place), I will look into it

ntwilson commented 10 months ago

I appreciate you looking into it! And I'm happy to test anything out. It's weird that it was working regularly for like half a year, and then just stopped. I'm not convinced that it's not related to something weird on my system. Now that I figured out that it works with WSL, the issue is much less of a blocker for me.