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

revert "files.guessableEncodings"

上级 caaa5369
...@@ -19,7 +19,6 @@ export const UTF16le = 'utf16le'; ...@@ -19,7 +19,6 @@ export const UTF16le = 'utf16le';
export interface IDecodeStreamOptions { export interface IDecodeStreamOptions {
guessEncoding?: boolean; guessEncoding?: boolean;
guessableEncodings?: string[];
minBytesRequiredForDetection?: number; minBytesRequiredForDetection?: number;
overwriteEncoding?(detectedEncoding: string): string; overwriteEncoding?(detectedEncoding: string): string;
} }
...@@ -79,7 +78,7 @@ export function toDecodeStream(readable: Readable, options: IDecodeStreamOptions ...@@ -79,7 +78,7 @@ export function toDecodeStream(readable: Readable, options: IDecodeStreamOptions
this._decodeStreamConstruction = TPromise.as(detectEncodingFromBuffer({ this._decodeStreamConstruction = TPromise.as(detectEncodingFromBuffer({
buffer: Buffer.concat(this._buffer), bytesRead: this._bytesBuffered buffer: Buffer.concat(this._buffer), bytesRead: this._bytesBuffered
}, options.guessEncoding, options.guessableEncodings)).then(detected => { }, options.guessEncoding)).then(detected => {
detected.encoding = options.overwriteEncoding(detected.encoding); detected.encoding = options.overwriteEncoding(detected.encoding);
this._decodeStream = decodeStream(detected.encoding); this._decodeStream = decodeStream(detected.encoding);
for (const buffer of this._buffer) { for (const buffer of this._buffer) {
...@@ -273,8 +272,8 @@ export interface IDetectedEncodingResult { ...@@ -273,8 +272,8 @@ export interface IDetectedEncodingResult {
} }
export function detectEncodingFromBuffer(readResult: stream.ReadResult, autoGuessEncoding?: false): 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(readResult: stream.ReadResult, autoGuessEncoding?: boolean): TPromise<IDetectedEncodingResult>;
export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResult, autoGuessEncoding?: boolean, guessableEncodings?: string[]): TPromise<IDetectedEncodingResult> | IDetectedEncodingResult { export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResult, autoGuessEncoding?: boolean): TPromise<IDetectedEncodingResult> | IDetectedEncodingResult {
// Always first check for BOM to find out about encoding // Always first check for BOM to find out about encoding
let encoding = detectEncodingByBOMFromBuffer(buffer, bytesRead); let encoding = detectEncodingByBOMFromBuffer(buffer, bytesRead);
...@@ -332,13 +331,6 @@ export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResul ...@@ -332,13 +331,6 @@ export function detectEncodingFromBuffer({ buffer, bytesRead }: stream.ReadResul
// Auto guess encoding if configured // Auto guess encoding if configured
if (autoGuessEncoding && !seemsBinary && !encoding) { if (autoGuessEncoding && !seemsBinary && !encoding) {
return guessEncodingByBuffer(buffer.slice(0, bytesRead)).then(guessedEncoding => { 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 { return {
seemsBinary: false, seemsBinary: false,
encoding: guessedEncoding encoding: guessedEncoding
......
...@@ -153,42 +153,6 @@ suite('Encoding', () => { ...@@ -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) { async function readAndDecodeFromDisk(path, _encoding) {
return new Promise<string>((resolve, reject) => { return new Promise<string>((resolve, reject) => {
fs.readFile(path, (err, data) => { fs.readFile(path, (err, data) => {
......
...@@ -552,12 +552,6 @@ export interface IResolveContentOptions { ...@@ -552,12 +552,6 @@ export interface IResolveContentOptions {
*/ */
autoGuessEncoding?: boolean; 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, * 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. * data will be read from the current file position.
...@@ -667,7 +661,6 @@ export interface IFilesConfiguration { ...@@ -667,7 +661,6 @@ export interface IFilesConfiguration {
watcherExclude: { [filepattern: string]: boolean }; watcherExclude: { [filepattern: string]: boolean };
encoding: string; encoding: string;
autoGuessEncoding: boolean; autoGuessEncoding: boolean;
guessableEncodings: string[];
defaultLanguage: string; defaultLanguage: string;
trimTrailingWhitespace: boolean; trimTrailingWhitespace: boolean;
autoSave: string; autoSave: string;
......
...@@ -163,7 +163,6 @@ const configurationValueWhitelist = [ ...@@ -163,7 +163,6 @@ const configurationValueWhitelist = [
'extensions.autoUpdate', 'extensions.autoUpdate',
'files.associations', 'files.associations',
'files.autoGuessEncoding', 'files.autoGuessEncoding',
'files.guessableEncodings',
'files.autoSave', 'files.autoSave',
'files.autoSaveDelay', 'files.autoSaveDelay',
'files.encoding', 'files.encoding',
......
...@@ -237,17 +237,6 @@ configurationRegistry.registerConfiguration({ ...@@ -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."), '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 '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': { 'files.eol': {
'type': 'string', 'type': 'string',
'enum': [ 'enum': [
......
...@@ -531,8 +531,7 @@ export class FileService extends Disposable implements IFileService { ...@@ -531,8 +531,7 @@ export class FileService extends Disposable implements IFileService {
// decoding stream which is then used to drive the string stream. // decoding stream which is then used to drive the string stream.
TPromise.as(encoding.detectEncodingFromBuffer( TPromise.as(encoding.detectEncodingFromBuffer(
{ buffer: chunkBuffer, bytesRead }, { buffer: chunkBuffer, bytesRead },
(options && options.autoGuessEncoding) || this.textResourceConfigurationService.getValue(resource, 'files.autoGuessEncoding'), (options && options.autoGuessEncoding) || this.textResourceConfigurationService.getValue(resource, 'files.autoGuessEncoding')
(options && options.guessableEncodings) || this.textResourceConfigurationService.getValue(resource, 'files.guessableEncodings')
)).then(detected => { )).then(detected => {
if (options && options.acceptTextOnly && detected.seemsBinary) { if (options && options.acceptTextOnly && detected.seemsBinary) {
......
...@@ -374,7 +374,6 @@ export class RemoteFileService extends FileService { ...@@ -374,7 +374,6 @@ export class RemoteFileService extends FileService {
const decodeStreamOpts: IDecodeStreamOptions = { const decodeStreamOpts: IDecodeStreamOptions = {
guessEncoding: options.autoGuessEncoding, guessEncoding: options.autoGuessEncoding,
guessableEncodings: options.guessableEncodings,
overwriteEncoding: detected => { overwriteEncoding: detected => {
return this.encoding.getReadEncoding(resource, options, { encoding: detected, seemsBinary: false }); 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.
先完成此消息的编辑!
想要评论请 注册