diff --git a/src/services/codefixes/disableJsDiagnostics.ts b/src/services/codefixes/disableJsDiagnostics.ts index 231b3c1513f..a887878bac6 100644 --- a/src/services/codefixes/disableJsDiagnostics.ts +++ b/src/services/codefixes/disableJsDiagnostics.ts @@ -15,7 +15,7 @@ namespace ts.codefix { return undefined; } - const newLineCharacter = textChanges.getNewLineFromContext(context); + const newLineCharacter = getNewLineOrDefaultFromHost(context.host, context.formatContext.options); return [{ description: getLocaleSpecificMessage(Diagnostics.Ignore_this_error_message), @@ -38,7 +38,7 @@ namespace ts.codefix { fixIds: [fixId], // No point applying as a group, doing it once will fix all errors getAllCodeActions: context => codeFixAllWithTextChanges(context, errorCodes, (changes, err) => { if (err.start !== undefined) { - changes.push(getIgnoreCommentLocationForLocation(err.file!, err.start, textChanges.getNewLineFromContext(context))); + changes.push(getIgnoreCommentLocationForLocation(err.file!, err.start, getNewLineOrDefaultFromHost(context.host, context.formatContext.options))); } }), }); diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index c176eef24f2..3674cd31b97 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -191,11 +191,6 @@ namespace ts.textChanges { formatContext: ts.formatting.FormatContext; } - export function getNewLineFromContext(context: TextChangesContext) { - const formatSettings = context.formatContext.options; - return (formatSettings && formatSettings.newLineCharacter) || getNewLineOrDefaultFromHost(context.host); - } - export class ChangeTracker { private readonly changes: Change[] = []; private readonly newLineCharacter: string; @@ -204,7 +199,7 @@ namespace ts.textChanges { private readonly nodesInsertedAtClassStarts = createMap<{ sourceFile: SourceFile, cls: ClassLikeDeclaration, members: ClassElement[] }>(); public static fromContext(context: TextChangesContext): ChangeTracker { - return new ChangeTracker(getNewLineFromContext(context) === "\n" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed, context.formatContext); + return new ChangeTracker(getNewLineOrDefaultFromHost(context.host, context.formatContext.options) === "\n" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed, context.formatContext); } public static with(context: TextChangesContext, cb: (tracker: ChangeTracker) => void): FileTextChanges[] { diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 344a44a9f18..9bb35359523 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -1259,8 +1259,10 @@ namespace ts { /** * The default is CRLF. */ - export function getNewLineOrDefaultFromHost(host: LanguageServiceHost | LanguageServiceShimHost) { - return host.getNewLine ? host.getNewLine() : carriageReturnLineFeed; + export function getNewLineOrDefaultFromHost(host: LanguageServiceHost | LanguageServiceShimHost, formatSettings?: FormatCodeSettings) { + return (formatSettings && formatSettings.newLineCharacter) || + (host.getNewLine && host.getNewLine()) || + carriageReturnLineFeed; } export function lineBreakPart() {