vscode插件快餐教程(10) - 設置

vscode插件快餐教程(10) - 設置

在插件中,根據用戶的環境和個性化的不同,需要增加一些配置項。

讀寫配置項

可以通過vscode.workspace.getConfiguration()方法來獲取所有的設置項。

let config: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration();

設置項可以分類,可以指定某一類前綴,來獲取這一類的所有屬性,例:

let config2: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration('launch');

獲取的配置對象將包括:launch.configurations:Array和launch.compounds等子項。

取得到全部或者分類之後,就可以根據名稱來通過get方法來讀取配置項的值了:

例,我們讀取一個tab等於多少個空格的選項:

	let editorConfig: vscode.WorkspaceConfiguration = vscode.workspace.getConfiguration('editor');
	let tabsize = editorConfig.get<number>('tabSize');

同樣,我們可以通過WorkspaceConfiguration的update方法來更新配置項,例:

	editorConfig.update('tabSize',4);

添加自己的配置項

在package.json中,contributes下通過configuration來添加設置項,例:

	"contributes": {
		"configuration": {
			"title": "BanmaOS CodeComplete Configuration",
			"properties": {
				"banmaos.enableCodeCompletion": {
					"type": "boolean",
					"default": false,
					"description": "Whether to enable AliOS code completion"
				},
				"banmaos.codeCompletionServer": {
					"type": "string",
					"default": "",
					"description": "Server list for code completion"
				}
			}
		}
	}

運行後打開settings,顯示出來是這個樣子的:
settings

指定缺省值

自己設置的配置項可能都設了默認值,但是如果是依賴別人的配置項,可能因爲環境不同就沒有這個項目。這時有三個解決方案:

  1. 假設存在,然後判斷undefined
  2. 先用has方法判斷下存不存在
  3. 指定一個默認值, get方法的第二個函數就是幹這個的:
let whatisthis = editorConfig.get<string>('notExisted',"Unknown value");

因爲這個項目就是沒定義,所以返回值爲Unknown value。

值的優先級

在目前的版本中,配置項的值有4種:默值值、全局值、工作區值、工作區目錄值。
除了默認值不能改之外,其他三個值的類型叫做ConfigurationTarget,分爲Global,Workspace和WorkspaceFolder三種。
前面講到的update方法的第三個參數就是ConfigurationTarget值。可以直接指定ConfigurationTarget,也可以給一個布爾值,true表示Global,false表示Workspace。如果爲空或者undefined,則優先選WorkspaceFolder,如果不適用則自動適配爲Workspace.

例:帶有ConfigurationTarget的更新:

	editorConfig.update('tabSize',4, vscode.ConfigurationTarget.Global);
	editorConfig.update('tabSize',4, true);

值這麼多有點亂哈,所以vscode爲我們提供了一個方法去檢查這個配置項的所有值,即inspect方法。我們看個例子:

console.log(editorConfig.inspect<string>('tabSize'));

輸出的對象類似這樣:

key:"editor.tabSize"
defaultValue:4
globalValue:4
workspaceValue:4
發佈了187 篇原創文章 · 獲贊 128 · 訪問量 34萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章