From b718a889d20705c6b1b850597380adae3f35adcf Mon Sep 17 00:00:00 2001 From: seem Date: Mon, 15 Jun 2026 17:46:41 +0200 Subject: [PATCH 1/5] remove stale includes that cross project boundaries --- packages/editor-ui/tsconfig.json | 2 +- packages/quarto-core/tsconfig.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/editor-ui/tsconfig.json b/packages/editor-ui/tsconfig.json index b67216f3a..89232425e 100644 --- a/packages/editor-ui/tsconfig.json +++ b/packages/editor-ui/tsconfig.json @@ -1,7 +1,7 @@ { "exclude": ["node_modules"], "extends": "tsconfig/base.json", - "include": ["src", "../ui-widgets/src/dialog.ts"], + "include": ["src"], "compilerOptions": { "jsx": "react" } diff --git a/packages/quarto-core/tsconfig.json b/packages/quarto-core/tsconfig.json index 4049f5435..aad794c26 100644 --- a/packages/quarto-core/tsconfig.json +++ b/packages/quarto-core/tsconfig.json @@ -1,5 +1,5 @@ { "exclude": ["node_modules"], "extends": "tsconfig/base.json", - "include": ["src", "../core/src/markdownit"] + "include": ["src"] } From 07e1a2d8deb0132aacdcafa8eff7950b3d09ddcd Mon Sep 17 00:00:00 2001 From: seem Date: Mon, 15 Jun 2026 17:46:58 +0200 Subject: [PATCH 2/5] update positron api npm package --- apps/vscode/package.json | 2 +- yarn.lock | 36 ++++++++++++++++++++++++------------ 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/apps/vscode/package.json b/apps/vscode/package.json index bcd715d53..a00211616 100644 --- a/apps/vscode/package.json +++ b/apps/vscode/package.json @@ -1516,7 +1516,7 @@ "nanoid": "^4.0.0", "p-queue": "^8.0.1", "picomatch": "^2.3.1", - "@posit-dev/positron": "^0.1.0", + "@posit-dev/positron": "^0.2.4", "quarto-core": "*", "quarto-lsp": "*", "quarto-utils": "*", diff --git a/yarn.lock b/yarn.lock index d979aeb1f..dc0491fa0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2091,10 +2091,10 @@ resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz" integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg== -"@posit-dev/positron@^0.1.0": - version "0.1.8" - resolved "https://registry.npmjs.org/@posit-dev/positron/-/positron-0.1.8.tgz" - integrity sha512-pIHdlkCb4BWgTovPS/AXEcoPXEXqafaJ3nQWAzArHCV+sZZpxOWLMYrKpBDXBM4piaggQ7wtvMaw/LI4ZaePSw== +"@posit-dev/positron@^0.2.4": + version "0.2.4" + resolved "https://registry.yarnpkg.com/@posit-dev/positron/-/positron-0.2.4.tgz#7cbd2601963f4df49b45f58815c7db721c7118b6" + integrity sha512-9dqxnWdPp4deJqWAatQravonSOiUYuP9+gRkwcDrmffdodalIjb9N3fsU2T/KOzW9iAnuoufUBLDyyEbWPZwhg== "@reduxjs/toolkit@^1.9.0": version "1.9.7" @@ -2891,10 +2891,10 @@ acorn-jsx@^5.3.1, acorn-jsx@^5.3.2: resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@8, acorn-walk@^8.1.1, acorn-walk@^8.2.0: - version "8.3.4" - resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" - integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== +acorn-walk@8.3.5: + version "8.3.5" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.5.tgz#8a6b8ca8fc5b34685af15dabb44118663c296496" + integrity sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw== dependencies: acorn "^8.11.0" @@ -2903,16 +2903,28 @@ acorn-walk@^7.0.0: resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz" integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@8, acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.0, acorn@^8.9.0: - version "8.15.0" - resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" - integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== +acorn-walk@^8.1.1, acorn-walk@^8.2.0: + version "8.3.4" + resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.4.tgz" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@8.16.0: + version "8.16.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.16.0.tgz#4ce79c89be40afe7afe8f3adb902a1f1ce9ac08a" + integrity sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw== acorn@^7.1.0, acorn@^7.1.1, acorn@^7.4.0: version "7.4.1" resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.8.0, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + agent-base@6: version "6.0.2" resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz" From 60fcd48b191809a242e750a510183a78d0fb4f38 Mon Sep 17 00:00:00 2001 From: seem Date: Mon, 15 Jun 2026 17:47:36 +0200 Subject: [PATCH 3/5] use positron npm package --- apps/vscode/src/@types/hooks.d.ts | 113 ------------------------------ apps/vscode/src/host/hooks.ts | 22 +++--- 2 files changed, 9 insertions(+), 126 deletions(-) delete mode 100644 apps/vscode/src/@types/hooks.d.ts diff --git a/apps/vscode/src/@types/hooks.d.ts b/apps/vscode/src/@types/hooks.d.ts deleted file mode 100644 index 38e8beb9e..000000000 --- a/apps/vscode/src/@types/hooks.d.ts +++ /dev/null @@ -1,113 +0,0 @@ - - - -declare module 'positron' { - - import * as vscode from 'vscode'; - - export interface PositronApi { - version: string; - runtime: PositronRuntime; - languages: PositronLanguages; - window: PositronWindow; - StatementRangeSyntaxError: typeof StatementRangeSyntaxError; - } - - export interface LanguageRuntimeSession { - readonly runtimeMetadata: { - readonly languageId: string; - }; - } - - export interface PositronRuntime { - executeCode( - languageId: string, - code: string, - focus: boolean, - allowIncomplete: boolean, - mode?: string, - errorBehavior?: string, - observer?: object, - sessionId?: string, - documentUri?: vscode.Uri, - executionMetadata?: Record - ): Thenable; - - executeInlineCell( - documentUri: vscode.Uri, - cellRanges: vscode.Range[], - executionMetadata?: Record[] - ): Thenable; - - getForegroundSession(): Thenable; - } - - export interface PositronLanguages { - registerStatementRangeProvider( - selector: vscode.DocumentSelector, - provider: StatementRangeProvider - ): vscode.Disposable; - registerHelpTopicProvider( - selector: vscode.DocumentSelector, - provider: HelpTopicProvider - ): vscode.Disposable; - } - - export interface StatementRangeProvider { - provideStatementRange( - document: vscode.TextDocument, - position: vscode.Position, - token: vscode.CancellationToken - ): vscode.ProviderResult; - } - - export interface HelpTopicProvider { - provideHelpTopic( - document: vscode.TextDocument, - position: vscode.Position, - token: vscode.CancellationToken - ): vscode.ProviderResult; - } - - export interface StatementRange { - readonly range: vscode.Range; - readonly code?: string; - } - - export class StatementRangeSyntaxError extends Error { - readonly line?: number; - constructor(line?: number); - } - - export interface PositronWindow { - createPreviewPanel( - viewType: string, - title: string, - preserveFocus?: boolean, - options?: PreviewOptions - ): PreviewPanel; - } - - export interface PreviewOptions { - readonly enableScripts?: boolean; - readonly enableForms?: boolean; - readonly localResourceRoots?: readonly vscode.Uri[]; - readonly portMapping?: readonly vscode.WebviewPortMapping[]; - } - - export interface PreviewPanel { - readonly viewType: string; - title: string; - readonly webview: vscode.Webview; - readonly active: boolean; - readonly visible: boolean; - readonly onDidChangeViewState: vscode.Event; - readonly onDidDispose: vscode.Event; - reveal(preserveFocus?: boolean): void; - dispose(): any; - } - - export interface PreviewPanelOnDidChangeViewStateEvent { - readonly previewPanel: PreviewPanel; - } -} diff --git a/apps/vscode/src/host/hooks.ts b/apps/vscode/src/host/hooks.ts index e33c94a52..c99161789 100644 --- a/apps/vscode/src/host/hooks.ts +++ b/apps/vscode/src/host/hooks.ts @@ -16,9 +16,8 @@ */ import * as vscode from 'vscode'; -import * as hooks from 'positron'; +import * as positron from 'positron'; -import semver from "semver"; import { ExtensionHost, HostWebviewPanel, HostStatementRangeProvider, HostHelpTopicProvider } from '.'; import { CellExecutor, cellExecutorForLanguage, executableLanguages, isKnitrDocument, pythonWithReticulate } from './executors'; import { ExecuteQueue } from './execute-queue'; @@ -26,6 +25,7 @@ import { MarkdownEngine } from '../markdown/engine'; import { virtualDoc, adjustedPosition, unadjustedRange, withVirtualDocUri, VirtualDocStyle, unadjustedLine } from "../vdoc/vdoc"; import { Position, Range } from 'vscode'; import { Uri } from 'vscode'; +import { tryAcquirePositronApi } from '@posit-dev/positron'; /** * Check if inline output is enabled in Positron settings. @@ -37,16 +37,12 @@ export function isInlineOutputEnabled(): boolean { .get("enabled", false); } -declare global { - function acquirePositronApi(): hooks.PositronApi; -} - -let api: hooks.PositronApi | null | undefined; +let api: typeof positron | null | undefined; -export function hooksApi(): hooks.PositronApi | null { +export function hooksApi(): typeof api { if (api === undefined) { try { - api = acquirePositronApi(); + api = tryAcquirePositronApi(); } catch { api = null; } @@ -98,7 +94,7 @@ export function hooksExtensionHost(): ExtensionHost { undefined, // The error behavior undefined, // An optional observer undefined, // The specific session ID in which to execute - editorUri, // The document URI + editorUri, // The document URI metadata ); } @@ -187,7 +183,7 @@ export function hooksExtensionHost(): ExtensionHost { class HookWebviewPanel implements HostWebviewPanel { - constructor(private readonly panel_: hooks.PreviewPanel) { } + constructor(private readonly panel_: positron.PreviewPanel) { } get webview() { return this.panel_.webview; }; get visible() { return this.panel_.visible; }; @@ -211,7 +207,7 @@ class EmbeddedStatementRangeProvider implements HostStatementRangeProvider { async provideStatementRange( document: vscode.TextDocument, position: vscode.Position, - token: vscode.CancellationToken): Promise { + token: vscode.CancellationToken): Promise { const vdoc = await virtualDoc(document, position, this._engine, VirtualDocStyle.Block); if (!vdoc) { @@ -220,7 +216,7 @@ class EmbeddedStatementRangeProvider implements HostStatementRangeProvider { return await withVirtualDocUri(vdoc, document.uri, "statementRange", async (uri: vscode.Uri) => { try { - const result = await vscode.commands.executeCommand( + const result = await vscode.commands.executeCommand( "vscode.executeStatementRangeProvider", uri, adjustedPosition(vdoc.language, position) From 9c40c4dfa6537bc15a418d1991bcd3492dcd2544 Mon Sep 17 00:00:00 2001 From: seem Date: Mon, 15 Jun 2026 17:57:25 +0200 Subject: [PATCH 4/5] use positron api npm package and rename accordingly --- apps/vscode/src/host/index.ts | 9 +-- .../vscode/src/host/{hooks.ts => positron.ts} | 55 +++++++------------ apps/vscode/src/main.ts | 2 +- apps/vscode/src/providers/cell/executors.ts | 10 ++-- apps/vscode/src/providers/editor/toggle.ts | 6 +- apps/vscode/src/providers/insert.ts | 4 +- 6 files changed, 35 insertions(+), 51 deletions(-) rename apps/vscode/src/host/{hooks.ts => positron.ts} (88%) diff --git a/apps/vscode/src/host/index.ts b/apps/vscode/src/host/index.ts index 3100c59fb..a3c823fd1 100644 --- a/apps/vscode/src/host/index.ts +++ b/apps/vscode/src/host/index.ts @@ -18,11 +18,12 @@ import vscode, { DocumentSelector, Disposable, WebviewPanelOptions, WebviewOptio import { CellExecutor, cellExecutorForLanguage, executableLanguages, isKnitrDocument } from "./executors"; import { EditorToolbarProvider } from "./toolbar"; -import { hasHooks, hooksExtensionHost } from "./hooks"; +import { positronExtensionHost } from "./positron"; import { TextDocument } from "vscode"; import { MarkdownEngine } from "../markdown/engine"; import { WebviewPanel } from "vscode"; import { ViewColumn } from "vscode"; +import { tryAcquirePositronApi } from "@posit-dev/positron"; export type { CellExecutor }; export type { EditorToolbarProvider, ToolbarItem, ToolbarCommand, ToolbarButton, ToolbarMenu } from './toolbar'; @@ -58,7 +59,7 @@ export interface HostHelpTopicProvider { /** * There are currently two extension hosts: - * - [`hooksExtensionHost`](./hooks.ts) for Positron + * - [`positronExtensionHost`](./hooks.ts) for Positron * - [`defaultExtensionHost`](./index.ts) otherwise */ export interface ExtensionHost { @@ -99,8 +100,8 @@ export interface ExtensionHost { } export function extensionHost(): ExtensionHost { - if (hasHooks()) { - return hooksExtensionHost(); + if (tryAcquirePositronApi()) { + return positronExtensionHost(); } else { return defaultExtensionHost(); } diff --git a/apps/vscode/src/host/hooks.ts b/apps/vscode/src/host/positron.ts similarity index 88% rename from apps/vscode/src/host/hooks.ts rename to apps/vscode/src/host/positron.ts index c99161789..6a8b15383 100644 --- a/apps/vscode/src/host/hooks.ts +++ b/apps/vscode/src/host/positron.ts @@ -1,5 +1,5 @@ /* - * hooks.ts + * positron.ts * * Positron-specific functionality. * @@ -37,24 +37,7 @@ export function isInlineOutputEnabled(): boolean { .get("enabled", false); } -let api: typeof positron | null | undefined; - -export function hooksApi(): typeof api { - if (api === undefined) { - try { - api = tryAcquirePositronApi(); - } catch { - api = null; - } - } - return api; -} - -export function hasHooks() { - return !!hooksApi(); -} - -export function hooksExtensionHost(): ExtensionHost { +export function positronExtensionHost(): ExtensionHost { return { // supported executable languages (we delegate to the default for langugaes // w/o runtimes so we support all languages) @@ -63,13 +46,13 @@ export function hooksExtensionHost(): ExtensionHost { cellExecutorForLanguage: async (language: string, document: vscode.TextDocument, engine: MarkdownEngine, silent?: boolean) : Promise => { switch (language) { - // use hooks for known runtimes + // use positron api for known runtimes case "python": case "csharp": case "r": return { execute: async (blocks: string[], editorUri?: vscode.Uri, executionMetadata?: Record[]): Promise => { - const runtime = hooksApi()?.runtime; + const runtime = tryAcquirePositronApi()?.runtime; if (runtime === undefined) { // Can't do anything without a runtime @@ -120,7 +103,7 @@ export function hooksExtensionHost(): ExtensionHost { return position; }, executeInlineCells: async (documentUri: vscode.Uri, cellRanges: Range[], executionMetadata?: Record[]): Promise => { - const runtime = hooksApi()?.runtime; + const runtime = tryAcquirePositronApi()?.runtime; if (runtime === undefined) { // Can't do anything without a runtime @@ -138,18 +121,18 @@ export function hooksExtensionHost(): ExtensionHost { }, registerStatementRangeProvider: (engine: MarkdownEngine): vscode.Disposable => { - const hooks = hooksApi(); - if (hooks) { - return hooks.languages.registerStatementRangeProvider('quarto', + const positronApi = tryAcquirePositronApi(); + if (positronApi) { + return positronApi.languages.registerStatementRangeProvider('quarto', new EmbeddedStatementRangeProvider(engine)); } return new vscode.Disposable(() => { }); }, registerHelpTopicProvider: (engine: MarkdownEngine): vscode.Disposable => { - const hooks = hooksApi(); - if (hooks) { - return hooks.languages.registerHelpTopicProvider('quarto', + const positronApi = tryAcquirePositronApi(); + if (positronApi) { + return positronApi.languages.registerHelpTopicProvider('quarto', new EmbeddedHelpTopicProvider(engine)); } return new vscode.Disposable(() => { }); @@ -163,7 +146,7 @@ export function hooksExtensionHost(): ExtensionHost { ): HostWebviewPanel => { // create preview panel - const panel = hooksApi()?.window.createPreviewPanel( + const panel = tryAcquirePositronApi()?.window.createPreviewPanel( viewType, title, preserveFocus, @@ -176,13 +159,13 @@ export function hooksExtensionHost(): ExtensionHost { )!; // adapt to host interface - return new HookWebviewPanel(panel); + return new PositronWebviewPanel(panel); } }; } -class HookWebviewPanel implements HostWebviewPanel { +class PositronWebviewPanel implements HostWebviewPanel { constructor(private readonly panel_: positron.PreviewPanel) { } get webview() { return this.panel_.webview; }; @@ -223,9 +206,9 @@ class EmbeddedStatementRangeProvider implements HostStatementRangeProvider { ); return { range: unadjustedRange(vdoc.language, result.range), code: result.code }; } catch (err) { - let hooks = hooksApi(); + let positronApi = tryAcquirePositronApi(); - if (!hooks) { + if (!positronApi) { throw err; } @@ -234,14 +217,14 @@ class EmbeddedStatementRangeProvider implements HostStatementRangeProvider { // We can't use `semver.lt()` because calendar versioning isn't compatible with semver due to the // leading `0` in `03`. Instead, we use lexicographic string comparison and rely on the year and // month to be zero padded so sorting always works correctly. - if (hooks.version < "2026.03.0") { + if (positronApi.version < "2026.03.0") { throw err; } - if (err instanceof hooks.StatementRangeSyntaxError) { + if (err instanceof positronApi.StatementRangeSyntaxError) { // Rethrow syntax error with unadjusted line number, so Positron's notification will // jump to the correct line - throw new hooks.StatementRangeSyntaxError(err.line ? unadjustedLine(vdoc.language, err.line) : undefined); + throw new positronApi.StatementRangeSyntaxError(err.line ? unadjustedLine(vdoc.language, err.line) : undefined); } else { // Rethrow unrecognized error throw err; diff --git a/apps/vscode/src/main.ts b/apps/vscode/src/main.ts index 0e2e12540..91a2dbfa5 100644 --- a/apps/vscode/src/main.ts +++ b/apps/vscode/src/main.ts @@ -34,7 +34,7 @@ import { activateEditor } from "./providers/editor/editor"; import { activateCopyFiles } from "./providers/copyfiles"; import { activateZotero } from "./providers/zotero/zotero"; import { extensionHost } from "./host"; -import { isInlineOutputEnabled } from "./host/hooks"; +import { isInlineOutputEnabled } from "./host/positron"; import { initQuartoContext, getSourceDescription } from "quarto-core"; import { configuredQuartoPath } from "./core/quarto"; import { activateDenoConfig } from "./providers/deno-config"; diff --git a/apps/vscode/src/providers/cell/executors.ts b/apps/vscode/src/providers/cell/executors.ts index 3a063e1f7..c6091a691 100644 --- a/apps/vscode/src/providers/cell/executors.ts +++ b/apps/vscode/src/providers/cell/executors.ts @@ -34,7 +34,7 @@ import { cellOptionsForToken, kExecuteEval } from "./options"; import { CellExecutor, ExtensionHost } from "../../host"; import { executableLanguages } from "../../host/executors"; -import { isInlineOutputEnabled } from "../../host/hooks"; +import { isInlineOutputEnabled } from "../../host/positron"; import { Position } from "vscode"; import { Uri } from "vscode"; @@ -101,10 +101,10 @@ export async function executeInteractive( // If inline output is enabled, the document has a URI, and the executor supports // inline execution, use that instead of the standard console execution if (isInlineOutputEnabled() && - !document.isUntitled && - ranges && - ranges.length > 0 && - executor.executeInlineCells) { + !document.isUntitled && + ranges && + ranges.length > 0 && + executor.executeInlineCells) { return await executor.executeInlineCells(document.uri, ranges, metadata); } return await executor.execute(blocks, !document.isUntitled ? document.uri : undefined, metadata); diff --git a/apps/vscode/src/providers/editor/toggle.ts b/apps/vscode/src/providers/editor/toggle.ts index 6e7681ebe..40fcbcbd1 100644 --- a/apps/vscode/src/providers/editor/toggle.ts +++ b/apps/vscode/src/providers/editor/toggle.ts @@ -18,8 +18,8 @@ import * as quarto from "quarto-core"; import { Command } from "../../core/command"; import { isQuartoDoc, kQuartoLanguageId } from "../../core/doc"; import { VisualEditorProvider } from "./editor"; -import { hasHooks } from "../../host/hooks"; import { toggleRenderOnSaveOverride } from "../context-keys"; +import { tryAcquirePositronApi } from "@posit-dev/positron"; export function determineMode(text: string, uri: Uri): string | undefined { let editorOpener = undefined; @@ -110,7 +110,7 @@ export async function reopenEditorInVisualMode( document: TextDocument, viewColumn?: ViewColumn ) { - if (hasHooks()) { + if (tryAcquirePositronApi()) { // note pending switch to visual VisualEditorProvider.recordPendingSwitchToVisual(document); // if document is untitled, force user to save first @@ -140,7 +140,7 @@ export async function reopenEditorInSourceMode( untitledContent?: string, viewColumn?: ViewColumn ) { - if (hasHooks()) { + if (tryAcquirePositronApi()) { // note pending switch to source VisualEditorProvider.recordPendingSwitchToSource(document); diff --git a/apps/vscode/src/providers/insert.ts b/apps/vscode/src/providers/insert.ts index fc1cfb6b8..6266ff89f 100644 --- a/apps/vscode/src/providers/insert.ts +++ b/apps/vscode/src/providers/insert.ts @@ -22,8 +22,8 @@ import { import { Command } from "../core/command"; import { isQuartoDoc } from "../core/doc"; import { MarkdownEngine } from "../markdown/engine"; -import { hooksApi } from "../host/hooks"; import { isExecutableLanguageBlock, languageBlockAtPosition, languageNameFromBlock } from "quarto-core"; +import { tryAcquirePositronApi } from "@posit-dev/positron"; export function insertCommands(engine: MarkdownEngine): Command[] { @@ -102,7 +102,7 @@ class InsertCodeCellCommand implements Command { // if no language found in document, fall back to Positron's active runtime const languages = ['python', 'r', 'julia', 'ojs', 'sql', 'bash', 'mermaid', 'dot']; if (!language) { - const session = await hooksApi()?.runtime.getForegroundSession(); + const session = await tryAcquirePositronApi()?.runtime.getForegroundSession(); const sessionLang = session?.runtimeMetadata.languageId ?? ""; if (languages.includes(sessionLang)) { language = sessionLang; From 7335946fc8f3f856e3fcf2dd0443b3244369a4a8 Mon Sep 17 00:00:00 2001 From: seem Date: Mon, 15 Jun 2026 17:59:22 +0200 Subject: [PATCH 5/5] remove unused code (bad merge conflict resolution) --- apps/vscode/src/lsp/client.ts | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/apps/vscode/src/lsp/client.ts b/apps/vscode/src/lsp/client.ts index e9b26ba16..6737fb3bd 100644 --- a/apps/vscode/src/lsp/client.ts +++ b/apps/vscode/src/lsp/client.ts @@ -538,21 +538,3 @@ function unadjustSymbolRanges( }; }); } - -/** - * Creates a diagnostic handler middleware that filters out diagnostics from virtual documents - * - * @returns A handler function for the middleware - */ -export function createDiagnosticFilter() { - return (uri: Uri, diagnostics: Diagnostic[], next: HandleDiagnosticsSignature) => { - // If this is not a virtual document, pass through all diagnostics - if (!isVirtualDoc(uri)) { - next(uri, diagnostics); - return; - } - - // For virtual documents, filter out all diagnostics - next(uri, []); - }; -}