env、extensions 与状态存储
vscode.env
运行环境,只读信息居多。
| 成员 | 作用 |
|---|---|
appName | 应用名,例如 Visual Studio Code |
appRoot | 应用安装目录 |
language | 界面语言,例如 zh-cn |
machineId / sessionId | 机器和本次会话标识。不要当成用户账号 |
remoteName | 远程类型。本地窗口是 undefined |
uiKind | UIKind.Desktop 或 UIKind.Web |
shell | 默认终端 shell。有 onDidChangeShell |
uriScheme | vscode 或 vscode-insiders |
clipboard | 读写剪贴板 |
openExternal | 用系统打开 http、mailto 等 |
asExternalUri | 把 Uri 变成当前环境下可从外部打开的地址。端口转发时要用它 |
日志级别相关:logLevel、onDidChangeLogLevel。遥测:isTelemetryEnabled、onDidChangeTelemetryEnabled。
vscode.extensions
| 成员 | 作用 |
|---|---|
getExtension(id) | 按 publisher.name 取扩展。未安装则是 undefined |
all | 当前已知扩展 |
onDidChange | 安装、卸载、启用变化 |
Extension<T> 上有 id、extensionUri、extensionPath、isActive、packageJSON、exports。activate() 会保证对方已激活并返回它的导出。读取别的扩展的 exports 前要先激活,否则是 undefined。
extensionUri 比 extensionPath 更适合网页和远程。
ExtensionContext
activate 的参数。
| 成员 | 作用 |
|---|---|
subscriptions | 停用时统一释放 |
extensionUri / extensionPath | 扩展安装位置 |
globalState / workspaceState | Memento。全局跨工作区,工作区只在当前工作区 |
secrets | SecretStorage,存令牌。不要把令牌放进 globalState |
extensionMode | Production、Development、Test |
logUri / storageUri / globalStorageUri | 日志和存储目录。没有工作区时 storageUri 可能是 undefined |
environmentVariableCollection | 让之后新开的终端带上环境变量 |
Memento.get / update / keys。update 传 undefined 表示删掉该键。状态是给扩展自己的小数据,不是给用户看的设置。设置走 contributes.configuration。