vscode插件里给我们提供了大量的对象、方法供我们使用

但其中的对象、方法如果不满足我们的需求的话,就需要对其进行扩展,这里我详细介绍下如何对其进行扩展。

<>这里我扩展的是文件的路径

<>首先定义类型

src/vscode-dts/vscode.d.ts
export namespace trash { export function getTrashRootPath(): Thenable<string>;
}
<>定义主线类方法

src/vs/workbench/api/browser/mainThreadTrash.ts

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under
the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { INativeEnvironmentService } from
'vs/platform/environment/common/environment'; import { MainContext,
MainThreadTrashShape} from 'vs/workbench/api/common/extHost.protocol'; import {
extHostNamedCustomer, IExtHostContext } from
'../../services/extensions/common/extHostCustomers'; import { Disposable } from
'vs/base/common/lifecycle'; @extHostNamedCustomer(MainContext.MainThreadTrash)
export class MainThreadTrash extends Disposable implements MainThreadTrashShape
{ // private readonly _proxy: ExtHostTrashShape; constructor( extHostContext:
IExtHostContext, @INativeEnvironmentService private readonly
environmentMainService: INativeEnvironmentService ) { super(); // this._proxy =
extHostContext.getProxy(ExtHostContext.ExtHostTrash); } $getTrashRoot(): Promise
<string> { return Promise.resolve(this.environmentMainService.trashContent.
fsPath); } }
src/vs/workbench/api/common/extHost.protocol.ts

<>接口
export interface MainThreadTrashShape extends IDisposable { $getTrashRoot():
Promise<string>; } export interface ExtHostTrashShape { $getTrashRoot(): Promise
<string>; }
<>统一注册主线类方法

src/vs/workbench/api/browser/extensionHost.contribution.ts
import './mainThreadTrash';
<>插件线程方法

src/vs/workbench/api/common/extHostTrash.ts

/*---------------------------------------------------------------------------------------------
* Copyright (c) Microsoft Corporation. All rights reserved. * Licensed under
the MIT License. See License.txt in the project root for license information.
*--------------------------------------------------------------------------------------------*/
import { IMainContext, MainThreadTrashShape, MainContext, ExtHostTrashShape }
from 'vs/workbench/api/common/extHost.protocol'; export class ExtHostTrash
implements ExtHostTrashShape { private _proxy: MainThreadTrashShape; constructor
(mainContext: IMainContext) { this._proxy = mainContext.getProxy(MainContext.
MainThreadTrash); } $getTrashRoot(): Promise<string> { return this._proxy.
$getTrashRoot(); } }
<>这里添加到插件扩展

src/vs/workbench/api/common/extHost.api.impl.ts
179
const extHostTrash = rpcProtocol.set(ExtHostContext.ExtHostTrash, new
ExtHostTrash(rpcProtocol));
259
const trash: typeof vscode.trash = { async getTrashRootPath() { return
extHostTrash.$getTrashRoot(); } };
1145
return <typeof vscode>{ version: initData.version, trash, // namespaces ... }
<>插件里使用
vscode.trash.getTrashRootPath().then(data => { console.log(123,vscode.Uri.file(
data) ) })

技术
下载桌面版
GitHub
百度网盘(提取码:draw)
Gitee
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:766591547
关注微信