src/Tools/VSCode/src/symbols.scala
author wenzelm
Wed, 11 Jan 2017 16:01:19 +0100
changeset 64872 9c194386db8d
child 64889 56b52fc25c95
permissions -rw-r--r--
generated configuration for Prettify Symbols Mode;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64872
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     1
/*  Title:      Tools/VSCode/src/symbols.scala
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     3
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     4
Generate configuration for VSCode editor extension Prettify Symbols Mode.
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     5
*/
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     6
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     7
package isabelle.vscode
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     8
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
     9
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    10
import isabelle._
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    11
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    12
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    13
object Symbols
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    14
{
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    15
  /* generate configuration */
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    16
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    17
  def prettify_config: String =
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    18
    """{
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    19
  "prettifySymbolsMode.substitutions": [
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    20
      {
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    21
        "language": "isabelle",
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    22
        "revealOn": "none",
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    23
        "adjustCursorMovement": true,
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    24
        "substitutions": [""" +
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    25
          (for ((s, c) <- Symbol.codes)
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    26
           yield
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    27
            JSON.Format(
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    28
              Map("ugly" -> Library.escape_regex(s),
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    29
                "pretty" -> Library.escape_regex(Codepoint.string(c)))))
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    30
            .mkString("\n          ", ",\n          ", "") +
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    31
        """]
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    32
      }
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    33
    ]
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    34
}"""
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    35
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    36
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    37
  /* Isabelle tool wrapper */
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    38
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    39
  val isabelle_tool = Isabelle_Tool("vscode_symbols",
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    40
    "generate configuration for VSCode editor extension Prettify Symbols Mode", args =>
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    41
  {
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    42
    val getopts = Getopts("""
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    43
Usage: isabelle vscode_symbols
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    44
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    45
  Generate configuration for VSCode editor extension Prettify Symbols Mode.
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    46
""")
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    47
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    48
    val more_args = getopts(args)
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    49
    if (more_args.nonEmpty) getopts.usage()
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    50
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    51
    val output_path = Path.explode("isabelle-symbols.json")
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    52
    Output.writeln(output_path.implode)
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    53
    File.write_backup(output_path, prettify_config)
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    54
  })
9c194386db8d generated configuration for Prettify Symbols Mode;
wenzelm
parents:
diff changeset
    55
}