src/Pure/General/completion.scala
changeset 55982 b719781c7396
parent 55978 56645c447ee9
child 55983 fc5977bd4829
equal deleted inserted replaced
55981:66739f41d5b2 55982:b719781c7396
   332         case _ => None
   332         case _ => None
   333       }
   333       }
   334     }
   334     }
   335 
   335 
   336     val words_result =
   336     val words_result =
   337       abbrevs_result orElse {
   337       if (abbrevs_result.isDefined) None
       
   338       else {
   338         val end =
   339         val end =
   339           if (extend_word) Completion.Word_Parsers.extend_word(text, caret)
   340           if (extend_word) Completion.Word_Parsers.extend_word(text, caret)
   340           else caret
   341           else caret
   341         (Completion.Word_Parsers.read_symbol(text.subSequence(0, end)) match {
   342         (Completion.Word_Parsers.read_symbol(text.subSequence(0, end)) match {
   342           case Some(symbol) => Some(symbol)
   343           case Some(symbol) => Some(symbol)
   357             else Some(((word, completions), end))
   358             else Some(((word, completions), end))
   358           case None => None
   359           case None => None
   359         }
   360         }
   360       }
   361       }
   361 
   362 
   362     words_result match {
   363     (abbrevs_result orElse words_result) match {
   363       case Some(((word, cs), end)) =>
   364       case Some(((word, cs), end)) =>
   364         val range = Text.Range(- word.length, 0) + end + start
   365         val range = Text.Range(- word.length, 0) + end + start
   365         val ds = cs.map(decode(_)).filter(_ != word)
   366         val ds = cs.map(decode(_)).filter(_ != word)
   366         if (ds.isEmpty) None
   367         if (ds.isEmpty) None
   367         else {
   368         else {
   377                   case _ => (name1, "")
   378                   case _ => (name1, "")
   378                 }
   379                 }
   379               val move = - s2.length
   380               val move = - s2.length
   380               val description =
   381               val description =
   381                 if (move != 0) List(name1, "(template)")
   382                 if (move != 0) List(name1, "(template)")
   382                 else if (keywords(name)) List(name1, "(keyword)")
   383                 else if (words_result.isDefined && keywords(name)) List(name1, "(keyword)")
   383                 else if (Symbol.names.isDefinedAt(name) && name != name1)
   384                 else if (Symbol.names.isDefinedAt(name) && name != name1)
   384                   List(name1, "(symbol " + quote(name) + ")")
   385                   List(name1, "(symbol " + quote(name) + ")")
   385                 else List(name1)
   386                 else List(name1)
   386               Completion.Item(range, word, name1, description, s1 + s2, move, explicit || immediate)
   387               Completion.Item(range, word, name1, description, s1 + s2, move, explicit || immediate)
   387             }
   388             }