diff --git a/.vscode/settings.json b/.vscode/settings.json index 15988045..f5aa9faf 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -4,5 +4,8 @@ "editor.formatOnSave": true }, "typescript.tsdk": "node_modules/typescript/lib", - "editor.tabSize": 2 -} \ No newline at end of file + "editor.tabSize": 2, + "files.insertFinalNewline": true, + "files.trimFinalNewlines": true, + "files.trimTrailingWhitespace": true +} diff --git a/apps/vscode/.gitignore b/apps/vscode/.gitignore index d3ba603c..808e1d34 100644 --- a/apps/vscode/.gitignore +++ b/apps/vscode/.gitignore @@ -1,2 +1,2 @@ out/ -*.vsix \ No newline at end of file +*.vsix diff --git a/apps/vscode/.vscodeignore b/apps/vscode/.vscodeignore index 8c3e80d2..62b702c8 100644 --- a/apps/vscode/.vscodeignore +++ b/apps/vscode/.vscodeignore @@ -10,4 +10,3 @@ src/** **/*.map **/*.ts *.vsix - diff --git a/apps/vscode/.yarnrc b/apps/vscode/.yarnrc index f757a6ac..4f14322d 100644 --- a/apps/vscode/.yarnrc +++ b/apps/vscode/.yarnrc @@ -1 +1 @@ ---ignore-engines true \ No newline at end of file +--ignore-engines true diff --git a/apps/vscode/README.md b/apps/vscode/README.md index b507ad6d..89bdec6d 100644 --- a/apps/vscode/README.md +++ b/apps/vscode/README.md @@ -21,7 +21,6 @@ The easiest way to install is directly from within VS Code (search extensions fo You can also install from the [VS Code Extension Marketplace](https://marketplace.visualstudio.com/items?itemName=quarto.quarto), the [Open VSX Registry](https://open-vsx.org/extension/quarto/quarto) or directly from a [VISX extension file](#visx-install). - ## Render and Preview The Quarto VS Code extension includes commands and keyboard shortcuts for rendering Quarto documents (both standalone and within websites or books). After rendering, `quarto preview` is used behind the scenes to provide a preview pane within VS Code alongside your document: @@ -44,7 +43,7 @@ When you execute **Preview Format**, you'll see a quick pick list of formats to ![](https://quarto.org/docs/tools/images/vscode-preview-format.png) -After previewing a different format, the **Quarto: Preview** command and Ctrl+Shift+K keyboard shortcut will be automatically rebound to the newly selected format for the duration of the current preview. To switch back to previewing the original format, use **Quarto: Preview Format** command again. +After previewing a different format, the **Quarto: Preview** command and Ctrl+Shift+K keyboard shortcut will be automatically rebound to the newly selected format for the duration of the current preview. To switch back to previewing the original format, use **Quarto: Preview Format** command again. > Embedded preview is currently supported for HTML and PDF based formats (including `revealjs` and `beamer` slideshows). However, for Word and other formats you need to use an appropriate external program to preview the output. @@ -64,7 +63,7 @@ However, you can configure the Quarto extension to automatically render whenever You might also want to control this behavior on a per-document or per-project basis. If you include the `editor: render-on-save` option in your document or project YAML it will supersede whatever your VS Code setting is. For example: -``` yaml +```yaml editor: render-on-save: true ``` @@ -75,7 +74,6 @@ If you prefer to use an external browser for preview (or have no preview trigger ![](https://quarto.org/docs/tools/images/vscode-preview-settings.png) - ## Code Cells There are a variety of tools that make it easier to edit and execute diff --git a/apps/vscode/assets/www/editor/.gitignore b/apps/vscode/assets/www/editor/.gitignore index d51579d1..a4e42b6d 100644 --- a/apps/vscode/assets/www/editor/.gitignore +++ b/apps/vscode/assets/www/editor/.gitignore @@ -1,2 +1,2 @@ index.js -style.css \ No newline at end of file +style.css diff --git a/apps/vscode/languages/dot/dot.configuration.json b/apps/vscode/languages/dot/dot.configuration.json index 4051e9f2..305f6347 100644 --- a/apps/vscode/languages/dot/dot.configuration.json +++ b/apps/vscode/languages/dot/dot.configuration.json @@ -20,4 +20,4 @@ ")" ] ] -} \ No newline at end of file +} diff --git a/apps/vscode/languages/mermaid/mermaid.configuration.json b/apps/vscode/languages/mermaid/mermaid.configuration.json index 086c6e3b..dfd0fab0 100644 --- a/apps/vscode/languages/mermaid/mermaid.configuration.json +++ b/apps/vscode/languages/mermaid/mermaid.configuration.json @@ -16,4 +16,4 @@ ")" ] ] -} \ No newline at end of file +} diff --git a/apps/vscode/languages/mermaid/mermaid.tmLanguage.json b/apps/vscode/languages/mermaid/mermaid.tmLanguage.json index 958b1d58..717f9721 100644 --- a/apps/vscode/languages/mermaid/mermaid.tmLanguage.json +++ b/apps/vscode/languages/mermaid/mermaid.tmLanguage.json @@ -883,4 +883,4 @@ } }, "scopeName": "source.mmd" -} \ No newline at end of file +} diff --git a/apps/vscode/languages/typst/typst.configuration.json b/apps/vscode/languages/typst/typst.configuration.json index 4051e9f2..305f6347 100644 --- a/apps/vscode/languages/typst/typst.configuration.json +++ b/apps/vscode/languages/typst/typst.configuration.json @@ -20,4 +20,4 @@ ")" ] ] -} \ No newline at end of file +} diff --git a/apps/vscode/src/@types/hooks.d.ts b/apps/vscode/src/@types/hooks.d.ts index 99ae993e..66abfa90 100644 --- a/apps/vscode/src/@types/hooks.d.ts +++ b/apps/vscode/src/@types/hooks.d.ts @@ -72,6 +72,3 @@ declare module 'positron' { readonly previewPanel: PreviewPanel; } } - - - diff --git a/apps/vscode/src/core/config.ts b/apps/vscode/src/core/config.ts index bf89a409..ad782fff 100644 --- a/apps/vscode/src/core/config.ts +++ b/apps/vscode/src/core/config.ts @@ -19,8 +19,8 @@ export async function safeUpdateConfig(updateFn: () => Promise) { try { await updateFn(); } catch (error) { - // if the user's settings.json file is corrupt/invalid this + // if the user's settings.json file is corrupt/invalid this // will throw an exception and prevent loading of the extension console.log("Unexpected error writing config (settings.json may be corrupt)"); } -} \ No newline at end of file +} diff --git a/apps/vscode/src/core/hover.ts b/apps/vscode/src/core/hover.ts index a05608b3..b0825488 100644 --- a/apps/vscode/src/core/hover.ts +++ b/apps/vscode/src/core/hover.ts @@ -57,4 +57,3 @@ export async function getSignatureHelpHover( triggerCharacter ); } - diff --git a/apps/vscode/src/core/python.ts b/apps/vscode/src/core/python.ts index 489e374e..56c2bd85 100644 --- a/apps/vscode/src/core/python.ts +++ b/apps/vscode/src/core/python.ts @@ -71,4 +71,3 @@ export function pythonIsCondaEnv(python: string) { return false; } } - diff --git a/apps/vscode/src/core/terminal.ts b/apps/vscode/src/core/terminal.ts index 997d2887..40410b29 100644 --- a/apps/vscode/src/core/terminal.ts +++ b/apps/vscode/src/core/terminal.ts @@ -184,4 +184,3 @@ function requiredTerminalDelay(env?: TerminalEnv): number { return 0; } } - diff --git a/apps/vscode/src/core/workspace.ts b/apps/vscode/src/core/workspace.ts index dc8ad8fd..0ca69b93 100644 --- a/apps/vscode/src/core/workspace.ts +++ b/apps/vscode/src/core/workspace.ts @@ -22,4 +22,4 @@ export function activeWorkspaceFolder(uri?: Uri): WorkspaceFolder | undefined { ? workspace.workspaceFolders[0] : undefined; return workspaceFolder; -} \ No newline at end of file +} diff --git a/apps/vscode/src/host/index.ts b/apps/vscode/src/host/index.ts index 0f8295de..bfbd8bf5 100644 --- a/apps/vscode/src/host/index.ts +++ b/apps/vscode/src/host/index.ts @@ -105,4 +105,4 @@ function defaultExtensionHost(): ExtensionHost { }, createPreviewPanel, }; -} \ No newline at end of file +} diff --git a/apps/vscode/src/lsp/client.ts b/apps/vscode/src/lsp/client.ts index c527b2d1..c54753eb 100644 --- a/apps/vscode/src/lsp/client.ts +++ b/apps/vscode/src/lsp/client.ts @@ -349,5 +349,3 @@ function isWithinYamlComment(doc: TextDocument, pos: Position) { const line = doc.lineAt(pos.line).text; return !!line.match(/^\s*#\s*\| /); } - - diff --git a/apps/vscode/src/main.ts b/apps/vscode/src/main.ts index 4371c4e5..dfedbba4 100644 --- a/apps/vscode/src/main.ts +++ b/apps/vscode/src/main.ts @@ -90,7 +90,7 @@ export async function activate(context: vscode.ExtensionContext) { const editorCommands = activateEditor(context, host, quartoContext, lspClient, engine); commands.push(...editorCommands); - // zotero + // zotero const zoteroCommands = await activateZotero(context, lspClient); commands.push(...zoteroCommands); @@ -130,4 +130,3 @@ export async function activate(context: vscode.ExtensionContext) { export async function deactivate() { return deactivateLsp(); } - diff --git a/apps/vscode/src/providers/assist/render-assist.ts b/apps/vscode/src/providers/assist/render-assist.ts index 21b918ec..a067d969 100644 --- a/apps/vscode/src/providers/assist/render-assist.ts +++ b/apps/vscode/src/providers/assist/render-assist.ts @@ -64,7 +64,7 @@ export function renderWebviewHtml(webview: Webview, extensionUri: Uri) { - + Quarto Lens diff --git a/apps/vscode/src/providers/create/create.ts b/apps/vscode/src/providers/create/create.ts index 1de82605..8e2a1291 100644 --- a/apps/vscode/src/providers/create/create.ts +++ b/apps/vscode/src/providers/create/create.ts @@ -41,4 +41,3 @@ export async function activateCreate( ), ]; } - diff --git a/apps/vscode/src/providers/deno-config.ts b/apps/vscode/src/providers/deno-config.ts index 4188ff20..2fa972df 100644 --- a/apps/vscode/src/providers/deno-config.ts +++ b/apps/vscode/src/providers/deno-config.ts @@ -43,9 +43,3 @@ export function activateDenoConfig(context: ExtensionContext, engine: MarkdownEn workspace.onDidSaveTextDocument(ensureDenoConfig, null, context.subscriptions); } } - - - - - - diff --git a/apps/vscode/src/providers/editor/codeview.ts b/apps/vscode/src/providers/editor/codeview.ts index 1d08938c..c352e3b7 100644 --- a/apps/vscode/src/providers/editor/codeview.ts +++ b/apps/vscode/src/providers/editor/codeview.ts @@ -133,7 +133,7 @@ function lspCellYamlOptionsCompletions(context: CodeViewCompletionContext, lspRe }); // include language header (we offset cellEnd below accordingly) code.splice(context.cellBegin, 0, `{${context.language}}`); - // make request + // make request return lspRequest(kCodeViewGetCompletions, [{ ...context, code, @@ -285,4 +285,4 @@ function mdStringToMdContent(mdString: MarkdownString): MarkupContent { kind: MarkupKind.Markdown, value: mdString.value }; -} \ No newline at end of file +} diff --git a/apps/vscode/src/providers/editor/connection.ts b/apps/vscode/src/providers/editor/connection.ts index e5783280..7fc90685 100644 --- a/apps/vscode/src/providers/editor/connection.ts +++ b/apps/vscode/src/providers/editor/connection.ts @@ -176,4 +176,4 @@ function webviewPanelPostMessageTarget(webviewPanel: WebviewPanel): JsonRpcPostM }; } }; -} \ No newline at end of file +} diff --git a/apps/vscode/src/providers/editor/editor.ts b/apps/vscode/src/providers/editor/editor.ts index 52afddfa..7514cbe6 100644 --- a/apps/vscode/src/providers/editor/editor.ts +++ b/apps/vscode/src/providers/editor/editor.ts @@ -116,12 +116,12 @@ export class VisualEditorProvider implements CustomTextEditorProvider { engine: MarkdownEngine ): Disposable { - // setup request transport + // setup request transport const lspRequest = lspClientTransport(lspClient); // track edits in the active editor if its untitled. this enables us to recover the // content when we switch to an untitled document, which otherwise are just dropped - // on the floor by vscode + // on the floor by vscode context.subscriptions.push(workspace.onDidChangeTextDocument(e => { const doc = window.activeTextEditor?.document; if (doc && isQuartoDoc(doc) && doc.isUntitled && (doc.uri.toString() === e.document.uri.toString())) { @@ -326,7 +326,7 @@ export class VisualEditorProvider implements CustomTextEditorProvider { xref || sourcePos ); - // editor container implementation + // editor container implementation const host: VSCodeVisualEditorHost = { // editor is querying for context @@ -632,7 +632,7 @@ function visualEditorTracker(): VisualEditorTracker { try { return editor.webviewPanel.active || (includeVisible && editor.webviewPanel.visible); } catch (err) { - // we've seen activeEditors hold on to references to disposed editors (can't on the + // we've seen activeEditors hold on to references to disposed editors (can't on the // surface see how this would occur as we subscribe to dispose, but as an insurance // policy let's eat any exception that occurs, since a single zombie webviewPanel // would prevent rendering of other panels @@ -668,7 +668,7 @@ function focusTracker(webviewPanel: WebviewPanel, editor: VSCodeVisualEditor): D } }); - // periodically check for focus + // periodically check for focus const timer = setInterval(async () => { // update focus state hasFocus = await editor.isFocused(); diff --git a/apps/vscode/src/providers/editor/images.ts b/apps/vscode/src/providers/editor/images.ts index d92a2324..a2ecd467 100644 --- a/apps/vscode/src/providers/editor/images.ts +++ b/apps/vscode/src/providers/editor/images.ts @@ -129,4 +129,3 @@ export function documentImageResolver( } }; } - diff --git a/apps/vscode/src/providers/editor/prefs.ts b/apps/vscode/src/providers/editor/prefs.ts index 16cb6522..81345178 100644 --- a/apps/vscode/src/providers/editor/prefs.ts +++ b/apps/vscode/src/providers/editor/prefs.ts @@ -320,4 +320,3 @@ function writePerDocumentPrefs(document: TextDocument, prefs: PerDocumentPrefs) const storage = filePrefsStorage(document.uri.fsPath); writeFileSync(storage, JSON.stringify(prefs), { encoding: "utf8" }); } - diff --git a/apps/vscode/src/providers/editor/sync.ts b/apps/vscode/src/providers/editor/sync.ts index d2fbbb1c..f34fa2c7 100644 --- a/apps/vscode/src/providers/editor/sync.ts +++ b/apps/vscode/src/providers/editor/sync.ts @@ -21,11 +21,11 @@ import { isXRef, NavLocation, VSCodeVisualEditor, XRef } from "editor-types"; import { getWholeRange } from "../../core/doc"; -/* Strategy for managing synchronization of edits between source and visual mode. +/* Strategy for managing synchronization of edits between source and visual mode. -This is made more complicated by the fact that getting/setting visual editor markdown +This is made more complicated by the fact that getting/setting visual editor markdown is expensive (requires a pandoc round trip) so is throttled by 1 second. We also need -to guard against edits pinging back and forth (esp. w/ the requirement on flushing all +to guard against edits pinging back and forth (esp. w/ the requirement on flushing all pending edits on save) For the visual editor syncing to external changes: @@ -33,7 +33,7 @@ For the visual editor syncing to external changes: 1) Only accept external edits when NOT focused (once the visual editor is focused it is the definitive source of changes to the document) -2) These external edits are throttled by 1 second so we don't get constant (expensive) +2) These external edits are throttled by 1 second so we don't get constant (expensive) refreshing of the visual editor when users type in the text editor. For the visual editor propagating its own changes: @@ -65,9 +65,9 @@ export function editorSyncManager( navigation?: XRef | number ): EditorSyncManager { - // state: an update from the visual editor that we have yet to apply. we don't + // state: an update from the visual editor that we have yet to apply. we don't // apply these on every keystoke b/c they are expensive. we poll to apply these - // udpates periodically and also apply them immediately on save and when the + // udpates periodically and also apply them immediately on save and when the // visual editor instructs us to do so (e.g. when it loses focus) let pendingVisualEdit: unknown | undefined; @@ -208,4 +208,3 @@ async function updateWorkspaceDocument(document: TextDocument, markdown: string) updateDocument(editor, document, markdown); await workspace.applyEdit(edit); }; - diff --git a/apps/vscode/src/providers/editor/toggle.ts b/apps/vscode/src/providers/editor/toggle.ts index 95bb0545..b48a4213 100644 --- a/apps/vscode/src/providers/editor/toggle.ts +++ b/apps/vscode/src/providers/editor/toggle.ts @@ -76,7 +76,7 @@ export async function reopenEditorInSourceMode( // note pending switch to source VisualEditorProvider.recordPendingSwitchToSource(document); - // close editor (return immediately as if we don't then any + // close editor (return immediately as if we don't then any // rpc method that calls this wil result in an error b/c the webview // has been torn down by the time we return) commands.executeCommand('workbench.action.closeActiveEditor').then(async () => { diff --git a/apps/vscode/src/providers/preview/preview-env.ts b/apps/vscode/src/providers/preview/preview-env.ts index d56820c3..97815955 100644 --- a/apps/vscode/src/providers/preview/preview-env.ts +++ b/apps/vscode/src/providers/preview/preview-env.ts @@ -51,7 +51,7 @@ export class PreviewEnvManager { // eslint-disable-next-line @typescript-eslint/naming-convention QUARTO_LOG: this.outputFile_, - // eslint-disable-next-line @typescript-eslint/naming-convention + // eslint-disable-next-line @typescript-eslint/naming-convention QUARTO_RENDER_TOKEN: this.renderToken_, ...(await terminalEnv(uri)) diff --git a/apps/vscode/src/providers/zotero/zotero.ts b/apps/vscode/src/providers/zotero/zotero.ts index 32ad732e..1088ee30 100644 --- a/apps/vscode/src/providers/zotero/zotero.ts +++ b/apps/vscode/src/providers/zotero/zotero.ts @@ -222,7 +222,7 @@ class ZoteroConfigureLibraryCommand implements Command { inputBox.placeholder = "Zotero Web API Key"; inputBox.onDidAccept(async () => { - // get key + // get key const apiKey = inputBox.value.trim(); // helper to save it @@ -366,4 +366,4 @@ async function safeReadZoteroApiKey(context: ExtensionContext) { console.log("Error reading zotero api key"); return undefined; } -} \ No newline at end of file +} diff --git a/apps/vscode/src/vdoc/vdoc-completion.ts b/apps/vscode/src/vdoc/vdoc-completion.ts index 82c4cf49..84310c74 100644 --- a/apps/vscode/src/vdoc/vdoc-completion.ts +++ b/apps/vscode/src/vdoc/vdoc-completion.ts @@ -53,4 +53,4 @@ export async function vdocCompletions( return completion; }); -} \ No newline at end of file +} diff --git a/apps/vscode/src/vdoc/vdoc-tempfile.ts b/apps/vscode/src/vdoc/vdoc-tempfile.ts index 3dc11b28..8400a8c3 100644 --- a/apps/vscode/src/vdoc/vdoc-tempfile.ts +++ b/apps/vscode/src/vdoc/vdoc-tempfile.ts @@ -38,8 +38,8 @@ export async function virtualDocUriFromTempFile( local: boolean ): Promise { - // if this is local then create it alongside the docPath and return a cleanup - // function to remove it when the action is completed. + // if this is local then create it alongside the docPath and return a cleanup + // function to remove it when the action is completed. if (local || virtualDoc.language.localTempFile) { const ext = virtualDoc.language.extension; const vdocPath = path.join(path.dirname(docPath), `.vdoc.${ext}`);