1 'use strict'; |
1 'use strict'; |
2 |
2 |
3 import * as timers from 'timers' |
3 import * as timers from 'timers' |
4 import { ViewColumn, TextDocument, TextEditor, TextDocumentContentProvider, |
4 import { ViewColumn, TextDocument, TextEditor, TextDocumentContentProvider, |
5 ExtensionContext, Event, EventEmitter, Uri, Position, workspace, |
5 ExtensionContext, Event, EventEmitter, Uri, Position, workspace, |
6 window, commands } from 'vscode' |
6 window, commands, WebviewPanel } from 'vscode' |
7 import { LanguageClient } from 'vscode-languageclient'; |
7 import { LanguageClient } from 'vscode-languageclient'; |
8 import * as library from './library' |
8 import * as library from './library' |
9 import * as protocol from './protocol' |
9 import * as protocol from './protocol' |
10 import { Content_Provider } from './content_provider' |
10 import { Content_Provider } from './content_provider' |
11 |
11 |
37 |
37 |
38 export function setup(context: ExtensionContext, client: LanguageClient) |
38 export function setup(context: ExtensionContext, client: LanguageClient) |
39 { |
39 { |
40 context.subscriptions.push(content_provider.register()) |
40 context.subscriptions.push(content_provider.register()) |
41 |
41 |
|
42 var panel: WebviewPanel |
42 language_client = client |
43 language_client = client |
43 language_client.onNotification(protocol.preview_response_type, params => |
44 language_client.onNotification(protocol.preview_response_type, params => |
44 { |
45 { |
45 const preview_uri = encode_preview(Uri.parse(params.uri)) |
46 const preview_uri = encode_preview(Uri.parse(params.uri)) |
46 if (preview_uri) { |
47 if (!panel) { |
47 content_provider.set_content(preview_uri, params.content) |
48 panel = window.createWebviewPanel( |
48 content_provider.update(preview_uri) |
49 preview_uri.fsPath, |
49 |
50 params.label, |
50 const existing_document = |
51 params.column, |
51 workspace.textDocuments.find(document => |
52 { |
52 document.uri.scheme === preview_uri.scheme && |
53 enableScripts: true, |
53 document.uri.query === preview_uri.query) |
54 retainContextWhenHidden: true |
54 if (!existing_document && params.column != 0) { |
55 } |
55 commands.executeCommand("vscode.previewHtml", preview_uri, params.column, params.label) |
56 ); |
56 } |
|
57 } |
57 } |
|
58 panel.webview.html = params.content; |
58 }) |
59 }) |
59 } |
60 } |
60 |
61 |
61 |
62 |
62 /* commands */ |
63 /* commands */ |