src/Pure/General/completion.scala
changeset 56001 2df1e7bca361
parent 55996 13a7d9661ffc
child 56039 5ff5208de089
equal deleted inserted replaced
56000:899ad5a3ad00 56001:2df1e7bca361
   270 {
   270 {
   271   /* keywords */
   271   /* keywords */
   272 
   272 
   273   private def is_symbol(name: String): Boolean = Symbol.names.isDefinedAt(name)
   273   private def is_symbol(name: String): Boolean = Symbol.names.isDefinedAt(name)
   274   private def is_keyword(name: String): Boolean = !is_symbol(name) && keywords.isDefinedAt(name)
   274   private def is_keyword(name: String): Boolean = !is_symbol(name) && keywords.isDefinedAt(name)
   275   private def is_keyword_template(name: String): Boolean = is_keyword(name) && keywords(name)
   275   private def is_keyword_template(name: String, template: Boolean): Boolean =
       
   276     is_keyword(name) && keywords(name) == template
   276 
   277 
   277   def + (keyword: String, template: String): Completion =
   278   def + (keyword: String, template: String): Completion =
   278     new Completion(
   279     new Completion(
   279       keywords + (keyword -> (keyword != template)),
   280       keywords + (keyword -> (keyword != template)),
   280       words_lex + keyword,
   281       words_lex + keyword,
   364           {
   365           {
   365             case (word, underscores) =>
   366             case (word, underscores) =>
   366               val complete_words = words_lex.completions(word)
   367               val complete_words = words_lex.completions(word)
   367               val full_word = word + underscores
   368               val full_word = word + underscores
   368               val completions =
   369               val completions =
   369                 if (complete_words.contains(full_word)) Nil
   370                 if (complete_words.contains(full_word) && is_keyword_template(full_word, false)) Nil
   370                 else
   371                 else
   371                   for {
   372                   for {
   372                     complete_word <- complete_words
   373                     complete_word <- complete_words
   373                     ok =
   374                     ok =
   374                       if (is_keyword(complete_word)) language_context.is_outer
   375                       if (is_keyword(complete_word)) language_context.is_outer
   403             description =
   404             description =
   404               if (is_symbol(name0)) {
   405               if (is_symbol(name0)) {
   405                 if (name0 == name1) List(name0)
   406                 if (name0 == name1) List(name0)
   406                 else List(name1, "(symbol " + quote(name0) + ")")
   407                 else List(name1, "(symbol " + quote(name0) + ")")
   407               }
   408               }
   408               else if (is_keyword_template(complete_word))
   409               else if (is_keyword_template(complete_word, true))
   409                 List(name1, "(template " + quote(complete_word) + ")")
   410                 List(name1, "(template " + quote(complete_word) + ")")
   410               else if (move != 0) List(name1, "(template)")
   411               else if (move != 0) List(name1, "(template)")
   411               else if (is_keyword(complete_word)) List(name1, "(keyword)")
   412               else if (is_keyword(complete_word)) List(name1, "(keyword)")
   412               else List(name1)
   413               else List(name1)
   413           }
   414           }