-
由 Will Chen 提交于
<!-- CURSOR_SUMMARY --> > [!NOTE] > Makes search-replace tolerant to typos/whitespace via two-pass fuzzy matching with Levenshtein and smart-quote normalization, with clearer errors and tests. > > - **Search/Replace Processor (`src/pro/main/ipc/processors/search_replace_processor.ts`)** > - Add two-pass fuzzy matching: quick exact-line prefilter + Levenshtein scoring (`fastest-levenshtein`). > - Match flow: exact > whitespace-insensitive > fuzzy; detect ambiguity and improve error messages with similarity %. > - Introduce thresholds and limits: `FUZZY_MATCH_THRESHOLD=0.9`, `EARLY_STOP_THRESHOLD=0.95`, `MAX_FUZZY_SEARCH_TIME_MS=10000`. > - Normalize text before scoring using `normalizeString` (handles quotes, dashes, ellipsis, NBSP, soft hyphen, BOM). > - Preserve indentation for replacements; keep existing unescape/validation logic. > - **Utils (`src/utils/text_normalization.ts`)** > - New `normalizeString` helper for Unicode normalization used by fuzzy matching. > - **Tests (`src/pro/main/ipc/processors/search_replace_processor.test.ts`)** > - Add cases for typos, smart quotes, below-threshold failure, exact-over-fuzzy preference, whitespace differences, and ambiguity. > - **Dependencies** > - Add `fastest-levenshtein` to `package.json`. > > <sup>Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 289dab915c37bc4f9ab4bf0209ff3f95a57341fc. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot).</sup> <!-- /CURSOR_SUMMARY --> <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Makes applySearchReplace more tolerant by preferring exact and whitespace-insensitive matches, then falling back to fast two-pass Levenshtein-based fuzzy matching with Unicode normalization. Improves failure messages and adds tests to cover common edit scenarios. - **New Features** - Exact > whitespace-insensitive > fuzzy matching flow (threshold 0.9). - Two-pass fuzzy search with exact-line prefilter; early stop at 0.95 and 10s timeout. - normalizeString handles smart quotes, dashes, ellipsis, NBSPs, soft hyphen, and BOM. - Errors now report best fuzzy similarity when below threshold. - Tests for typos, smart quotes, below-threshold cases, exact-over-fuzzy, whitespace differences, and ambiguity. - **Dependencies** - Add fastest-levenshtein. <sup>Written for commit 289dab915c37bc4f9ab4bf0209ff3f95a57341fc. Summary will update automatically on new commits.</sup> <!-- End of auto-generated description by cubic. -->