feat(markdown): respect `tabWidth` for list indentation (#3694)
* test: add test case * feat(markdown): respect `tabWidth` for list indentation * test: add extreme `tabWidth` test casemaster
parent
b1a7787e87
commit
3df7d60a7f
|
@ -243,24 +243,14 @@ function genericPrint(path, options, print) {
|
|||
: nthSiblingIndex % 2 === 0 ? "* " : "- ";
|
||||
return concat([
|
||||
prefix,
|
||||
align(" ".repeat(prefix.length), childPath.call(print))
|
||||
align(
|
||||
" ".repeat(prefix.length),
|
||||
printListItem(childPath, options, print, prefix)
|
||||
)
|
||||
]);
|
||||
}
|
||||
});
|
||||
}
|
||||
case "listItem": {
|
||||
const prefix =
|
||||
node.checked === null ? "" : node.checked ? "[x] " : "[ ] ";
|
||||
return concat([
|
||||
prefix,
|
||||
printChildren(path, options, print, {
|
||||
processor: (childPath, index) =>
|
||||
index === 0 && childPath.getValue().type !== "list"
|
||||
? align(" ".repeat(prefix.length), childPath.call(print))
|
||||
: childPath.call(print)
|
||||
})
|
||||
]);
|
||||
}
|
||||
case "thematicBreak": {
|
||||
const counter = getAncestorCounter(path, "list");
|
||||
if (counter === -1) {
|
||||
|
@ -324,11 +314,32 @@ function genericPrint(path, options, print) {
|
|||
hardline
|
||||
]);
|
||||
case "tableRow": // handled in "table"
|
||||
case "listItem": // handled in "list"
|
||||
default:
|
||||
throw new Error(`Unknown markdown type ${JSON.stringify(node.type)}`);
|
||||
}
|
||||
}
|
||||
|
||||
function printListItem(path, options, print, listPrefix) {
|
||||
const node = path.getValue();
|
||||
const prefix = node.checked === null ? "" : node.checked ? "[x] " : "[ ] ";
|
||||
return concat([
|
||||
prefix,
|
||||
printChildren(path, options, print, {
|
||||
processor: (childPath, index) => {
|
||||
if (index === 0 && childPath.getValue().type !== "list") {
|
||||
return align(" ".repeat(prefix.length), childPath.call(print));
|
||||
}
|
||||
|
||||
const alignment = " ".repeat(
|
||||
clamp(options.tabWidth - listPrefix.length, 0, 3) // 4 will cause indented codeblock
|
||||
);
|
||||
return concat([alignment, align(alignment, childPath.call(print))]);
|
||||
}
|
||||
})
|
||||
]);
|
||||
}
|
||||
|
||||
function getNthListSiblingIndex(node, parentNode) {
|
||||
return getNthSiblingIndex(
|
||||
node,
|
||||
|
@ -659,6 +670,10 @@ function normalizeParts(parts) {
|
|||
}, []);
|
||||
}
|
||||
|
||||
function clamp(value, min, max) {
|
||||
return value < min ? min : value > max ? max : value;
|
||||
}
|
||||
|
||||
function clean(ast, newObj) {
|
||||
// for markdown codeblock
|
||||
if (ast.type === "code") {
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,85 @@
|
|||
- [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
- a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
- [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
1. a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
1. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
12345678) a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
12345678. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
1. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
- a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
- [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
1. a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
1. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
12345678) a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
12345678. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
12345678) [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
- a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
- [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
1. a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
1. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
12345678) a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
12345678. [ ] a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
||||
|
||||
b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b b
|
||||
|
||||
a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a a
|
|
@ -1 +1,4 @@
|
|||
run_spec(__dirname, ["markdown"], { proseWrap: "always" });
|
||||
run_spec(__dirname, ["markdown"], { proseWrap: "always", tabWidth: 4 });
|
||||
run_spec(__dirname, ["markdown"], { proseWrap: "always", tabWidth: 999 });
|
||||
run_spec(__dirname, ["markdown"], { proseWrap: "always", tabWidth: 0 });
|
||||
|
|
Loading…
Reference in New Issue