Skip to content

dedent: respect zero-indent lines when computing the shared indent#83

Open
c-tonneslan wants to merge 1 commit into
muesli:masterfrom
c-tonneslan:fix/dedent-zero-indent-line
Open

dedent: respect zero-indent lines when computing the shared indent#83
c-tonneslan wants to merge 1 commit into
muesli:masterfrom
c-tonneslan:fix/dedent-zero-indent-line

Conversation

@c-tonneslan

Copy link
Copy Markdown

Closes #72.

`minIndent` only updated its running minimum when `curIndent > 0` and used 0 as the "unset" sentinel. A line that started flush left (`curIndent == 0` at the first non-whitespace byte) was silently ignored, so the function reported a positive shared indent and `dedent` stripped leading whitespace off lines that should have been left alone.

Switch the sentinel to `-1` and update the minimum on any line whose first non-whitespace byte we reach with `shouldAppend` still true. A flush-left content line now correctly pulls the shared indent down to zero, and `String()` short-circuits the same way as before.

Added the issue's reproducer to `TestDedent`.

minIndent only updated its running minimum when curIndent > 0 and
used 0 as the "unset" sentinel. A line that started flush left
(curIndent == 0 at the first non-whitespace byte) was silently
ignored, so the function reported a positive shared indent and
dedent went on to strip leading whitespace off lines that should
have been left alone.

Switch the sentinel to -1 and update the minimum on any line
whose first non-whitespace byte we reach with shouldAppend still
true. A flush-left content line now correctly pulls the shared
indent down to zero, and String() short-circuits as before.

Closes muesli#72.

Signed-off-by: Charlie Tonneslan <cst0520@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dedent incorrectly removes spaces that aren't at the start of a line

1 participant