VS Code extension: `quarto preview` fails when the file path contains parentheses (path not shell-quoted)
メンテナーはふだん 1 日以内に返信
評価
- 難易度
- 2/5
- 見積もり時間
- 1〜3時間
- 初心者へのやさしさ
- 78/100
- issue の種類
- バグ
- 明瞭さ
- 明確に書かれている
- 活発さ
- 活発
- 技術スタック
- powershell, typescript, vscode
- 領域
- devtools
調査の方向性
apps/vscode/src/core/terminal.ts から始めます。ここで terminalCommand() が対象を shQuote() でラップしています。次に shQuote() を packages/core/src/strings.ts で読みます。この関数は値に空白が含まれる場合にのみダブルクォートで囲みます。括弧を含み空白を含まないパスを渡して再現し、生成されるコマンド文字列を確認してください。完了条件は、そのようなパスがクォートされること、空白やその他のメタ文字を含むパスも引き続き動作すること、そして括弧のケースを単体テストで検証することです。
索引モデルが issue の本文から書いたものです。
説明
Bug
Previewing a file whose path contains parentheses but no spaces
(e.g. C:\...\Article(md)\doc.qmd) makes the extension emit:
quarto preview C:/.../Article(md)/doc.qmd --no-browser --no-watch-inputs
PowerShell parses (md) as a subexpression — md is the mkdir alias — so
the terminal stalls at:
cmdlet mkdir at command pipeline position 1
Supply values for the following parameters:
Path[0]:
Repro
- Windows, integrated terminal = PowerShell.
- Open a doc under a parens-containing, space-free directory.
- Quarto: Preview → hangs at the
Path[0]:prompt, preview never starts.
Expected
Quote the path:
quarto preview "C:/.../Article(md)/doc.qmd" --no-browser --no-watch-inputs
Root cause
preview.tsbuilds the command viaterminalCommand("preview", ctx, target);
sendTerminalCommand()joins it with spaces straight into the terminal.terminalCommand()(apps/vscode/src/core/terminal.ts) wraps the target in
shQuote().shQuote()(packages/core/src/strings.ts) only double-quotes on whitespace
(/\s/). Parentheses — and other metacharacters like&,;,$—
without whitespace pass through unquoted. Broken in PowerShell; equally
broken in bash, where bare parens are a syntax error.
Suggested fix
Quote when the value contains any shell metacharacter, or simply always
double-quote the path.
Workaround
Set the workspace default terminal to Command Prompt, or invoke quarto
manually with a quoted path.
- 主要言語
- TypeScript
- スター
- 652
- フォーク
- 64
- 平均マージ
- 8時間 45分
- マージ済み PR(30日)
- 36
環境構築
このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
quarto-dev/quarto のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
quarto-dev/quarto#1139 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 1/5 1〜3時間 初心者へのやさしさ 90/100
quarto-dev/quarto#1138 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100
quarto-dev/quarto#1137 ·
メンテナーはふだん 1 日以内に返信
-
Add dependabot?再び着手できるかも このイシューのプルリクエストはマージされずにクローズされました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
quarto-dev/quarto#1135 ·
メンテナーはふだん 1 日以内に返信
-
AceNodeView: programmatic setSelection() marks the cursor dirty, scrolling the document to the front matter対応中かも @kevinushey が 51 日前に担当しました。 オープン
難易度 1/5 1時間未満 初心者へのやさしさ 90/100
quarto-dev/quarto#1099 ·
メンテナーはふだん 1 日以内に返信
quarto-dev/quarto の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
Chocobozzz/PeerTube#7832 ·
メンテナーはふだん 3 日以内に返信
-
Pay to use?オープン
難易度 1/5 1時間未満 初心者へのやさしさ 66/100
darkreader/darkreader#16108 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
Add: Dak Nong TV SDオープンcheck:passed streams:add
難易度 1/5 1時間未満 初心者へのやさしさ 75/100
メンテナーはふだん 1 日以内に返信
-
bug engine
難易度 2/5 1〜3時間 初心者へのやさしさ 86/100
frostney/GocciaScript#1746 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 67/100
agilepathway/label-checker#739 · コメント 4 件 ·
メンテナーはふだん 1 日以内に返信