diff --git a/src/services/completions.ts b/src/services/completions.ts index 8236ea772ff..2d3d6906de9 100644 --- a/src/services/completions.ts +++ b/src/services/completions.ts @@ -829,6 +829,7 @@ namespace ts.Completions { target: options.target, omitTrailingSemicolon: true, hasSnippet: true, + newLine: getNewLineKind(getNewLineCharacter(options, host.getNewLine)), }); const importAdder = codefix.createImportAdder(sourceFile, program, preferences, host); diff --git a/src/services/textChanges.ts b/src/services/textChanges.ts index 7b0365b343e..d204bb0bc07 100644 --- a/src/services/textChanges.ts +++ b/src/services/textChanges.ts @@ -1037,7 +1037,7 @@ namespace ts.textChanges { /** Note: output node may be mutated input node. */ export function getNonformattedText(node: Node, sourceFile: SourceFile | undefined, newLineCharacter: string): { text: string, node: Node } { const writer = createWriter(newLineCharacter); - const newLine = newLineCharacter === "\n" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed; + const newLine = getNewLineKind(newLineCharacter); createPrinter({ newLine, neverAsciiEscape: true, diff --git a/src/services/utilities.ts b/src/services/utilities.ts index 965ae736d05..15dbd27fc16 100644 --- a/src/services/utilities.ts +++ b/src/services/utilities.ts @@ -3262,5 +3262,9 @@ namespace ts { return decisionFromFile ?? program.usesUriStyleNodeCoreModules; } + export function getNewLineKind(newLineCharacter: string): NewLineKind { + return newLineCharacter === "\n" ? NewLineKind.LineFeed : NewLineKind.CarriageReturnLineFeed; + } + // #endregion } diff --git a/tests/cases/fourslash/completionsOverridingMethod.ts b/tests/cases/fourslash/completionsOverridingMethod.ts index 62f9ed1d768..6d64efb4939 100644 --- a/tests/cases/fourslash/completionsOverridingMethod.ts +++ b/tests/cases/fourslash/completionsOverridingMethod.ts @@ -1,5 +1,6 @@ /// +// @newline: LF // @Filename: a.ts // Case: Concrete class implements abstract method ////abstract class ABase { @@ -111,12 +112,6 @@ ////} - -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); - verify.completions({ marker: "a", isNewIdentifierLocation: true, @@ -134,7 +129,7 @@ verify.completions({ end: 0, }, insertText: -"foo(param1: string, param2: boolean): Promise {\r\n}\r\n", +"foo(param1: string, param2: boolean): Promise {\n}\n", } ], }); @@ -156,7 +151,7 @@ verify.completions({ end: 0, }, insertText: -"foo(a: string, b: string): string {\r\n}\r\n", +"foo(a: string, b: string): string {\n}\n", } ], }); @@ -178,7 +173,7 @@ verify.completions({ end: 0, }, insertText: -"foo(a: string): string {\r\n}\r\n", +"foo(a: string): string {\n}\n", } ], }); @@ -200,7 +195,7 @@ verify.completions({ end: 0, }, insertText: -"foo(a: string): string {\r\n}\r\n", +"foo(a: string): string {\n}\n", } ], }); @@ -222,7 +217,7 @@ verify.completions({ end: 0, }, insertText: -"foo(a: string): string {\r\n}\r\n", +"foo(a: string): string {\n}\n", } ], }); @@ -244,7 +239,7 @@ verify.completions({ end: 0, }, insertText: -"foo(a: string): string {\r\n}\r\n", +"foo(a: string): string {\n}\n", } ], }); @@ -266,9 +261,9 @@ verify.completions({ end: 0, }, insertText: -"foo(a: string): string;\r\n\ -foo(a: undefined, b: number): string;\r\n\ -foo(a: any, b?: any): string {\r\n}\r\n", +"foo(a: string): string;\n\ +foo(a: undefined, b: number): string;\n\ +foo(a: any, b?: any): string {\n}\n", } ], }); @@ -299,7 +294,7 @@ verify.completions({ end: 0, }, insertText: -"met(n: number): number {\r\n}\r\n", +"met(n: number): number {\n}\n", } ], }); @@ -321,7 +316,7 @@ verify.completions({ end: 0, }, insertText: -"met(t: T): T {\r\n}\r\n", +"met(t: T): T {\n}\n", }, { name: "metcons", @@ -332,7 +327,7 @@ verify.completions({ end: 0, }, insertText: -"metcons(t: T): T {\r\n}\r\n", +"metcons(t: T): T {\n}\n", } ], }); \ No newline at end of file diff --git a/tests/cases/fourslash/completionsOverridingMethod1.ts b/tests/cases/fourslash/completionsOverridingMethod1.ts index 9ff6bff1fcb..e560d3eca35 100644 --- a/tests/cases/fourslash/completionsOverridingMethod1.ts +++ b/tests/cases/fourslash/completionsOverridingMethod1.ts @@ -1,5 +1,6 @@ /// +// @newline: LF // @Filename: h.ts // @noImplicitOverride: true // Case: Suggested method needs `override` modifier @@ -11,10 +12,6 @@ //// f/*h*/ ////} -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); verify.completions({ marker: "h", @@ -33,7 +30,7 @@ verify.completions({ end: 0, }, insertText: -"override foo(a: string): void {\r\n}\r\n", +"override foo(a: string): void {\n}\n", } ], }); \ No newline at end of file diff --git a/tests/cases/fourslash/completionsOverridingMethod2.ts b/tests/cases/fourslash/completionsOverridingMethod2.ts index 7e1ab801c06..aa68e551d76 100644 --- a/tests/cases/fourslash/completionsOverridingMethod2.ts +++ b/tests/cases/fourslash/completionsOverridingMethod2.ts @@ -1,5 +1,6 @@ /// +// @newline: LF // @Filename: a.ts // Case: Snippet text needs escaping ////interface DollarSign { @@ -9,10 +10,6 @@ //// /*a*/ ////} -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); verify.completions({ marker: "a", @@ -32,7 +29,7 @@ verify.completions({ }, isSnippet: true, insertText: -"\"\\$usd\"(${1:a}: ${2:number}): ${3:number} {\r\n $0\r\n}\r\n", +"\"\\$usd\"(${1:a}: ${2:number}): ${3:number} {\n $0\n}\n", } ], }); \ No newline at end of file diff --git a/tests/cases/fourslash/completionsOverridingMethod3.ts b/tests/cases/fourslash/completionsOverridingMethod3.ts index 6ff8a51808c..fb0d0dee1ac 100644 --- a/tests/cases/fourslash/completionsOverridingMethod3.ts +++ b/tests/cases/fourslash/completionsOverridingMethod3.ts @@ -1,5 +1,6 @@ /// +// @newline: LF // @Filename: boo.d.ts // Case: Declaration files ////interface Ghost { @@ -10,10 +11,6 @@ //// /*b*/ ////} -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); verify.completions({ marker: "b", @@ -32,7 +29,7 @@ verify.completions({ end: 0, }, insertText: -"boo(): string;\r\n", +"boo(): string;\n", } ], }); \ No newline at end of file diff --git a/tests/cases/fourslash/completionsOverridingMethod4.ts b/tests/cases/fourslash/completionsOverridingMethod4.ts index 8fb1acfcfcf..707d35c8e3c 100644 --- a/tests/cases/fourslash/completionsOverridingMethod4.ts +++ b/tests/cases/fourslash/completionsOverridingMethod4.ts @@ -1,5 +1,6 @@ /// +// @newline: LF // @Filename: secret.ts // Case: accessibility modifier inheritance ////class Secret { @@ -26,11 +27,6 @@ ////} -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); - verify.completions({ marker: "a", isNewIdentifierLocation: true, @@ -51,7 +47,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "protected hint(): string {\r\n}\r\n", + insertText: "protected hint(): string {\n}\n", }, { name: "refuse", @@ -61,7 +57,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "public refuse(): string {\r\n}\r\n", + insertText: "public refuse(): string {\n}\n", } ], }); \ No newline at end of file diff --git a/tests/cases/fourslash/completionsOverridingMethod5.ts b/tests/cases/fourslash/completionsOverridingMethod5.ts index 81cbe6863d9..2fbbebca032 100644 --- a/tests/cases/fourslash/completionsOverridingMethod5.ts +++ b/tests/cases/fourslash/completionsOverridingMethod5.ts @@ -1,5 +1,6 @@ /// +// @newline: LF // @Filename: a.ts // Case: abstract methods ////abstract class Ab { @@ -15,10 +16,6 @@ //// abstract m/*c*/ ////} -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); verify.completions({ marker: "a", @@ -36,7 +33,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "met(n: string): void {\r\n}\r\n", + insertText: "met(n: string): void {\n}\n", }, { name: "met2", @@ -46,7 +43,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "met2(n: number): void {\r\n}\r\n", + insertText: "met2(n: number): void {\n}\n", } ], }); @@ -67,7 +64,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "met(n: string): void;\r\n", + insertText: "met(n: string): void;\n", }, { name: "met2", @@ -77,7 +74,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "met2(n: number): void;\r\n", + insertText: "met2(n: number): void;\n", } ], }); @@ -98,7 +95,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "met(n: string): void;\r\n", + insertText: "met(n: string): void;\n", }, { name: "met2", @@ -108,7 +105,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "met2(n: number): void;\r\n", + insertText: "met2(n: number): void;\n", } ], }); diff --git a/tests/cases/fourslash/completionsOverridingMethod6.ts b/tests/cases/fourslash/completionsOverridingMethod6.ts index df25d62b41c..c737836e92e 100644 --- a/tests/cases/fourslash/completionsOverridingMethod6.ts +++ b/tests/cases/fourslash/completionsOverridingMethod6.ts @@ -1,6 +1,7 @@ /// // @Filename: a.ts +// @newline: LF // Case: modifier inheritance/deduplication ////class A { //// public method(): number { @@ -25,12 +26,6 @@ //// public f/*c*/ ////} - -// format.setFormatOptions({ -// newLineCharacter: "\n", -// }); -// format.setOption("newline", "\n"); - verify.completions({ marker: "a", isNewIdentifierLocation: true, @@ -47,7 +42,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "method(): number {\r\n}\r\n", + insertText: "method(): number {\n}\n", }, ], }); @@ -68,7 +63,7 @@ verify.completions({ pos: 0, end: 0, }, - insertText: "method(): number;\r\n", + insertText: "method(): number;\n", }, ], }); @@ -90,9 +85,9 @@ verify.completions({ end: 0, }, insertText: - "fun(a: number): number;\r\n\ -public fun(a: undefined, b: string): number;\r\n\ -public fun(a: any, b?: any): number {\r\n}\r\n", + "fun(a: number): number;\n\ +public fun(a: undefined, b: string): number;\n\ +public fun(a: any, b?: any): number {\n}\n", }, ], }); \ No newline at end of file