You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
vscode-api-cn.js/interfaces/CustomEditorProvider.html

554 lines
36 KiB

<!doctype html>
<html class="default no-js">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>CustomEditorProvider | VS Code API 中文文档</title>
<meta name="description" content="Documentation for VS Code API 中文文档">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="shortcut icon" href="https://code.visualstudio.com/favicon.ico" sizes="128x128">
<link rel="stylesheet" href="../assets/css/main.css">
<script async src="../assets/js/search.js" id="search-script"></script>
<style>
a[title="站长统计"] {
display: none;
}
.github-corner svg {
z-index: 1;
}
.github-corner:hover .octo-arm {
animation:octocat-wave 560ms ease-in-out
}
@keyframes octocat-wave {
0%,100%{transform:rotate(0)}
20%,60%{transform:rotate(-25deg)}
40%,80%{transform:rotate(10deg)}
}
@media (max-width:500px) {
.github-corner:hover
.octo-arm{animation:none}
.github-corner .octo-arm{
animation:octocat-wave 560ms ease-in-out
}
}
.container-main {
padding-bottom: 50px;
}
</style>
</head>
<body>
<header>
<div class="tsd-page-toolbar">
<div class="container">
<div class="table-wrap">
<div class="table-cell" id="tsd-search" data-index="../assets/js/search.json" data-base="..">
<div class="field">
<label for="tsd-search-field" class="tsd-widget search no-caption">Search</label>
<input id="tsd-search-field" type="text" />
</div>
<ul class="results">
<li class="state loading">Preparing search index...</li>
<li class="state failure">The search index is not available</li>
</ul>
<a href="../index.html" class="title">VS Code API 中文文档</a>
</div>
<div class="table-cell" id="tsd-widgets">
<div id="tsd-filter">
<a href="#" class="tsd-widget options no-caption" data-toggle="options">Options</a>
<div class="tsd-filter-group">
<div class="tsd-select" id="tsd-filter-visibility">
<span class="tsd-select-label">All</span>
<ul class="tsd-select-list">
<li data-value="public">Public</li>
<li data-value="protected">Public/Protected</li>
<li data-value="private" class="selected">All</li>
</ul>
</div>
<input type="checkbox" id="tsd-filter-inherited" checked />
<label class="tsd-widget" for="tsd-filter-inherited">Inherited</label>
<input type="checkbox" id="tsd-filter-externals" checked />
<label class="tsd-widget" for="tsd-filter-externals">Externals</label>
</div>
</div>
<a href="#" class="tsd-widget menu no-caption" data-toggle="menu">Menu</a>
</div>
</div>
</div>
</div>
<div class="tsd-page-title">
<div class="container">
<ul class="tsd-breadcrumb">
<li>
<a href="../modules.html">VS Code API 中文文档</a>
</li>
<li>
<a href="CustomEditorProvider.html">CustomEditorProvider</a>
</li>
</ul>
<h1>Interface CustomEditorProvider&lt;T&gt;</h1>
</div>
</div>
</header>
<div class="container container-main">
<div class="row">
<div class="col-8 col-content">
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Provider for editable custom editors that use a custom document model.</p>
</div>
<p>Custom editors use <a href="CustomDocument.html"><code>CustomDocument</code></a> as their document model instead of a <a href="TextDocument.html"><code>TextDocument</code></a>.
This gives extensions full control over actions such as edit, save, and backup.</p>
<p>You should use this type of custom editor when dealing with binary files or more complex scenarios. For simple
text based documents, use <a href="CustomTextEditorProvider.html"><code>CustomTextEditorProvider</code></a> instead.</p>
</div>
</section>
<section class="tsd-panel tsd-type-parameters">
<h3>Type parameters</h3>
<ul class="tsd-type-parameters">
<li>
<h4>T<span class="tsd-signature-symbol">: </span><a href="CustomDocument.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocument</a> = <a href="CustomDocument.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocument</a></h4>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Type of the custom document returned by this provider.</p>
</div>
</div>
</li>
</ul>
</section>
<section class="tsd-panel tsd-hierarchy">
<h3>层级</h3>
<ul class="tsd-hierarchy">
<li>
<a href="CustomReadonlyEditorProvider.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomReadonlyEditorProvider</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol">&gt;</span>
<ul class="tsd-hierarchy">
<li>
<span class="target">CustomEditorProvider</span>
</li>
</ul>
</li>
</ul>
</section>
<section class="tsd-panel-group tsd-index-group">
<h2>索引</h2>
<section class="tsd-panel tsd-index-panel">
<div class="tsd-index-content">
<section class="tsd-index-section ">
<h3>Methods6</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-interface tsd-is-inherited"><a href="CustomEditorProvider.html#openCustomDocument" class="tsd-kind-icon">open<wbr>Custom<wbr>Document</a></li>
<li class="tsd-kind-method tsd-parent-kind-interface tsd-is-inherited"><a href="CustomEditorProvider.html#resolveCustomEditor" class="tsd-kind-icon">resolve<wbr>Custom<wbr>Editor</a></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="CustomEditorProvider.html#saveCustomDocument" class="tsd-kind-icon">save<wbr>Custom<wbr>Document</a></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="CustomEditorProvider.html#saveCustomDocumentAs" class="tsd-kind-icon">save<wbr>Custom<wbr>Document<wbr>As</a></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="CustomEditorProvider.html#revertCustomDocument" class="tsd-kind-icon">revert<wbr>Custom<wbr>Document</a></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><a href="CustomEditorProvider.html#backupCustomDocument" class="tsd-kind-icon">backup<wbr>Custom<wbr>Document</a></li>
</ul>
</section>
<section class="tsd-index-section ">
<h3>Properties1</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-property tsd-parent-kind-interface"><a href="CustomEditorProvider.html#onDidChangeCustomDocument" class="tsd-kind-icon">on<wbr>Did<wbr>Change<wbr>Custom<wbr>Document</a></li>
</ul>
</section>
</div>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods6</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
<a name="openCustomDocument" class="tsd-anchor"></a>
<h3>open<wbr>Custom<wbr>Document</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
<li class="tsd-signature tsd-kind-icon">open<wbr>Custom<wbr>Document<span class="tsd-signature-symbol">(</span>uri<span class="tsd-signature-symbol">: </span><a href="../classes/Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a>, openContext<span class="tsd-signature-symbol">: </span><a href="CustomDocumentOpenContext.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentOpenContext</a>, token<span class="tsd-signature-symbol">: </span><a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol"> | </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<p>Inherited from <a href="CustomReadonlyEditorProvider.html">CustomReadonlyEditorProvider</a>.<a href="CustomReadonlyEditorProvider.html#openCustomDocument">openCustomDocument</a></p>
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8000">vscode.d.ts:8000</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Create a new document for a given resource.</p>
</div>
<p><code>openCustomDocument</code> is called when the first time an editor for a given resource is opened. The opened
document is then passed to <code>resolveCustomEditor</code> so that the editor can be shown to the user.</p>
<p>Already opened <code>CustomDocument</code> are re-used if the user opened additional editors. When all editors for a
given resource are closed, the <code>CustomDocument</code> is disposed of. Opening an editor at this point will
trigger another call to <code>openCustomDocument</code>.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>uri: <a href="../classes/Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a></h5>
<div class="tsd-comment tsd-typography">
<p>Uri of the document to open.</p>
</div>
</li>
<li>
<h5>openContext: <a href="CustomDocumentOpenContext.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentOpenContext</a></h5>
<div class="tsd-comment tsd-typography">
<p>Additional information about the opening custom document.</p>
</div>
</li>
<li>
<h5>token: <a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a></h5>
<div class="tsd-comment tsd-typography">
<p>A cancellation token that indicates the result is no longer needed.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">T</span><span class="tsd-signature-symbol"> | </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol">&gt;</span></h4>
<p>The custom document.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
<a name="resolveCustomEditor" class="tsd-anchor"></a>
<h3>resolve<wbr>Custom<wbr>Editor</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
<li class="tsd-signature tsd-kind-icon">resolve<wbr>Custom<wbr>Editor<span class="tsd-signature-symbol">(</span>document<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span>, webviewPanel<span class="tsd-signature-symbol">: </span><a href="WebviewPanel.html" class="tsd-signature-type" data-tsd-kind="Interface">WebviewPanel</a>, token<span class="tsd-signature-symbol">: </span><a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol"> | </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<p>Inherited from <a href="CustomReadonlyEditorProvider.html">CustomReadonlyEditorProvider</a>.<a href="CustomReadonlyEditorProvider.html#resolveCustomEditor">resolveCustomEditor</a></p>
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8019">vscode.d.ts:8019</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Resolve a custom editor for a given resource.</p>
</div>
<p>This is called whenever the user opens a new editor for this <code>CustomEditorProvider</code>.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>document: <span class="tsd-signature-type">T</span></h5>
<div class="tsd-comment tsd-typography">
<p>Document for the resource being resolved.</p>
</div>
</li>
<li>
<h5>webviewPanel: <a href="WebviewPanel.html" class="tsd-signature-type" data-tsd-kind="Interface">WebviewPanel</a></h5>
<div class="tsd-comment tsd-typography">
<p>The webview panel used to display the editor UI for this resource.</p>
<p>During resolve, the provider must fill in the initial html for the content webview panel and hook up all
the event listeners on it that it is interested in. The provider can also hold onto the <code>WebviewPanel</code> to
use later for example in a command. See <a href="WebviewPanel.html"><code>WebviewPanel</code></a> for additional details.</p>
</div>
</li>
<li>
<h5>token: <a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a></h5>
<div class="tsd-comment tsd-typography">
<p>A cancellation token that indicates the result is no longer needed.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">void</span><span class="tsd-signature-symbol"> | </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
<p>Optional thenable indicating that the custom editor has been resolved.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="saveCustomDocument" class="tsd-anchor"></a>
<h3>save<wbr>Custom<wbr>Document</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">save<wbr>Custom<wbr>Document<span class="tsd-signature-symbol">(</span>document<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span>, cancellation<span class="tsd-signature-symbol">: </span><a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8071">vscode.d.ts:8071</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Save a custom document.</p>
</div>
<p>This method is invoked by the editor when the user saves a custom editor. This can happen when the user
triggers save while the custom editor is active, by commands such as <code>save all</code>, or by auto save if enabled.</p>
<p>To implement <code>save</code>, the implementer must persist the custom editor. This usually means writing the
file data for the custom document to disk. After <code>save</code> completes, any associated editor instances will
no longer be marked as dirty.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>document: <span class="tsd-signature-type">T</span></h5>
<div class="tsd-comment tsd-typography">
<p>Document to save.</p>
</div>
</li>
<li>
<h5>cancellation: <a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a></h5>
<div class="tsd-comment tsd-typography">
<p>Token that signals the save is no longer required (for example, if another save was triggered).</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
<p>Thenable signaling that saving has completed.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="saveCustomDocumentAs" class="tsd-anchor"></a>
<h3>save<wbr>Custom<wbr>Document<wbr>As</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">save<wbr>Custom<wbr>Document<wbr>As<span class="tsd-signature-symbol">(</span>document<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span>, destination<span class="tsd-signature-symbol">: </span><a href="../classes/Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a>, cancellation<span class="tsd-signature-symbol">: </span><a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8087">vscode.d.ts:8087</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Save a custom document to a different location.</p>
</div>
<p>This method is invoked by the editor when the user triggers &#39;save as&#39; on a custom editor. The implementer must
persist the custom editor to <code>destination</code>.</p>
<p>When the user accepts save as, the current editor is be replaced by an non-dirty editor for the newly saved file.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>document: <span class="tsd-signature-type">T</span></h5>
<div class="tsd-comment tsd-typography">
<p>Document to save.</p>
</div>
</li>
<li>
<h5>destination: <a href="../classes/Uri.html" class="tsd-signature-type" data-tsd-kind="Class">Uri</a></h5>
<div class="tsd-comment tsd-typography">
<p>Location to save to.</p>
</div>
</li>
<li>
<h5>cancellation: <a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a></h5>
<div class="tsd-comment tsd-typography">
<p>Token that signals the save is no longer required.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
<p>Thenable signaling that saving has completed.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="revertCustomDocument" class="tsd-anchor"></a>
<h3>revert<wbr>Custom<wbr>Document</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">revert<wbr>Custom<wbr>Document<span class="tsd-signature-symbol">(</span>document<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span>, cancellation<span class="tsd-signature-symbol">: </span><a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8104">vscode.d.ts:8104</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Revert a custom document to its last saved state.</p>
</div>
<p>This method is invoked by the editor when the user triggers <code>File: Revert File</code> in a custom editor. (Note that
this is only used using the editor&#39;s <code>File: Revert File</code> command and not on a <code>git revert</code> of the file).</p>
<p>To implement <code>revert</code>, the implementer must make sure all editor instances (webviews) for <code>document</code>
are displaying the document in the same state is saved in. This usually means reloading the file from the
workspace.</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>document: <span class="tsd-signature-type">T</span></h5>
<div class="tsd-comment tsd-typography">
<p>Document to revert.</p>
</div>
</li>
<li>
<h5>cancellation: <a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a></h5>
<div class="tsd-comment tsd-typography">
<p>Token that signals the revert is no longer required.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
<p>Thenable signaling that the change has completed.</p>
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-interface">
<a name="backupCustomDocument" class="tsd-anchor"></a>
<h3>backup<wbr>Custom<wbr>Document</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-interface">
<li class="tsd-signature tsd-kind-icon">backup<wbr>Custom<wbr>Document<span class="tsd-signature-symbol">(</span>document<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">T</span>, context<span class="tsd-signature-symbol">: </span><a href="CustomDocumentBackupContext.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentBackupContext</a>, cancellation<span class="tsd-signature-symbol">: </span><a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><a href="CustomDocumentBackup.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentBackup</a><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8127">vscode.d.ts:8127</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Back up a dirty custom document.</p>
</div>
<p>Backups are used for hot exit and to prevent data loss. Your <code>backup</code> method should persist the resource in
its current state, i.e. with the edits applied. Most commonly this means saving the resource to disk in
the <code>ExtensionContext.storagePath</code>. When the editor reloads and your custom editor is opened for a resource,
your extension should first check to see if any backups exist for the resource. If there is a backup, your
extension should load the file contents from there instead of from the resource in the workspace.</p>
<p><code>backup</code> is triggered approximately one second after the user stops editing the document. If the user
rapidly edits the document, <code>backup</code> will not be invoked until the editing stops.</p>
<p><code>backup</code> is not invoked when <code>auto save</code> is enabled (since auto save already persists the resource).</p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>document: <span class="tsd-signature-type">T</span></h5>
<div class="tsd-comment tsd-typography">
<p>Document to backup.</p>
</div>
</li>
<li>
<h5>context: <a href="CustomDocumentBackupContext.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentBackupContext</a></h5>
<div class="tsd-comment tsd-typography">
<p>Information that can be used to backup the document.</p>
</div>
</li>
<li>
<h5>cancellation: <a href="CancellationToken.html" class="tsd-signature-type" data-tsd-kind="Interface">CancellationToken</a></h5>
<div class="tsd-comment tsd-typography">
<p>Token that signals the current backup since a new backup is coming in. It is up to your
extension to decided how to respond to cancellation. If for example your extension is backing up a large file
in an operation that takes time to complete, your extension may decide to finish the ongoing backup rather
than cancelling it to ensure that the editor has some valid backup.</p>
</div>
</li>
</ul>
<h4 class="tsd-returns-title">Returns <a href="Thenable.html" class="tsd-signature-type" data-tsd-kind="Interface">Thenable</a><span class="tsd-signature-symbol">&lt;</span><a href="CustomDocumentBackup.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentBackup</a><span class="tsd-signature-symbol">&gt;</span></h4>
</li>
</ul>
</section>
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Properties1</h2>
<section class="tsd-panel tsd-member tsd-kind-property tsd-parent-kind-interface">
<a name="onDidChangeCustomDocument" class="tsd-anchor"></a>
<h3><span class="tsd-flag ts-flagReadonly">Readonly</span> on<wbr>Did<wbr>Change<wbr>Custom<wbr>Document</h3>
<div class="tsd-signature tsd-kind-icon">on<wbr>Did<wbr>Change<wbr>Custom<wbr>Document<span class="tsd-signature-symbol">:</span> <a href="Event.html" class="tsd-signature-type" data-tsd-kind="Interface">Event</a><span class="tsd-signature-symbol">&lt;</span><a href="CustomDocumentEditEvent.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentEditEvent</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol"> | </span><a href="Event.html" class="tsd-signature-type" data-tsd-kind="Interface">Event</a><span class="tsd-signature-symbol">&lt;</span><a href="CustomDocumentContentChangeEvent.html" class="tsd-signature-type" data-tsd-kind="Interface">CustomDocumentContentChangeEvent</a><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">T</span><span class="tsd-signature-symbol">&gt;</span><span class="tsd-signature-symbol">&gt;</span></div>
<aside class="tsd-sources">
<ul>
<li>Defined in <a href="https://github.com/vscode-cn/vscode-api-cn/blob/f404b40/vscode.d.ts#L8054">vscode.d.ts:8054</a></li>
</ul>
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Signal that an edit has occurred inside a custom editor.</p>
</div>
<p>This event must be fired by your extension whenever an edit happens in a custom editor. An edit can be
anything from changing some text, to cropping an image, to reordering a list. Your extension is free to
define what an edit is and what data is stored on each edit.</p>
<p>Firing <code>onDidChange</code> causes the editors to be marked as being dirty. This is cleared when the user either
saves or reverts the file.</p>
<p>Editors that support undo/redo must fire a <code>CustomDocumentEditEvent</code> whenever an edit happens. This allows
users to undo and redo the edit using the editor&#39;s standard keyboard shortcuts. The editor will also mark
the editor as no longer being dirty if the user undoes all edits to the last saved state.</p>
<p>Editors that support editing but cannot use the editor&#39;s standard undo/redo mechanism must fire a <code>CustomDocumentContentChangeEvent</code>.
The only way for a user to clear the dirty state of an editor that does not support undo/redo is to either
<code>save</code> or <code>revert</code> the file.</p>
<p>An editor should only ever fire <code>CustomDocumentEditEvent</code> events, or only ever fire <code>CustomDocumentContentChangeEvent</code> events.</p>
</div>
</section>
</section>
</div>
<div class="col-4 col-menu menu-sticky-wrap menu-highlight">
<nav class="tsd-navigation primary">
<ul>
<li class=" ">
<a href="../modules.html">Exports</a>
</li>
</ul>
</nav>
<nav class="tsd-navigation secondary menu-sticky">
<ul class="before-current">
</ul>
<ul class="current">
<li class="current tsd-kind-interface tsd-has-type-parameter">
<a href="CustomEditorProvider.html" class="tsd-kind-icon">Custom<wbr>Editor<wbr>Provider</a>
<ul>
<li class=" tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
<a href="CustomEditorProvider.html#openCustomDocument" class="tsd-kind-icon">open<wbr>Custom<wbr>Document</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface tsd-is-inherited">
<a href="CustomEditorProvider.html#resolveCustomEditor" class="tsd-kind-icon">resolve<wbr>Custom<wbr>Editor</a>
</li>
<li class=" tsd-kind-property tsd-parent-kind-interface">
<a href="CustomEditorProvider.html#onDidChangeCustomDocument" class="tsd-kind-icon">on<wbr>Did<wbr>Change<wbr>Custom<wbr>Document</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="CustomEditorProvider.html#saveCustomDocument" class="tsd-kind-icon">save<wbr>Custom<wbr>Document</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="CustomEditorProvider.html#saveCustomDocumentAs" class="tsd-kind-icon">save<wbr>Custom<wbr>Document<wbr>As</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="CustomEditorProvider.html#revertCustomDocument" class="tsd-kind-icon">revert<wbr>Custom<wbr>Document</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-interface">
<a href="CustomEditorProvider.html#backupCustomDocument" class="tsd-kind-icon">backup<wbr>Custom<wbr>Document</a>
</li>
</ul>
</li>
</ul>
<ul class="after-current">
</ul>
</nav>
</div>
</div>
</div>
<footer class="with-border-bottom">
<div class="container">
<h2>图例</h2>
<div class="tsd-legend-group">
<ul class="tsd-legend">
<li class="tsd-kind-constructor tsd-parent-kind-class"><span class="tsd-kind-icon">Constructor</span></li>
<li class="tsd-kind-property tsd-parent-kind-class"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-interface"><span class="tsd-kind-icon">Property</span></li>
<li class="tsd-kind-method tsd-parent-kind-interface"><span class="tsd-kind-icon">Method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-inherited"><span class="tsd-kind-icon">Inherited method</span></li>
</ul>
<ul class="tsd-legend">
<li class="tsd-kind-property tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static property</span></li>
<li class="tsd-kind-method tsd-parent-kind-class tsd-is-static"><span class="tsd-kind-icon">Static method</span></li>
</ul>
</div>
</div>
</footer>
<div class="container tsd-generator">
<p><a href="https://liiked.github.io/VS-Code-Extension-Doc-ZH/" target="_blank">VS Code 插件开发中文文档</a> | <a href="https://jeasonstudio.gitbooks.io/vscode-cn-doc/content/" target="_blank">VS Code 中文文档</a> | <a href="https://code.visualstudio.com/docs" target="_blank">VS Code 官网文档</a> | <a href="https://marketplace.visualstudio.com/" target="_blank">VS Code 扩展市场</a></p>
<p>Generated by <a href="https://typedoc.org/" target="_blank">TypeDoc</a> | <a href="https://www.cnzz.com/stat/website.php?web_id=1280241129" target="_blank" title="VS Code 官网文档站长统计">站长统计</a></p>
</div>
<div class="overlay"></div>
<script src="../assets/js/main.js"></script>
<script type="text/javascript">document.write(unescape("%3Cspan id='cnzz_stat_icon_1280241129'%3E%3C/span%3E%3Cscript src='https://s9.cnzz.com/z_stat.php%3Fid%3D1280241129' type='text/javascript'%3E%3C/script%3E"));</script>
<a href="https://github.com/youngjuning/vscode-api-cn" target="_blank" class="github-corner" aria-label="View source on GitHub"><svg width="80" height="80" viewBox="0 0 250 250" style="fill:#151513; color:#fff; position: fixed; top: 0; border: 0; right: 0;" aria-hidden="true"><path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z"></path><path d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2" fill="currentColor" style="transform-origin: 130px 106px;" class="octo-arm"></path><path d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z" fill="currentColor" class="octo-body"></path></svg></a>
</body>
</html>