Fix list indent when starting at an open bracket (#5677)

This commit is contained in:
Ian Wrzesinski 2025-01-16 08:40:29 -05:00 committed by GitHub
parent a4ac4e6562
commit 63c4720ed2
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 55 additions and 7 deletions

View File

@ -1605,10 +1605,12 @@ impl AtNewline {
_ => true, _ => true,
}, },
AtNewline::StopParBreak => parbreak, AtNewline::StopParBreak => parbreak,
AtNewline::RequireColumn(min_col) => match column { AtNewline::RequireColumn(min_col) => {
Some(column) => column <= min_col, // Don't stop if this newline doesn't start a column (this may
None => false, // Don't stop if we had no column. // be checked on the boundary of lexer modes, since we only
}, // report a column in Markup).
column.is_some_and(|column| column <= min_col)
}
} }
} }
} }
@ -1703,10 +1705,13 @@ impl<'s> Parser<'s> {
self.token.newline.is_some() self.token.newline.is_some()
} }
/// The number of characters until the most recent newline from the current /// The number of characters until the most recent newline from the start of
/// token, or 0 if it did not follow a newline. /// the current token. Uses a cached value from the newline mode if present.
fn current_column(&self) -> usize { fn current_column(&self) -> usize {
self.token.newline.and_then(|newline| newline.column).unwrap_or(0) self.token
.newline
.and_then(|newline| newline.column)
.unwrap_or_else(|| self.lexer.column(self.token.start))
} }
/// The current token's text. /// The current token's text.

View File

@ -77,6 +77,49 @@ _Shopping list_
#test(indented, manual) #test(indented, manual)
--- list-indent-bracket-nesting ---
// Test list indent nesting behavior when directly at a starting bracket.
#let indented = {
[- indented
- less
]
[- indented
- same
- then less
- then same
]
[- indented
- more
- then same
- then less
]
}
#let item = list.item
#let manual = {
{
item[indented]; [ ]
item[less]; [ ]
}
{
item[indented]; [ ]
item[same]; [ ]
item[then less #{
item[then same]
}]; [ ]
}
{
item[indented #{
item[more]
}]; [ ]
item[then same]; [ ]
item[then less]; [ ]
}
}
#test(indented, manual)
--- list-tabs --- --- list-tabs ---
// This works because tabs are used consistently. // This works because tabs are used consistently.
- A with 1 tab - A with 1 tab