tuned;
authorwenzelm
Tue, 02 Aug 2016 11:49:30 +0200
changeset 63578 e8990d0e3965
parent 63576 ba972a7dbeba
child 63579 73939a9b70a3
tuned;
src/Pure/General/completion.scala
--- a/src/Pure/General/completion.scala	Mon Aug 01 22:36:47 2016 +0200
+++ b/src/Pure/General/completion.scala	Tue Aug 02 11:49:30 2016 +0200
@@ -330,7 +330,7 @@
   private val caret_indicator = '\u0007'
   private val antiquote = "@{"
 
-  private val default_abbrs =
+  private val default_abbrevs =
     List("@{" -> "@{\u0007}",
       "`" -> "\\<close>",
       "`" -> "\\<open>",
@@ -340,7 +340,7 @@
       "\"" -> "\\<open>\u0007\\<close>")
 
   private def default_frequency(name: String): Option[Int] =
-    default_abbrs.iterator.map(_._2).zipWithIndex.find(_._1 == name).map(_._2)
+    default_abbrevs.iterator.map(_._2).zipWithIndex.find(_._1 == name).map(_._2)
 }
 
 final class Completion private(
@@ -391,23 +391,29 @@
   def + (keyword: String): Completion = this + (keyword, keyword)
 
 
-  /* load symbols and abbrevs */
+  /* symbols and abbrevs */
 
-  private def load(): Completion =
+  def add_symbols(): Completion =
   {
-    val abbrevs = Completion.load_abbrevs()
-
     val words =
       (for ((sym, _) <- Symbol.names.toList) yield (sym, sym)) :::
-      (for ((sym, name) <- Symbol.names.toList) yield ("\\" + name, sym)) :::
-      (for ((abbr, text) <- abbrevs if Completion.Word_Parsers.is_word(abbr)) yield (abbr, text))
+      (for ((sym, name) <- Symbol.names.toList) yield ("\\" + name, sym))
 
-    val non_word_abbrs =
-      (for ((abbr, text) <- abbrevs if !Completion.Word_Parsers.is_word(abbr))
-        yield (abbr, text)).toList
+    new Completion(
+      keywords,
+      words_lex ++ words.map(_._1),
+      words_map ++ words,
+      abbrevs_lex,
+      abbrevs_map)
+  }
 
+  def add_abbrevs(abbrevs: List[(String, String)]): Completion =
+  {
+    val words =
+      for ((abbr, text) <- abbrevs if Completion.Word_Parsers.is_word(abbr))
+        yield (abbr, text)
     val abbrs =
-      for ((abbr, text) <- non_word_abbrs ::: Completion.default_abbrs)
+      for ((abbr, text) <- abbrevs if !Completion.Word_Parsers.is_word(abbr))
         yield (abbr.reverse, (abbr, text))
 
     new Completion(
@@ -418,6 +424,9 @@
       abbrevs_map ++ abbrs)
   }
 
+  private def load(): Completion =
+    add_symbols().add_abbrevs(Completion.load_abbrevs() ::: Completion.default_abbrevs)
+
 
   /* complete */
 
@@ -444,7 +453,7 @@
             case (abbr, _) :: _ =>
               val ok =
                 if (abbr == Completion.antiquote) language_context.antiquotes
-                else language_context.symbols || Completion.default_abbrs.exists(_._1 == abbr)
+                else language_context.symbols || Completion.default_abbrevs.exists(_._1 == abbr)
               if (ok) Some((abbr, abbrevs))
               else None
           }