src/Pure/PIDE/command_span.scala
changeset 73359 d8a0e996614b
parent 73115 a8e5d7c9a834
child 74671 df12779c3ce8
equal deleted inserted replaced
73358:78aa7846e91f 73359:d8a0e996614b
    72       kind match { case k: Command_Span => k.pos case _ => Position.none }
    72       kind match { case k: Command_Span => k.pos case _ => Position.none }
    73 
    73 
    74     def keyword_pos(start: Token.Pos): Token.Pos =
    74     def keyword_pos(start: Token.Pos): Token.Pos =
    75       kind match {
    75       kind match {
    76         case _: Command_Span =>
    76         case _: Command_Span =>
    77           (start /: content.iterator.takeWhile(tok => !tok.is_command))(_.advance(_))
    77           content.iterator.takeWhile(tok => !tok.is_command).foldLeft(start)(_.advance(_))
    78         case _ => start
    78         case _ => start
    79       }
    79       }
    80 
    80 
    81     def is_kind(keywords: Keyword.Keywords, pred: String => Boolean, other: Boolean): Boolean =
    81     def is_kind(keywords: Keyword.Keywords, pred: String => Boolean, other: Boolean): Boolean =
    82       keywords.kinds.get(name) match {
    82       keywords.kinds.get(name) match {
    87     def is_begin: Boolean = content.exists(_.is_begin)
    87     def is_begin: Boolean = content.exists(_.is_begin)
    88     def is_end: Boolean = content.exists(_.is_end)
    88     def is_end: Boolean = content.exists(_.is_end)
    89 
    89 
    90     def content_reader: CharSequenceReader = Scan.char_reader(Token.implode(content))
    90     def content_reader: CharSequenceReader = Scan.char_reader(Token.implode(content))
    91 
    91 
    92     def length: Int = (0 /: content)(_ + _.source.length)
    92     def length: Int = content.foldLeft(0)(_ + _.source.length)
    93 
    93 
    94     def compact_source: (String, Span) =
    94     def compact_source: (String, Span) =
    95     {
    95     {
    96       val source = Token.implode(content)
    96       val source = Token.implode(content)
    97       val content1 = new mutable.ListBuffer[Token]
    97       val content1 = new mutable.ListBuffer[Token]