HBuilderX API根对象可以通过require('hbuilderx')引入。
const hx = require ( 'hbuilderx' )
以下列出目前可用的API列表
commands二级模块对象,用于处理和命令
相关的逻辑。命令
包含2部分:唯一ID和自定义的function,可以通过registerCommand或registerTextEditorCommand注册。命令
可以通过以下方式触发:
菜单:将命令通过menus
扩展点关联到某个菜单。
通过commands扩展点声明一个command,然后关联到menus
上
{
"contributes" :{
"commands" :[
{
"command" :" extension.firstExtension" ,
"title" :" My First Extension"
}
],
"menus" :{
"editor/context" :[
{
"command" : " extension.firstExtension" ,
"group" : " z_commands" ,
"when" : " editorTextFocus"
}
]
}
}
}
2. 在插件的激活回调(`activate`)中注册该command
hx . commands . registerCommand ( 'extension.firstExtension' , ( ) => {
hx . window . showInformationMessage ( "Hello My First Extension." ) ;
} ) ;
用户自定义快捷键:使用插件的用户可以通过得知命令
的ID(一般在package.json中有声明),然后通过自定义快捷键
配置一个快捷键。
// Keybindings.json;
[
{
"key" :" ctrl+shift+0" ,
"command" :" extension.firstExtension"
}
]
执行指定id的命令
。除了插件扩展的命令
外,还可以执行HBuilderX内置的命令
,完整的内置命令
列表可以通过HBuilderX的顶部菜单工具
-自定义快捷键
,然后在打开的配置文件左侧部门找到所有列出的command
字段。
参数名称
参数类型
描述
command
String
要执行的命令
id
无
//执行插件扩展的命令
hx . commands . executeCommand ( 'extension.firstExtension' )
//执行内置的命令(关闭所有打开的编辑器)
hx . commands . executeCommand ( 'workbench.action.closeAllEditors' )
注册一个指定id的命令
,并关联一个自定义的函数
参数名称
参数类型
描述
commandId
String
命令
id
handler
Function
命令
触发时执行的函数
返回类型
描述
Disposable
该命令
的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该命令
let disposable = hx . commands . registerCommand ( 'extension.firstExtension' , ( ) => {
hx . window . showInformationMessage ( "Hello My First Extension." ) ;
} ) ;
context . subscriptions . push ( disposable ) ;
registerTextEditorCommand
注册一个指定id的编辑器命令
参数名称
参数类型
描述
commandId
String
命令
id
handler
Function(TextEditor )
命令
触发时执行的函数
返回类型
描述
Disposable
该命令
的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该命令
let disposable = hx . commands . registerTextEditorCommand ( 'extension.firstExtension' , ( editor ) => {
hx . window . showInformationMessage ( editor . document . fileName ) ;
} ) ;
context . subscriptions . push ( disposable ) ;
languages二级模块对象,用于处理和编程语言相关的逻辑,目前仅支持校验文档时创建问题列表。
createDiagnosticCollection
创建一个问题列表
参数名称
参数类型
描述
name
String
问题列表名称
let activeEditor = hx . window . getActiveTextEditor ( ) ;
activeEditor . then ( function ( editor ) {
// 获取文件路径
let file_url = editor . document . uri . fsPath ;
// 通过editor.document可以获取文档对象进行校验
// 创建一个测试问题集合
let collections = [ {
column : 0 ,
line : 3 ,
message : "error for test" ,
severity : 'error'
}
] ;
let diagnostics = hx . languages . createDiagnosticCollection ( 'eslint' ) ;
diagnostics . set ( file_url , collections ) ;
} ) ;
window二级模块对象,用于处理主窗口相关的逻辑。
设置状态栏消息
参数名称
参数类型
描述
text
String
消息内容
hideAfterTimeout
Number
[可选] 多长时间后自动隐藏,单位ms,默认值是0:不自动隐藏
level
String
[可选] 消息级别,取值有['warn','info','error'],默认值:'info'
hx . window . setStatusBarMessage ( '正在校验xxx文档...' , 600 , 'info' ) ;
清空状态栏消息
无
无
hx . window . clearStatusBarMessage ( ) ;
在窗口右下角显示错误通知框
参数名称
参数类型
描述
message
String
消息内容,支持html标签
buttons
Array<String>
通知框中的按钮组
返回类型
描述
Promise<String>
如果设置了按钮,返回用户点击了哪个按钮
let resultPromise = hx . window . showErrorMessage ( '是否删除该文件?' , [ '是' , '否' ] ) ;
resultPromise . then ( ( result ) => {
if ( result == '是' ) {
console . log ( "选择了是" ) ;
} else if ( result === '否' ) {
console . log ( "选择了否" ) ;
}
} ) ;
在窗口右下角显示消息通知框
参数名称
参数类型
描述
message
String
消息内容,支持html标签
buttons
Array<String>
通知框中的按钮组
返回类型
描述
Promise<String>
如果设置了按钮,返回用户点击了哪个按钮
hx . window . showInformationMessage ( '详情可访问<a href="http://www.dcloud.io">参考文档</a>' ) ;
效果如下:
在窗口右下角显示警告消息通知框
参数名称
参数类型
描述
message
String
消息内容,支持html标签
buttons
Array<String>
通知框中的按钮组
返回类型
描述
Promise<String>
如果设置了按钮,返回用户点击了哪个按钮
let resultPromise = hx . window . showWarningMessage ( '是否删除该文件?' , [ '是' , '否' ] ) ;
resultPromise . then ( ( result ) => {
if ( result == '是' ) {
console . log ( "选择了是" ) ;
} else if ( result === '否' ) {
console . log ( "选择了否" ) ;
}
} ) ;
在窗口中间弹出一个可搜索的建议选择列表
const pickResult = hx . window . showQuickPick ( [
{
label : '../' ,
description : '回到上一级目录' ,
backPath : 'foo/bar'
}
] , { placeHolder : '请选择一个目录或者文件' } ) ;
pickResult . then ( function ( result ) {
if ( ! result ) {
return ;
}
let backPath = result . backPath ;
//do something with result
}
获取当前激活的编辑器
无
let activeEditor = hx . window . getActiveTextEditor ( ) ;
activeEditor . then ( function ( editor ) {
console . log ( editor . document . fileName ) ;
} ) ;
在窗口中间居中弹出一个输入框,获取用户输入
返回类型
描述
Promise<String>
用户输入的结果
let inputPromise = hx . window . showInputBox ( {
prompt :"请输入密码" ,
password :true
} ) ;
inputPromise . then ( ( result ) => {
console . log ( "输入的密码为:" , result ) ;
} ) ;
创建一个输出控制台,可用于在控制台打印日志信息。
参数名称
参数类型
描述
channel
String
控制台通道名称
let outputChannel = hx . window . createOutputChannel ( "foo" ) ;
outputChannel . show ( ) ;
outputChannel . appendLine ( "Hello World" ) ;
workspace二级模块对象,用于处理和工作空间以及文档事件有关的逻辑
通过指定的uri打开一个文档文件
参数名称
参数类型
描述
uri
String或Uri
文档地址
var documentPromise = hx . workspace . openTextDocument ( "foo/bar.js" ) ;
documentPromise . then ( function ( document ) {
console . log ( "打开了文档:" , document . fileName ) ;
} ) ;
文档即将要保存的事件,注意该事件是同步调用,会阻塞用户界面,为了避免长时间阻塞界面,目前设置了超时机制,超时时间为2s。
注意你在该事件回调中执行的逻辑不应该占用太长的时间,如果超时将会出现一些不可预测的问题。
返回类型
描述
Disposable
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调
let willSaveTextDocumentEventDispose = hx . workspace . onWillSaveTextDocument ( function ( event ) {
let document = event . document ;
//do something with document.
} ) ;
文档被修改时的事件
返回类型
描述
Disposable
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调
let onDidChangeTextDocumentEventDispose = hx . workspace . onDidChangeTextDocument ( function ( event ) {
let document = event . document ;
//do something with document.
} ) ;
文档被保存时的事件
返回类型
描述
Disposable
该事件回调的销毁器,可将该对象放置到插件的context.subscriptions数组内,插件卸载时,将会自动注销该事件回调
let onDidChangeTextDocumentEventDispose = hx . workspace . onDidSaveTextDocument ( function ( document ) {
//do something with document.
} ) ;
执行指定的文档uri编辑工作空间内已打开的文档。
返回类型
描述
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 ) ;
} ) ;
根据指定的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" ) ;
TextDocumentWillSaveEvent
文档即将保存的事件
文档被修改时的事件
文本编辑器对象
修改当前编辑器打开的文档
返回类型
描述
Promise<void>
Promise
let editorPromise = hx . window . getActiveTextEditor ( ) ;
editorPromise . then ( function ( editor ) {
let selection = editor . selection ;
let document = editor . document ;
let word = document . getText ( selection ) ;
let reversed = word . split ( '' ) . reverse ( ) . join ( '' ) ;
editor . edit ( editBuilder => {
editBuilder . replace ( selection , reversed ) ;
} ) ;
} ) ;
编辑器打开的文档文件
属性名
属性类型
描述
fileName
String
文件名称
isDirty
Boolean
是否是修改状态
isUntitled
Boolean
是否是无标题文件
lineCount
Number
文档总行数
uri
Uri
文档的uri,如果是本地文件,可通过uri.fsPath获取本地文件路径
workspaceFolder
WorkspaceFolder
该文档文件所属的项目对象
获取指定区域内的文本
参数名称
参数类型
描述
range
Range
[可选]文本区域,如果不传该参数,则获取整个文档的内容
获取指定的行信息
参数名称
参数类型
描述
lineno
Number
行号,从0开始
根据光标位置获取光标所在行。
参数名称
参数类型
描述
pos
Number
光标位置
以下是目前支持的编程语言Id列表:
txt
actionscript
ada
asm
asp
autoit
baanc
bash
batch
c
cs
cmake
cpp
css
caml
cobol
coffeescript
d
dart
ejs
fortran
fortran77
html
html_es6
handlebars
haskell
inno
json
json_tm
java
javascript
javascriptreact
javascript_es6
kix
less
lisp
lua
markdown
matlab
njs
nml
nsis
nss
objc
php
pascal
perl
postscript
powershell
python
r
rc
ruby
sql
sass
scheme
scss
smalltalk
stylus
swift
tcl
typescript
typescriptreact
ux
vb
vhdl
verilog
vue
wxml
xml
yaml
pug
文档中的某一行
属性名
属性类型
描述
start
Number
行起始位置
end
Number
行结束位置,不计算换行符
text
String
行内容,不包含换行符
文本区域
属性名
属性类型
描述
start
Number
起始位置
end
Number
结束位置
输出通道
属性名
属性类型
描述
name
String
通道名称
参数名称
参数类型
描述
line
String
输出到控制台的内容
返回类型
描述
Promise<void>
Promise
let outputChannel = hx . window . createOutputChannel ( "foo" ) ;
outputChannel . show ( ) ;
outputChannel . appendLine ( "Hello World" ) ;
无
返回类型
描述
Promise<void>
Promise
let outputChannel = hx . window . createOutputChannel ( "foo" ) ;
outputChannel . show ( ) ;
outputChannel . appendLine ( "Hello World" ) ;
全局配置
参数名称
参数类型
描述
section
String
配置项的key
defaultValue
Any
默认值,当key不存在时返回该值
let eslintConfig = hx . workspace . getConfiguration ( "eslint-js" )
let validateOnDocumentChanged = eslintConfig . get ( "validateOnDocumentChanged" , false ) ;
参数名称
参数类型
描述
section
String
配置项的key
value
Any
配置项的值
返回类型
描述
Promise<void>
Promise
let eslintConfig = hx . workspace . getConfiguration ( "eslint-js" )
eslintConfig . update ( "validateOnDocumentChanged" , true ) . then ( ( ) => {
console . log ( "更新配置成功。" ) ;
} ) ;
问题集合
属性名
属性类型
描述
name
String
问题集合名称
参数名称
参数类型
描述
uri
String或Uri
文档地址
diagnostics
Array<DiagnosticItem >
问题集合
返回类型
描述
Promise<void>
Promise
let diagnositics = hx . languages . createDiagnosticCollection ( 'eslint' ) ;
diagnositics . set ( "foo.js" , [
{
column : 0 ,
line : 0 ,
message : 'a error message.'
}
] ) ;
问题项
属性名
属性类型
描述
line
String
在文档第几行
column
String
在文档第几列
message
String
问题详细信息
severity
String
问题级别,取值范围:'error','warn'. 默认值是'error'
工作空间的一组编辑操作
参数名称
参数类型
描述
uri
String或Uri
文档地址
edits
Array<TextEdit >
编辑操作数组
返回类型
描述
Promise<void>
Promise
let workspaceEdit = new WorkspaceEdit ( ) ;
let edits = [ ] ;
edits . push ( new TextEdit ( {
start : 0 ,
end : 0
} , "foo" ) ) ;
workspaceEdit . set ( doc . uri , edits ) ;
hx . workspace . applyEdit ( workspaceEdit ) ;
文档编辑
属性名
属性类型
描述
range
Range
要修改的区域
newText
String
要插入的新内容
参数名称
参数类型
描述
range
Range
要修改的区域
newText
String
要插入的新内容
工作空间下的项目目录
属性名
属性类型
描述
uri
String或Uri
项目目录地址
name
String
项目目录名称
nature
String
项目类型
id
String
项目唯一id
输入框设置
属性名
属性类型
描述
prompt
String
输入框的描述
value
String
输入框的默认值
placeHolder
String
输入框内容为空时的占位内容
password
Boolean
是否是密码框
快速选择框设置
属性名
属性类型
描述
placeHolder
String
快速选择框上的搜索框为空时的占位文本
快速选择候选项
属性名
属性类型
描述
label
String
候选项名称
description
String
候选项描述
如果要传递额外的数据,可以追加自定义的属性,当用户选择该项后,会通过回调返回选择了哪个候选项
资源释放接口,HBuilderX开放的部分API返回了该对象,将该对象添加到插件激活时的参数context.subscriptions
数组内,插件卸载时将自动释放对应的资源。
无
无
统一资源访问符
属性名
属性类型
描述
fsPath
String
本地文件地址
authority
String
Uri中的authority
fragment
String
Uri中的fragment
path
String
Uri中的path
query
String
Uri中的query
scheme
String
Uri中的scheme