diff --git a/demo/markdownlint-browser.js b/demo/markdownlint-browser.js index dad1aea0..5a86b4b1 100644 --- a/demo/markdownlint-browser.js +++ b/demo/markdownlint-browser.js @@ -3441,14 +3441,14 @@ module.exports = { var listItemPrefix = _step2.value; var lineNumber = listItemPrefix.startLine; var actualIndent = listItemPrefix.startColumn - 1; - var markerLength = listItemPrefix.text.trim().length; - var range = [1, listItemPrefix.startColumn + markerLength]; + var range = [1, listItemPrefix.endColumn - 1]; if (list.type === "listUnordered") { addErrorDetailIf(onError, lineNumber, expectedIndent, actualIndent, null, null, range // No fixInfo; MD007 handles this scenario better ); } else { - var actualEnd = range[1] - 1; + var markerLength = listItemPrefix.text.trim().length; + var actualEnd = listItemPrefix.startColumn + markerLength - 1; expectedEnd = expectedEnd || actualEnd; if (expectedIndent !== actualIndent || endMatching) { if (expectedEnd === actualEnd) { @@ -3525,7 +3525,8 @@ module.exports = { try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var token = _step.value; - var parent = token.parent, + var endColumn = token.endColumn, + parent = token.parent, startColumn = token.startColumn, startLine = token.startLine, type = token.type; @@ -3556,7 +3557,7 @@ module.exports = { var expectedIndent = (startIndented ? startIndent : 0) + _nesting * indent; var blockQuoteAdjustment = ((_lastBlockQuotePrefix = lastBlockQuotePrefix) === null || _lastBlockQuotePrefix === void 0 ? void 0 : _lastBlockQuotePrefix.endLine) === startLine ? lastBlockQuotePrefix.endColumn - 1 : 0; var actualIndent = startColumn - 1 - blockQuoteAdjustment; - var range = [1, startColumn + 1]; + var range = [1, endColumn - 1]; var fixInfo = { "editColumn": startColumn - actualIndent, "deleteCount": Math.max(actualIndent - expectedIndent, 0), @@ -4499,14 +4500,14 @@ module.exports = { try { for (_iterator.s(); !(_step = _iterator.n()).done;) { var heading = _step.value; - var endLine = heading.endLine, - startColumn = heading.startColumn, + var endColumn = heading.endColumn, + endLine = heading.endLine, text = heading.text; var match = trailingPunctuationRe.exec(text); if (match && !endOfLineHtmlEntityRe.test(text) && !endOfLineGemojiCodeRe.test(text)) { var fullMatch = match[0]; - var column = startColumn + match.index; var length = fullMatch.length; + var column = endColumn - length; addError(onError, endLine, "Punctuation: '".concat(fullMatch, "'"), undefined, [column, length], { "editColumn": column, "deleteCount": length diff --git a/lib/md005.js b/lib/md005.js index d86253ba..670ffe7d 100644 --- a/lib/md005.js +++ b/lib/md005.js @@ -23,8 +23,7 @@ module.exports = { for (const listItemPrefix of listItemPrefixes) { const lineNumber = listItemPrefix.startLine; const actualIndent = listItemPrefix.startColumn - 1; - const markerLength = listItemPrefix.text.trim().length; - const range = [ 1, listItemPrefix.startColumn + markerLength ]; + const range = [ 1, listItemPrefix.endColumn - 1 ]; if (list.type === "listUnordered") { addErrorDetailIf( onError, @@ -37,7 +36,8 @@ module.exports = { // No fixInfo; MD007 handles this scenario better ); } else { - const actualEnd = range[1] - 1; + const markerLength = listItemPrefix.text.trim().length; + const actualEnd = listItemPrefix.startColumn + markerLength - 1; expectedEnd = expectedEnd || actualEnd; if ((expectedIndent !== actualIndent) || endMatching) { if (expectedEnd === actualEnd) { diff --git a/lib/md007.js b/lib/md007.js index 689a5fd6..b4d9ef2d 100644 --- a/lib/md007.js +++ b/lib/md007.js @@ -30,7 +30,7 @@ module.exports = { unorderedListTypes ); for (const token of tokens) { - const { parent, startColumn, startLine, type } = token; + const { endColumn, parent, startColumn, startLine, type } = token; if (type === "blockQuotePrefix") { lastBlockQuotePrefix = token; } else if (type === "listUnordered") { @@ -63,7 +63,7 @@ module.exports = { (lastBlockQuotePrefix.endColumn - 1) : 0; const actualIndent = startColumn - 1 - blockQuoteAdjustment; - const range = [ 1, startColumn + 1 ]; + const range = [ 1, endColumn - 1 ]; const fixInfo = { "editColumn": startColumn - actualIndent, "deleteCount": Math.max(actualIndent - expectedIndent, 0), diff --git a/lib/md026.js b/lib/md026.js index 758d891b..8d47a1a0 100644 --- a/lib/md026.js +++ b/lib/md026.js @@ -23,7 +23,7 @@ module.exports = { [ "atxHeadingText", "setextHeadingText" ] ); for (const heading of headings) { - const { endLine, startColumn, text } = heading; + const { endColumn, endLine, text } = heading; const match = trailingPunctuationRe.exec(text); if ( match && @@ -31,8 +31,8 @@ module.exports = { !endOfLineGemojiCodeRe.test(text) ) { const fullMatch = match[0]; - const column = startColumn + match.index; const length = fullMatch.length; + const column = endColumn - length; addError( onError, endLine, diff --git a/package.json b/package.json index 43189ccb..90d7786f 100644 --- a/package.json +++ b/package.json @@ -56,7 +56,7 @@ "test": "ava --timeout=30s test/markdownlint-test.js test/markdownlint-test-config.js test/markdownlint-test-custom-rules.js test/markdownlint-test-helpers.js test/markdownlint-test-micromark.mjs test/markdownlint-test-result-object.js test/markdownlint-test-scenarios.js", "test-cover": "c8 --100 npm test", "test-declaration": "cd example/typescript && tsc && node type-check.js", - "test-extra": "ava --timeout=5m test/markdownlint-test-extra-parse.js test/markdownlint-test-extra-type.js", + "test-extra": "ava --timeout=10m test/markdownlint-test-extra-parse.js test/markdownlint-test-extra-type.js", "update-snapshots": "ava --update-snapshots test/markdownlint-test-micromark.mjs test/markdownlint-test-scenarios.js", "update-snapshots-test-repos": "ava --timeout=10m --update-snapshots test/markdownlint-test-repos-*.js", "upgrade": "npx --yes npm-check-updates --upgrade" diff --git a/test/markdownlint-test-extra-type.js b/test/markdownlint-test-extra-type.js index 4802a0b3..59b094a4 100644 --- a/test/markdownlint-test-extra-type.js +++ b/test/markdownlint-test-extra-type.js @@ -18,7 +18,7 @@ for (const file of files) { strings[content.length.toString()] = content; content = content.slice(0, -1); } - test(`type ${file}`, (t) => { + test.serial(`type ${file}`, (t) => { t.plan(1); markdownlint.sync({ // @ts-ignore diff --git a/test/snapshots/markdownlint-test-scenarios.js.md b/test/snapshots/markdownlint-test-scenarios.js.md index 037440a1..afb71c03 100644 --- a/test/snapshots/markdownlint-test-scenarios.js.md +++ b/test/snapshots/markdownlint-test-scenarios.js.md @@ -6521,7 +6521,7 @@ Generated by [AVA](https://avajs.dev). errorDetail: 'Expected: 0; Actual: 1', errorRange: [ 1, - 3, + 4, ], fixInfo: { deleteCount: 1, diff --git a/test/snapshots/markdownlint-test-scenarios.js.snap b/test/snapshots/markdownlint-test-scenarios.js.snap index d6d62181..595caa5f 100644 Binary files a/test/snapshots/markdownlint-test-scenarios.js.snap and b/test/snapshots/markdownlint-test-scenarios.js.snap differ