src/Tools/VSCode/src/vscode_setup.scala
author wenzelm
Tue, 15 Mar 2022 14:03:56 +0100
changeset 75285 2b64d5657592
parent 75267 6369151119ee
permissions -rw-r--r--
clarified errors;
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,
75178
01017b938135 proper monospace font for terminal;
wenzelm
parents: 75171
diff changeset
    29
    "terminal.integrated.fontFamily": "monospace",
75167
wenzelm
parents: 75166
diff changeset
    30
    "update.mode": "none"
75166
wenzelm
parents: 75165
diff changeset
    31
  }
wenzelm
parents: 75165
diff changeset
    32
"""
wenzelm
parents: 75165
diff changeset
    33
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    34
  def vscode_setup(): Unit =
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    35
  {
75285
2b64d5657592 clarified errors;
wenzelm
parents: 75267
diff changeset
    36
    if (Isabelle_System.getenv("ISABELLE_VSCODIUM_ELECTRON").isEmpty) {
2b64d5657592 clarified errors;
wenzelm
parents: 75267
diff changeset
    37
      error("""Undefined $ISABELLE_VSCODIUM_ELECTRON: missing "vscodium" component""")
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    38
    }
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    39
75163
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    40
    if (!vscode_settings_user.is_file) {
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    41
      Isabelle_System.make_directory(vscode_settings_user.dir)
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    42
      File.write(vscode_settings_user, init_settings)
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    43
    }
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    44
  }
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
  /* Isabelle tool wrapper */
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    48
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    49
  val isabelle_tool =
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    50
    Isabelle_Tool("vscode_setup", "provide user configuration for Isabelle/VSCode",
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    51
      Scala_Project.here, args =>
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    52
    {
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    53
      val getopts = Getopts("""
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    54
Usage: vscode_setup
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    55
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    56
  Provide user configuration for Isabelle/VSCode.
75163
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    57
c440b77c79c0 tuned message;
wenzelm
parents: 75162
diff changeset
    58
  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
    59
""" + init_settings)
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    60
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    61
      val more_args = getopts(args)
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    62
      if (more_args.nonEmpty) getopts.usage()
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    63
75257
d1e5f9dbf885 clarified startup of "isabelle vscode": vscodium component is required, with patches for Isabelle/VSCode;
wenzelm
parents: 75252
diff changeset
    64
      vscode_setup()
75083
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    65
    })
35a5c4b16024 setup VSCode from VSCodium distribution;
wenzelm
parents:
diff changeset
    66
}