src/Tools/VSCode/extension/src/preview.ts
changeset 71473 be84312a2d53
parent 66097 ee4c2d5b650e
equal deleted inserted replaced
71471:c06604896c3d 71473:be84312a2d53
     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 */