perf(addon-search): cache lowercased line text in line cache
Lazily store a lowercased line variant in the line cache entry to avoid repeated toLowerCase calls during case-insensitive searches. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -292,7 +292,17 @@ export class SearchEngine {
|
|||||||
let searchStringLine = stringLine;
|
let searchStringLine = stringLine;
|
||||||
if (!searchOptions.regex) {
|
if (!searchOptions.regex) {
|
||||||
searchTerm = searchOptions.caseSensitive ? term : term.toLowerCase();
|
searchTerm = searchOptions.caseSensitive ? term : term.toLowerCase();
|
||||||
searchStringLine = searchOptions.caseSensitive ? stringLine : stringLine.toLowerCase();
|
if (searchOptions.caseSensitive) {
|
||||||
|
searchStringLine = stringLine;
|
||||||
|
} else {
|
||||||
|
let lowerLine = cache[2];
|
||||||
|
if (!lowerLine) {
|
||||||
|
lowerLine = stringLine.toLowerCase();
|
||||||
|
cache[2] = lowerLine;
|
||||||
|
this._lineCache.setLineInCache(row, cache);
|
||||||
|
}
|
||||||
|
searchStringLine = lowerLine;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let resultIndex = -1;
|
let resultIndex = -1;
|
||||||
|
|||||||
@@ -15,7 +15,11 @@ export type LineCacheEntry = [
|
|||||||
/**
|
/**
|
||||||
* The offsets where each line starts when the entry describes a wrapped line.
|
* The offsets where each line starts when the entry describes a wrapped line.
|
||||||
*/
|
*/
|
||||||
lineOffsets: number[]
|
lineOffsets: number[],
|
||||||
|
/**
|
||||||
|
* Lowercased line text for case-insensitive searches, lazily populated.
|
||||||
|
*/
|
||||||
|
lineAsLower?: string
|
||||||
];
|
];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user