Skip to content

Commit b062647

Browse files
committed
feat(#7): support 2-space on indents for nested bulleted lists
1 parent 3f568d9 commit b062647

File tree

1 file changed

+13
-4
lines changed

1 file changed

+13
-4
lines changed

mdformat_mkdocs/plugin.py

+13-4
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,12 @@
1010
"""Use 4-spaces for mkdocs."""
1111

1212
_ALIGN_SEMANTIC_BREAKS_IN_NUMBERED_LISTS = False
13-
"""use 3-space on subsequent lines in semantic lists."""
13+
"""user-specified flag for toggling semantic breaks.
14+
15+
- 3-spaces on subsequent lines in semantic numbered lists
16+
- and 2-spaces on subsequent bulleted items within a numbered list
17+
18+
"""
1419

1520

1621
def add_cli_options(parser: argparse.ArgumentParser) -> None:
@@ -47,6 +52,7 @@ def _normalize_list(text: str, node: RenderTreeNode, context: RenderContext) ->
4752
indent_counter = 0
4853
indent_lookup: Dict[str, int] = {}
4954
is_numbered = False
55+
use_semantic_breaks = _ALIGN_SEMANTIC_BREAKS_IN_NUMBERED_LISTS
5056
for line in text.split(eol):
5157
match = _RE_INDENT.match(line)
5258
assert match is not None # for pylint
@@ -60,7 +66,7 @@ def _normalize_list(text: str, node: RenderTreeNode, context: RenderContext) ->
6066
this_indent = match["indent"]
6167
if this_indent:
6268
indent_diff = len(this_indent) - len(last_indent)
63-
if indent_diff == 0:
69+
if not indent_diff:
6470
...
6571
elif indent_diff > 0:
6672
indent_counter += 1
@@ -71,10 +77,13 @@ def _normalize_list(text: str, node: RenderTreeNode, context: RenderContext) ->
7177
raise NotImplementedError(f"Error in indentation of: `{line}`")
7278
else:
7379
indent_counter = 0
80+
# Handle bulleted items within a numbered list
81+
use_semantic_breaks = use_semantic_breaks and is_numbered
7482
last_indent = this_indent
7583
new_indent = indent * indent_counter
76-
if _ALIGN_SEMANTIC_BREAKS_IN_NUMBERED_LISTS and not list_match and is_numbered:
77-
new_indent = new_indent[:-1]
84+
if use_semantic_breaks and not list_match:
85+
removed_indents = -1 if is_numbered else -2
86+
new_indent = new_indent[:removed_indents]
7887
rendered += f"{new_indent}{new_line.strip()}{eol}"
7988
return rendered.rstrip()
8089

0 commit comments

Comments
 (0)