diff --git a/packages/prettier-plugin-java/src/comments.ts b/packages/prettier-plugin-java/src/comments.ts index 80a4a48b1..1f5a917a9 100644 --- a/packages/prettier-plugin-java/src/comments.ts +++ b/packages/prettier-plugin-java/src/comments.ts @@ -10,44 +10,44 @@ import { type JavaParserOptions } from "./printers/helpers.js"; -const formatterOffOnRangesByCst = new WeakMap< +const prettierIgnoreRangesByCst = new WeakMap< JavaNode, - FormatterOffOnRange[] + PrettierIgnoreRange[] >(); -export function determineFormatterOffOnRanges(cst: JavaNonTerminal) { +export function determinePrettierIgnoreRanges(cst: JavaNonTerminal) { const { comments } = cst; if (!comments) { return; } const ranges = comments .filter(({ image }) => - /^(\/\/\s*@formatter:(off|on)\s*|\/\*\s*@formatter:(off|on)\s*\*\/)$/.test( + /^\/(?:\/\s*(?:prettier-ignore-(?:start|end)|@formatter:(?:off|on))\s*|\*\s*(?:prettier-ignore-(?:start|end)|@formatter:(?:off|on))\s*\*\/)$/.test( image ) ) .reduce((ranges, { image, startOffset }) => { const previous = ranges.at(-1); - if (image.endsWith("off")) { - if (previous?.on !== Infinity) { - ranges.push({ off: startOffset, on: Infinity }); + if (image.includes("start") || image.includes("off")) { + if (previous?.end !== Infinity) { + ranges.push({ start: startOffset, end: Infinity }); } - } else if (previous?.on === Infinity) { - previous.on = startOffset; + } else if (previous?.end === Infinity) { + previous.end = startOffset; } return ranges; - }, new Array()); - formatterOffOnRangesByCst.set(cst, ranges); + }, new Array()); + prettierIgnoreRangesByCst.set(cst, ranges); } -export function isFullyBetweenFormatterOffOn(path: AstPath) { +export function isFullyBetweenPrettierIgnore(path: AstPath) { const { node, root } = path; const start = parser.locStart(node); const end = parser.locEnd(node); return ( - formatterOffOnRangesByCst + prettierIgnoreRangesByCst .get(root) - ?.some(range => range.off < start && end < range.on) === true + ?.some(range => range.start < start && end < range.end) === true ); } @@ -300,7 +300,7 @@ export type JavaComment = IToken & { followingNode?: JavaNode; }; -type FormatterOffOnRange = { - off: number; - on: number; +type PrettierIgnoreRange = { + start: number; + end: number; }; diff --git a/packages/prettier-plugin-java/src/parser.ts b/packages/prettier-plugin-java/src/parser.ts index b0fe26dde..b9bb00499 100644 --- a/packages/prettier-plugin-java/src/parser.ts +++ b/packages/prettier-plugin-java/src/parser.ts @@ -1,6 +1,6 @@ import { parse } from "java-parser"; import type { Parser } from "prettier"; -import { determineFormatterOffOnRanges } from "./comments.js"; +import { determinePrettierIgnoreRanges } from "./comments.js"; import { isTerminal, type JavaNode, @@ -14,7 +14,7 @@ export default { cst.comments?.forEach(comment => { comment.value = comment.image; }); - determineFormatterOffOnRanges(cst); + determinePrettierIgnoreRanges(cst); return cst; }, astFormat: "java", diff --git a/packages/prettier-plugin-java/src/printer.ts b/packages/prettier-plugin-java/src/printer.ts index 24198ab4c..3faa75c47 100644 --- a/packages/prettier-plugin-java/src/printer.ts +++ b/packages/prettier-plugin-java/src/printer.ts @@ -3,7 +3,7 @@ import { canAttachComment, handleLineComment, handleRemainingComment, - isFullyBetweenFormatterOffOn + isFullyBetweenPrettierIgnore } from "./comments.js"; import { isNonTerminal, @@ -26,7 +26,7 @@ export default { node.comments?.some(({ image }) => /^(\/\/\s*prettier-ignore|\/\*\s*prettier-ignore\s*\*\/)$/.test(image) ) === true || - (canAttachComment(node) && isFullyBetweenFormatterOffOn(path)) + (canAttachComment(node) && isFullyBetweenPrettierIgnore(path)) ); }, canAttachComment, diff --git a/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_input.java b/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_input.java index 58583fdb6..efb94ba33 100644 --- a/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_input.java @@ -1,16 +1,16 @@ -// @formatter:off +// prettier-ignore-start public class PrettierIgnoreClass { public void myMethod(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) { } } -// @formatter:on +/* prettier-ignore-end */ public class PrettierIgnoreClass { public void myMethod(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) { } } -// @formatter:off +/* @formatter:off */ public class PrettierIgnoreClass { public void myMethod(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) { diff --git a/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_output.java b/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_output.java index ecaec8fca..48b3de5de 100644 --- a/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/formatter-on-off/multiple/_output.java @@ -1,11 +1,11 @@ -// @formatter:off +// prettier-ignore-start public class PrettierIgnoreClass { public void myMethod(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) { } } -// @formatter:on +/* prettier-ignore-end */ public class PrettierIgnoreClass { public void myMethod( @@ -22,7 +22,7 @@ public void myMethod( ) {} } -// @formatter:off +/* @formatter:off */ public class PrettierIgnoreClass { public void myMethod(int param1, int param2, int param3, int param4, int param5, int param6, int param7, int param8, int param9, int param10) {