diff --git a/apps/vscode/CHANGELOG.md b/apps/vscode/CHANGELOG.md index 11b8d824..ffed70d2 100644 --- a/apps/vscode/CHANGELOG.md +++ b/apps/vscode/CHANGELOG.md @@ -3,6 +3,7 @@ ## 1.122.0 (unreleased) - Change controls on Positron editor action bar and fix "Render on Save" behavior (). +- Turn off completions in visual mode in Positron, as a temporary stopgap until we can invest more in LSP features in the visual editor (). ## 1.121.0 (Release on 2025-05-02) diff --git a/apps/vscode/src/providers/editor/codeview.ts b/apps/vscode/src/providers/editor/codeview.ts index c352e3b7..65c9b847 100644 --- a/apps/vscode/src/providers/editor/codeview.ts +++ b/apps/vscode/src/providers/editor/codeview.ts @@ -45,6 +45,7 @@ import { kCodeViewGetCompletions, } from "editor-types"; +import { hasHooks } from "../../host/hooks"; import { embeddedLanguage } from "../../vdoc/languages"; import { virtualDocForCode } from "../../vdoc/vdoc"; import { vdocCompletions } from "../../vdoc/vdoc-completion"; @@ -73,48 +74,53 @@ export function vscodeCodeViewServer(_engine: MarkdownEngine, document: TextDocu } }, async codeViewCompletions(context: CodeViewCompletionContext): Promise { - // if this is yaml then call the lsp directly if (context.language === "yaml") { - return lspRequest(kCodeViewGetCompletions, [context]); + } - } else { - - // see if we have an embedded langaage - const language = embeddedLanguage(context.language); - if (language) { + // see if we have an embedded langaage + const language = embeddedLanguage(context.language); + if (!language) { + return { + items: [], + isIncomplete: false + }; + } - // if this is a yaml comment line then call the lsp - const line = context.code[context.selection.start.line]; - if (language.comment && line.startsWith(`${language.comment}| `)) { - return lspCellYamlOptionsCompletions(context, lspRequest); + // if this is a yaml comment line then call the lsp + const line = context.code[context.selection.start.line]; + if (language.comment && line.startsWith(`${language.comment}| `)) { + return lspCellYamlOptionsCompletions(context, lspRequest); + } - // otherwise delegate to vscode completion system - } else { - const vdoc = virtualDocForCode(context.code, language); - const completions = await vdocCompletions( - vdoc, - new Position( - context.selection.start.line, - context.selection.start.character - ), - undefined, - language, - document.uri - ); - return { - items: completions.map(vsCompletionItemToLsCompletionItem), - isIncomplete: false - }; - } - } else { - return { - items: [], - isIncomplete: false - }; - } + // if this is Positron, no visual editor completions + // TODO: fix LSP issues for visual editor in Positron: + // https://github.com/posit-dev/positron/issues/1805 + if (hasHooks()) { + return { + items: [], + isIncomplete: false + }; } + + // otherwise delegate to vscode completion system + const vdoc = virtualDocForCode(context.code, language); + const completions = await vdocCompletions( + vdoc, + new Position( + context.selection.start.line, + context.selection.start.character + ), + undefined, + language, + document.uri + ); + + return { + items: completions.map(vsCompletionItemToLsCompletionItem), + isIncomplete: false + }; }, async codeViewPreviewDiagram(state: DiagramState, activate: boolean) { commands.executeCommand("quarto.previewDiagram", { state, activate });