author | wenzelm |
Fri, 11 Mar 2022 13:31:46 +0100 | |
changeset 75265 | 481665cc17e6 |
parent 75257 | d1e5f9dbf885 |
child 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, |
75265
481665cc17e6
always use Isabelle encoding, as in Isabelle/jEdit;
wenzelm
parents:
75257
diff
changeset
|
29 |
"files.encoding": "utf8isabelle", |
75178 | 30 |
"terminal.integrated.fontFamily": "monospace", |
75167 | 31 |
"update.mode": "none" |
75166 | 32 |
} |
33 |
""" |
|
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 | 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 | 40 |
|
75163 | 41 |
if (!vscode_settings_user.is_file) { |
42 |
Isabelle_System.make_directory(vscode_settings_user.dir) |
|
43 |
File.write(vscode_settings_user, init_settings) |
|
44 |
} |
|
75083 | 45 |
} |
46 |
||
47 |
||
48 |
/* Isabelle tool wrapper */ |
|
49 |
||
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 | 52 |
Scala_Project.here, args => |
53 |
{ |
|
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 | 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 | 58 |
|
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 | 61 |
|
62 |
val more_args = getopts(args) |
|
63 |
if (more_args.nonEmpty) getopts.usage() |
|
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 | 66 |
}) |
67 |
} |