@@ -822,6 +822,12 @@ function completeListItemPattern(list: marked.Tokens.List): marked.Tokens.List |
822
822
return newList ;
823
823
}
824
824
825
+ function completeHeading ( token : marked . Tokens . Heading ) : marked . TokensList | void {
826
+ if ( token . raw . match ( / - \s * $ / ) ) {
827
+ return marked . lexer ( token . raw + ' ' ) ;
828
+ }
829
+ }
830
+
825
831
const maxIncompleteTokensFixRounds = 3 ;
826
832
export function fillInIncompleteTokens ( tokens : marked . TokensList ) : marked . TokensList {
827
833
for ( let i = 0 ; i < maxIncompleteTokensFixRounds ; i ++ ) {
@@ -846,22 +852,23 @@ function fillInIncompleteTokensOnce(tokens: marked.TokensList): marked.TokensLis
846
852
newTokens = completeTable ( tokens . slice ( i ) ) ;
847
853
break ;
848
854
}
855
+ }
849
856
850
- if ( i === tokens . length - 1 && token . type === 'list' ) {
851
- const newListToken = completeListItemPattern ( token as marked . Tokens . List ) ;
852
- if ( newListToken ) {
853
- newTokens = [ newListToken ] ;
854
- break ;
855
- }
857
+ const lastToken = tokens . at ( - 1 ) ;
858
+ if ( ! newTokens && lastToken ?. type === 'list' ) {
859
+ const newListToken = completeListItemPattern ( lastToken as marked . Tokens . List ) ;
860
+ if ( newListToken ) {
861
+ newTokens = [ newListToken ] ;
862
+ i = tokens . length - 1 ;
856
863
}
864
+ }
857
865
858
- if ( i === tokens . length - 1 && token . type === 'paragraph' ) {
859
- // Only operates on a single token, because any newline that follows this should break these patterns
860
- const newToken = completeSingleLinePattern ( token as marked . Tokens . Paragraph ) ;
861
- if ( newToken ) {
862
- newTokens = [ newToken ] ;
863
- break ;
864
- }
866
+ if ( ! newTokens && lastToken ?. type === 'paragraph' ) {
867
+ // Only operates on a single token, because any newline that follows this should break these patterns
868
+ const newToken = completeSingleLinePattern ( lastToken as marked . Tokens . Paragraph ) ;
869
+ if ( newToken ) {
870
+ newTokens = [ newToken ] ;
871
+ i = tokens . length - 1 ;
865
872
}
866
873
}
867
874
@@ -874,6 +881,13 @@ function fillInIncompleteTokensOnce(tokens: marked.TokensList): marked.TokensLis
874
881
return newTokensList as marked . TokensList ;
875
882
}
876
883
884
+ if ( lastToken ?. type === 'heading' ) {
885
+ const completeTokens = completeHeading ( lastToken as marked . Tokens . Heading ) ;
886
+ if ( completeTokens ) {
887
+ return completeTokens ;
888
+ }
889
+ }
890
+
877
891
return null ;
878
892
}
879
893
0 commit comments