@@ -145,10 +145,12 @@ impl<'a, 'o, 'c, 'w> CommonMarkFormatter<'a, 'o, 'c, 'w> {
145145 self . window . push ( s. as_bytes ( ) [ 0 ] ) ;
146146 }
147147
148+ let last_was_cr = self . window . last ( ) == Some ( & b'\n' ) ;
149+
148150 if self . options . render . width == 0 {
149151 self . output . write_str ( s) ?;
150152 } else {
151- if self . window . last ( ) == Some ( & b'\n' ) {
153+ if last_was_cr {
152154 // Can flush.
153155 self . output . write_str ( & self . wrap_buffer ) ?;
154156 self . output . write_str ( s) ?;
@@ -158,6 +160,13 @@ impl<'a, 'o, 'c, 'w> CommonMarkFormatter<'a, 'o, 'c, 'w> {
158160 }
159161 }
160162
163+ if last_was_cr {
164+ self . column = 0 ;
165+ self . begin_line = true ;
166+ self . begin_content = true ;
167+ self . last_breakable = 0 ;
168+ }
169+
161170 Ok ( ( ) )
162171 }
163172
@@ -200,12 +209,9 @@ impl<'a, 'o, 'c, 'w> CommonMarkFormatter<'a, 'o, 'c, 'w> {
200209 self . write ( "\n " ) ?;
201210 if self . need_cr > 1 {
202211 self . write_prefix ( ) ?;
212+ self . column = self . prefix . len ( ) ;
203213 }
204214 }
205- self . column = 0 ;
206- self . last_breakable = 0 ;
207- self . begin_line = true ;
208- self . begin_content = true ;
209215 self . need_cr -= 1 ;
210216 }
211217
@@ -239,10 +245,6 @@ impl<'a, 'o, 'c, 'w> CommonMarkFormatter<'a, 'o, 'c, 'w> {
239245 } else if escaping == Escaping :: Literal {
240246 if bytes[ i] == b'\n' {
241247 self . write ( "\n " ) ?;
242- self . column = 0 ;
243- self . begin_line = true ;
244- self . begin_content = true ;
245- self . last_breakable = 0 ;
246248 } else {
247249 let cs = char:: to_string ( & c) ;
248250 self . write ( & cs) ?;
0 commit comments