8 import { WebviewViewProvider, WebviewView, Uri, WebviewViewResolveContext, |
8 import { WebviewViewProvider, WebviewView, Uri, WebviewViewResolveContext, |
9 CancellationToken, window, Position, Selection, Webview} from 'vscode' |
9 CancellationToken, window, Position, Selection, Webview} from 'vscode' |
10 import { text_colors } from './decorations' |
10 import { text_colors } from './decorations' |
11 import * as vscode_lib from './vscode_lib' |
11 import * as vscode_lib from './vscode_lib' |
12 import * as path from 'path' |
12 import * as path from 'path' |
|
13 import * as lsp from './lsp' |
|
14 import { LanguageClient } from 'vscode-languageclient/node'; |
13 |
15 |
14 |
16 |
15 class Output_View_Provider implements WebviewViewProvider |
17 class Output_View_Provider implements WebviewViewProvider |
16 { |
18 { |
17 |
19 |
18 public static readonly view_type = 'isabelle-output' |
20 public static readonly view_type = 'isabelle-output' |
19 |
21 |
20 private _view?: WebviewView |
22 private _view?: WebviewView |
21 private content: string = '' |
23 private content: string = '' |
22 |
24 |
23 constructor(private readonly _extension_uri: Uri) { } |
25 constructor(private readonly _extension_uri: Uri, private readonly _language_client: LanguageClient) { } |
24 |
26 |
25 public resolveWebviewView( |
27 public resolveWebviewView( |
26 view: WebviewView, |
28 view: WebviewView, |
27 context: WebviewViewResolveContext, |
29 context: WebviewViewResolveContext, |
28 _token: CancellationToken) |
30 _token: CancellationToken) |
38 ] |
40 ] |
39 } |
41 } |
40 |
42 |
41 view.webview.html = this._get_html(this.content) |
43 view.webview.html = this._get_html(this.content) |
42 view.webview.onDidReceiveMessage(async message => |
44 view.webview.onDidReceiveMessage(async message => |
43 { |
45 { |
44 if (message.command === 'open') { |
46 switch (message.command) { |
45 open_webview_link(message.link) |
47 case "open": |
|
48 open_webview_link(message.link) |
|
49 break |
|
50 case "resize": |
|
51 this._language_client.sendNotification(lsp.output_set_margin_type, { margin: message.margin }) |
|
52 break |
46 } |
53 } |
47 }) |
54 }) |
48 } |
55 } |
49 |
56 |
50 public update_content(content: string) |
57 public update_content(content: string) |