提交 4ceb9142 编写于 作者: R Rob Lourens

Strip BOM from search result on first line - Fix #35633

上级 dcd1aa35
......@@ -715,6 +715,10 @@ export function startsWithUTF8BOM(str: string): boolean {
return (str && str.length > 0 && str.charCodeAt(0) === CharCode.UTF8_BOM);
}
export function stripUTF8BOM(str: string): string {
return startsWithUTF8BOM(str) ? str.substr(1) : str;
}
/**
* Appends two strings. If the appended result is longer than maxLength,
* trims the start of the result and replaces it with '...'.
......
......@@ -334,4 +334,21 @@ suite('Strings', () => {
assert.ok(!strings.fuzzyContains('hello world', 'wh'));
assert.ok(!strings.fuzzyContains('d', 'dd'));
});
test('startsWithUTF8BOM', () => {
assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER));
assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER + 'a'));
assert(strings.startsWithUTF8BOM(strings.UTF8_BOM_CHARACTER + 'aaaaaaaaaa'));
assert(!strings.startsWithUTF8BOM(' ' + strings.UTF8_BOM_CHARACTER));
assert(!strings.startsWithUTF8BOM('foo'));
assert(!strings.startsWithUTF8BOM(''));
});
test('stripUTF8BOM', () => {
assert.equal(strings.stripUTF8BOM(strings.UTF8_BOM_CHARACTER), '');
assert.equal(strings.stripUTF8BOM(strings.UTF8_BOM_CHARACTER + 'foobar'), 'foobar');
assert.equal(strings.stripUTF8BOM('foobar' + strings.UTF8_BOM_CHARACTER), 'foobar' + strings.UTF8_BOM_CHARACTER);
assert.equal(strings.stripUTF8BOM('abc'), 'abc');
assert.equal(strings.stripUTF8BOM(''), '');
});
});
......@@ -237,6 +237,10 @@ export class RipgrepParser extends EventEmitter {
}
private handleMatchLine(outputLine: string, lineNum: number, text: string): void {
if (lineNum === 0) {
text = strings.stripUTF8BOM(text);
}
const lineMatch = new LineMatch(text, lineNum);
this.fileMatch.addMatch(lineMatch);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册