Skip to content

Commit f7a0315

Browse files
committed
Only dedent lines with indentation
1 parent 9f2e143 commit f7a0315

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

src/indent.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,11 @@ fn get_diff(line: &str, pattern: &Pattern) -> i8 {
6464
}
6565

6666
/// Calculate dedentation for the current line
67-
fn get_back(line: &str, pattern: &Pattern) -> i8 {
67+
fn get_back(line: &str, pattern: &Pattern, state: &State) -> i8 {
68+
// Only need to dedent if indentation is present
69+
if state.indent.actual == 0 {
70+
return 0;
71+
}
6872
let mut back: i8 = 0;
6973

7074
if pattern.contains_env_end && line.contains(ENV_END) {
@@ -80,10 +84,8 @@ fn get_back(line: &str, pattern: &Pattern) -> i8 {
8084
}
8185
// other environments get single indents
8286
back = 1;
83-
};
84-
85-
// deindent items to make the rest of item environment appear indented
86-
if pattern.contains_item && line.contains(ITEM) {
87+
} else if pattern.contains_item && line.contains(ITEM) {
88+
// deindent items to make the rest of item environment appear indented
8789
back += 1;
8890
};
8991

@@ -99,9 +101,9 @@ fn get_back(line: &str, pattern: &Pattern) -> i8 {
99101
}
100102

101103
/// Calculate indentation properties of the current line
102-
fn get_indent(line: &str, prev_indent: &Indent, pattern: &Pattern) -> Indent {
104+
fn get_indent(line: &str, prev_indent: &Indent, pattern: &Pattern, state: &State) -> Indent {
103105
let diff = get_diff(line, pattern);
104-
let back = get_back(line, pattern);
106+
let back = get_back(line, pattern, state);
105107
let actual = prev_indent.actual + diff;
106108
let visual = prev_indent.actual - back;
107109
Indent { actual, visual }
@@ -123,7 +125,7 @@ pub fn calculate_indent(
123125
// (if there is one) to ignore diffs from characters in there.
124126
let comment_index = find_comment_index(line);
125127
let line_strip = remove_comment(line, comment_index);
126-
let mut indent = get_indent(line_strip, &state.indent, pattern);
128+
let mut indent = get_indent(line_strip, &state.indent, pattern, state);
127129

128130
// Record the indent to the logs.
129131
if args.trace {

0 commit comments

Comments
 (0)