workspace
workspace二级模块对象,用于处理和工作空间以及文档事件有关的逻辑
getWorkspaceFolders
从HBuilderX 2.7.12及以上版本开始支持
获取项目管理器下所有的项目对象(不包含已关闭项目)
参数说明
无
返回值
示例
var wsPromise = hx.workspace.getWorkspaceFolders();
wsPromise.then(function(wsFolders) {
console.log("项目管理器包含的项目数量:",wsFolders.length);
});
getWorkspaceFolder
从HBuilderX 2.7.12及以上版本开始支持
获取某个文件所在的项目
参数说明
参数名称 |
参数类型 |
描述 |
uri |
String或Uri |
文件绝对路径或者文件Uri |
返回值
示例
var wsPromise = hx.workspace.getWorkspaceFolder("%fsPath%");
wsPromise.then(function(wsFolder) {
console.log("文件所在项目:",wsFolder.name);
});
openTextDocument
通过指定的uri打开一个文档文件
参数说明
参数名称 |
参数类型 |
描述 |
uri |
String或Uri |
文档地址 |
返回值
示例
var documentPromise = hx.workspace.openTextDocument("foo/bar.js");
documentPromise.then(function(document) {
console.log("打开了文档:",document.fileName);
});
onDidChangeConfiguration
从HBuilderX 2.7.10及以上版本开始支持
全局配置改变事件,比如”editor.fontSize”改变,或者通过插件扩展的配置项改变。
参数说明
返回值
返回类型 |
描述 |
Disposable |
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调 |
示例
let configurationChangeDisplose = hx.workspace.onDidChangeConfiguration(function(event){
if(event.affectsConfiguration("editor.fontSize")){
console.log("修改了字体大小");
}
});
onDidChangeWorkspaceFolders
从HBuilderX 2.7.10及以上版本开始支持
项目管理器内的项目新增或者移除时产生的事件
参数说明
返回值
返回类型 |
描述 |
Disposable |
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调 |
示例
let wsFoldersChangeDisplose = hx.workspace.onDidChangeWorkspaceFolders(function(event){
if(event.added){
event.added.forEach(item=>console.log("新增了项目:",item.name));
}
if(event.removed){
event.removed.forEach(item=>console.log("移除了项目:",item.name));
}
});
onWillSaveTextDocument
文档即将要保存的事件,注意该事件是同步调用,会阻塞用户界面,为了避免长时间阻塞界面,目前设置了超时机制,超时时间为2s。
注意你在该事件回调中执行的逻辑不应该占用太长的时间,如果超时将会出现一些不可预测的问题。
参数说明
返回值
返回类型 |
描述 |
Disposable |
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调 |
示例
let willSaveTextDocumentEventDispose = hx.workspace.onWillSaveTextDocument(function(event){
let document = event.document;
//do something with document.
});
onDidChangeTextDocument
文档被修改时的事件
参数说明
返回值
返回类型 |
描述 |
Disposable |
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调 |
示例
let onDidChangeTextDocumentEventDispose = hx.workspace.onDidChangeTextDocument(function(event){
let document = event.document;
//do something with document.
});
onDidSaveTextDocument
文档被保存时的事件
参数说明
返回值
返回类型 |
描述 |
Disposable |
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调 |
示例
let onDidSaveTextDocumentEventDispose = hx.workspace.onDidSaveTextDocument(function(document){
//do something with document.
});
onDidOpenTextDocument
从HBuilderX 2.7.6及以上版本开始支持
文档打开时的事件
参数说明
返回值
返回类型 |
描述 |
Disposable |
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调 |
示例
let onDidOpenTextDocumentEventDispose = hx.workspace.onDidOpenTextDocument(function(document){
//do something with document.
});
context.subscriptions.push(onDidOpenTextDocumentEventDispose);
applyEdit
根据指定的WorkspaceEdit对象编辑文档。WorkspaceEdit对象内要设定被修改文档的uri和要执行修改的TextEdit操作对象。
参数说明
返回值
返回类型 |
描述 |
Promise<void> |
Promise |
示例
let editorPromise = hx.window.getActiveTextEditor();
editorPromise.then((editor)=>{
let workspaceEdit = new hx.WorkspaceEdit();
let edits = [];
edits.push(new hx.TextEdit({
start: 0,
end: 0
}, "foo"));
workspaceEdit.set(editor.document.uri,edits);
hx.workspace.applyEdit(workspaceEdit);
});
getConfiguration
根据指定的section获取对应的配置
参数说明
参数名称 |
参数类型 |
描述 |
section |
String |
配置项分类名称 |
返回值
示例
let config = hx.workspace.getConfiguration()
let fontSize = config.get("editor.fontSize");
//或者也可以这样
let config = hx.workspace.getConfiguration("editor")
let fontSize = config.get("fontSize");