workspace

workspace二级模块对象,用于处理和工作空间以及文档事件有关的逻辑

getWorkspaceFolders

从HBuilderX 2.7.12及以上版本开始支持

获取项目管理器下所有的项目对象(不包含已关闭项目)

参数说明

返回值

返回类型 描述
Promise<Array<WorkspaceFolder>> 项目管理器下所有的项目

示例

  1. var wsPromise = hx.workspace.getWorkspaceFolders();
  2. wsPromise.then(function(wsFolders) {
  3. console.log("项目管理器包含的项目数量:",wsFolders.length);
  4. });

getWorkspaceFolder

从HBuilderX 2.7.12及以上版本开始支持

获取某个文件所在的项目

参数说明

参数名称 参数类型 描述
uri String或Uri 文件绝对路径或者文件Uri

返回值

返回类型 描述
Promise<WorkspaceFolder> 文件所在的项目

示例

  1. var wsPromise = hx.workspace.getWorkspaceFolder("%fsPath%");
  2. wsPromise.then(function(wsFolder) {
  3. console.log("文件所在项目:",wsFolder.name);
  4. });

openTextDocument

通过指定的uri打开一个文档文件

参数说明

参数名称 参数类型 描述
uri String或Uri 文档地址

返回值

返回类型 描述
Promise<TextDocument> 返回打开的文档

示例

  1. var documentPromise = hx.workspace.openTextDocument("foo/bar.js");
  2. documentPromise.then(function(document) {
  3. console.log("打开了文档:",document.fileName);
  4. });

onDidChangeConfiguration

从HBuilderX 2.7.10及以上版本开始支持

全局配置改变事件,比如”editor.fontSize”改变,或者通过插件扩展的配置项改变。

参数说明

参数名称 参数类型 描述
listener Function(ConfigurationChangeEvent) 配置修改事件回调

返回值

返回类型 描述
Disposable 该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调

示例

  1. let configurationChangeDisplose = hx.workspace.onDidChangeConfiguration(function(event){
  2. if(event.affectsConfiguration("editor.fontSize")){
  3. console.log("修改了字体大小");
  4. }
  5. });

onDidChangeWorkspaceFolders

从HBuilderX 2.7.10及以上版本开始支持

项目管理器内的项目新增或者移除时产生的事件

参数说明

参数名称 参数类型 描述
listener Function(WorkspaceFoldersChangeEvent) 项目新增或者移除的事件回调

返回值

返回类型 描述
Disposable 该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调

示例

  1. let wsFoldersChangeDisplose = hx.workspace.onDidChangeWorkspaceFolders(function(event){
  2. if(event.added){
  3. event.added.forEach(item=>console.log("新增了项目:",item.name));
  4. }
  5. if(event.removed){
  6. event.removed.forEach(item=>console.log("移除了项目:",item.name));
  7. }
  8. });

onWillSaveTextDocument

文档即将要保存的事件,注意该事件是同步调用,会阻塞用户界面,为了避免长时间阻塞界面,目前设置了超时机制,超时时间为2s。

注意你在该事件回调中执行的逻辑不应该占用太长的时间,如果超时将会出现一些不可预测的问题。

参数说明

参数名称 参数类型 描述
listener Function(TextDocumentWillSaveEvent) 事件回调

返回值

返回类型 描述
Disposable 该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调

示例

  1. let willSaveTextDocumentEventDispose = hx.workspace.onWillSaveTextDocument(function(event){
  2. let document = event.document;
  3. //do something with document.
  4. });

onDidChangeTextDocument

文档被修改时的事件

参数说明

参数名称 参数类型 描述
listener Function(TextDocumentChangeEvent) 事件回调

返回值

返回类型 描述
Disposable 该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调

示例

  1. let onDidChangeTextDocumentEventDispose = hx.workspace.onDidChangeTextDocument(function(event){
  2. let document = event.document;
  3. //do something with document.
  4. });

onDidSaveTextDocument

文档被保存时的事件

参数说明

参数名称 参数类型 描述
listener Function(TextDocument) 事件回调

返回值

返回类型 描述
Disposable 该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调

示例

  1. let onDidSaveTextDocumentEventDispose = hx.workspace.onDidSaveTextDocument(function(document){
  2. //do something with document.
  3. });

onDidOpenTextDocument

从HBuilderX 2.7.6及以上版本开始支持

文档打开时的事件

参数说明

参数名称 参数类型 描述
listener Function(TextDocument) 事件回调

返回值

返回类型 描述
Disposable 该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调

示例

  1. let onDidOpenTextDocumentEventDispose = hx.workspace.onDidOpenTextDocument(function(document){
  2. //do something with document.
  3. });
  4. context.subscriptions.push(onDidOpenTextDocumentEventDispose);

applyEdit

根据指定的WorkspaceEdit对象编辑文档。WorkspaceEdit对象内要设定被修改文档的uri和要执行修改的TextEdit操作对象。

参数说明

参数名称 参数类型 描述
edit WorkspaceEdit 文档编辑操作

返回值

返回类型 描述
Promise<void> Promise

示例

  1. let editorPromise = hx.window.getActiveTextEditor();
  2. editorPromise.then((editor)=>{
  3. let workspaceEdit = new hx.WorkspaceEdit();
  4. let edits = [];
  5. edits.push(new hx.TextEdit({
  6. start: 0,
  7. end: 0
  8. }, "foo"));
  9. workspaceEdit.set(editor.document.uri,edits);
  10. hx.workspace.applyEdit(workspaceEdit);
  11. });

getConfiguration

根据指定的section获取对应的配置

参数说明

参数名称 参数类型 描述
section String 配置项分类名称

返回值

返回类型 描述
Configuration 返回配置

示例

  1. let config = hx.workspace.getConfiguration()
  2. let fontSize = config.get("editor.fontSize");
  3. //或者也可以这样
  4. let config = hx.workspace.getConfiguration("editor")
  5. let fontSize = config.get("fontSize");