@@ -239,7 +239,7 @@ lineOfInlines = do
239239todoSequence :: Monad m => OrgParser m TodoSequence
240240todoSequence = try $ do
241241 todoKws <- todoKeywords
242− doneKws <- optionMaybe $ todoDoneSep *> todoKeywords
242+ doneKws <- optionMaybe $ todoDoneSep *> doneKeywords
243243 newline
244244 -- There must be at least one DONE keyword. The last TODO keyword is
245245 -- taken if necessary.
@@ -250,11 +250,17 @@ todoSequence = try $ do
250250 (x:xs) -> return $ keywordsToSequence (reverse xs) [x]
251251
252252 where
253+ todoKeyword :: Monad m => OrgParser m Text
254+ todoKeyword = many1Char nonspaceChar <* skipSpaces
255+
253256 todoKeywords :: Monad m => OrgParser m [Text]
254257 todoKeywords = try $
255− let keyword = many1Char nonspaceChar <* skipSpaces
256− endOfKeywords = todoDoneSep <|> void newline
257− in manyTill keyword (lookAhead endOfKeywords)
258+ let endOfKeywords = todoDoneSep <|> void newline
259+ in manyTill todoKeyword (lookAhead endOfKeywords)
260+
261+ doneKeywords :: Monad m => OrgParser m [Text]
262+ doneKeywords = try $
263+ manyTill (todoKeyword <* optional todoDoneSep) (lookAhead newline)
258264
259265 todoDoneSep :: Monad m => OrgParser m ()
260266 todoDoneSep = void . try $ skipSpaces *> char '|' <* skipSpaces1