author | Thomas Lindae <thomas.lindae@in.tum.de> |
Wed, 01 May 2024 12:30:53 +0200 | |
changeset 81024 | d1535ba3b1ca |
parent 75295 | 38398766be6b |
child 81035 | 56594fac1dab |
permissions | -rw-r--r-- |
75234 | 1 |
/* Author: Makarius |
2 |
Author: Denis Paluca, TU Muenchen |
|
3 |
Author: Fabian Huch, TU Muenchen |
|
4 |
||
5 |
Isabelle/VSCode extension. |
|
6 |
*/ |
|
7 |
||
64605 | 8 |
'use strict'; |
9 |
||
75172 | 10 |
import * as platform from './platform' |
65968 | 11 |
import * as library from './library' |
75191 | 12 |
import * as file from './file' |
75209
4187f6f18232
provide symbols statically via ISABELLE_VSCODE_WORKSPACE, instead of LSP/PIDE protocol;
wenzelm
parents:
75201
diff
changeset
|
13 |
import * as symbol from './symbol' |
75181 | 14 |
import * as vscode_lib from './vscode_lib' |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
15 |
import * as decorations from './decorations' |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
16 |
import * as preview_panel from './preview_panel' |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
17 |
import * as lsp from './lsp' |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
18 |
import * as state_panel from './state_panel' |
66216 | 19 |
import { Uri, TextEditor, ViewColumn, Selection, Position, ExtensionContext, workspace, window, |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
20 |
commands, ProgressLocation } from 'vscode' |
75134
c04ccea8bdd2
update VSCode plugin dependencies;
Fabian Huch <huch@in.tum.de>
parents:
75129
diff
changeset
|
21 |
import { LanguageClient, LanguageClientOptions, ServerOptions } from 'vscode-languageclient/node' |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
22 |
import { Output_View_Provider } from './output_view' |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
23 |
import { register_script_decorations } from './script_decorations' |
64605 | 24 |
|
25 |
||
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
26 |
let last_caret_update: lsp.Caret_Update = {} |
65180 | 27 |
|
75295
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
28 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
29 |
/* command-line arguments from "isabelle vscode" */ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
30 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
31 |
interface Args |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
32 |
{ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
33 |
options?: string[], |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
34 |
logic?: string, |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
35 |
logic_ancestor?: string, |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
36 |
logic_requirements?: boolean, |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
37 |
sesion_dirs?: string[], |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
38 |
include_sessions?: string[], |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
39 |
modes?: string[], |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
40 |
log_file?: string, |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
41 |
verbose?: boolean |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
42 |
} |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
43 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
44 |
function print_value(x: any): string |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
45 |
{ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
46 |
return typeof(x) === "string" ? x : JSON.stringify(x) |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
47 |
} |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
48 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
49 |
function isabelle_options(args: Args): string[] |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
50 |
{ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
51 |
var result: string[] = [] |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
52 |
function add(s: string) { result.push(s) } |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
53 |
function add_value(opt: string, slot: string) |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
54 |
{ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
55 |
const x = args[slot] |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
56 |
if (x) { add(opt); add(print_value(x)) } |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
57 |
} |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
58 |
function add_values(opt: string, slot: string) |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
59 |
{ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
60 |
const xs: any[] = args[slot] |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
61 |
if (xs) { |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
62 |
for (const x of xs) { add(opt); add(print_value(x)) } |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
63 |
} |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
64 |
} |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
65 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
66 |
add("-o"); add("vscode_unicode_symbols") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
67 |
add("-o"); add("vscode_pide_extensions") |
81024
d1535ba3b1ca
lsp: added vscode_html_output option;
Thomas Lindae <thomas.lindae@in.tum.de>
parents:
75295
diff
changeset
|
68 |
add("-o"); add("vscode_html_output") |
75295
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
69 |
add_values("-o", "options") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
70 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
71 |
add_value("-A", "logic_ancestor") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
72 |
if (args.logic) { add_value(args.logic_requirements ? "-R" : "-l", "logic") } |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
73 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
74 |
add_values("-d", "session_dirs") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
75 |
add_values("-i", "include_sessions") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
76 |
add_values("-m", "modes") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
77 |
add_value("-L", "log_file") |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
78 |
if (args.verbose) { add("-v") } |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
79 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
80 |
return result |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
81 |
} |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
82 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
83 |
|
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
84 |
/* activate extension */ |
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
85 |
|
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
86 |
export async function activate(context: ExtensionContext) |
64605 | 87 |
{ |
65182 | 88 |
/* server */ |
89 |
||
75129
49f9fa8f9601
refer to Isabelle settings via environment, which is provided via "isabelle vscode";
wenzelm
parents:
75127
diff
changeset
|
90 |
try { |
49f9fa8f9601
refer to Isabelle settings via environment, which is provided via "isabelle vscode";
wenzelm
parents:
75127
diff
changeset
|
91 |
const isabelle_home = library.getenv_strict("ISABELLE_HOME") |
65168 | 92 |
const isabelle_tool = isabelle_home + "/bin/isabelle" |
75295
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
93 |
const args = JSON.parse(library.getenv("ISABELLE_VSCODIUM_ARGS") || "{}") |
65167 | 94 |
|
75295
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
95 |
const server_opts = isabelle_options(args) |
65168 | 96 |
const server_options: ServerOptions = |
75172 | 97 |
platform.is_windows() ? |
75191 | 98 |
{ command: file.cygwin_bash(), |
75295
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
99 |
args: ["-l", isabelle_tool, "vscode_server"].concat(server_opts) } : |
64755 | 100 |
{ command: isabelle_tool, |
75295
38398766be6b
command-line arguments for "isabelle vscode", similar to "isabelle jedit";
wenzelm
parents:
75264
diff
changeset
|
101 |
args: ["vscode_server"].concat(server_opts) } |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
102 |
|
65983 | 103 |
const language_client_options: LanguageClientOptions = { |
69322
ce6d43af5bcb
more robust (see https://code.visualstudio.com/docs/extensionAPI/document-selectors);
wenzelm
parents:
66395
diff
changeset
|
104 |
documentSelector: [ |
75264 | 105 |
{ language: "isabelle", scheme: vscode_lib.file_scheme }, |
106 |
{ language: "isabelle-ml", scheme: vscode_lib.file_scheme }, |
|
107 |
{ language: "bibtex", scheme: vscode_lib.file_scheme } |
|
75262
ec62c5401522
discontinued isabelle_filesystem (superseded by isabelle_encoding), see also da1108a6d249;
wenzelm
parents:
75240
diff
changeset
|
108 |
] |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
109 |
} |
64605 | 110 |
|
65983 | 111 |
const language_client = |
112 |
new LanguageClient("Isabelle", server_options, language_client_options, false) |
|
65094 | 113 |
|
65182 | 114 |
|
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
115 |
window.withProgress({location: ProgressLocation.Notification, cancellable: false}, |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
116 |
async (progress) => |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
117 |
{ |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
118 |
progress.report({ |
75182 | 119 |
message: "Waiting for Isabelle language server..." |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
120 |
}) |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
121 |
await language_client.onReady() |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
122 |
}) |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
123 |
|
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
124 |
|
65201 | 125 |
/* decorations */ |
126 |
||
66097 | 127 |
decorations.setup(context) |
65975 | 128 |
context.subscriptions.push( |
66097 | 129 |
workspace.onDidChangeConfiguration(() => decorations.setup(context)), |
65975 | 130 |
workspace.onDidChangeTextDocument(event => decorations.touch_document(event.document)), |
131 |
window.onDidChangeActiveTextEditor(decorations.update_editor), |
|
132 |
workspace.onDidCloseTextDocument(decorations.close_document)) |
|
65201 | 133 |
|
65983 | 134 |
language_client.onReady().then(() => |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
135 |
language_client.onNotification(lsp.decoration_type, decorations.apply_decoration)) |
65201 | 136 |
|
137 |
||
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
138 |
/* super-/subscript decorations */ |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
139 |
|
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
140 |
register_script_decorations(context) |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
141 |
|
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
142 |
|
65978 | 143 |
/* caret handling */ |
65191
4c9c83311cad
dynamic output, depending on caret focus (see also Tools/jEdit/src/output_dockable.scala);
wenzelm
parents:
65189
diff
changeset
|
144 |
|
65189 | 145 |
function update_caret() |
146 |
{ |
|
65969 | 147 |
const editor = window.activeTextEditor |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
148 |
let caret_update: lsp.Caret_Update = {} |
65189 | 149 |
if (editor) { |
150 |
const uri = editor.document.uri |
|
151 |
const cursor = editor.selection.active |
|
75181 | 152 |
if (vscode_lib.is_file(uri) && cursor) |
65189 | 153 |
caret_update = { uri: uri.toString(), line: cursor.line, character: cursor.character } |
154 |
} |
|
155 |
if (last_caret_update !== caret_update) { |
|
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
156 |
if (caret_update.uri) { |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
157 |
language_client.sendNotification(lsp.caret_update_type, caret_update) |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
158 |
} |
65189 | 159 |
last_caret_update = caret_update |
160 |
} |
|
161 |
} |
|
162 |
||
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
163 |
function goto_file(caret_update: lsp.Caret_Update) |
66215
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
164 |
{ |
66216 | 165 |
function move_cursor(editor: TextEditor) |
166 |
{ |
|
167 |
const pos = new Position(caret_update.line || 0, caret_update.character || 0) |
|
168 |
editor.selections = [new Selection(pos, pos)] |
|
169 |
} |
|
170 |
||
66215
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
171 |
if (caret_update.uri) { |
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
172 |
workspace.openTextDocument(Uri.parse(caret_update.uri)).then(document => |
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
173 |
{ |
75181 | 174 |
const editor = vscode_lib.find_file_editor(document.uri) |
66216 | 175 |
const column = editor ? editor.viewColumn : ViewColumn.One |
176 |
window.showTextDocument(document, column, !caret_update.focus).then(move_cursor) |
|
66215
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
177 |
}) |
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
178 |
} |
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
179 |
} |
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
180 |
|
65983 | 181 |
language_client.onReady().then(() => |
65189 | 182 |
{ |
65975 | 183 |
context.subscriptions.push( |
184 |
window.onDidChangeActiveTextEditor(_ => update_caret()), |
|
185 |
window.onDidChangeTextEditorSelection(_ => update_caret())) |
|
65189 | 186 |
update_caret() |
66215
9a8b6b86350c
proper hyperlink_command, notably for locate_query;
wenzelm
parents:
66211
diff
changeset
|
187 |
|
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
188 |
language_client.onNotification(lsp.caret_update_type, goto_file) |
65189 | 189 |
}) |
190 |
||
191 |
||
65978 | 192 |
/* dynamic output */ |
193 |
||
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
194 |
const provider = new Output_View_Provider(context.extensionUri) |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
195 |
context.subscriptions.push( |
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
196 |
window.registerWebviewViewProvider(Output_View_Provider.view_type, provider)) |
65978 | 197 |
|
65983 | 198 |
language_client.onReady().then(() => |
65978 | 199 |
{ |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
200 |
language_client.onNotification(lsp.dynamic_output_type, |
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
201 |
params => provider.update_content(params.content)) |
65978 | 202 |
}) |
203 |
||
204 |
||
66098 | 205 |
/* state panel */ |
66096 | 206 |
|
207 |
context.subscriptions.push( |
|
71476
ecefde4f9103
proper message passing -- discontinued obsolete auxiliary commands;
wenzelm
parents:
71475
diff
changeset
|
208 |
commands.registerCommand("isabelle.state", uri => state_panel.init(uri))) |
66096 | 209 |
|
66098 | 210 |
language_client.onReady().then(() => state_panel.setup(context, language_client)) |
66096 | 211 |
|
212 |
||
66098 | 213 |
/* preview panel */ |
65958 | 214 |
|
65984
8e6a833da7db
register commands earlier, before prover startup;
wenzelm
parents:
65983
diff
changeset
|
215 |
context.subscriptions.push( |
66098 | 216 |
commands.registerCommand("isabelle.preview", uri => preview_panel.request(uri, false)), |
71479
6aa2dc263912
less ambitious preview: discontinued preview-update / preview-source which did not work on the spot via WebviewPanel;
wenzelm
parents:
71476
diff
changeset
|
217 |
commands.registerCommand("isabelle.preview-split", uri => preview_panel.request(uri, true))) |
65984
8e6a833da7db
register commands earlier, before prover startup;
wenzelm
parents:
65983
diff
changeset
|
218 |
|
66098 | 219 |
language_client.onReady().then(() => preview_panel.setup(context, language_client)) |
65958 | 220 |
|
221 |
||
66138 | 222 |
/* spell checker */ |
223 |
||
224 |
language_client.onReady().then(() => |
|
225 |
{ |
|
226 |
context.subscriptions.push( |
|
227 |
commands.registerCommand("isabelle.include-word", uri => |
|
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
228 |
language_client.sendNotification(lsp.include_word_type)), |
66138 | 229 |
commands.registerCommand("isabelle.include-word-permanently", uri => |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
230 |
language_client.sendNotification(lsp.include_word_permanently_type)), |
66138 | 231 |
commands.registerCommand("isabelle.exclude-word", uri => |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
232 |
language_client.sendNotification(lsp.exclude_word_type)), |
66138 | 233 |
commands.registerCommand("isabelle.exclude-word-permanently", uri => |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
234 |
language_client.sendNotification(lsp.exclude_word_permanently_type)), |
66138 | 235 |
commands.registerCommand("isabelle.reset-words", uri => |
75201
8f6b8a46f54c
clarified modules: more uniform .scala vs. ts (amending 4519eeefe3b5);
wenzelm
parents:
75191
diff
changeset
|
236 |
language_client.sendNotification(lsp.reset_words_type))) |
66138 | 237 |
}) |
238 |
||
239 |
||
65182 | 240 |
/* start server */ |
241 |
||
65986 | 242 |
context.subscriptions.push(language_client.start()) |
65094 | 243 |
} |
75129
49f9fa8f9601
refer to Isabelle settings via environment, which is provided via "isabelle vscode";
wenzelm
parents:
75127
diff
changeset
|
244 |
catch (exn) { |
49f9fa8f9601
refer to Isabelle settings via environment, which is provided via "isabelle vscode";
wenzelm
parents:
75127
diff
changeset
|
245 |
window.showErrorMessage(exn) |
49f9fa8f9601
refer to Isabelle settings via environment, which is provided via "isabelle vscode";
wenzelm
parents:
75127
diff
changeset
|
246 |
} |
64605 | 247 |
} |
248 |
||
75126
da1108a6d249
various improvements to Isabelle/VSCode (by Denis Paluca and Fabian Huch);
wenzelm
parents:
71479
diff
changeset
|
249 |
|
64605 | 250 |
export function deactivate() { } |