Skip to content

Treat $$ as an escaped $ in workspace search regex replace#326451

Open
dobbydobap wants to merge 1 commit into
microsoft:mainfrom
dobbydobap:fix-299365-search-replace-double-dollar
Open

Treat $$ as an escaped $ in workspace search regex replace#326451
dobbydobap wants to merge 1 commit into
microsoft:mainfrom
dobbydobap:fix-299365-search-replace-double-dollar

Conversation

@dobbydobap

Copy link
Copy Markdown
Contributor

Fixes #299365

Workspace-search regex replace didn't collapse $$ to a literal $: $$0 was inserted as $$0 instead of $0. parseReplaceString in replace.ts handled $0, $`, $', and $1$99, but had no case for $$, so it was never marked as a parameter and fell through to literal insertion. The in-editor find/replace (replacePattern.ts) already treats $$ as an escaped $; this brings workspace search in line.

Adding $$ to the same branch as $` / $' flags it as a parameter, letting the native String.replace collapse $$$. Added a regression test covering $$0$0, $$1$1, and $$$1$ + group 1.

Copilot AI review requested due to automatic review settings July 18, 2026 16:11

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Aligns workspace regex replacement with editor behavior by treating $$ as an escaped dollar sign.

Changes:

  • Recognizes $$ as a replacement parameter.
  • Adds regression coverage for escaped dollars and capture groups.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.

File Description
src/vs/workbench/services/search/common/replace.ts Enables native $$ replacement handling.
src/vs/workbench/services/search/test/common/replace.test.ts Tests parsing and replacement results.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"$$n" doesn't replace by literal "$n" in Regex replace (Workspace search only)

3 participants