src/Tools/VSCode/extension/src/output_view.ts
changeset 81035 56594fac1dab
parent 75266 72112cf37bf7
child 81045 07d25a1830df
equal deleted inserted replaced
81034:50082e028475 81035:56594fac1dab
     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)