Add the ability to specify a list of candidate encodings when guessing encoding (#36951) (#208550)

* Allow to configure a list of encodings to use when guessing #36951

* Bump up the jschardet version into 3.1.2 #36951

* missing merge

* some polish

* renames

* some polish

* some polish

* cleanup

---------

Co-authored-by: Benjamin Pasero <benjamin.pasero@microsoft.com>
This commit is contained in:
yutotnh
2024-06-05 19:23:20 +09:00
committed by GitHub
parent eb7359d330
commit 3ab7948e14
13 changed files with 178 additions and 49 deletions

View File

@@ -1865,13 +1865,14 @@ export class Repository implements Disposable {
const configFiles = workspace.getConfiguration('files', Uri.file(filePath));
const defaultEncoding = configFiles.get<string>('encoding');
const autoGuessEncoding = configFiles.get<boolean>('autoGuessEncoding');
const candidateGuessEncodings = configFiles.get<string[]>('candidateGuessEncodings');
try {
return await this.repository.bufferString(`${ref}:${path}`, defaultEncoding, autoGuessEncoding);
return await this.repository.bufferString(`${ref}:${path}`, defaultEncoding, autoGuessEncoding, candidateGuessEncodings);
} catch (err) {
if (err.gitErrorCode === GitErrorCodes.WrongCase) {
const gitRelativePath = await this.repository.getGitRelativePath(ref, path);
return await this.repository.bufferString(`${ref}:${gitRelativePath}`, defaultEncoding, autoGuessEncoding);
return await this.repository.bufferString(`${ref}:${gitRelativePath}`, defaultEncoding, autoGuessEncoding, candidateGuessEncodings);
}
throw err;