diff --git a/eslint-plugin-prettier.js b/eslint-plugin-prettier.js index 0ef19af..e2ba210 100644 --- a/eslint-plugin-prettier.js +++ b/eslint-plugin-prettier.js @@ -104,22 +104,28 @@ function getLocFromIndex(sourceCode, index) { function reportDifference(context, difference) { const { operation, offset, deleteText = '', insertText = '' } = difference; /** @type {AST.Range} */ - const range = [offset, offset + deleteText.length]; + const [highlightStart, highlightEnd] = [ + offset, + offset + (deleteText.length || Math.min(insertText.length, 1)), + ]; + /** @type {AST.Range} */ + const replaceRange = [offset, offset + deleteText.length]; // `context.getSourceCode()` was deprecated in ESLint v8.40.0 and replaced // with the `sourceCode` property. // TODO: Only use property when our eslint peerDependency is >=8.40.0. const sourceCode = context.sourceCode ?? context.getSourceCode(); - const [start, end] = range.map(index => getLocFromIndex(sourceCode, index)); - context.report({ messageId: operation, data: { deleteText: showInvisibles(deleteText), insertText: showInvisibles(insertText), }, - loc: { start, end }, - fix: fixer => fixer.replaceTextRange(range, insertText), + loc: { + start: getLocFromIndex(sourceCode, highlightStart), + end: getLocFromIndex(sourceCode, highlightEnd), + }, + fix: fixer => fixer.replaceTextRange(replaceRange, insertText), }); }