提交 494b385a 编写于 作者: B Benjamin Pasero

revert "files.guessableEncodings"

上级 caaa5369
......@@ -19,7 +19,6 @@ export const UTF16le = 'utf16le';
export interface IDecodeStreamOptions {
guessEncoding?: boolean;
guessableEncodings?: string[];
minBytesRequiredForDetection?: number;
overwriteEncoding?(detectedEncoding: string): string;
}
......@@ -79,7 +78,7 @@ export function toDecodeStream(readable: Readable, options: IDecodeStreamOptions
this._decodeStreamConstruction = TPromise.as(detectEncodingFromBuffer({
buffer: Buffer.concat(this._buffer), bytesRead: this._bytesBuffered
}, options.guessEncoding, options.guessableEncodings)).then(detected => {
}, options.guessEncoding)).then(detected => {
detected.encoding = options.overwriteEncoding(detected.encoding);
this._decodeStream = decodeStream(detected.encoding);
for (const buffer of this._buffer) {
......@@ -273,8 +272,8 @@ export interface IDetectedEncodingResult {
}
export function detectEncodingFromBuffer(readResult: stream.ReadResult, autoGuessEncoding?: false): IDetectedEncodingResult;
export function detectEncodingFromBuffer(readResult: stream.ReadResult, autoGuessEncoding?: boolean, guessableEncodings?: string[]): TPromise<IDetectedEncodingResult>;
export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResult, autoGuessEncoding?: boolean, guessableEncodings?: string[]): TPromise<IDetectedEncodingResult> | IDetectedEncodingResult {
export function detectEncodingFromBuffer(readResult: stream.ReadResult, autoGuessEncoding?: boolean): TPromise<IDetectedEncodingResult>;
export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResult, autoGuessEncoding?: boolean): TPromise<IDetectedEncodingResult> | IDetectedEncodingResult {
// Always first check for BOM to find out about encoding
let encoding = detectEncodingByBOMFromBuffer(buffer, bytesRead);
......@@ -332,13 +331,6 @@ export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResul
// Auto guess encoding if configured
if (autoGuessEncoding && !seemsBinary && !encoding) {
return guessEncodingByBuffer(buffer.slice(0, bytesRead)).then(guessedEncoding => {
// Ignore encoding if we have a list of encodings to use for guessing
if (guessedEncoding && guessableEncodings && guessableEncodings.length > 0 && guessableEncodings.indexOf(guessedEncoding) === -1) {
return { seemsBinary, encoding };
}
// Proceed with guessed encoding
return {
seemsBinary: false,
encoding: guessedEncoding
......
......@@ -153,42 +153,6 @@ suite('Encoding', () => {
});
});
test('autoGuessEncoding, guessableEncodings empty (ShiftJIS)', function () {
const file = getPathFromAmdModule(require, './fixtures/some.shiftjis.txt');
return readExactlyByFile(file, 512 * 8).then(buffer => {
return encoding.detectEncodingFromBuffer(buffer, true, []).then(mimes => {
assert.equal(mimes.encoding, 'shiftjis');
});
});
});
test('autoGuessEncoding, guessableEncodings (ShiftJIS)', function () {
const file = getPathFromAmdModule(require, './fixtures/some.shiftjis.txt');
return readExactlyByFile(file, 512 * 8).then(buffer => {
return encoding.detectEncodingFromBuffer(buffer, true, ['windows1252']).then(mimes => {
assert.ok(!mimes.encoding);
});
});
});
test('autoGuessEncoding, guessableEncodings (ShiftJIS)', function () {
const file = getPathFromAmdModule(require, './fixtures/some.shiftjis.txt');
return readExactlyByFile(file, 512 * 8).then(buffer => {
return encoding.detectEncodingFromBuffer(buffer, true, ['windows1252', 'shiftjis']).then(mimes => {
assert.equal(mimes.encoding, 'shiftjis');
});
});
});
test('autoGuessEncoding, guessableEncodings (CP1252)', function () {
const file = getPathFromAmdModule(require, './fixtures/some.cp1252.txt');
return readExactlyByFile(file, 512 * 8).then(buffer => {
return encoding.detectEncodingFromBuffer(buffer, true, ['windows1252']).then(mimes => {
assert.equal(mimes.encoding, 'windows1252');
});
});
});
async function readAndDecodeFromDisk(path, _encoding) {
return new Promise<string>((resolve, reject) => {
fs.readFile(path, (err, data) => {
......
......@@ -552,12 +552,6 @@ export interface IResolveContentOptions {
*/
autoGuessEncoding?: boolean;
/**
* The optional list of encodings that can be used when guessing. If not provided, all encodings
* will be supported for guessing.
*/
guessableEncodings?: string[];
/**
* Is an integer specifying where to begin reading from in the file. If position is null,
* data will be read from the current file position.
......@@ -667,7 +661,6 @@ export interface IFilesConfiguration {
watcherExclude: { [filepattern: string]: boolean };
encoding: string;
autoGuessEncoding: boolean;
guessableEncodings: string[];
defaultLanguage: string;
trimTrailingWhitespace: boolean;
autoSave: string;
......
......@@ -163,7 +163,6 @@ const configurationValueWhitelist = [
'extensions.autoUpdate',
'files.associations',
'files.autoGuessEncoding',
'files.guessableEncodings',
'files.autoSave',
'files.autoSaveDelay',
'files.encoding',
......
......@@ -237,17 +237,6 @@ configurationRegistry.registerConfiguration({
'description': nls.localize('autoGuessEncoding', "When enabled, the editor will attempt to guess the character set encoding when opening files. This setting can also be configured per language."),
'scope': ConfigurationScope.RESOURCE
},
'files.guessableEncodings': {
'type': 'array',
'overridable': true,
'default': [],
'items': {
'type': 'string',
'enum': Object.keys(SUPPORTED_ENCODINGS)
},
'scope': ConfigurationScope.RESOURCE,
'description': nls.localize('guessableEncodings', "If provided, will restrict the list of encodings that can be used when guessing. If the guessed file encoding is not in the list, the default encoding will be used.")
},
'files.eol': {
'type': 'string',
'enum': [
......
......@@ -531,8 +531,7 @@ export class FileService extends Disposable implements IFileService {
// decoding stream which is then used to drive the string stream.
TPromise.as(encoding.detectEncodingFromBuffer(
{ buffer: chunkBuffer, bytesRead },
(options && options.autoGuessEncoding) || this.textResourceConfigurationService.getValue(resource, 'files.autoGuessEncoding'),
(options && options.guessableEncodings) || this.textResourceConfigurationService.getValue(resource, 'files.guessableEncodings')
(options && options.autoGuessEncoding) || this.textResourceConfigurationService.getValue(resource, 'files.autoGuessEncoding')
)).then(detected => {
if (options && options.acceptTextOnly && detected.seemsBinary) {
......
......@@ -374,7 +374,6 @@ export class RemoteFileService extends FileService {
const decodeStreamOpts: IDecodeStreamOptions = {
guessEncoding: options.autoGuessEncoding,
guessableEncodings: options.guessableEncodings,
overwriteEncoding: detected => {
return this.encoding.getReadEncoding(resource, options, { encoding: detected, seemsBinary: false });
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册