author | wenzelm |
Tue, 15 Mar 2022 14:03:56 +0100 | |
changeset 75285 | 2b64d5657592 |
parent 75267 | 6369151119ee |
permissions | -rw-r--r-- |
75083 | 1 |
/* Title: Tools/VSCode/src/vscode_setup.scala |
2 |
Author: Makarius |
|
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 | 5 |
*/ |
6 |
||
7 |
package isabelle.vscode |
|
8 |
||
9 |
||
10 |
import isabelle._ |
|
11 |
||
12 |
||
13 |
object VSCode_Setup |
|
14 |
{ |
|
15 |
/* vscode setup */ |
|
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 | 19 |
|
75166 | 20 |
private val init_settings = """ { |
21 |
"editor.fontFamily": "'Isabelle DejaVu Sans Mono'", |
|
22 |
"editor.fontSize": 18, |
|
23 |
"editor.lineNumbers": "off", |
|
24 |
"editor.renderIndentGuides": false, |
|
25 |
"editor.rulers": [80, 100], |
|
75171 | 26 |
"editor.unicodeHighlight.ambiguousCharacters": false, |
75166 | 27 |
"extensions.autoCheckUpdates": false, |
75167 | 28 |
"extensions.autoUpdate": false, |
75178 | 29 |
"terminal.integrated.fontFamily": "monospace", |
75167 | 30 |
"update.mode": "none" |
75166 | 31 |
} |
32 |
""" |
|
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 | 35 |
{ |
75285 | 36 |
if (Isabelle_System.getenv("ISABELLE_VSCODIUM_ELECTRON").isEmpty) { |
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 | 39 |
|
75163 | 40 |
if (!vscode_settings_user.is_file) { |
41 |
Isabelle_System.make_directory(vscode_settings_user.dir) |
|
42 |
File.write(vscode_settings_user, init_settings) |
|
43 |
} |
|
75083 | 44 |
} |
45 |
||
46 |
||
47 |
/* Isabelle tool wrapper */ |
|
48 |
||
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 | 51 |
Scala_Project.here, args => |
52 |
{ |
|
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 | 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 | 57 |
|
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 | 60 |
|
61 |
val more_args = getopts(args) |
|
62 |
if (more_args.nonEmpty) getopts.usage() |
|
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 | 65 |
}) |
66 |
} |