mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2025-09-21 21:30:47 +02:00
This commit is contained in:
parent
13e375b281
commit
517eb42015
12 changed files with 151 additions and 7 deletions
|
@ -2212,12 +2212,13 @@ module.exports = {
|
||||||
"function": function MD007(params, onError) {
|
"function": function MD007(params, onError) {
|
||||||
var indent = Number(params.config.indent || 2);
|
var indent = Number(params.config.indent || 2);
|
||||||
var startIndented = !!params.config.start_indented;
|
var startIndented = !!params.config.start_indented;
|
||||||
|
var startIndent = Number(params.config.start_indent || indent);
|
||||||
flattenedLists().forEach(function (list) {
|
flattenedLists().forEach(function (list) {
|
||||||
if (list.unordered && list.parentsUnordered) {
|
if (list.unordered && list.parentsUnordered) {
|
||||||
list.items.forEach(function (item) {
|
list.items.forEach(function (item) {
|
||||||
var lineNumber = item.lineNumber, line = item.line;
|
var lineNumber = item.lineNumber, line = item.line;
|
||||||
var expectedNesting = list.nesting + (startIndented ? 1 : 0);
|
var expectedIndent = (startIndented ? startIndent : 0) +
|
||||||
var expectedIndent = expectedNesting * indent;
|
(list.nesting * indent);
|
||||||
var actualIndent = indentFor(item);
|
var actualIndent = indentFor(item);
|
||||||
var range = null;
|
var range = null;
|
||||||
var editColumn = 1;
|
var editColumn = 1;
|
||||||
|
|
10
doc/Rules.md
10
doc/Rules.md
|
@ -292,7 +292,11 @@ Tags: bullet, ul, indentation
|
||||||
|
|
||||||
Aliases: ul-indent
|
Aliases: ul-indent
|
||||||
|
|
||||||
Parameters: indent, start_indented (number; default 2, boolean; default false)
|
<!-- markdownlint-disable line-length -->
|
||||||
|
|
||||||
|
Parameters: indent, start_indented, start_indent (number; default 2, boolean; default false, number; defaults to indent)
|
||||||
|
|
||||||
|
<!-- markdownlint-restore -->
|
||||||
|
|
||||||
Fixable: Most violations can be fixed by tooling
|
Fixable: Most violations can be fixed by tooling
|
||||||
|
|
||||||
|
@ -319,7 +323,9 @@ rule).
|
||||||
|
|
||||||
The `start_indented` parameter allows the first level of lists to be indented by
|
The `start_indented` parameter allows the first level of lists to be indented by
|
||||||
the configured number of spaces rather than starting at zero (the inverse of
|
the configured number of spaces rather than starting at zero (the inverse of
|
||||||
MD006).
|
MD006). The `start_indent` parameter allows the first level of lists to be indented
|
||||||
|
by a different number of spaces than the rest (ignored when `start_indented` is not
|
||||||
|
set).
|
||||||
|
|
||||||
Rationale: Indenting by 2 spaces allows the content of a nested list to be in
|
Rationale: Indenting by 2 spaces allows the content of a nested list to be in
|
||||||
line with the start of the content of the parent list when a single space is
|
line with the start of the content of the parent list when a single space is
|
||||||
|
|
|
@ -13,12 +13,14 @@ module.exports = {
|
||||||
"function": function MD007(params, onError) {
|
"function": function MD007(params, onError) {
|
||||||
const indent = Number(params.config.indent || 2);
|
const indent = Number(params.config.indent || 2);
|
||||||
const startIndented = !!params.config.start_indented;
|
const startIndented = !!params.config.start_indented;
|
||||||
|
const startIndent = Number(params.config.start_indent || indent);
|
||||||
flattenedLists().forEach((list) => {
|
flattenedLists().forEach((list) => {
|
||||||
if (list.unordered && list.parentsUnordered) {
|
if (list.unordered && list.parentsUnordered) {
|
||||||
list.items.forEach((item) => {
|
list.items.forEach((item) => {
|
||||||
const { lineNumber, line } = item;
|
const { lineNumber, line } = item;
|
||||||
const expectedNesting = list.nesting + (startIndented ? 1 : 0);
|
const expectedIndent =
|
||||||
const expectedIndent = expectedNesting * indent;
|
(startIndented ? startIndent : 0) +
|
||||||
|
(list.nesting * indent);
|
||||||
const actualIndent = indentFor(item);
|
const actualIndent = indentFor(item);
|
||||||
let range = null;
|
let range = null;
|
||||||
let editColumn = 1;
|
let editColumn = 1;
|
||||||
|
|
|
@ -39,7 +39,9 @@
|
||||||
// Spaces for indent
|
// Spaces for indent
|
||||||
"indent": 2,
|
"indent": 2,
|
||||||
// Whether to indent the first level of the list
|
// Whether to indent the first level of the list
|
||||||
"start_indented": false
|
"start_indented": false,
|
||||||
|
// Spaces for first level indent (when start_indented is set)
|
||||||
|
"start_indent": 2
|
||||||
},
|
},
|
||||||
|
|
||||||
// MD009/no-trailing-spaces - Trailing spaces
|
// MD009/no-trailing-spaces - Trailing spaces
|
||||||
|
|
|
@ -36,6 +36,8 @@ MD007:
|
||||||
indent: 2
|
indent: 2
|
||||||
# Whether to indent the first level of the list
|
# Whether to indent the first level of the list
|
||||||
start_indented: false
|
start_indented: false
|
||||||
|
# Spaces for first level indent (when start_indented is set)
|
||||||
|
start_indent: 2
|
||||||
|
|
||||||
# MD009/no-trailing-spaces - Trailing spaces
|
# MD009/no-trailing-spaces - Trailing spaces
|
||||||
MD009:
|
MD009:
|
||||||
|
|
|
@ -107,6 +107,12 @@ rules.forEach(function forRule(rule) {
|
||||||
"description": "Whether to indent the first level of the list",
|
"description": "Whether to indent the first level of the list",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
"start_indent": {
|
||||||
|
"description":
|
||||||
|
"Spaces for first level indent (when start_indented is set)",
|
||||||
|
"type": "integer",
|
||||||
|
"default": 2
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -238,6 +238,11 @@
|
||||||
"description": "Whether to indent the first level of the list",
|
"description": "Whether to indent the first level of the list",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
"start_indent": {
|
||||||
|
"description": "Spaces for first level indent (when start_indented is set)",
|
||||||
|
"type": "integer",
|
||||||
|
"default": 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
@ -259,6 +264,11 @@
|
||||||
"description": "Whether to indent the first level of the list",
|
"description": "Whether to indent the first level of the list",
|
||||||
"type": "boolean",
|
"type": "boolean",
|
||||||
"default": false
|
"default": false
|
||||||
|
},
|
||||||
|
"start_indent": {
|
||||||
|
"description": "Spaces for first level indent (when start_indented is set)",
|
||||||
|
"type": "integer",
|
||||||
|
"default": 2
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"additionalProperties": false
|
"additionalProperties": false
|
||||||
|
|
35
test/list-indentation-start-indent-indent.md
Normal file
35
test/list-indentation-start-indent-indent.md
Normal file
|
@ -0,0 +1,35 @@
|
||||||
|
# List Indentation start_indent/indent
|
||||||
|
|
||||||
|
* item 1
|
||||||
|
* item 2
|
||||||
|
* item 2.1
|
||||||
|
* item 2.2
|
||||||
|
* item 2.2.1
|
||||||
|
* item 2.3
|
||||||
|
* item 2.3.1 {MD007}
|
||||||
|
* item 3
|
||||||
|
* item 4 {MD005} {MD007}
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
* item 1 {MD007}
|
||||||
|
* item 2 {MD007}
|
||||||
|
* item 2.1
|
||||||
|
* item 2.2
|
||||||
|
* item 2.2.1
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
* item 1
|
||||||
|
* item 2
|
||||||
|
* item 2.1 {MD007}
|
||||||
|
* item 2.2 {MD007}
|
||||||
|
* item 2.2.1 {MD007}
|
||||||
|
|
||||||
|
<!-- markdownlint-configure-file {
|
||||||
|
"ul-indent": {
|
||||||
|
"indent": 3,
|
||||||
|
"start_indented": true,
|
||||||
|
"start_indent": 1
|
||||||
|
}
|
||||||
|
} -->
|
34
test/list-indentation-start-indent-no-indent.md
Normal file
34
test/list-indentation-start-indent-no-indent.md
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
# List Indentation start_indent/no indent
|
||||||
|
|
||||||
|
* item 1
|
||||||
|
* item 2
|
||||||
|
* item 2.1
|
||||||
|
* item 2.2
|
||||||
|
* item 2.2.1
|
||||||
|
* item 2.3
|
||||||
|
* item 2.3.1 {MD007}
|
||||||
|
* item 3
|
||||||
|
* item 4 {MD005} {MD007}
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
* item 1 {MD007}
|
||||||
|
* item 2 {MD007}
|
||||||
|
* item 2.1 {MD007}
|
||||||
|
* item 2.2 {MD007}
|
||||||
|
* item 2.2.1 {MD007}
|
||||||
|
|
||||||
|
Text
|
||||||
|
|
||||||
|
* item 1
|
||||||
|
* item 2
|
||||||
|
* item 2.1 {MD007}
|
||||||
|
* item 2.2 {MD007}
|
||||||
|
* item 2.2.1 {MD007}
|
||||||
|
|
||||||
|
<!-- markdownlint-configure-file {
|
||||||
|
"ul-indent": {
|
||||||
|
"start_indented": true,
|
||||||
|
"start_indent": 1
|
||||||
|
}
|
||||||
|
} -->
|
46
test/list-indentation-start-indented-no-indent.md
Normal file
46
test/list-indentation-start-indented-no-indent.md
Normal file
|
@ -0,0 +1,46 @@
|
||||||
|
# List Indentation - Start Indented/No Indent
|
||||||
|
|
||||||
|
* item 1
|
||||||
|
* item 2
|
||||||
|
* item 2.1
|
||||||
|
* item 2.2
|
||||||
|
* item 2.2.1
|
||||||
|
* item 2.3
|
||||||
|
* item 3
|
||||||
|
|
||||||
|
## Disallowed List Indentation - Starts at Zero
|
||||||
|
|
||||||
|
* item 1 {MD007}
|
||||||
|
* item 2 {MD007}
|
||||||
|
* item 2.1 {MD007}
|
||||||
|
* item 2.2 {MD007}
|
||||||
|
* item 2.2.1 {MD007}
|
||||||
|
* item 2.3 {MD007}
|
||||||
|
* item 3 {MD007}
|
||||||
|
|
||||||
|
## Disallowed List Indentation - Starts at One
|
||||||
|
|
||||||
|
* item 1 {MD007}
|
||||||
|
* item 2 {MD007}
|
||||||
|
* item 2.1 {MD007}
|
||||||
|
* item 2.2 {MD007}
|
||||||
|
* item 2.2.1 {MD007}
|
||||||
|
* item 2.3 {MD007}
|
||||||
|
* item 2.3.1
|
||||||
|
* item 3 {MD007}
|
||||||
|
|
||||||
|
## Disallowed List Indentation - Starts at Three
|
||||||
|
|
||||||
|
* item 1 {MD007}
|
||||||
|
* item 2 {MD007}
|
||||||
|
* item 2.1 {MD007}
|
||||||
|
* item 2.2 {MD007}
|
||||||
|
* item 2.2.1 {MD007}
|
||||||
|
* item 2.3 {MD007}
|
||||||
|
* item 3 {MD007}
|
||||||
|
|
||||||
|
<!-- markdownlint-configure-file {
|
||||||
|
"ul-indent": {
|
||||||
|
"start_indented": true
|
||||||
|
}
|
||||||
|
} -->
|
Loading…
Add table
Add a link
Reference in a new issue