src/Tools/VSCode/src/vscode_setup.scala
author wenzelm
Fri, 11 Mar 2022 13:31:46 +0100
changeset 75265 481665cc17e6
parent 75257 d1e5f9dbf885
child 75267 6369151119ee
permissions -rw-r--r--
always use Isabelle encoding, as in Isabelle/jEdit;
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     1
/*  Title:      Tools/VSCode/src/vscode_setup.scala
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     2
    Author:     Makarius
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     3
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
     4
Provide user configuration for Isabelle/VSCode.
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     5
*/
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     6
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     7
package isabelle.vscode
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     8
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
     9
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    10
import isabelle._
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    11
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    12
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    13
object VSCode_Setup
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    14
{
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    15
  /* vscode setup */
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    16
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    17
  def vscode_settings_user: Path =
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    18
    Path.explode("$ISABELLE_VSCODE_SETTINGS/user-data/User/settings.json")
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    19
75166
wenzelm
parents: 75165
diff changeset
    20
  private val init_settings = """  {
wenzelm
parents: 75165
diff changeset
    21
    "editor.fontFamily": "'Isabelle DejaVu Sans Mono'",
wenzelm
parents: 75165
diff changeset
    22
    "editor.fontSize": 18,
wenzelm
parents: 75165
diff changeset
    23
    "editor.lineNumbers": "off",
wenzelm
parents: 75165
diff changeset
    24
    "editor.renderIndentGuides": false,
wenzelm
parents: 75165
diff changeset
    25
    "editor.rulers": [80, 100],
75171
96b26b0d2cc5 clarified rendering;
wenzelm
parents: 75167
diff changeset
    26
    "editor.unicodeHighlight.ambiguousCharacters": false,
75166
wenzelm
parents: 75165
diff changeset
    27
    "extensions.autoCheckUpdates": false,
75167
wenzelm
parents: 75166
diff changeset
    28
    "extensions.autoUpdate": false,
75265
481665cc17e6 always use Isabelle encoding, as in Isabelle/jEdit;
wenzelm
parents: 75257
diff changeset
    29
    "files.encoding": "utf8isabelle",
75178
01017b938135 proper monospace font for terminal;
wenzelm
parents: 75171
diff changeset
    30
    "terminal.integrated.fontFamily": "monospace",
75167
wenzelm
parents: 75166
diff changeset
    31
    "update.mode": "none"
75166
wenzelm
parents: 75165
diff changeset
    32
  }
wenzelm
parents: 75165
diff changeset
    33
"""
wenzelm
parents: 75165
diff changeset
    34
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    35
  def vscode_setup(): Unit =
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    36
  {
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    37
    if (Isabelle_System.getenv("ISABELLE_VSCODIUM_HOME").isEmpty) {
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    38
      error("""Missing $ISABELLE_VSCODIUM_HOME: proper vscodium-X.YY.Z component required""")
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    39
    }
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    40
75163
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    41
    if (!vscode_settings_user.is_file) {
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    42
      Isabelle_System.make_directory(vscode_settings_user.dir)
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    43
      File.write(vscode_settings_user, init_settings)
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    44
    }
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    45
  }
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    46
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    47
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    48
  /* Isabelle tool wrapper */
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    49
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    50
  val isabelle_tool =
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    51
    Isabelle_Tool("vscode_setup", "provide user configuration for Isabelle/VSCode",
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    52
      Scala_Project.here, args =>
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    53
    {
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    54
      val getopts = Getopts("""
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    55
Usage: vscode_setup
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    56
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    57
  Provide user configuration for Isabelle/VSCode.
75163
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    58
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    59
  The following initial settings are provided for a fresh installation:
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    60
""" + init_settings)
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    61
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    62
      val more_args = getopts(args)
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    63
      if (more_args.nonEmpty) getopts.usage()
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    64
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    65
      vscode_setup()
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    66
    })
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    67
}