Improvments based on official vscode-R's PR #1708 and #1717#11
Conversation
- delay idle LSP shutdown by 30 seconds - prevent duplicate starts and serialize stop/restart - reuse workspace servers for Quarto R chunks - restore scheme selectors and clean up clients/listeners
…ession architecture - upgrade AG Grid Community to v35.2.1 and adopt v35 APIs - improve typed sorting, filtering, bigint and logical NA handling - support native Arrow and Polars data frames - remove the data.table dependency - add fetch status and scrollbar row-position feedback
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 05dc7842d8
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| body = jsonlite::toJSON( | ||
| response, | ||
| auto_unbox = TRUE, | ||
| force = TRUE, | ||
| na = if (identical(request$type, "dataview_fetch_rows")) { | ||
| "string" | ||
| } else { | ||
| "null" | ||
| } | ||
| force = TRUE | ||
| ) |
There was a problem hiding this comment.
Preserve NA rendering in fetched data-view rows
For dataview_fetch_rows, this now relies on jsonlite::toJSON() defaults, which encode/omit missing data-frame fields instead of sending the literal "NA" that the data viewer previously used. Because the webview passes m.rows straight to AG Grid, missing values in character/logical/date columns show up as blank/undefined again, regressing the existing behavior that distinguished R NA from empty cells; keep an explicit row-value encoding or render null/undefined as NA client-side.
Useful? React with 👍 / 👎.
| const sourceFolder = workspace.getWorkspaceFolder(document.uri); | ||
| const matchesWorkspace = (candidate: TextDocument): boolean => | ||
| this.isQuartoDocument(candidate) && | ||
| (!sourceFolder || | ||
| workspace.getWorkspaceFolder(candidate.uri)?.uri.toString(true) === sourceFolder.uri.toString(true)); |
There was a problem hiding this comment.
Restrict Quarto virtual docs to the correct workspace
When this is called for Quarto .vdoc.*.r files, those files are usually in an R temp directory, so workspace.getWorkspaceFolder(document.uri) is undefined and the predicate accepts any open Quarto document. In a multi-root or multi-Quarto session, a chunk virtual document can therefore be associated with whichever .qmd is active/visible rather than its real parent, routing LSP notifications to the wrong language server.
Useful? React with 👍 / 👎.
No description provided.