VS Code API
VS Code API 是一組您可以在 Visual Studio Code 擴充功能中呼叫的 JavaScript API。本頁列出了所有提供給擴充功能開發者使用的 VS Code API。
API 命名空間與類別
此列表編譯自 VS Code 儲存庫中的 vscode.d.ts 檔案。
authentication (驗證)
活動
onDidChangeSessions: Event<AuthenticationSessionsChangeEvent>
當驗證提供者的驗證工作階段被新增、移除或變更時觸發的 事件 (Event)。
函式
getAccounts(providerId: string): Thenable<readonly AuthenticationSessionAccountInformation[]>
取得使用者針對指定提供者登入的所有帳戶。將此函式與 getSession 搭配使用,以取得特定帳戶的驗證工作階段。
目前,編輯器內建的擴充功能僅提供兩個驗證提供者,分別實現 GitHub 與 Microsoft 驗證:其 providerId 分別為 'github' 與 'microsoft'。
注意:取得帳戶並不代表您的擴充功能擁有存取該帳戶或其驗證工作階段的權限。您可以透過呼叫 getSession 來驗證對該帳戶的存取權。
| 參數 | 說明 |
|---|---|
| providerId: string | 要使用的提供者 ID |
| 回傳值 | 說明 |
| Thenable<readonly AuthenticationSessionAccountInformation[]> | 一個解析為驗證帳戶唯讀陣列的 Thenable。 |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
取得符合所需範圍或滿足 WWW-Authenticate 請求的驗證工作階段。若 providerId 對應的提供者未註冊,或使用者不同意與擴充功能共用驗證資訊,將會拒絕 (Reject)。若存在多個具有相同範圍的工作階段,將會向使用者顯示選單,讓其選擇要使用的帳戶。
內建的驗證提供者包括:
- 'github' - 針對 GitHub.com
- 'microsoft' - 針對個人與組織 Microsoft 帳戶
- (較少見) 'github-enterprise' - 針對替代的 GitHub 託管服務,如 GHE.com、GitHub Enterprise Server
- (較少見) 'microsoft-sovereign-cloud' - 針對替代的 Microsoft 雲端
| 參數 | 說明 |
|---|---|
| providerId: string | 要使用的提供者 ID |
| scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest | 請求的權限範圍列表或 WWW-Authenticate 請求。這些參數取決於驗證提供者。 |
| options: AuthenticationGetSessionOptions & {createIfNone: true | AuthenticationGetSessionPresentationOptions} | |
| 回傳值 | 說明 |
| Thenable<AuthenticationSession> | 解析為驗證工作階段的 Thenable |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions}): Thenable<AuthenticationSession>
取得符合所需範圍或請求的驗證工作階段。若 providerId 對應的提供者未註冊,或使用者不同意與擴充功能共用驗證資訊,將會拒絕 (Reject)。若存在多個具有相同範圍的工作階段,將會向使用者顯示選單,讓其選擇要使用的帳戶。
內建的驗證提供者包括:
- 'github' - 針對 GitHub.com
- 'microsoft' - 針對個人與組織 Microsoft 帳戶
- (較少見) 'github-enterprise' - 針對替代的 GitHub 託管服務,如 GHE.com、GitHub Enterprise Server
- (較少見) 'microsoft-sovereign-cloud' - 針對替代的 Microsoft 雲端
| 參數 | 說明 |
|---|---|
| providerId: string | 要使用的提供者 ID |
| scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest | 請求的權限範圍列表或 WWW-Authenticate 請求。這些參數取決於驗證提供者。 |
| options: AuthenticationGetSessionOptions & {forceNewSession: true | AuthenticationGetSessionPresentationOptions} | |
| 回傳值 | 說明 |
| Thenable<AuthenticationSession> | 解析為驗證工作階段的 Thenable |
getSession(providerId: string, scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest, options?: AuthenticationGetSessionOptions): Thenable<AuthenticationSession | undefined>
取得符合所需範圍或請求的驗證工作階段。若 providerId 對應的提供者未註冊,或使用者不同意與擴充功能共用驗證資訊,將會拒絕 (Reject)。若存在多個具有相同範圍的工作階段,將會向使用者顯示選單,讓其選擇要使用的帳戶。
內建的驗證提供者包括:
- 'github' - 針對 GitHub.com
- 'microsoft' - 針對個人與組織 Microsoft 帳戶
- (較少見) 'github-enterprise' - 針對替代的 GitHub 託管服務,如 GHE.com、GitHub Enterprise Server
- (較少見) 'microsoft-sovereign-cloud' - 針對替代的 Microsoft 雲端
| 參數 | 說明 |
|---|---|
| providerId: string | 要使用的提供者 ID |
| scopeListOrRequest: readonly string[] | AuthenticationWwwAuthenticateRequest | 請求的權限範圍列表或 WWW-Authenticate 請求。這些參數取決於驗證提供者。 |
| options?: AuthenticationGetSessionOptions | |
| 回傳值 | 說明 |
| Thenable<AuthenticationSession | undefined> | 一個 Thenable,解析為驗證工作階段;若使用無聲流程 (silent flow) 且未找到工作階段,則為 undefined。 |
registerAuthenticationProvider(id: string, label: string, provider: AuthenticationProvider, options?: AuthenticationProviderOptions): Disposable
註冊驗證提供者。
每個 ID 只能有一個提供者,若 ID 已被其他提供者使用,將會拋出錯誤。ID 區分大小寫。
| 參數 | 說明 |
|---|---|
| id: string | 提供者的唯一識別碼。 |
| label: string | 提供者的人類可讀名稱。 |
| provider: AuthenticationProvider | 驗證提供者物件。 |
| options?: AuthenticationProviderOptions | 提供者的額外選項。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
chat
用於聊天功能的命名空間。使用者透過在聊天視窗中傳送訊息與聊天參與者互動。聊天參與者可以透過 ChatResponseStream 回應 Markdown 或其他類型的內容。
函式
createChatParticipant(id: string, handler: ChatRequestHandler): ChatParticipant
建立新的 聊天參與者 實例。
| 參數 | 說明 |
|---|---|
| id: string | 參與者的唯一識別碼。 |
| handler: ChatRequestHandler | 參與者的請求處理常式。 |
| 回傳值 | 說明 |
| ChatParticipant | 新的聊天參與者 |
命令 (commands)
用於處理指令的命名空間。簡而言之,指令就是具有唯一識別碼的函式。該函式有時也稱為「指令處理常式 (command handler)」。
可以使用 registerCommand 和 registerTextEditorCommand 函式將指令加入編輯器。指令可以 手動 執行,或透過 UI 手勢執行。這些方式包括:
- palette - 使用
package.json中的commands區段,使指令顯示在 指令面板 (command palette) 中。 - keybinding - 使用
package.json中的keybindings區段,為您的擴充功能啟用 快速鍵。
擴充功能可以存取來自其他擴充功能和編輯器本身的指令。然而,在呼叫編輯器指令時,並非所有參數類型都受到支援。
這是一個註冊指令處理常式並將該指令條目加入面板的範例。首先,使用識別碼 extension.sayHello 註冊指令處理常式。
commands.registerCommand('extension.sayHello', () => {
window.showInformationMessage('Hello World!');
});
其次,在 package.json 中將指令識別碼繫結至標題,以便它顯示在面板中。
{
"contributes": {
"commands": [
{
"command": "extension.sayHello",
"title": "Hello World"
}
]
}
}
函式
executeCommand<T>(command: string, ...rest: any[]): Thenable<T>
執行由給定指令識別碼所表示的指令。
| 參數 | 說明 |
|---|---|
| command: string | 要執行指令的識別碼。 |
| ...rest: any[] | 傳遞給指令函式的參數。 |
| 回傳值 | 說明 |
| Thenable<T> | 一個 Thenable,解析為給定指令的回傳值。若指令處理函式未回傳任何值,則回傳 |
getCommands(filterInternal?: boolean): Thenable<string[]>
檢索所有可用指令的清單。以底線開頭的指令被視為內部指令。
| 參數 | 說明 |
|---|---|
| filterInternal?: boolean | 設為 |
| 回傳值 | 說明 |
| Thenable<string[]> | 解析為指令識別碼清單的 Thenable。 |
registerCommand(command: string, callback: (args: any[]) => any, thisArg?: any): Disposable
註冊一個可透過鍵盤快速鍵、選單項目、動作或直接呼叫的指令。
兩次註冊相同的指令識別碼將會導致錯誤。
| 參數 | 說明 |
|---|---|
| command: string | 指令的唯一識別碼。 |
| callback: (args: any[]) => any | 指令處理函式。 |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| Disposable | Disposable,在處置時註銷此指令。 |
registerTextEditorCommand(command: string, callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void, thisArg?: any): Disposable
註冊一個可透過鍵盤快速鍵、選單項目、動作或直接呼叫的文字編輯器指令。
文字編輯器指令與普通 指令 不同,它們僅在呼叫指令時有活動編輯器時才會執行。此外,編輯器指令的處理常式可以存取活動編輯器及一個 編輯建構器 (edit-builder)。注意,編輯建構器僅在回呼函式執行期間有效。
| 參數 | 說明 |
|---|---|
| command: string | 指令的唯一識別碼。 |
| callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void | |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| Disposable | Disposable,在處置時註銷此指令。 |
comments
函式
createCommentController(id: string, label: string): CommentController
建立一個新的 註解控制器 實例。
| 參數 | 說明 |
|---|---|
| id: string | 註解控制器的 |
| label: string | 註解控制器的人類可讀字串。 |
| 回傳值 | 說明 |
| CommentController | 註解控制器 的實例。 |
debug
用於除錯功能的命名空間。
變數
activeDebugConsole: DebugConsole
目前活動的 除錯主控台 (debug console)。若沒有活動的除錯工作階段,傳送到除錯主控台的輸出將不會顯示。
activeDebugSession: DebugSession | undefined
目前活動的 除錯工作階段 (debug session) 或 undefined。活動除錯工作階段是由除錯動作浮動視窗所代表的,或者是目前在除錯動作浮動視窗的下拉式選單中顯示的那一個。若無活動工作階段,則值為 undefined。
activeStackItem: DebugThread | DebugStackFrame | undefined
目前聚焦的執行緒或堆疊框架;若無聚焦的執行緒或堆疊,則為 undefined。只要有活動的除錯工作階段,執行緒即可隨時被聚焦;而堆疊框架僅在工作階段暫停且已擷取呼叫堆疊時才能被聚焦。
breakpoints: readonly Breakpoint[]
中斷點清單。
活動
onDidChangeActiveDebugSession: Event<DebugSession | undefined>
onDidChangeActiveStackItem: Event<DebugThread | DebugStackFrame | undefined>
當 debug.activeStackItem 變更時觸發的事件。
onDidChangeBreakpoints: Event<BreakpointsChangeEvent>
當一組中斷點被新增、移除或變更時發出的 事件。
onDidReceiveDebugSessionCustomEvent: Event<DebugSessionCustomEvent>
onDidStartDebugSession: Event<DebugSession>
onDidTerminateDebugSession: Event<DebugSession>
函式
addBreakpoints(breakpoints: readonly Breakpoint[]): void
新增中斷點。
| 參數 | 說明 |
|---|---|
| breakpoints: readonly Breakpoint[] | 要新增的中斷點。 |
| 回傳值 | 說明 |
| void |
asDebugSourceUri(source: DebugProtocolSource, session?: DebugSession): Uri
將透過除錯轉接器協定 (Debug Adapter Protocol) 接收的「Source」描述符物件轉換為可用於載入其內容的 Uri。若來源描述符基於路徑,則回傳檔案 Uri。若來源描述符使用參考編號,則會建構一個特定的除錯 Uri(scheme 為 'debug'),這需要對應的 ContentProvider 和正在執行的除錯工作階段。
若「Source」描述符沒有足夠的資訊來建立 Uri,將會拋出錯誤。
| 參數 | 說明 |
|---|---|
| source: DebugProtocolSource | 符合除錯轉接器協定中所定義 Source 類型的物件。 |
| session?: DebugSession | 一個選用的除錯工作階段,當來源描述符使用參考編號從活動除錯工作階段載入內容時將會使用它。 |
| 回傳值 | 說明 |
| Uri | 可用於載入來源內容的 Uri。 |
registerDebugAdapterDescriptorFactory(debugType: string, factory: DebugAdapterDescriptorFactory): Disposable
為特定的除錯類型註冊 除錯轉接器描述符工廠。擴充功能僅允許為該擴充功能所定義的除錯類型註冊 DebugAdapterDescriptorFactory,否則會拋出錯誤。為同一種除錯類型註冊多個 DebugAdapterDescriptorFactory 會導致錯誤。
| 參數 | 說明 |
|---|---|
| debugType: string | 工廠所註冊的除錯類型。 |
| factory: DebugAdapterDescriptorFactory | 要註冊的 除錯轉接器描述符工廠。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此工廠。 |
registerDebugAdapterTrackerFactory(debugType: string, factory: DebugAdapterTrackerFactory): Disposable
為給定的除錯類型註冊除錯轉接器追蹤工廠。
| 參數 | 說明 |
|---|---|
| debugType: string | 為其註冊工廠的除錯類型,或使用 '*' 來匹配所有除錯類型。 |
| factory: DebugAdapterTrackerFactory | 要註冊的 除錯轉接器追蹤工廠。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此工廠。 |
registerDebugConfigurationProvider(debugType: string, provider: DebugConfigurationProvider, triggerKind?: DebugConfigurationProviderTriggerKind): Disposable
為特定的除錯類型註冊 除錯組態提供者。選用的 triggerKind 可用於指定何時觸發提供者的 provideDebugConfigurations 方法。目前有兩種觸發類型:值為 Initial(或未提供 triggerKind 參數時),provideDebugConfigurations 方法用於提供要複製到新建立的 launch.json 中的初始除錯組態。使用 Dynamic 觸發類型時,provideDebugConfigurations 方法用於動態決定要呈現給使用者的除錯組態(除了來自 launch.json 的靜態組態外)。請注意,triggerKind 參數僅適用於 provideDebugConfigurations 方法:因此 resolveDebugConfiguration 方法完全不受影響。為不同的觸發類型註冊單一提供者(帶有解析方法),會導致相同的解析方法被呼叫多次。同一類型可以註冊多個提供者。
| 參數 | 說明 |
|---|---|
| debugType: string | 為其註冊提供者的除錯類型。 |
| provider: DebugConfigurationProvider | 要註冊的 除錯組態提供者。 |
| triggerKind?: DebugConfigurationProviderTriggerKind | 註冊該提供者 'provideDebugConfiguration' 方法的 觸發器。若缺少 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
removeBreakpoints(breakpoints: readonly Breakpoint[]): void
移除中斷點。
| 參數 | 說明 |
|---|---|
| breakpoints: readonly Breakpoint[] | 要移除的中斷點。 |
| 回傳值 | 說明 |
| void |
startDebugging(folder: WorkspaceFolder, nameOrConfiguration: string | DebugConfiguration, parentSessionOrOptions?: DebugSession | DebugSessionOptions): Thenable<boolean>
透過使用命名的啟動組態或複合組態,或直接傳遞 DebugConfiguration 來啟動除錯。命名的組態會從給定資料夾中的 '.vscode/launch.json' 進行查詢。在啟動除錯之前,所有未儲存的檔案都會被儲存,且啟動組態會更新為最新狀態。組態中使用的資料夾特定變數(例如 '${workspaceFolder}')會針對給定的資料夾進行解析。
| 參數 | 說明 |
|---|---|
| folder: WorkspaceFolder | 用於查詢命名組態和解析變數的 工作區資料夾;若是無資料夾設定,則為 |
| nameOrConfiguration: string | DebugConfiguration | 除錯組態名稱、複合組態名稱,或是 DebugConfiguration 物件。 |
| parentSessionOrOptions?: DebugSession | DebugSessionOptions | 除錯工作階段選項。當傳遞父級 除錯工作階段 時,假設選項僅包含此父工作階段。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 一個當除錯成功啟動時解析的 Thenable。 |
stopDebugging(session?: DebugSession): Thenable<void>
停止指定的除錯工作階段,若省略則停止所有除錯工作階段。
| 參數 | 說明 |
|---|---|
| session?: DebugSession | 要停止的 除錯工作階段;若省略,則所有工作階段都會停止。 |
| 回傳值 | 說明 |
| Thenable<void> | 當工作階段停止時解析的 Thenable。 |
環境變數
描述編輯器執行環境的命名空間。
變數
應用程式的託管位置。在桌機版上為 'desktop',在 Web 上則是指定的嵌入器,即 'github.dev'、'codespaces';若嵌入器未提供該資訊,則為 'web'。
編輯器的應用程式名稱,例如 'VS Code'。
執行編輯器的應用程式根目錄。
註:在沒有應用程式根目錄概念的環境中執行時,該值為空字串。
clipboard: Clipboard
系統剪貼簿。
指出這是否為應用程式的新安裝。若在安裝後的第一天內則為 true,否則為 false。
指出使用者是否啟用了遙測功能。可用於觀察擴充功能是否應該傳送遙測資料。
代表使用者偏好的語言,如 de-CH、fr 或 en-US。
logLevel: LogLevel
編輯器目前的紀錄等級。
電腦的唯一識別碼。
remoteName: string | undefined
遠端名稱。由擴充功能定義,常見範例有用於 Windows Linux 子系統的 wsl,或用於使用 Secure Shell 之遠端的 ssh-remote。
註:當沒有遠端擴充功能主機時,該值為 undefined;若存在遠端擴充功能主機,則該值在所有擴充功能主機(本機與遠端)中均有定義。請使用 Extension.extensionKind 來確認特定擴充功能是否在遠端執行。
目前工作階段的唯一識別碼。每次啟動編輯器時都會變更。
擴充功能主機偵測到的預設 Shell,此值會被 terminal.integrated.defaultProfile 設定(針對擴充功能主機的平台)所覆蓋。注意:在不支援 Shell 的環境中,該值為空字串。
uiKind: UIKind
UI 類型屬性指示擴充功能從哪個 UI 存取。例如,擴充功能可以從桌面應用程式或網頁瀏覽器存取。
編輯器在作業系統中註冊的自訂 URI 配置 (scheme)。
活動
onDidChangeLogLevel: Event<LogLevel>
當編輯器的紀錄等級變更時觸發的 事件。
onDidChangeShell: Event<string>
當預設 Shell 變更時觸發的 事件。此事件會伴隨新的 Shell 路徑觸發。
onDidChangeTelemetryEnabled: Event<boolean>
當使用者啟用或停用遙測功能時觸發的 事件。若使用者啟用遙測則為 true,若停用則為 false。
函式
asExternalUri(target: Uri): Thenable<Uri>
將 URI 解析為外部可存取的形式。
http: 或 https: 配置
將從擴充功能執行位置解析到的「外部」URI(如 http: 或 https: 連結)轉換為用戶端機器上相同資源的 URI。
若擴充功能是在用戶端機器上執行,此函式則不會進行任何處理。
若擴充功能是在遠端執行,此函式會自動建立從本機到遠端 target 的連接埠轉發通道,並回傳該通道的本機 URI。連接埠轉發通道的生命週期由編輯器管理,且使用者可以手動關閉該通道。
註:透過 openExternal 傳遞的 URI 會自動解析,您不應對其呼叫 asExternalUri。
vscode.env.uriScheme
建立一個 URI —— 若在瀏覽器中開啟(例如透過 openExternal),將會觸發註冊的 UriHandler。
擴充功能不應對產生的 URI 做任何假設,也不應以任何方式修改它。相反地,擴充功能可以在驗證流程中使用此 URI,例如將 URI 作為回呼查詢參數加到伺服器中以進行驗證。
註:若伺服器決定將額外的查詢參數加入 URI(例如 Token 或 Secret),這些參數將出現在傳遞給 UriHandler 的 URI 中。
驗證流程的範例
vscode.window.registerUriHandler({
handleUri(uri: vscode.Uri): vscode.ProviderResult<void> {
if (uri.path === '/did-authenticate') {
console.log(uri.toString());
}
}
});
const callableUri = await vscode.env.asExternalUri(
vscode.Uri.parse(vscode.env.uriScheme + '://my.extension/did-authenticate')
);
await vscode.env.openExternal(callableUri);
註:擴充功能不應快取 asExternalUri 的結果,因為已解析的 URI 可能會因系統或使用者動作而失效 —— 例如,在遠端情況下,使用者可能會關閉由 asExternalUri 開啟的連接埠轉發通道。
任何其他配置
任何其他配置將會被視為工作區 URI 處理。在此情況下,該方法將回傳一個 URI,處理後將會使編輯器開啟該工作區。
createTelemetryLogger(sender: TelemetrySender, options?: TelemetryLoggerOptions): TelemetryLogger
建立新的 遙測紀錄器 (telemetry logger)。
| 參數 | 說明 |
|---|---|
| sender: TelemetrySender | 遙測紀錄器使用的遙測發送者。 |
| options?: TelemetryLoggerOptions | 遙測紀錄器的選項。 |
| 回傳值 | 說明 |
| TelemetryLogger | 新的遙測紀錄器 |
openExternal(target: Uri): Thenable<boolean>
使用預設應用程式在外部開啟連結。根據所使用的配置,這可能是:
- 瀏覽器 (
http:,https:) - 郵件用戶端 (
mailto:) - VS Code 本身 (來自
vscode.env.uriScheme的vscode:)
註:showTextDocument 是在編輯器內開啟文字文件的正確方式,而非此函式。
| 參數 | 說明 |
|---|---|
| target: Uri | 應開啟的 URI。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 表示開啟是否成功的 Promise。 |
extensions
用於處理已安裝擴充功能的命名空間。擴充功能由 Extension 介面表示,該介面可對其進行反射。
擴充功能作者可以透過從 activate 呼叫中回傳其 API 公開介面,向其他擴充功能提供 API。
export function activate(context: vscode.ExtensionContext) {
let api = {
sum(a, b) {
return a + b;
},
mul(a, b) {
return a * b;
}
};
// 'export' public api-surface
return api;
}
當依賴其他擴充功能的 API 時,請在 package.json 中加入 extensionDependencies 項目,並使用 getExtension 函式和 exports 屬性,如下所示:
let mathExt = extensions.getExtension('genius.math');
let importedApi = mathExt.exports;
console.log(importedApi.mul(42, 1));
變數
all: readonly Extension<any>[]
系統目前已知的所有擴充功能。
活動
onDidChange: Event<void>
當 extensions.all 變更時觸發的事件。這可能發生在擴充功能被安裝、解除安裝、啟用或停用時。
函式
getExtension<T>(extensionId: string): Extension<T> | undefined
透過其完整識別碼(格式為:publisher.name)取得擴充功能。
| 參數 | 說明 |
|---|---|
| extensionId: string | 擴充功能識別碼。 |
| 回傳值 | 說明 |
| Extension<T> | undefined | 擴充功能或 |
l10n
用於擴充功能 API 中在地化 (localization) 相關功能的命名空間。若要正確使用此功能,您必須在擴充功能資訊清單 (manifest) 中定義 l10n,並包含 bundle.l10n。
注意:內建擴充功能(例如 Git、TypeScript Language Features、GitHub Authentication)不受 l10n 屬性要求的限制。換句話說,它們不需要在擴充功能資訊清單中指定 l10n,因為它們的翻譯字串來自語言套件。
變數
已為該擴充功能載入的在地化字串套件。若未載入套件,則為 undefined。如果找不到套件或我們正在使用預設語言執行,通常不會載入套件。
uri: Uri | undefined
已為該擴充功能載入的在地化套件 URI。若未載入套件,則為 undefined。如果找不到套件或我們正在使用預設語言執行,通常不會載入套件。
函式
t(message: string, ...args: Array<string | number | boolean>): string
標記要在地化的字串。如果 env.language 指定的語言有可用的在地化套件,且該套件中有此訊息的在地化值,則會回傳該在地化值(並針對任何範本值注入 args 值)。
範例
l10n.t('Hello {0}!', 'World');
| 參數 | 說明 |
|---|---|
| message: string | 要在地化的訊息。支援索引範本,其中像 |
| ...args: Array<string | number | boolean> | 在地化字串中要使用的引數。引數的索引用於匹配在地化字串中的範本預留位置。 |
| 回傳值 | 說明 |
| string | 包含已注入引數的在地化字串。 |
t(message: string, args: Record<string, string | number | boolean>): string
標記要在地化的字串。如果 env.language 指定的語言有可用的在地化套件,且該套件中有此訊息的在地化值,則會回傳該在地化值(並針對任何範本值注入 args 值)。
範例
l10n.t('Hello {name}', { name: 'Erich' });
| 參數 | 說明 |
|---|---|
| message: string | 要在地化的訊息。支援命名範本,其中像 |
| args: Record<string, string | number | boolean> | 在地化字串中要使用的引數。Record 中的鍵名用於匹配在地化字串中的範本預留位置。 |
| 回傳值 | 說明 |
| string | 包含已注入引數的在地化字串。 |
t(options: {args: Array<string | number | boolean> | Record<string, string | number | boolean>, comment: string | string[], message: string}): string
標記要在地化的字串。如果 env.language 指定的語言有可用的在地化套件,且該套件中有此訊息的在地化值,則會回傳該在地化值(並針對任何範本值注入 args 值)。
| 參數 | 說明 |
|---|---|
| options: {args: Array<string | number | boolean> | Record<string, string | number | boolean>, comment: string | string[], message: string} | 在地化訊息時使用的選項。 |
| 回傳值 | 說明 |
| string | 包含已注入引數的在地化字串。 |
語言 (languages)
用於參與特定語言編輯器 功能 的命名空間,如 IntelliSense、程式碼動作、診斷等。
程式語言種類繁多,語法、語義和典範也各不相同。儘管如此,自動單字完成、程式碼導覽或程式碼檢查等功能在不同語言的各種工具中已變得非常熱門。
編輯器提供了一個 API,透過已到位的所有 UI 和動作,僅需您提供資料即可輕鬆實現這些常見功能。例如,要貢獻懸停提示,您只需要提供一個函式,該函式在被呼叫時接收一個 TextDocument 和一個 Position 並回傳懸停資訊即可。其餘的工作(如追蹤滑鼠、定位懸停提示、保持懸停提示穩定等)均由編輯器處理。
languages.registerHoverProvider('javascript', {
provideHover(document, position, token) {
return new Hover('I am a hover!');
}
});
註冊是使用 文件選擇器 (document selector) 完成的,該選擇器可以是語言 ID(如 javascript),也可以是更複雜的 過濾器 (filter)(如 { language: 'typescript', scheme: 'file' })。將文件與此類選擇器進行比對將產生一個 評分 (score),用於決定是否以及如何使用提供者。當評分相同時,最後註冊的提供者勝出。對於允許完整 arity 的功能(如 懸停提示),評分只需 >0;對於其他功能(如 IntelliSense),評分則用於決定詢問提供者參與的順序。
活動
onDidChangeDiagnostics: Event<DiagnosticChangeEvent>
當全域診斷集變更時觸發的 事件。這包括新增和移除的診斷。
函式
createDiagnosticCollection(name?: string): DiagnosticCollection
建立診斷集合。
| 參數 | 說明 |
|---|---|
| name?: string | 集合的 名稱。 |
| 回傳值 | 說明 |
| DiagnosticCollection | 新的診斷集合。 |
createLanguageStatusItem(id: string, selector: DocumentSelector): LanguageStatusItem
建立新的 語言狀態項目。
| 參數 | 說明 |
|---|---|
| id: string | 項目的識別碼。 |
| selector: DocumentSelector | 定義該項目顯示於哪些編輯器的文件選擇器。 |
| 回傳值 | 說明 |
| LanguageStatusItem | 新的語言狀態項目。 |
getDiagnostics(resource: Uri): Diagnostic[]
取得給定資源的所有診斷資訊。
| 參數 | 說明 |
|---|---|
| resource: Uri | 資源。 |
| 回傳值 | 說明 |
| Diagnostic[] | 診斷物件陣列或空陣列。 |
getDiagnostics(): Array<[Uri, Diagnostic[]]>
取得所有診斷資訊。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Array<[Uri, Diagnostic[]]> | Uri 與診斷物件的 Tuple 陣列或空陣列。 |
getLanguages(): Thenable<string[]>
回傳所有已知語言的識別碼。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<string[]> | 解析為識別碼字串陣列的 Promise。 |
match(selector: DocumentSelector, document: TextDocument): number
計算文件 選擇器 與文件之間的匹配程度。大於 0 的值表示選擇器與文件匹配。
匹配程度根據以下規則計算:
- 當 DocumentSelector 為陣列時,計算其中包含的每個
DocumentFilter或語言識別碼的匹配程度,並取最大值。 - 字串將被解構並轉為 DocumentFilter 的
language部分,因此"fooLang"等同於{ language: "fooLang" }。 - DocumentFilter 將透過比較其部件與文件來與文件匹配。適用以下規則:
- 當
DocumentFilter為空 ({}) 時,結果為0。 - 當
scheme、language、pattern或notebook已定義但其中之一不匹配時,結果為0。 - 與
*匹配得分為5,透過相等性或 Glob 模式匹配得分為10。 - 結果為每次匹配的最大值。
- 當
範例
// default document from disk (file-scheme)
doc.uri; //'file:///my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript' }, doc); // 10;
match({ language: 'javascript', scheme: 'file' }, doc); // 10;
match('*', doc); // 5
match('fooLang', doc); // 0
match(['fooLang', '*'], doc); // 5
// virtual document, e.g. from git-index
doc.uri; // 'git:/my/file.js'
doc.languageId; // 'javascript'
match('javascript', doc); // 10;
match({ language: 'javascript', scheme: 'git' }, doc); // 10;
match('*', doc); // 5
// notebook cell document
doc.uri; // `vscode-notebook-cell:///my/notebook.ipynb#gl65s2pmha`;
doc.languageId; // 'python'
match({ notebookType: 'jupyter-notebook' }, doc); // 10
match({ notebookType: 'fooNotebook', language: 'python' }, doc); // 0
match({ language: 'python' }, doc); // 10
match({ notebookType: '*' }, doc); // 5
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 文件選擇器。 |
| document: TextDocument | 文字文件。 |
| 回傳值 | 說明 |
| number | 當選擇器匹配時為 |
registerCallHierarchyProvider(selector: DocumentSelector, provider: CallHierarchyProvider): Disposable
註冊呼叫階層提供者。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: CallHierarchyProvider | 呼叫階層提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerCodeActionsProvider(selector: DocumentSelector, provider: CodeActionProvider<CodeAction>, metadata?: CodeActionProviderMetadata): Disposable
註冊程式碼動作提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: CodeActionProvider<CodeAction> | 程式碼動作提供者。 |
| metadata?: CodeActionProviderMetadata | 關於提供者所提供之程式碼動作類型的元資料。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerCodeLensProvider(selector: DocumentSelector, provider: CodeLensProvider<CodeLens>): Disposable
註冊 Code Lens 提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: CodeLensProvider<CodeLens> | Code Lens 提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerColorProvider(selector: DocumentSelector, provider: DocumentColorProvider): Disposable
註冊色彩提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentColorProvider | 色彩提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerCompletionItemProvider(selector: DocumentSelector, provider: CompletionItemProvider<CompletionItem>, ...triggerCharacters: string[]): Disposable
註冊自動完成提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並循序詢問評分相同的組別以取得完成項目。當群組中的一個或多個提供者回傳結果時,程序即停止。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
自動完成項目提供者可以關聯一組 triggerCharacters。當輸入觸發字元時,會請求自動完成,但僅從註冊該觸發字元的提供者請求。因此,觸發字元應與 單字字元 不同,常見的觸發字元是 . 以觸發成員自動完成。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: CompletionItemProvider<CompletionItem> | 自動完成提供者。 |
| ...triggerCharacters: string[] | 當使用者輸入其中一個字元時觸發自動完成。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDeclarationProvider(selector: DocumentSelector, provider: DeclarationProvider): Disposable
註冊宣告提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DeclarationProvider | 宣告提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDefinitionProvider(selector: DocumentSelector, provider: DefinitionProvider): Disposable
註冊定義提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DefinitionProvider | 定義提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentDropEditProvider(selector: DocumentSelector, provider: DocumentDropEditProvider<DocumentDropEdit>, metadata?: DocumentDropEditProviderMetadata): Disposable
註冊新的 DocumentDropEditProvider。
可以為一種語言註冊多個放置 (drop) 提供者。將內容拖放至編輯器時,所有已註冊的該語言提供者會根據其 DocumentDropEditProviderMetadata 中指定的 MIME 類型進行呼叫。
每個提供者可以回傳一個或多個 DocumentDropEdits。編輯結果會使用 DocumentDropEdit.yieldTo 屬性進行排序。預設會套用第一個編輯。若有任何額外的編輯,將會作為可選的放置選項顯示給使用者。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentDropEditProvider<DocumentDropEdit> | 放置提供者。 |
| metadata?: DocumentDropEditProviderMetadata | 關於提供者的額外元資料。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時註銷此提供者。 |
registerDocumentFormattingEditProvider(selector: DocumentSelector, provider: DocumentFormattingEditProvider): Disposable
註冊文件格式化提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並使用最匹配的提供者。選定的提供者失敗會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentFormattingEditProvider | 文件格式化編輯提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentHighlightProvider(selector: DocumentSelector, provider: DocumentHighlightProvider): Disposable
註冊文件標示 (highlight) 提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並循序詢問群組以取得文件標示。當提供者回傳 non-falsy 或 non-failure 結果時,程序即停止。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentHighlightProvider | 文件標示提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentLinkProvider(selector: DocumentSelector, provider: DocumentLinkProvider<DocumentLink>): Disposable
註冊文件連結提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentLinkProvider<DocumentLink> | 文件連結提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentPasteEditProvider(selector: DocumentSelector, provider: DocumentPasteEditProvider<DocumentPasteEdit>, metadata: DocumentPasteProviderMetadata): Disposable
註冊新的 DocumentPasteEditProvider。
可以為一種語言註冊多個提供者。所有已註冊的該語言提供者會根據 DocumentPasteProviderMetadata 中指定的處理 MIME 類型,針對複製與貼上操作進行呼叫。
針對 複製操作,每個提供者對 DataTransfer 所做的變更會合併為單一 DataTransfer,用於填入剪貼簿。
針對 貼上操作,會呼叫每個提供者,它們可以回傳一個或多個 DocumentPasteEdits。編輯結果會使用 DocumentPasteEdit.yieldTo 屬性進行排序。預設會套用第一個編輯,其餘編輯則會作為可選的貼上選項顯示於貼上小工具中。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentPasteEditProvider<DocumentPasteEdit> | 貼上編輯提供者。 |
| metadata: DocumentPasteProviderMetadata | 關於提供者的額外元資料。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時註銷此提供者。 |
registerDocumentRangeFormattingEditProvider(selector: DocumentSelector, provider: DocumentRangeFormattingEditProvider): Disposable
註冊文件範圍格式化提供者。
註:文件範圍提供者同時也是 文件格式化器,這意味著當註冊範圍提供者時,無需再 註冊 文件格式化器。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並使用最匹配的提供者。選定的提供者失敗會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentRangeFormattingEditProvider | 文件範圍格式化編輯提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentRangeSemanticTokensProvider(selector: DocumentSelector, provider: DocumentRangeSemanticTokensProvider, legend: SemanticTokensLegend): Disposable
註冊文件範圍語義 Token 提供者。
註:若文件同時擁有 DocumentSemanticTokensProvider 和 DocumentRangeSemanticTokensProvider,範圍提供者僅會在初始階段呼叫,直到完整文件提供者解析完第一個請求為止。一旦完整文件提供者解析了第一個請求,透過範圍提供者提供的語義 Token 將會被捨棄,此後將僅使用文件提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並使用最匹配的提供者。選定的提供者失敗會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentRangeSemanticTokensProvider | 文件範圍語義 Token 提供者。 |
| legend: SemanticTokensLegend | |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentSemanticTokensProvider(selector: DocumentSelector, provider: DocumentSemanticTokensProvider, legend: SemanticTokensLegend): Disposable
為整個文件註冊語意標記提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並使用最匹配的提供者。選定的提供者失敗會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentSemanticTokensProvider | 文件語意標記提供者。 |
| legend: SemanticTokensLegend | |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerDocumentSymbolProvider(selector: DocumentSelector, provider: DocumentSymbolProvider, metaData?: DocumentSymbolProviderMetadata): Disposable
註冊文件符號提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: DocumentSymbolProvider | 文件符號提供者。 |
| metaData?: DocumentSymbolProviderMetadata | 關於提供者的中繼資料 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerEvaluatableExpressionProvider(selector: DocumentSelector, provider: EvaluatableExpressionProvider): Disposable
註冊一個在文字文件中定位可評估表達式的提供者。編輯器將在活躍的除錯階段中評估該表達式,並在除錯懸停視窗中顯示結果。
如果為某種語言註冊了多個提供者,則會使用任意一個提供者。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: EvaluatableExpressionProvider | 可評估表達式提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerFoldingRangeProvider(selector: DocumentSelector, provider: FoldingRangeProvider): Disposable
註冊折疊範圍提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問這些提供者,並將結果合併。如果多個折疊範圍在相同位置開始,則僅使用第一個註冊的提供者的範圍。如果折疊範圍與另一個位置更小的範圍重疊,它也會被忽略。
失敗的提供者(被拒絕的 Promise 或例外狀況)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: FoldingRangeProvider | 折疊範圍提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerHoverProvider(selector: DocumentSelector, provider: HoverProvider): Disposable
註冊懸停(Hover)提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: HoverProvider | 懸停提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerImplementationProvider(selector: DocumentSelector, provider: ImplementationProvider): Disposable
註冊實作(Implementation)提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: ImplementationProvider | 實作提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerInlayHintsProvider(selector: DocumentSelector, provider: InlayHintsProvider<InlayHint>): Disposable
註冊內嵌提示(Inlay Hints)提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: InlayHintsProvider<InlayHint> | 內嵌提示提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerInlineCompletionItemProvider(selector: DocumentSelector, provider: InlineCompletionItemProvider): Disposable
註冊行內補全提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: InlineCompletionItemProvider | 行內補全提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerInlineValuesProvider(selector: DocumentSelector, provider: InlineValuesProvider): Disposable
註冊一個為偵錯器的「行內值(inline value)」功能回傳資料的提供者。每當通用偵錯器在原始檔案中暫停時,就會呼叫為該檔案語言註冊的提供者,以回傳將顯示在編輯器行尾的文字資料。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: InlineValuesProvider | 行內值提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerLinkedEditingRangeProvider(selector: DocumentSelector, provider: LinkedEditingRangeProvider): Disposable
註冊關聯編輯範圍提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並使用具有結果且最相符的提供者。所選提供者失敗將導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: LinkedEditingRangeProvider | 關聯編輯範圍提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerOnTypeFormattingEditProvider(selector: DocumentSelector, provider: OnTypeFormattingEditProvider, firstTriggerCharacter: string, ...moreTriggerCharacter: string[]): Disposable
註冊一個在輸入時進行格式化的提供者。當使用者啟用設定 editor.formatOnType 時,該提供者將處於活動狀態。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 進行排序,並使用最匹配的提供者。選定的提供者失敗會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: OnTypeFormattingEditProvider | 輸入時格式化編輯提供者。 |
| firstTriggerCharacter: string | 應觸發格式化的字元,例如 |
| ...moreTriggerCharacter: string[] | 更多觸發字元。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerReferenceProvider(selector: DocumentSelector, provider: ReferenceProvider): Disposable
註冊參照提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: ReferenceProvider | 參照提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerRenameProvider(selector: DocumentSelector, provider: RenameProvider): Disposable
註冊重新命名(Rename)提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 排序並依序詢問。第一個產生結果的提供者將決定整個操作的結果。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: RenameProvider | 重新命名提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerSelectionRangeProvider(selector: DocumentSelector, provider: SelectionRangeProvider): Disposable
註冊選擇範圍提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: SelectionRangeProvider | 選擇範圍提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, ...triggerCharacters: string[]): Disposable
註冊簽章說明(Signature Help)提供者。
可以為一種語言註冊多個提供者。在此情況下,提供者會根據其 評分 排序,並依序呼叫直到某個提供者回傳有效結果為止。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: SignatureHelpProvider | 簽章說明提供者。 |
| ...triggerCharacters: string[] | 當使用者輸入其中一個字元(例如 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerSignatureHelpProvider(selector: DocumentSelector, provider: SignatureHelpProvider, metadata: SignatureHelpProviderMetadata): Disposable
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: SignatureHelpProvider | 簽章說明提供者。 |
| metadata: SignatureHelpProviderMetadata | 關於提供者的資訊。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerTypeDefinitionProvider(selector: DocumentSelector, provider: TypeDefinitionProvider): Disposable
註冊型別定義提供者。
可以為一種語言註冊多個提供者。在此情況下,將會平行詢問提供者並合併結果。失敗的提供者(被拒絕的 promise 或例外)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: TypeDefinitionProvider | 型別定義提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerTypeHierarchyProvider(selector: DocumentSelector, provider: TypeHierarchyProvider): Disposable
註冊型別階層提供者。
| 參數 | 說明 |
|---|---|
| selector: DocumentSelector | 定義此提供者適用於哪些文件的選擇器。 |
| provider: TypeHierarchyProvider | 型別階層提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerWorkspaceSymbolProvider(provider: WorkspaceSymbolProvider<SymbolInformation>): Disposable
註冊工作區符號提供者。
可以註冊多個提供者。在此情況下,會平行詢問這些提供者,並合併結果。失敗的提供者(被拒絕的 Promise 或例外狀況)不會導致整個操作失敗。
| 參數 | 說明 |
|---|---|
| provider: WorkspaceSymbolProvider<SymbolInformation> | 工作區符號提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
setLanguageConfiguration(language: string, configuration: LanguageConfiguration): Disposable
為某種語言設定 語言組態。
| 參數 | 說明 |
|---|---|
| language: string | 語言識別碼,例如 |
| configuration: LanguageConfiguration | 語言組態。 |
| 回傳值 | 說明 |
| Disposable | 用於取消設定此組態的 Disposable。 |
setTextDocumentLanguage(document: TextDocument, languageId: string): Thenable<TextDocument>
設定(並變更)與給定文件相關聯的 語言。
請注意,呼叫此函式將會觸發 onDidCloseTextDocument 事件,隨後觸發 onDidOpenTextDocument 事件。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 要變更其語言的文件 |
| languageId: string | 新的語言識別碼。 |
| 回傳值 | 說明 |
| Thenable<TextDocument> | 一個 Thenable,將以更新後的文件進行解析。 |
lm
與語言模型相關功能的命名空間。
變數
tools: readonly LanguageModelToolInformation[]
所有可用工具的清單,這些工具由所有使用 lm.registerTool 的擴充功能註冊。可以使用 lm.invokeTool 並傳入符合其宣告的 inputSchema 的輸入來呼叫它們。
活動
onDidChangeChatModels: Event<void>
當可用聊天模型集合發生變更時觸發的事件。
函式
invokeTool(name: string, options: LanguageModelToolInvocationOptions<object>, token?: CancellationToken): Thenable<LanguageModelToolResult>
按名稱呼叫列於 lm.tools 中的工具,並提供給定的輸入。輸入將針對該工具宣告的綱要進行驗證。
工具可以由聊天參與者在處理聊天請求的內容中呼叫,或由任何擴充功能在任何自訂流程中全域呼叫。
在前者情況下,呼叫者應傳遞來自 聊天請求 的 toolInvocationToken。這可確保聊天 UI 為正確的對話顯示工具呼叫。
工具 結果 是 文字- 和 prompt-tsx-部分的陣列。如果工具呼叫者使用 vscode/prompt-tsx,則可以使用 ToolResult 將回應部分整合到其提示詞中。如果不是,這些部分可以透過帶有 LanguageModelToolResultPart 的使用者訊息傳遞給 LanguageModelChat。
如果聊天參與者希望保留跨多個回合的請求的工具結果,則可以將工具結果儲存在處理器回傳的 ChatResult.metadata 中,並在下一回合從 ChatResponseTurn.result 中檢索它們。
| 參數 | 說明 |
|---|---|
| name: string | 要呼叫的工具名稱。 |
| options: LanguageModelToolInvocationOptions<object> | 呼叫工具時使用的選項。 |
| token?: CancellationToken | 取消權杖。請參閱 CancellationTokenSource 了解如何建立。 |
| 回傳值 | 說明 |
| Thenable<LanguageModelToolResult> | 工具呼叫的結果。 |
registerLanguageModelChatProvider(vendor: string, provider: LanguageModelChatProvider<LanguageModelChatInformation>): Disposable
註冊 LanguageModelChatProvider。注意:您也必須透過 package.json 中的 languageModelChatProviders 貢獻點定義語言模型聊天提供者。
| 參數 | 說明 |
|---|---|
| vendor: string | 此提供者的供應商。必須是全域唯一的。例如 |
| provider: LanguageModelChatProvider<LanguageModelChatInformation> | 要註冊的提供者。 |
| 回傳值 | 說明 |
| Disposable | 在處置時註銷提供者的可處置物件。 |
registerMcpServerDefinitionProvider(id: string, provider: McpServerDefinitionProvider<McpServerDefinition>): Disposable
註冊一個提供者,該提供者發布模型內容協定(Model Context Protocol)伺服器供編輯器使用。這允許除了使用者在設定檔中建立的伺服器外,還能動態地向編輯器提供 MCP 伺服器。
在呼叫此方法之前,擴充功能必須註冊 contributes.mcpServerDefinitionProviders 擴充點,並附上對應的 id,例如:
"contributes": {
"mcpServerDefinitionProviders": [
{
"id": "cool-cloud-registry.mcp-servers",
"label": "Cool Cloud Registry",
}
]
}
當新的 McpServerDefinitionProvider 可用時,編輯器預設會自動呼叫它,以便在提交聊天訊息時發現新的伺服器和工具。為了啟用此流程,擴充功能應在啟動期間呼叫 registerMcpServerDefinitionProvider。
| 參數 | 說明 |
|---|---|
| id: string | 提供者的 ID,該 ID 對於擴充功能來說是唯一的。 |
| provider: McpServerDefinitionProvider<McpServerDefinition> | 要註冊的提供者。 |
| 回傳值 | 說明 |
| Disposable | 在處置時註銷提供者的可處置物件。 |
registerTool<T>(name: string, tool: LanguageModelTool<T>): Disposable
註冊 LanguageModelTool。該工具也必須在 package.json 的 languageModelTools 貢獻點中註冊。註冊後的工具可在 lm.tools 清單中供任何擴充功能查看。但若要讓語言模型看見它,必須在 LanguageModelChatRequestOptions.tools 的可用工具清單中傳入它。
| 參數 | 說明 |
|---|---|
| name: string | |
| tool: LanguageModelTool<T> | |
| 回傳值 | 說明 |
| Disposable | 在處置時註銷工具的可處置物件。 |
selectChatModels(selector?: LanguageModelChatSelector): Thenable<LanguageModelChat[]>
透過 選擇器 選擇聊天模型。這可能會產生多個或沒有聊天模型,擴充功能必須妥善處理這些情況,特別是在沒有聊天模型存在時。
const models = await vscode.lm.selectChatModels({ family: 'gpt-3.5-turbo' });
if (models.length > 0) {
const [first] = models;
const response = await first.sendRequest(...)
// ...
} else {
// NO chat models available
}
選擇器可以編寫為廣泛匹配特定供應商或系列的所有模型,也可以透過 ID 窄化選擇一個特定模型。請記住,可用模型集合會隨時間變化,且提示詞在不同模型中的執行表現可能會有所不同。
注意,擴充功能可以保留此函式回傳的結果並稍後使用。但是,當觸發 onDidChangeChatModels 事件時,聊天模型清單可能已變更,擴充功能應重新查詢。
| 參數 | 說明 |
|---|---|
| selector?: LanguageModelChatSelector | 聊天模型選擇器。省略時將回傳所有聊天模型。 |
| 回傳值 | 說明 |
| Thenable<LanguageModelChat[]> | 聊天模型陣列,可能是空的! |
notebooks
筆記本(Notebooks)功能的命名空間。
筆記本功能由三個鬆散耦合的元件組成:
- NotebookSerializer 使編輯器能夠開啟、顯示和儲存筆記本。
- NotebookController 擁有筆記本的執行權,例如它們從程式碼儲存格建立輸出。
- NotebookRenderer 在編輯器中呈現筆記本輸出。它們在獨立的內容中執行。
函式
createNotebookController(id: string, notebookType: string, label: string, handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>): NotebookController
建立一個新的筆記本控制器。
| 參數 | 說明 |
|---|---|
| id: string | 控制器的識別碼。每個擴充功能必須唯一。 |
| notebookType: string | 此控制器對應的筆記本類型。 |
| label: string | 控制器的標籤。 |
| handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void> | 控制器的執行處理器。 |
| 回傳值 | 說明 |
| NotebookController | 一個新的筆記本控制器。 |
createRendererMessaging(rendererId: string): NotebookRendererMessaging
建立一個用於與特定呈現器通訊的訊息傳遞執行個體。
- 註 1:擴充功能只能建立其在
package.json檔案中定義的呈現器。 - 註 2:只有在
notebookRenderer貢獻中將requiresMessaging設定為always或optional時,呈現器才能存取訊息傳遞功能。
| 參數 | 說明 |
|---|---|
| rendererId: string | 要與之通訊的呈現器 ID。 |
| 回傳值 | 說明 |
| NotebookRendererMessaging | 一個新的筆記本呈現器訊息傳遞物件。 |
registerNotebookCellStatusBarItemProvider(notebookType: string, provider: NotebookCellStatusBarItemProvider): Disposable
為給定的筆記本類型註冊 儲存格狀態列項目提供者。
| 參數 | 說明 |
|---|---|
| notebookType: string | 要註冊的筆記本類型。 |
| provider: NotebookCellStatusBarItemProvider | 儲存格狀態列提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
scm
原始碼控制管理(Source Control Management)的命名空間。
變數
inputBox: SourceControlInputBox
由擴充功能建立的最後一個原始碼控制的 輸入框。
- 已棄用 - 請改用 SourceControl.inputBox
函式
createSourceControl(id: string, label: string, rootUri?: Uri): SourceControl
建立一個新的 原始碼控制 執行個體。
| 參數 | 說明 |
|---|---|
| id: string | 原始碼控制的 |
| label: string | 供人類閱讀的原始碼控制字串。例如: |
| rootUri?: Uri | 原始碼控制根目錄的可選 Uri。例如: |
| 回傳值 | 說明 |
| SourceControl | 原始碼控制 的執行個體。 |
tasks
任務(Tasks)功能的命名空間。
變數
taskExecutions: readonly TaskExecution[]
目前活躍的任務執行或空陣列。
活動
onDidEndTask: Event<TaskEndEvent>
當任務結束時觸發。
onDidEndTaskProcess: Event<TaskProcessEndEvent>
當基礎處理序結束時觸發。此事件不會針對未執行基礎處理序的任務觸發。
onDidStartTask: Event<TaskStartEvent>
當任務開始時觸發。
onDidStartTaskProcess: Event<TaskProcessStartEvent>
當基礎處理序開始時觸發。此事件不會針對未執行基礎處理序的任務觸發。
函式
executeTask(task: Task): Thenable<TaskExecution>
執行由編輯器管理的任務。回傳的任務執行可用於終止該任務。
- 丟出 - 當在無法啟動新處理序的環境中執行 ShellExecution 或 ProcessExecution 任務時。在此類環境中,只能執行 CustomExecution 任務。
| 參數 | 說明 |
|---|---|
| task: Task | 要執行的任務 |
| 回傳值 | 說明 |
| Thenable<TaskExecution> | 一個解析為任務執行的 Thenable。 |
fetchTasks(filter?: TaskFilter): Thenable<Task[]>
擷取系統中所有可用的任務。這包括 tasks.json 檔案中的任務,以及透過擴充功能提供的任務提供者的任務。
| 參數 | 說明 |
|---|---|
| filter?: TaskFilter | 選用的篩選器,用於選取特定類型或版本的任務。 |
| 回傳值 | 說明 |
| Thenable<Task[]> | 一個解析為任務陣列的 Thenable。 |
registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable
註冊任務提供者。
| 參數 | 說明 |
|---|---|
| type: string | 此提供者註冊的任務種類類型。 |
| provider: TaskProvider<Task> | 任務提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
tests
測試(Testing)功能的命名空間。測試是透過註冊 TestController 執行個體,然後新增 TestItems 來發布的。控制器也可以透過建立一個或多個 TestRunProfile 執行個體來描述如何執行測試。
函式
createTestController(id: string, label: string): TestController
建立新的測試控制器。
| 參數 | 說明 |
|---|---|
| id: string | 控制器的識別碼,必須全域唯一。 |
| label: string | 控制器的人類可讀標籤。 |
| 回傳值 | 說明 |
| TestController | TestController 的執行個體。 |
window
處理編輯器當前視窗的命名空間。這包括可見和活躍的編輯器,以及用於顯示訊息、選擇和詢問使用者輸入的 UI 元素。
變數
activeColorTheme: ColorTheme
設定中配置的當前活躍色彩主題。可以透過 workbench.colorTheme 設定來變更活躍主題。
activeNotebookEditor: NotebookEditor | undefined
當前活躍的 筆記本編輯器 或 undefined。活躍編輯器是當前擁有焦點的編輯器;如果沒有焦點,則是最近變更過輸入的編輯器。
activeTerminal: Terminal | undefined
當前活躍的終端機或 undefined。活躍終端機是當前擁有焦點或最近擁有焦點的終端機。
activeTextEditor: TextEditor | undefined
當前活躍的編輯器或 undefined。活躍編輯器是當前擁有焦點的編輯器;如果沒有焦點,則是最近變更過輸入的編輯器。
state: WindowState
代表當前視窗的狀態。
tabGroups: TabGroups
代表主編輯器區域內的網格小工具(grid widget)。
terminals: readonly Terminal[]
當前開啟的終端機或空陣列。
visibleNotebookEditors: readonly NotebookEditor[]
當前可見的 筆記本編輯器 或空陣列。
visibleTextEditors: readonly TextEditor[]
當前可見的編輯器或空陣列。
活動
onDidChangeActiveColorTheme: Event<ColorTheme>
當活躍色彩主題變更或有所變更時觸發的 事件。
onDidChangeActiveNotebookEditor: Event<NotebookEditor | undefined>
onDidChangeActiveTerminal: Event<Terminal | undefined>
onDidChangeActiveTextEditor: Event<TextEditor | undefined>
onDidChangeNotebookEditorSelection: Event<NotebookEditorSelectionChangeEvent>
當 筆記本編輯器選擇範圍 變更時觸發的 事件。
onDidChangeNotebookEditorVisibleRanges: NotebookEditorVisibleRangesChangeEvent>
當 筆記本編輯器可見範圍 變更時觸發的 事件。
onDidChangeTerminalShellIntegration: Event<TerminalShellIntegrationChangeEvent>
當 Shell 整合啟動,或終端機中的任一屬性變更時觸發。
onDidChangeTerminalState: Event<Terminal>
onDidChangeTextEditorOptions: Event<TextEditorOptionsChangeEvent>
當編輯器的選項變更時觸發的 事件。
onDidChangeTextEditorSelection: Event<TextEditorSelectionChangeEvent>
當編輯器中的選擇範圍變更時觸發的 事件。
onDidChangeTextEditorViewColumn: Event<TextEditorViewColumnChangeEvent>
當編輯器的檢視欄(view column)變更時觸發的 事件。
onDidChangeTextEditorVisibleRanges: Event<TextEditorVisibleRangesChangeEvent>
當編輯器的可見範圍變更時觸發的 事件。
onDidChangeVisibleNotebookEditors: Event<readonly NotebookEditor[]>
onDidChangeVisibleTextEditors: Event<readonly TextEditor[]>
onDidChangeWindowState: Event<WindowState>
當當前視窗的焦點或活動狀態變更時觸發的 事件。事件的值表示視窗是否具有焦點。
onDidCloseTerminal: Event<Terminal>
當終端機被處置時觸發的 事件。
onDidEndTerminalShellExecution: Event<TerminalShellExecutionEndEvent>
當終端機指令結束時會觸發此事件。此事件僅在終端機啟動 Shell 整合 時才會觸發。
onDidOpenTerminal: Event<Terminal>
當終端機透過 createTerminal API 或命令建立時觸發的 事件。
onDidStartTerminalShellExecution: Event<TerminalShellExecutionStartEvent>
當終端機指令開始時會觸發此事件。此事件僅在終端機啟動 Shell 整合 時才會觸發。
函式
createInputBox(): InputBox
建立一個 InputBox 以讓使用者輸入文字。
請注意,在許多情況下,更方便的 window.showInputBox 較易於使用。當 window.showInputBox 無法提供所需的靈活性時,應使用 window.createInputBox。
createOutputChannel(name: string, languageId?: string): OutputChannel
建立一個具有給定名稱和語言 ID 的新 輸出頻道。如果未提供語言 ID,則預設使用 Log 作為語言 ID。
您可以從 可見編輯器 或 活躍編輯器 將可見或活躍的輸出頻道存取為 文字文件,並使用語言 ID 來貢獻語法著色、程式碼透鏡(code lens)等語言功能。
| 參數 | 說明 |
|---|---|
| name: string | 用於在 UI 中表示該頻道的人類可讀字串。 |
| languageId?: string | 與該頻道關聯的語言識別碼。 |
| 回傳值 | 說明 |
| OutputChannel | 一個新的輸出頻道。 |
createOutputChannel(name: string, options: {log: true}): LogOutputChannel
建立一個具有給定名稱的新 日誌輸出頻道。
| 參數 | 說明 |
|---|---|
| name: string | 用於在 UI 中表示該頻道的人類可讀字串。 |
| options: {log: true} | 日誌輸出頻道的選項。 |
| 回傳值 | 說明 |
| LogOutputChannel | 一個新的日誌輸出頻道。 |
createQuickPick<T extends QuickPickItem>(): QuickPick<T>
建立一個 QuickPick 以讓使用者從 T 類型項目的清單中選擇一個項目。
請注意,在許多情況下,更方便的 window.showQuickPick 較易於使用。當 window.showQuickPick 無法提供所需的靈活性時,應使用 window.createQuickPick。
createStatusBarItem(id: string, alignment?: StatusBarAlignment, priority?: number): StatusBarItem
建立狀態列 項目。
| 參數 | 說明 |
|---|---|
| id: string | 項目的識別碼。在擴充功能內必須唯一。 |
| alignment?: StatusBarAlignment | 項目的對齊方式。 |
| priority?: number | 項目的優先級。數值越大,項目越往左側顯示。 |
| 回傳值 | 說明 |
| StatusBarItem | 一個新的狀態列項目。 |
createStatusBarItem(alignment?: StatusBarAlignment, priority?: number): StatusBarItem
建立狀態列 項目。
請參閱 createStatusBarItem,了解如何建立帶有識別碼的狀態列項目。
| 參數 | 說明 |
|---|---|
| alignment?: StatusBarAlignment | 項目的對齊方式。 |
| priority?: number | 項目的優先級。數值越大,項目越往左側顯示。 |
| 回傳值 | 說明 |
| StatusBarItem | 一個新的狀態列項目。 |
createTerminal(name?: string, shellPath?: string, shellArgs?: string | readonly string[]): Terminal
建立一個帶有後端 Shell 處理序的 終端機。如果工作區目錄存在,終端機的 cwd 將為該工作區目錄。
- 丟出 - 當在無法啟動新處理序的環境中執行時。
createTerminal(options: TerminalOptions): Terminal
建立一個帶有後端 Shell 處理序的 終端機。
- 丟出 - 當在無法啟動新處理序的環境中執行時。
| 參數 | 說明 |
|---|---|
| options: TerminalOptions | 描述新終端機特性的 TerminalOptions 物件。 |
| 回傳值 | 說明 |
| 終端機 | 一個新的終端機。 |
createTerminal(options: ExtensionTerminalOptions): Terminal
建立一個由擴充功能控制其輸入和輸出的 終端機。
| 參數 | 說明 |
|---|---|
| options: ExtensionTerminalOptions | 描述新終端機特性的 ExtensionTerminalOptions 物件。 |
| 回傳值 | 說明 |
| 終端機 | 一個新的終端機。 |
createTextEditorDecorationType(options: DecorationRenderOptions): TextEditorDecorationType
建立一個可用於將裝飾(decorations)新增至文字編輯器的 TextEditorDecorationType。
| 參數 | 說明 |
|---|---|
| options: DecorationRenderOptions | 裝飾類型的呈現選項。 |
| 回傳值 | 說明 |
| TextEditorDecorationType | 一個新的裝飾類型執行個體。 |
createTreeView<T>(viewId: string, options: TreeViewOptions<T>): TreeView<T>
為使用擴充點 views 貢獻的檢視建立 TreeView。
| 參數 | 說明 |
|---|---|
| viewId: string | 使用擴充點 |
| options: TreeViewOptions<T> | 建立 TreeView 的選項。 |
| 回傳值 | 說明 |
| TreeView<T> | 一個 TreeView。 |
createWebviewPanel(viewType: string, title: string, showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn}, options?: WebviewPanelOptions & WebviewOptions): WebviewPanel
建立並顯示一個新的 Webview 面板。
| 參數 | 說明 |
|---|---|
| viewType: string | 識別 Webview 面板的類型。 |
| title: string | 面板標題。 |
| showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn} | 在編輯器的何處顯示 Webview。如果設定了 preserveFocus,則新的 Webview 將不會取得焦點。 |
| options?: WebviewPanelOptions & WebviewOptions | 新面板的設定。 |
| 回傳值 | 說明 |
| WebviewPanel | 新的 Webview 面板。 |
registerCustomEditorProvider(viewType: string, provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument>, options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions}): Disposable
為 customEditors 擴充點所貢獻的 viewType 註冊自訂編輯器提供者。
當開啟自訂編輯器時,會觸發 onCustomEditor:viewType 啟動事件。您的擴充功能必須註冊 CustomTextEditorProvider、CustomReadonlyEditorProvider 或 CustomEditorProvider 作為啟動的一部分,以對應 viewType。
| 參數 | 說明 |
|---|---|
| viewType: string | 自訂編輯器提供者的唯一識別碼。這應該與 |
| provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument> | 解析自訂編輯器的提供者。 |
| options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions} | 提供者的選項。 |
| 回傳值 | 說明 |
| Disposable | 用於註銷提供者的 Disposable。 |
registerFileDecorationProvider(provider: FileDecorationProvider): Disposable
註冊檔案裝飾提供者。
| 參數 | 說明 |
|---|---|
| provider: FileDecorationProvider | |
| 回傳值 | 說明 |
| Disposable | 一個用於註銷提供者的 Disposable。 |
registerTerminalLinkProvider(provider: TerminalLinkProvider<TerminalLink>): Disposable
註冊啟用終端機內連結檢測和處理的提供者。
| 參數 | 說明 |
|---|---|
| provider: TerminalLinkProvider<TerminalLink> | 提供終端機連結的提供者。 |
| 回傳值 | 說明 |
| Disposable | 用於註銷提供者的 Disposable。 |
registerTerminalProfileProvider(id: string, provider: TerminalProfileProvider): Disposable
為貢獻的終端機設定檔註冊提供者。
| 參數 | 說明 |
|---|---|
| id: string | 已貢獻終端機設定檔的 ID。 |
| provider: TerminalProfileProvider | 終端機設定檔提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個用於註銷提供者的 disposable。 |
registerTreeDataProvider<T>(viewId: string, treeDataProvider: TreeDataProvider<T>): Disposable
為使用擴充點 views 貢獻的檢視註冊 TreeDataProvider。這將允許您將資料貢獻給 TreeView,並在資料變更時進行更新。
注意:若要存取 TreeView 並執行操作,請使用 createTreeView。
| 參數 | 說明 |
|---|---|
| viewId: string | 使用擴充點 |
| treeDataProvider: TreeDataProvider<T> | 為檢視提供樹狀資料的 TreeDataProvider。 |
| 回傳值 | 說明 |
| Disposable | 一個用於註銷 TreeDataProvider 的 disposable。 |
registerUriHandler(handler: UriHandler): Disposable
註冊一個能夠處理全系統 uris 的 uri 處理器。如果開啟了多個視窗,最上層視窗將處理該 uri。uri 處理器的範圍限於貢獻它的擴充功能;它只能處理指向該擴充功能本身的 uris。uri 必須遵守以下規則:
- uri-scheme 必須是
vscode.env.uriScheme; - uri-authority 必須是擴充功能 ID(例如
my.extension); - uri-path、-query 和 -fragment 部分可以是任意的。
例如,如果 my.extension 擴充功能註冊了一個 uri 處理器,它將只能處理具有前綴 product-name://my.extension 的 uris。
擴充功能在其整個啟動生命週期中只能註冊一個 uri 處理器。
- 注意:有一個啟動事件
onUri,當即將處理指向當前擴充功能的 uri 時會觸發。
| 參數 | 說明 |
|---|---|
| handler: UriHandler | 為此擴充功能註冊的 uri 處理器。 |
| 回傳值 | 說明 |
| Disposable | 一個用於註銷處理器的 disposable。 |
registerWebviewPanelSerializer(viewType: string, serializer: WebviewPanelSerializer<unknown>): Disposable
註冊 Webview 面板序列化器。
支援恢復功能的擴充功能應具有 "onWebviewPanel:viewType" 啟動事件,並確保在啟動期間呼叫 registerWebviewPanelSerializer。
對於給定的 viewType,一次只能註冊一個序列化器。
| 參數 | 說明 |
|---|---|
| viewType: string | 可序列化的 Webview 面板類型。 |
| serializer: WebviewPanelSerializer<unknown> | Webview 序列化器。 |
| 回傳值 | 說明 |
| Disposable | 一個用於註銷序列化器的 disposable。 |
registerWebviewViewProvider(viewId: string, provider: WebviewViewProvider, options?: {webviewOptions: {retainContextWhenHidden: boolean}}): Disposable
為 Webview 檢視註冊一個新的提供者。
| 參數 | 說明 |
|---|---|
| viewId: string | 檢視的唯一 ID。這應該與 package.json 中 |
| provider: WebviewViewProvider | Webview 檢視的提供者。 |
| options?: {webviewOptions: {retainContextWhenHidden: boolean}} | |
| 回傳值 | 說明 |
| Disposable | 用於註銷提供者的 Disposable。 |
setStatusBarMessage(text: string, hideAfterTimeout: number): Disposable
在狀態列設定訊息。這是功能更強大的狀態列 項目 的簡寫。
| 參數 | 說明 |
|---|---|
| text: string | 要顯示的訊息,支援狀態列 項目 中的圖示替換。 |
| hideAfterTimeout: number | 訊息將在毫秒數後被處置的逾時設定。 |
| 回傳值 | 說明 |
| Disposable | 一個隱藏狀態列訊息的可處置物件。 |
setStatusBarMessage(text: string, hideWhenDone: Thenable<any>): Disposable
在狀態列設定訊息。這是功能更強大的狀態列 項目 的簡寫。
| 參數 | 說明 |
|---|---|
| text: string | 要顯示的訊息,支援狀態列 項目 中的圖示替換。 |
| hideWhenDone: Thenable<any> | 訊息完成(解析或拒絕)後將被處置的 Thenable。 |
| 回傳值 | 說明 |
| Disposable | 一個隱藏狀態列訊息的可處置物件。 |
setStatusBarMessage(text: string): Disposable
在狀態列設定訊息。這是功能更強大的狀態列 項目 的簡寫。
注意,狀態列訊息會堆疊,並且在不再使用時必須進行處置。
| 參數 | 說明 |
|---|---|
| text: string | 要顯示的訊息,支援狀態列 項目 中的圖示替換。 |
| 回傳值 | 說明 |
| Disposable | 一個隱藏狀態列訊息的可處置物件。 |
showErrorMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
顯示錯誤訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showErrorMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
顯示錯誤訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| options: MessageOptions | 設定訊息的行為。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showErrorMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
顯示錯誤訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showErrorMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
顯示錯誤訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| options: MessageOptions | 設定訊息的行為。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showInformationMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
向使用者顯示資訊訊息。可選擇性地提供一組項目,這些項目將呈現為可點選的按鈕。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showInformationMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
向使用者顯示資訊訊息。可選擇性地提供一組項目,這些項目將呈現為可點選的按鈕。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| options: MessageOptions | 設定訊息的行為。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showInformationMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
顯示資訊訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showInformationMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
顯示資訊訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| options: MessageOptions | 設定訊息的行為。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showInputBox(options?: InputBoxOptions, token?: CancellationToken): Thenable<string | undefined>
開啟輸入框以要求使用者輸入。
若輸入框被取消(例如按下 ESC),回傳值將為 undefined。否則,回傳值為使用者輸入的字串;若使用者未輸入任何內容但透過 OK 按鈕關閉輸入框,則回傳空字串。
| 參數 | 說明 |
|---|---|
| options?: InputBoxOptions | 設定輸入框的行為。 |
| token?: CancellationToken | 可用於發出取消訊號的權杖(Token)。 |
| 回傳值 | 說明 |
| Thenable<string | undefined> | 一個 Thenable,解析為使用者提供的字串,若被關閉則為 |
showNotebookDocument(document: NotebookDocument, options?: NotebookDocumentShowOptions): Thenable<NotebookEditor>
在筆記本編輯器中顯示指定的 NotebookDocument。
| 參數 | 說明 |
|---|---|
| document: NotebookDocument | 要顯示的文字文件。 |
| options?: NotebookDocumentShowOptions | |
| 回傳值 | 說明 |
| Thenable<NotebookEditor> | 一個 Promise,解析為一個筆記本編輯器。 |
showOpenDialog(options?: OpenDialogOptions): Thenable<Uri[] | undefined>
向使用者顯示檔案開啟對話框,允許選擇檔案進行開啟操作。
| 參數 | 說明 |
|---|---|
| options?: OpenDialogOptions | 控制對話框的選項。 |
| 回傳值 | 說明 |
| Thenable<Uri[] | undefined> | 一個 Promise,解析為所選資源或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<string[] | undefined>
顯示一個允許進行多重選擇的清單。
| 參數 | 說明 |
|---|---|
| items: readonly string[] | Thenable<readonly string[]> | 字串陣列,或是解析為字串陣列的 Promise。 |
| options: QuickPickOptions & {canPickMany: true} | 設定選擇清單的行為。 |
| token?: CancellationToken | 可用於發出取消訊號的權杖(Token)。 |
| 回傳值 | 說明 |
| Thenable<string[] | undefined> | 一個 Thenable,解析為所選項目或 |
showQuickPick(items: readonly string[] | Thenable<readonly string[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<string | undefined>
顯示一個選擇清單。
| 參數 | 說明 |
|---|---|
| items: readonly string[] | Thenable<readonly string[]> | 字串陣列,或是解析為字串陣列的 Promise。 |
| options?: QuickPickOptions | 設定選擇清單的行為。 |
| token?: CancellationToken | 可用於發出取消訊號的權杖(Token)。 |
| 回傳值 | 說明 |
| Thenable<string | undefined> | 一個 Thenable,解析為所選字串或 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options: QuickPickOptions & {canPickMany: true}, token?: CancellationToken): Thenable<T[] | undefined>
顯示一個允許進行多重選擇的清單。
| 參數 | 說明 |
|---|---|
| items: readonly T[] | Thenable<readonly T[]> | 項目陣列,或是解析為項目陣列的 Promise。 |
| options: QuickPickOptions & {canPickMany: true} | 設定選擇清單的行為。 |
| token?: CancellationToken | 可用於發出取消訊號的權杖(Token)。 |
| 回傳值 | 說明 |
| Thenable<T[] | undefined> | 一個 Thenable,解析為所選項目或 |
showQuickPick<T extends QuickPickItem>(items: readonly T[] | Thenable<readonly T[]>, options?: QuickPickOptions, token?: CancellationToken): Thenable<T | undefined>
顯示一個選擇清單。
| 參數 | 說明 |
|---|---|
| items: readonly T[] | Thenable<readonly T[]> | 項目陣列,或是解析為項目陣列的 Promise。 |
| options?: QuickPickOptions | 設定選擇清單的行為。 |
| token?: CancellationToken | 可用於發出取消訊號的權杖(Token)。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目或 |
showSaveDialog(options?: SaveDialogOptions): Thenable<Uri | undefined>
向使用者顯示檔案儲存對話框,允許選擇檔案進行儲存操作。
| 參數 | 說明 |
|---|---|
| options?: SaveDialogOptions | 控制對話框的選項。 |
| 回傳值 | 說明 |
| Thenable<Uri | undefined> | 一個 Promise,解析為所選資源或 |
showTextDocument(document: TextDocument, column?: ViewColumn, preserveFocus?: boolean): Thenable<TextEditor>
在文字編輯器中顯示指定文件。可提供欄位 (column) 來控制編輯器的顯示位置。可能會變更作用中編輯器。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 要顯示的文字文件。 |
| column?: ViewColumn | 應該顯示編輯器的檢視欄位。預設為作用中欄位。不存在的欄位將視需要建立,最多到 ViewColumn.Nine。使用 ViewColumn.Beside 可在當前作用中編輯器旁開啟新編輯器。 |
| preserveFocus?: boolean | 若為 |
| 回傳值 | 說明 |
| Thenable<TextEditor> | 一個 Promise,解析為一個編輯器。 |
showTextDocument(document: TextDocument, options?: TextDocumentShowOptions): Thenable<TextEditor>
| 參數 | 說明 |
|---|---|
| document: TextDocument | 要顯示的文字文件。 |
| options?: TextDocumentShowOptions | |
| 回傳值 | 說明 |
| Thenable<TextEditor> | 一個 Promise,解析為一個編輯器。 |
showTextDocument(uri: Uri, options?: TextDocumentShowOptions): Thenable<TextEditor>
openTextDocument(uri).then(document => showTextDocument(document, options)) 的簡寫。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| options?: TextDocumentShowOptions | |
| 回傳值 | 說明 |
| Thenable<TextEditor> | 一個 Promise,解析為一個編輯器。 |
showWarningMessage<T extends string>(message: string, ...items: T[]): Thenable<T | undefined>
顯示警告訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showWarningMessage<T extends string>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
顯示警告訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| options: MessageOptions | 設定訊息的行為。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showWarningMessage<T extends MessageItem>(message: string, ...items: T[]): Thenable<T | undefined>
顯示警告訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showWarningMessage<T extends MessageItem>(message: string, options: MessageOptions, ...items: T[]): Thenable<T | undefined>
顯示警告訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要顯示的訊息。 |
| options: MessageOptions | 設定訊息的行為。 |
| ...items: T[] | 一組將在訊息中呈現為動作的項目。 |
| 回傳值 | 說明 |
| Thenable<T | undefined> | 一個 Thenable,解析為所選項目,若被關閉則為 |
showWorkspaceFolderPick(options?: WorkspaceFolderPickOptions): Thenable<WorkspaceFolder | undefined>
顯示可供選擇的 工作區資料夾清單。若沒有開啟任何資料夾,則回傳 undefined。
| 參數 | 說明 |
|---|---|
| options?: WorkspaceFolderPickOptions | 設定工作區資料夾清單的行為。 |
| 回傳值 | 說明 |
| Thenable<WorkspaceFolder | undefined> | 一個 Promise,解析為工作區資料夾或 |
withProgress<R>(options: ProgressOptions, task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R>): Thenable<R>
在編輯器中顯示進度。在執行指定的 callback 期間以及其回傳的 promise 尚未解析或拒絕時,進度會持續顯示。進度顯示的位置(及其他詳細資訊)透過傳入的 ProgressOptions 定義。
| 參數 | 說明 |
|---|---|
| options: ProgressOptions | 一個 ProgressOptions 物件,描述用於顯示進度的選項(例如位置)。 |
| task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R> | 一個回傳 promise 的 callback。可使用提供的 Progress 物件回報進度狀態。 要回報離散進度,請使用 若要監控操作是否已被使用者取消,請使用提供的 CancellationToken。注意,目前僅有 |
| 回傳值 | 說明 |
| Thenable<R> | task-callback 所回傳的 Thenable。 |
withScmProgress<R>(task: (progress: Progress<number>) => Thenable<R>): Thenable<R>
在執行指定的 callback 期間,且其回傳的 promise 尚未解析或拒絕時,在原始碼控制(Source Control)檢視中顯示進度。
- 已棄用 - 請改用
withProgress。
workspace
用於處理當前工作區的命名空間。工作區是編輯器視窗(執行個體)中開啟的一個或多個資料夾的集合。
也可以在沒有工作區的情況下開啟編輯器。例如,當您從作業系統的檔案選單中選擇檔案來開啟新的編輯器視窗時,您將不會處於工作區中。在此模式下,編輯器的某些功能會受限,但您仍然可以開啟並編輯文字檔。
關於工作區概念的更多資訊,請參考 https://vscode.com.tw/docs/editor/workspaces。
工作區提供對 監聽 檔案系統事件及 尋找 檔案的支援。兩者皆執行效能良好且在編輯器處理序之外執行,因此應始終優先使用它們,而非 Node.js 的對應 API。
變數
fs: FileSystem
一個 檔案系統 (File System) 執行個體,允許與本機及遠端檔案互動。例如 vscode.workspace.fs.readDirectory(someUri) 允許檢索目錄中的所有項目,或 vscode.workspace.fs.stat(anotherUri) 可回傳檔案的詮釋資料 (meta data)。
若為 true,表示使用者已明確信任該工作區的內容。
工作區名稱。未開啟工作區時為 undefined。
關於工作區概念的更多資訊,請參考 https://vscode.com.tw/docs/editor/workspaces。
notebookDocuments: readonly NotebookDocument[]
編輯器目前已知的所有筆記本文件。
workspaceFolders 第一個項目的 URI 字串表示。若無第一個項目則為 undefined。
關於工作區的更多資訊,請參考 https://vscode.com.tw/docs/editor/workspaces。
- 已棄用 - 請改用 workspaceFolders。
textDocuments: readonly TextDocument[]
編輯器目前已知的所有文字文件。
workspaceFile: Uri | undefined
工作區檔案的位置,例如:
file:///Users/name/Development/myProject.code-workspace
或
untitled:1555503116870
用於尚未儲存且無標題的工作區。
視開啟的工作區而定,此值將會是
- 未開啟工作區時為
undefined。 - 否則以
Uri形式回傳工作區檔案路徑。若工作區無標題,回傳的 URI 將使用untitled:配置 (scheme)。
此位置可用於 vscode.openFolder 指令,在關閉後重新開啟該工作區。
範例
vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);
關於工作區概念的更多資訊,請參考 https://vscode.com.tw/docs/editor/workspaces。
注意: 不建議使用 workspace.workspaceFile 將設定資料寫入檔案。請改用 workspace.getConfiguration().update(),此方法在開啟單一資料夾以及無標題或已儲存的工作區時均可運作。
workspaceFolders: readonly WorkspaceFolder[] | undefined
編輯器中開啟的工作區資料夾列表 (0-N)。未開啟工作區時為 undefined。
關於工作區的更多資訊,請參考 https://vscode.com.tw/docs/editor/workspaces。
活動
onDidChangeConfiguration: Event<ConfigurationChangeEvent>
當設定變更時觸發的事件。
onDidChangeNotebookDocument: Event<NotebookDocumentChangeEvent>
當筆記本變更時觸發的事件。
onDidChangeTextDocument: Event<TextDocumentChangeEvent>
onDidChangeWorkspaceFolders: Event<WorkspaceFoldersChangeEvent>
當工作區資料夾被新增或移除時觸發的事件。
注意: 若是第一個工作區資料夾被新增、移除或變更,此事件將不會觸發,因為在這種情況下,當前執行的擴充功能(包括監聽此事件的擴充功能)將被終止並重新啟動,以便將(已棄用的)rootPath 屬性更新為指向第一個工作區資料夾。
onDidCloseNotebookDocument: Event<NotebookDocument>
當筆記本被處置(disposed)時觸發的事件。
注意 1: 不保證當編輯器分頁關閉時會觸發此事件。
注意 2: 筆記本可以處於開啟但未在編輯器中顯示的狀態,這意味著此事件可能針對尚未在編輯器中顯示的筆記本觸發。
onDidCloseTextDocument: Event<TextDocument>
當文字文件被處置(disposed)或文字文件的語言識別碼 發生變更 時觸發的事件。
注意 1: 不保證當編輯器分頁關閉時會觸發此事件;請使用 onDidChangeVisibleTextEditors 事件來了解編輯器何時變更。
注意 2: 文件可以處於開啟但未在編輯器中顯示的狀態,這意味著此事件可能針對尚未在編輯器中顯示的文件觸發。
onDidCreateFiles: Event<FileCreateEvent>
當檔案建立時觸發的事件。
注意: 此事件由使用者手勢(如從檔案總管建立檔案)或 workspace.applyEdit API 觸發;但此事件不會在檔案於磁碟上變更時觸發(例如由其他應用程式變更,或使用 workspace.fs API 時)。
onDidDeleteFiles: Event<FileDeleteEvent>
當檔案刪除時觸發的事件。
注意 1: 此事件由使用者手勢(如從檔案總管刪除檔案)或 workspace.applyEdit API 觸發;但此事件不會在檔案於磁碟上變更時觸發(例如由其他應用程式變更,或使用 workspace.fs API 時)。
注意 2: 當刪除含有子檔案的資料夾時,只會觸發一次事件。
onDidGrantWorkspaceTrust: Event<void>
當當前工作區獲得信任時觸發的事件。
onDidOpenNotebookDocument: Event<NotebookDocument>
當筆記本開啟時觸發的事件。
onDidOpenTextDocument: Event<TextDocument>
onDidRenameFiles: Event<FileRenameEvent>
當檔案重新命名時觸發的事件。
注意 1: 此事件由使用者手勢(如從檔案總管重新命名檔案)或 workspace.applyEdit API 觸發;但此事件不會在檔案於磁碟上變更時觸發(例如由其他應用程式變更,或使用 workspace.fs API 時)。
注意 2: 當重新命名含有子檔案的資料夾時,只會觸發一次事件。
onDidSaveNotebookDocument: Event<NotebookDocument>
當筆記本儲存時觸發的事件。
onDidSaveTextDocument: Event<TextDocument>
當文字文件儲存至磁碟時觸發的事件。
onWillCreateFiles: Event<FileWillCreateEvent>
當檔案即將建立時觸發的事件。
注意 1: 此事件由使用者手勢(如從檔案總管建立檔案)或 workspace.applyEdit API 觸發。此事件不會在檔案於磁碟上變更時觸發(例如由其他應用程式變更,或使用 workspace.fs API 時)。
注意 2: 當觸發此事件時,無法套用對即將建立之檔案的編輯操作。
onWillDeleteFiles: Event<FileWillDeleteEvent>
當檔案即將刪除時觸發的事件。
注意 1: 此事件由使用者手勢(如從檔案總管刪除檔案)或 workspace.applyEdit API 觸發;但此事件不會在檔案於磁碟上變更時觸發(例如由其他應用程式變更,或使用 workspace.fs API 時)。
注意 2: 當刪除含有子檔案的資料夾時,只會觸發一次事件。
onWillRenameFiles: Event<FileWillRenameEvent>
當檔案即將重新命名時觸發的事件。
注意 1: 此事件由使用者手勢(如從檔案總管重新命名檔案)或 workspace.applyEdit API 觸發;但此事件不會在檔案於磁碟上變更時觸發(例如由其他應用程式變更,或使用 workspace.fs API 時)。
注意 2: 當重新命名含有子檔案的資料夾時,只會觸發一次事件。
onWillSaveNotebookDocument: Event<NotebookDocumentWillSaveEvent>
onWillSaveTextDocument: Event<TextDocumentWillSaveEvent>
函式
applyEdit(edit: WorkspaceEdit, metadata?: WorkspaceEditMetadata): Thenable<boolean>
對一個或多個資源進行變更,或按照指定的 工作區編輯 進行建立、刪除及重新命名資源的操作。
工作區編輯的所有變更將按照其新增順序進行套用。若多個文字插入操作在同一位置進行,這些字串將依照「插入」的順序出現在最終文字中,除非它們與資源編輯操作交錯。無效的順序(例如「刪除檔案 a」 -> 「在檔案 a 中插入文字」)會導致操作失敗。
在套用僅包含文字編輯的工作區編輯時,採用「全有或全無」策略。若工作區編輯包含資源建立或刪除,則操作會中止(例如若單一編輯失敗,則不會嘗試後續的編輯操作)。
| 參數 | 說明 |
|---|---|
| edit: WorkspaceEdit | 工作區編輯。 |
| metadata?: WorkspaceEditMetadata | 編輯的可選 詮釋資料。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 一個在編輯成功套用後解析的 Thenable。 |
asRelativePath(pathOrUri: string | Uri, includeWorkspaceFolder?: boolean): string
回傳相對於工作區資料夾的路徑。
若無 工作區資料夾 或路徑未包含在其中,則回傳輸入內容。
createFileSystemWatcher(globPattern: GlobPattern, ignoreCreateEvents?: boolean, ignoreChangeEvents?: boolean, ignoreDeleteEvents?: boolean): FileSystemWatcher
建立一個檔案系統監控器,根據提供的參數接收檔案事件(建立、變更、刪除)通知。
預設情況下,所有開啟的 工作區資料夾 都會被遞迴監控檔案變更。
可透過提供帶有 base 路徑的 RelativePattern 來新增監控額外路徑。若路徑是資料夾且 pattern 較複雜(例如包含 ** 或路徑片段),將進行遞迴監控,否則將進行非遞迴監控(即僅報告路徑第一層級的變更)。
注意,檔案系統中不存在的路徑將會延遲監控,直到被建立,隨後根據提供的參數進行監控。若被監控的路徑被刪除,監控器將暫停,直到該路徑再次被建立前,不會報告任何事件。
若可能,請儘量減少遞迴監控器的使用,因為遞迴檔案監控相當消耗資源。
提供 string 作為 globPattern 是一種方便監控所有開啟工作區資料夾中檔案事件的方法。它無法用於新增更多資料夾進行監控,也不會回報任何不屬於已開啟工作區資料夾的檔案事件。
注意,globPattern 參數的大小寫敏感度取決於執行監控器的檔案系統:在 Windows 和 macOS 上匹配為不區分大小寫,在 Linux 上則區分大小寫。
可選擇性地提供忽略某些事件類型的旗標。
若要停止監聽事件,必須處置(dispose)監控器。
注意,從刪除資料夾產生的檔案事件可能不包含其中包含的檔案事件。例如,當資料夾移動到垃圾桶時,只會報告一個事件,因為在技術上這屬於重新命名/移動操作,而非對每個檔案進行刪除。此外,系統已針對將屬於同一父操作(如刪除資料夾)的多個事件合併為一個事件進行了效能最佳化。因此,若您需要了解所有被刪除的檔案,則必須使用 ** 進行監控並自行處理所有檔案事件。
注意,遞迴檔案監控器的檔案事件可能會根據使用者設定而被排除。設定 files.watcherExclude 有助於降低已知會產生大量檔案變更的資料夾(如 .git 資料夾)所帶來的負擔。因此,極力建議使用簡單的模式進行監控,這些模式不需要遞迴監控器,這時排除設定會被忽略,您也可以完全掌控事件。
注意,除非被監控的路徑本身是符號連結,否則不會自動追蹤符號連結。
注意,報告變更的檔案路徑在不區分大小寫的平台(通常是 macOS 和 Windows,Linux 除外)上,其大小寫可能與磁碟上的實際大小寫不同。我們允許使用者以所需的任何大小寫路徑開啟工作區資料夾,並嘗試保留該大小寫。這意味著:
- 若路徑位於任何工作區資料夾內,該路徑將匹配工作區資料夾至該路徑區段的大小寫,並匹配子項目在磁碟上的大小寫;
- 若路徑位於任何工作區資料夾之外,大小寫將匹配提供用於監控的路徑大小寫。同樣地,符號連結會被保留,即檔案事件將報告提供監控時的符號連結路徑,而非目標路徑。
範例
檔案監控器的基本結構如下:
const watcher = vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(<folder>, <pattern>));
watcher.onDidChange(uri => { ... }); // listen to files being changed
watcher.onDidCreate(uri => { ... }); // listen to files/folders being created
watcher.onDidDelete(uri => { ... }); // listen to files/folders getting deleted
watcher.dispose(); // dispose after usage
工作區檔案監控
若您只關心特定工作區資料夾中的檔案事件
vscode.workspace.createFileSystemWatcher(
new vscode.RelativePattern(vscode.workspace.workspaceFolders[0], '**/*.js')
);
若您想監控所有已開啟工作區資料夾中的檔案事件
vscode.workspace.createFileSystemWatcher('**/*.js');
注意: 若未開啟任何工作區(空視窗),工作區資料夾陣列可能為空。
工作區外的檔案監控
要監控工作區外 *.js 檔案的變更(非遞迴),請傳入該資料夾的 Uri
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '*.js'));
並使用複雜的 glob 模式來進行遞迴監控
vscode.workspace.createFileSystemWatcher(new vscode.RelativePattern(vscode.Uri.file(<path to folder outside workspace>), '**/*.js'));
以下是一個監控作用中編輯器檔案變更的範例
vscode.workspace.createFileSystemWatcher(
new vscode.RelativePattern(vscode.window.activeTextEditor.document.uri, '*')
);
| 參數 | 說明 |
|---|---|
| globPattern: GlobPattern | 一個 glob 模式,用於控制監控器應報告哪些檔案事件。 |
| ignoreCreateEvents?: boolean | 忽略檔案建立事件。 |
| ignoreChangeEvents?: boolean | 忽略檔案變更事件。 |
| ignoreDeleteEvents?: boolean | 忽略檔案刪除事件。 |
| 回傳值 | 說明 |
| FileSystemWatcher | 一個新的檔案系統監控器執行個體。不再需要時必須處置。 |
decode(content: Uint8Array): Thenable<string>
將 Uint8Array 中的內容解碼為 string。您必須一次提供完整內容,以確保編碼能正確套用。請勿使用此方法分塊解碼內容,這可能會導致錯誤結果。
將根據設定和緩衝區內容(例如位元組順序標記 BOM)選擇編碼。
注意,若您解碼的內容與編碼不支援,結果可能包含適當的替換字元。
- 拋出 - 當內容為二進位時,此方法會拋出錯誤。
| 參數 | 說明 |
|---|---|
| content: Uint8Array | 要解碼為 |
| 回傳值 | 說明 |
| Thenable<string> | 一個解析為已解碼 |
decode(content: Uint8Array, options: {encoding: string}): Thenable<string>
使用提供的編碼將 Uint8Array 中的內容解碼為 string。您必須一次提供完整內容,以確保編碼能正確套用。請勿使用此方法分塊解碼內容。
注意,若您解碼的內容與編碼不支援,結果可能包含適當的替換字元。
- 拋出 - 當內容為二進位時,此方法會拋出錯誤。
| 參數 | 說明 |
|---|---|
| content: Uint8Array | 要解碼為 |
| options: {encoding: string} | 選擇編碼的額外上下文。 |
| 回傳值 | 說明 |
| Thenable<string> | 一個解析為已解碼 |
decode(content: Uint8Array, options: {uri: Uri}): Thenable<string>
將 Uint8Array 中的內容解碼為 string。您必須一次提供完整內容,以確保編碼能正確套用。請勿使用此方法分塊解碼內容,這可能會導致錯誤結果。
根據設定和緩衝區內容(例如位元組順序標記 BOM)選擇編碼。
注意,若您解碼的內容與編碼不支援,結果可能包含適當的替換字元。
- 拋出 - 當內容為二進位時,此方法會拋出錯誤。
| 參數 | 說明 |
|---|---|
| content: Uint8Array | 要解碼的內容(格式為 |
| options: {uri: Uri} | 選擇編碼的額外上下文。 |
| 回傳值 | 說明 |
| Thenable<string> | 一個解析為已解碼 |
encode(content: string): Thenable<Uint8Array>
將 string 內容編碼為 Uint8Array。
將根據設定選擇編碼。
| 參數 | 說明 |
|---|---|
| content: string | 要解碼的內容(格式為 |
| 回傳值 | 說明 |
| Thenable<Uint8Array> | 一個解析為已編碼 |
encode(content: string, options: {encoding: string}): Thenable<Uint8Array>
使用提供的編碼將 string 內容編碼為 Uint8Array。
| 參數 | 說明 |
|---|---|
| content: string | 要解碼的內容(格式為 |
| options: {encoding: string} | 選擇編碼的額外上下文。 |
| 回傳值 | 說明 |
| Thenable<Uint8Array> | 一個解析為已編碼 |
encode(content: string, options: {uri: Uri}): Thenable<Uint8Array>
將 string 內容編碼為 Uint8Array。
根據設定選擇編碼。
| 參數 | 說明 |
|---|---|
| content: string | 要解碼的內容(格式為 |
| options: {uri: Uri} | 選擇編碼的額外上下文。 |
| 回傳值 | 說明 |
| Thenable<Uint8Array> | 一個解析為已編碼 |
findFiles(include: GlobPattern, exclude?: GlobPattern, maxResults?: number, token?: CancellationToken): Thenable<Uri[]>
| 參數 | 說明 |
|---|---|
| include: GlobPattern | |
| exclude?: GlobPattern | 定義要排除之檔案與資料夾的 glob 模式。該模式將與相對於其工作區的匹配檔案路徑進行比對。當為 |
| maxResults?: number | 結果的上限。 |
| token?: CancellationToken | 用於向底層搜尋引擎發出取消訊號的權杖。 |
| 回傳值 | 說明 |
| Thenable<Uri[]> | 一個解析為資源識別碼陣列的 Thenable。若未開啟任何 工作區資料夾,則回傳無結果。 |
getConfiguration(section?: string, scope?: ConfigurationScope): WorkspaceConfiguration
取得工作區設定物件。
提供節點 ID 時,僅回傳該部分的設定。節點 ID 中的點號解釋為子項存取,例如 { myExt: { setting: { doIt: true }}},且 getConfiguration('myExt.setting').get('doIt') === true。
提供範圍 (scope) 時,回傳限制於該範圍的設定。範圍可以是資源、語言識別碼或兩者。
| 參數 | 說明 |
|---|---|
| section?: string | 以點分隔的識別碼。 |
| scope?: ConfigurationScope | 要求設定的目標範圍。 |
| 回傳值 | 說明 |
| WorkspaceConfiguration | 完整設定或其子集。 |
getWorkspaceFolder(uri: Uri): WorkspaceFolder | undefined
回傳包含給定 uri 的 工作區資料夾。
- 若給定 uri 不符合任何工作區資料夾,則回傳
undefined。 - 若給定 uri 本身就是一個工作區資料夾,則回傳該 輸入值。
| 參數 | 說明 |
|---|---|
| uri: Uri | Uri。 |
| 回傳值 | 說明 |
| WorkspaceFolder | undefined | 工作區資料夾或 |
openNotebookDocument(uri: Uri): Thenable<NotebookDocument>
開啟筆記本。若此筆記本已載入,則會提早回傳。否則將載入筆記本並觸發 onDidOpenNotebookDocument 事件。
注意,回傳之筆記本的生命週期由編輯器擁有,而非擴充功能。這意味著 onDidCloseNotebookDocument 事件可能在之後的任何時間發生。
注意,開啟筆記本並不會顯示筆記本編輯器。此函數僅回傳一個可在筆記本編輯器中顯示的筆記本文件,但它也可以用於其他目的。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要開啟的資源。 |
| 回傳值 | 說明 |
| Thenable<NotebookDocument> | 一個解析為 筆記本 的 Promise。 |
openNotebookDocument(notebookType: string, content?: NotebookData): Thenable<NotebookDocument>
開啟無標題筆記本。當文件即將儲存時,編輯器將提示使用者輸入檔案路徑。
| 參數 | 說明 |
|---|---|
| notebookType: string | 應使用的筆記本類型。 |
| content?: NotebookData | 筆記本的初始內容。 |
| 回傳值 | 說明 |
| Thenable<NotebookDocument> | 一個解析為 筆記本 的 Promise。 |
openTextDocument(uri: Uri, options?: {encoding: string}): Thenable<TextDocument>
開啟文件。若此文件已開啟,則會提早回傳。否則將載入文件並觸發 didOpen 事件。
file-scheme:開啟磁碟上的檔案(openTextDocument(Uri.file(path)))。若檔案不存在或無法載入,將會被拒絕。untitled-scheme:開啟帶有關聯路徑的空白無標題檔案(openTextDocument(Uri.file(path).with({ scheme: 'untitled' })))。語言將從檔案名稱中推導。- 對於所有其他配置 (scheme),將查閱已貢獻的 文字文件內容提供者 和 檔案系統提供者。
注意,回傳之文件的生命週期由編輯器擁有,而非擴充功能。這意味著 onDidClose 事件在開啟之後隨時可能發生。
| 參數 | 說明 |
|---|---|
| uri: Uri | 識別要開啟的資源。 |
| options?: {encoding: string} | |
| 回傳值 | 說明 |
| Thenable<TextDocument> | 一個解析為 文件 的 Promise。 |
openTextDocument(path: string, options?: {encoding: string}): Thenable<TextDocument>
openTextDocument(Uri.file(path)) 的簡寫。
| 參數 | 說明 |
|---|---|
| path: string | 磁碟上檔案的路徑。 |
| options?: {encoding: string} | |
| 回傳值 | 說明 |
| Thenable<TextDocument> | 一個解析為 文件 的 Promise。 |
openTextDocument(options?: {content: string, encoding: string, language: string}): Thenable<TextDocument>
開啟無標題文字文件。當文件即將儲存時,編輯器將提示使用者輸入檔案路徑。options 參數允許指定文件的語言和/或內容。
| 參數 | 說明 |
|---|---|
| options?: {content: string, encoding: string, language: string} | 控制文件建立方式的選項。 |
| 回傳值 | 說明 |
| Thenable<TextDocument> | 一個解析為 文件 的 Promise。 |
registerFileSystemProvider(scheme: string, provider: FileSystemProvider, options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}): Disposable
註冊給定配置(例如 ftp)的檔案系統提供者。
每個配置僅能有一個提供者;若該配置已被其他提供者宣告或保留,將拋出錯誤。
| 參數 | 說明 |
|---|---|
| scheme: string | 提供者註冊的 URI 配置 (scheme)。 |
| provider: FileSystemProvider | 檔案系統提供者。 |
| options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString} | 關於提供者的不可變詮釋資料。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerNotebookSerializer(notebookType: string, serializer: NotebookSerializer, options?: NotebookDocumentContentOptions): Disposable
註冊一個 筆記本序列化器。
筆記本序列化器必須透過 notebooks 擴充功能點進行貢獻。開啟筆記本檔案時,編輯器將傳送 onNotebook:<notebookType> 啟用事件,擴充功能必須隨之註冊其序列化器。
| 參數 | 說明 |
|---|---|
| notebookType: string | 一個筆記本。 |
| serializer: NotebookSerializer | 筆記本序列化器。 |
| options?: NotebookDocumentContentOptions | 定義應保留哪些筆記本部分的可選上下文選項。 |
| 回傳值 | 說明 |
| Disposable | 一個在處置時註銷此序列化器的 Disposable。 |
registerTaskProvider(type: string, provider: TaskProvider<Task>): Disposable
註冊任務提供者。
- 已棄用 - 請改用
tasks命名空間中的對應函數。
| 參數 | 說明 |
|---|---|
| type: string | 此提供者註冊的任務種類類型。 |
| provider: TaskProvider<Task> | 任務提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
registerTextDocumentContentProvider(scheme: string, provider: TextDocumentContentProvider): Disposable
註冊文字文件內容提供者。
每個配置僅能註冊一個提供者。
| 參數 | 說明 |
|---|---|
| scheme: string | 要註冊的 URI 配置 (scheme)。 |
| provider: TextDocumentContentProvider | 內容提供者。 |
| 回傳值 | 說明 |
| Disposable | 一個 Disposable,在處置時會註銷此提供者。 |
save(uri: Uri): Thenable<Uri | undefined>
儲存由指定資源識別的編輯器,並回傳結果資源,若儲存未成功或未找到該資源的編輯器則回傳 undefined。
注意,擁有提供之資源的編輯器必須已開啟才能進行儲存。
saveAll(includeUntitled?: boolean): Thenable<boolean>
儲存所有髒檔 (dirty files)。
| 參數 | 說明 |
|---|---|
| includeUntitled?: boolean | 同時儲存此工作階段期間建立的檔案。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 在檔案儲存後解析的 Thenable。若任何檔案儲存失敗則回傳 |
saveAs(uri: Uri): Thenable<Uri | undefined>
將由指定資源識別的編輯器另存為使用者提供的新檔案名稱,並回傳結果資源,若儲存不成功、取消或未找到該資源的編輯器則回傳 undefined。
注意,擁有提供之資源的編輯器必須已開啟才能進行另存為操作。
updateWorkspaceFolders(start: number, deleteCount: number, ...workspaceFoldersToAdd: Array<{name: string, uri: Uri}>): boolean
此方法從索引 start 開始取代 deleteCount 個 工作區資料夾,並可選擇性新增 workspaceFoldersToAdd 至 vscode.workspace.workspaceFolders 陣列。此「拼接」行為可用於在單一操作中新增、移除及變更工作區資料夾。
注意: 在某些情況下,呼叫此方法可能會導致當前執行的擴充功能(包括呼叫此方法者)被終止並重新啟動。例如,當新增、移除或變更第一個工作區資料夾時,(已棄用的)rootPath 屬性會更新為指向第一個工作區資料夾。另一個情況是從空工作區或單一資料夾工作區轉變為多資料夾工作區時(另請參閱:https://vscode.com.tw/docs/editor/workspaces)。
請使用 onDidChangeWorkspaceFolders() 事件來接收工作區資料夾已更新的通知。
範例: 在工作區資料夾末端新增新資料夾
workspace.updateWorkspaceFolders(workspace.workspaceFolders ? workspace.workspaceFolders.length : 0, null, { uri: ...});
範例: 移除第一個工作區資料夾
workspace.updateWorkspaceFolders(0, 1);
範例: 以新資料夾取代現有工作區資料夾
workspace.updateWorkspaceFolders(0, 1, { uri: ...});
移除現有工作區資料夾並以不同名稱重新新增,以此方式來重新命名資料夾是有效的。
注意: 不建議多次呼叫 updateWorkspaceFolders() 而不等待 onDidChangeWorkspaceFolders() 觸發。
AccessibilityInformation
控制螢幕閱讀器行為的無障礙資訊。
屬性
當項目獲取焦點時,由螢幕閱讀器讀出的標籤。
定義螢幕閱讀器如何與之互動的 Widget 角色。在特殊情況下(例如類似樹狀的元素表現得像核取方塊時)應設定此角色。若未指定角色,編輯器將自動選擇適當的角色。有關 aria 角色的更多資訊,請參閱 https://w3c.github.io/aria/#widget_roles
AuthenticationForceNewSessionOptions
呼叫帶有 forceNewSession 旗標的 authentication.getSession 時使用的可選選項。
- 已棄用 - 請改用 AuthenticationGetSessionPresentationOptions。
AuthenticationForceNewSessionOptions: AuthenticationGetSessionPresentationOptions
AuthenticationGetSessionOptions
從 AuthenticationProvider 取得 AuthenticationSession 時所使用的選項。
屬性
account?: AuthenticationSessionAccountInformation
您想要取得工作階段的帳戶。此資訊會傳遞至驗證提供者,用於建立正確的工作階段。
clearSessionPreference?: boolean
是否應清除現有的工作階段偏好設定。
對於支援同時登入多個帳戶的驗證提供者,當呼叫 getSession 時,系統會提示使用者選擇要使用的帳戶。此偏好設定會被記錄下來,直到再次呼叫帶有此旗標的 getSession 為止。
注意:此偏好設定是針對各個延伸模組的。因此,如果一個延伸模組呼叫了 getSession,並不會影響另一個呼叫 getSession 的延伸模組的工作階段偏好設定。此外,此偏好設定是針對目前工作區設定的,同時也是全域設定。這表示新的工作區最初會使用「全域」值,然後當提供此旗標時,可以為該工作區設定新的值。這也表示如果新工作區設定了此旗標,並不會導致既有工作區失去其偏好設定。
預設值為 false。
createIfNone?: boolean | AuthenticationGetSessionPresentationOptions
如果沒有相符的工作階段,是否應執行登入。
如果為 true,將會顯示強制回應對話框要求使用者登入。如果為 false,帳戶活動列圖示上會顯示數字徽章。選單下會新增一個供該延伸模組登入的項目。這允許安靜地提示使用者進行登入。
如果您提供選項,您也會看到對話框,但會包含所提供的額外內容。
如果有相符的工作階段但延伸模組尚未獲得存取權限,將此設定為 true 也會導致立即顯示強制回應對話框,而 false 則會將數字徽章新增至帳戶圖示上。
預設值為 false。
注意:您不能將此選項與 silent 一起使用。
forceNewSession?: boolean | AuthenticationGetSessionPresentationOptions
即使已有可用的工作階段,我們是否應嘗試重新驗證。
如果為 true,將會顯示強制回應對話框要求使用者再次登入。這主要用於權杖因失去部分授權而需要重新發行的情況。
如果您提供選項,您也會看到對話框,但會包含所提供的額外內容。
如果沒有現有的工作階段且 forceNewSession 為 true,其行為將與 createIfNone 相同。
預設值為 false。
我們是否應在「帳戶」選單中顯示登入指示。
如果為 false,使用者會在帳戶選單上看到一個徽章,並附有該延伸模組的登入選項。如果為 true,則不會顯示任何指示。
預設值為 false。
注意:您不能將此選項與任何其他會提示使用者的選項(如 createIfNone)一起使用。
AuthenticationGetSessionPresentationOptions
在使用互動式選項 forceNewSession 和 createIfNone 呼叫 authentication.getSession 時使用的選擇性選項。
屬性
當我們要求重新驗證時,顯示給使用者的選擇性訊息。提供您要求使用者重新驗證原因的額外內容,有助於提高使用者接受的可能性。
AuthenticationProvider
執行服務驗證的提供者。
活動
onDidChangeSessions: Event<AuthenticationProviderAuthenticationSessionsChangeEvent>
當工作階段陣列變更,或工作階段內的資料變更時所觸發的 Event。
方法
createSession(scopes: readonly string[], options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession>
提示使用者登入。
如果登入成功,則應觸發 onDidChangeSessions 事件。
如果登入失敗,則應回傳一個被拒絕的承諾 (rejected promise)。
如果提供者已指定不支援多個帳戶,則若已有符合這些範圍的現有工作階段,就不應呼叫此方法。
| 參數 | 說明 |
|---|---|
| scopes: readonly string[] | 建立新工作階段時應包含的範圍(權限)清單。 |
| options: AuthenticationProviderSessionOptions | 建立工作階段的額外選項。 |
| 回傳值 | 說明 |
| Thenable<AuthenticationSession> | 解析為驗證工作階段的承諾 (promise)。 |
getSessions(scopes: readonly string[], options: AuthenticationProviderSessionOptions): Thenable<AuthenticationSession[]>
取得工作階段清單。
| 參數 | 說明 |
|---|---|
| scopes: readonly string[] | 選擇性的範圍清單。如果提供,回傳的工作階段應符合這些權限,否則應回傳所有工作階段。 |
| options: AuthenticationProviderSessionOptions | 取得工作階段的額外選項。 |
| 回傳值 | 說明 |
| Thenable<AuthenticationSession[]> | 解析為驗證工作階段陣列的承諾。 |
removeSession(sessionId: string): Thenable<void>
移除與工作階段 ID 對應的工作階段。
如果移除成功,則應觸發 onDidChangeSessions 事件。
如果無法移除工作階段,提供者應以錯誤訊息拒絕該承諾。
| 參數 | 說明 |
|---|---|
| sessionId: string | 要移除的工作階段 ID。 |
| 回傳值 | 說明 |
| Thenable<void> |
AuthenticationProviderAuthenticationSessionsChangeEvent
當 AuthenticationSession 新增、移除或變更時所觸發的 Event。
屬性
added: readonly AuthenticationSession[]
changed: readonly AuthenticationSession[]
已變更的 AuthenticationProvider 的 AuthenticationSessions。當工作階段的資料(不含 ID)更新時,工作階段就會變更。例如工作階段重新整理導致為工作階段設定了新的存取權杖。
removed: readonly AuthenticationSession[]
AuthenticationProviderInformation
AuthenticationProvider 的基本資訊
屬性
驗證提供者的唯一識別碼。
驗證提供者的人類可讀名稱。
AuthenticationProviderOptions
建立 AuthenticationProvider 的選項。
屬性
supportsMultipleAccounts?: boolean
此提供者是否支援同時登入多個帳戶。如果未指定,預設值為 false。
AuthenticationProviderSessionOptions
屬性
account?: AuthenticationSessionAccountInformation
正在查詢的帳戶。如果傳入此參數,提供者應嘗試只回傳與此帳戶相關的工作階段。
AuthenticationSession
代表目前登入使用者的工作階段。
屬性
存取權杖。此權杖應用於對服務的請求進行驗證。由 OAuth 推廣。
account: AuthenticationSessionAccountInformation
與工作階段相關聯的帳戶。
驗證工作階段的識別碼。
ID 權杖。此權杖包含有關使用者的身分資訊。由 OpenID Connect 推廣。
由工作階段存取權杖授予的權限。可用範圍由 AuthenticationProvider 定義。
AuthenticationSessionAccountInformation
與 AuthenticationSession 相關聯的帳戶資訊。
屬性
帳戶的唯一識別碼。
帳戶的人類可讀名稱。
AuthenticationSessionsChangeEvent
當 AuthenticationSession 新增、移除或變更時所觸發的 Event。
屬性
provider: AuthenticationProviderInformation
工作階段已變更的 AuthenticationProvider。
AuthenticationWwwAuthenticateRequest
代表基於 WWW-Authenticate 標頭值建立工作階段的參數。當 API 回傳 401 並附帶 WWW-Authenticate 標頭(指示需要額外驗證)時使用。詳細資訊將傳遞至驗證提供者以建立工作階段。
- 注意 - 授權提供者必須支援處理挑戰,特別是此 WWW-Authenticate 值中的挑戰。
- 注意 - 有關 WWW-Authenticate 的更多資訊,請參閱 https://mdn.club.tw/docs/Web/HTTP/Reference/Headers/WWW-Authenticate
屬性
fallbackScopes?: readonly string[]
如果 WWW-Authenticate 標頭中找不到任何範圍時使用的後備範圍。
觸發此挑戰的原始 WWW-Authenticate 標頭值。這將由驗證提供者解析,以提取必要的挑戰資訊。
AutoClosingPair
描述字串對,其中輸入開頭字串時會自動插入結尾字串。
屬性
輸入開頭字串時會自動插入的結尾字串。
notIn?: SyntaxTokenType[]
一組不應自動關閉配對的權杖。
會觸發自動插入結尾字串的字串。
BranchCoverage
包含 StatementCoverage 分支的覆蓋率資訊。
建構函式
new BranchCoverage(executed: number | boolean, location?: Range | Position, label?: string): BranchCoverage
| 參數 | 說明 |
|---|---|
| executed: number | boolean | 此分支被執行的次數,或者如果不清楚確切計數則為指示是否已執行的布林值。如果為零或 false,該分支將被標記為未覆蓋。 |
| location?: Range | Position | 分支位置。 |
| label?: string | |
| 回傳值 | 說明 |
| BranchCoverage |
屬性
此分支被執行的次數,或者如果不清楚確切計數則為指示是否已執行的布林值。如果為零或 false,該分支將被標記為未覆蓋。
分支的標籤,用於「未採取 ${label} 分支」等情境中。
分支位置。
Breakpoint
所有中斷點類型的基礎類別。
建構函式
new Breakpoint(enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): Breakpoint
建立新中斷點
| 參數 | 說明 |
|---|---|
| enabled?: boolean | 是否啟用中斷點。 |
| condition?: string | 條件中斷點的運算式 |
| hitCondition?: string | 控制忽略多少次中斷點命中的運算式 |
| logMessage?: string | 命中中斷點時要顯示的日誌訊息 |
| 回傳值 | 說明 |
| Breakpoint |
屬性
條件中斷點的選擇性運算式。
是否啟用中斷點。
控制忽略多少次中斷點命中的選擇性運算式。
中斷點的唯一 ID。
命中此中斷點時記錄的選擇性訊息。{} 內的內嵌運算式會由偵錯介面卡進行插值。
BreakpointsChangeEvent
描述 中斷點 變更的事件。
屬性
added: readonly Breakpoint[]
已新增的中斷點。
changed: readonly Breakpoint[]
已變更的中斷點。
removed: readonly Breakpoint[]
已移除的中斷點。
CallHierarchyIncomingCall
代表連入呼叫,例如方法或建構函式的呼叫者。
建構函式
new CallHierarchyIncomingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyIncomingCall
建立新的呼叫物件。
| 參數 | 說明 |
|---|---|
| item: CallHierarchyItem | 發起呼叫的項目。 |
| fromRanges: Range[] | 呼叫出現的範圍。 |
| 回傳值 | 說明 |
| CallHierarchyIncomingCall |
屬性
from: CallHierarchyItem
發起呼叫的項目。
fromRanges: Range[]
呼叫出現的範圍。這是相對於 this.from 所表示的呼叫者的範圍。
CallHierarchyItem
在呼叫階層架構中代表程式設計結構(如函式或建構函式)。
建構函式
new CallHierarchyItem(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range): CallHierarchyItem
建立新的呼叫階層項目。
| 參數 | 說明 |
|---|---|
| kind: SymbolKind | |
| name: string | |
| detail: string | |
| uri: Uri | |
| range: Range | |
| selectionRange: Range | |
| 回傳值 | 說明 |
| CallHierarchyItem |
屬性
此項目的更多詳細資訊,例如函式的簽章。
kind: SymbolKind
此項目的種類。
此項目的名稱。
range: Range
包含此符號的範圍,不包括前導/尾隨空白,但包含其他所有內容,例如註解和程式碼。
selectionRange: Range
選取此符號時應選取並顯示的範圍,例如函式名稱。必須包含在 range 中。
tags?: readonly SymbolTag[]
此項目的標記。
uri: Uri
此項目的資源識別碼。
CallHierarchyOutgoingCall
代表連出呼叫,例如從方法呼叫 getter,或從建構函式呼叫方法等。
建構函式
new CallHierarchyOutgoingCall(item: CallHierarchyItem, fromRanges: Range[]): CallHierarchyOutgoingCall
建立新的呼叫物件。
| 參數 | 說明 |
|---|---|
| item: CallHierarchyItem | 被呼叫的項目 |
| fromRanges: Range[] | 呼叫出現的範圍。 |
| 回傳值 | 說明 |
| CallHierarchyOutgoingCall |
屬性
fromRanges: Range[]
此項目被呼叫的範圍。這是相對於呼叫者的範圍,例如傳遞給 provideCallHierarchyOutgoingCalls 的項目,而不是 this.to。
被呼叫的項目。
CallHierarchyProvider
呼叫階層提供者介面描述了延伸模組與呼叫階層功能之間的合約,該功能允許瀏覽函式、方法、建構函式等的呼叫與被呼叫者。
方法
prepareCallHierarchy(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<CallHierarchyItem | CallHierarchyItem[]>
透過回傳給定文件和位置所指出的項目來啟動呼叫階層。此項目將作為進入呼叫圖的入口。當給定位置沒有項目時,提供者應回傳 undefined 或 null。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<CallHierarchyItem | CallHierarchyItem[]> | 一個或多個呼叫階層項目,或解析為此類項目的 thenable。可透過回傳 |
provideCallHierarchyIncomingCalls(item: CallHierarchyItem, token: CancellationToken): ProviderResult<CallHierarchyIncomingCall[]>
為項目提供所有連入呼叫,例如方法的全部呼叫者。以圖論術語來說,這描述了呼叫圖內有方向且已註釋的邊,例如給定項目是起始節點,結果是可以到達的節點。
| 參數 | 說明 |
|---|---|
| item: CallHierarchyItem | 應計算連入呼叫的階層項目。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<CallHierarchyIncomingCall[]> | 一組連入呼叫或解析為此類呼叫的 thenable。可透過回傳 |
provideCallHierarchyOutgoingCalls(item: CallHierarchyItem, token: CancellationToken): ProviderResult<CallHierarchyOutgoingCall[]>
為項目提供所有連出呼叫,例如從給定項目對函式、方法或建構函式的呼叫。以圖論術語來說,這描述了呼叫圖內有方向且已註釋的邊,例如給定項目是起始節點,結果是可以到達的節點。
| 參數 | 說明 |
|---|---|
| item: CallHierarchyItem | 應計算連出呼叫的階層項目。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<CallHierarchyOutgoingCall[]> | 一組連出呼叫或解析為此類呼叫的 thenable。可透過回傳 |
CancellationError
應被用來發送操作取消訊號的錯誤類型。
此類型可用於回應 取消權杖 被取消時,或操作被其執行者取消時。
建構函式
new CancellationError(): CancellationError
建立新的取消錯誤。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| CancellationError |
CancellationToken
取消權杖會傳遞給非同步或長時間執行的操作以要求取消,例如取消完成項目的請求,因為使用者持續輸入。
要取得 CancellationToken 的實例,請使用 CancellationTokenSource。
屬性
isCancellationRequested: boolean
當權杖已取消時為 true,否則為 false。
onCancellationRequested: Event<any>
在取消時觸發的 Event。
CancellationTokenSource
取消來源會建立並控制 取消權杖。
建構函式
new CancellationTokenSource(): CancellationTokenSource
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| CancellationTokenSource |
屬性
token: CancellationToken
此來源的取消權杖。
方法
發送權杖取消訊號。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
處置物件並釋放資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
CharacterPair
兩個字元的元組,例如一對開頭和結尾括號。
CharacterPair: [string, string]
ChatContext
傳遞給參與者的額外內容。
屬性
history: ReadonlyArray<ChatRequestTurn | ChatResponseTurn>
目前聊天工作階段中迄今為止的所有聊天訊息。目前僅包含當前參與者的聊天訊息。
ChatErrorDetails
代表聊天請求的錯誤結果。
屬性
顯示給使用者的錯誤訊息。
如果設為 true,回應將被部分模糊化。
ChatFollowup
參與者建議的後續問題。
屬性
預設情況下,後續問題會發送給相同的參與者/指令。但可以設定此屬性來呼叫不同的指令。
顯示給使用者的標題。當未指定此項時,將顯示預設的提示。
預設情況下,後續問題會發送給相同的參與者/指令。但可以設定此屬性來呼叫 ID 不同的參與者。後續問題只能呼叫由相同延伸模組貢獻的參與者。
要發送給聊天的訊息。
ChatFollowupProvider
將在每次請求後調用一次,以取得建議的後續問題顯示給使用者。使用者可以點擊後續問題以將其發送至聊天。
方法
provideFollowups(result: ChatResult, context: ChatContext, token: CancellationToken): ProviderResult<ChatFollowup[]>
為給定的結果提供後續問題。
| 參數 | 說明 |
|---|---|
| result: ChatResult | 此物件具有與從參與者回呼回傳的結果相同的屬性,包括 |
| context: ChatContext | 傳遞給參與者的額外內容。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<ChatFollowup[]> |
ChatLanguageModelToolReference
使用者手動附加到其請求的工具參考,可以使用 #-語法內嵌,或透過迴紋針按鈕作為附件。
屬性
工具名稱。參考 lm.tools 中列出的工具。
range?: [start: number, end: number]
參考在 prompt 中的開始和結束索引。當未定義時,該參考不是提示文字的一部分。
注意 索引考慮了前導 #-字元,這意味著它們可以用來按原樣修改提示。
ChatParticipant
使用者可以在聊天工作階段中透過 前綴呼叫聊天參與者。當它被呼叫時,它會處理聊天請求,並全權負責提供使用者回應。ChatParticipant 是使用 chat.createChatParticipant 建立的。
活動
onDidReceiveFeedback: Event<ChatResultFeedback>
每當收到結果的反饋時觸發的事件,例如使用者對結果進行按讚或倒讚時。
傳遞的 result 保證具有與之前從此聊天參與者處理常式回傳的結果相同的屬性。
屬性
followupProvider?: ChatFollowupProvider
此提供者將在每次請求後調用一次,以取得建議的後續問題。
iconPath?: IconPath
UI 中顯示的參與者圖示。
此參與者的唯一 ID。
requestHandler: ChatRequestHandler
此參與者的請求處理常式。
方法
處置此參與者並釋放資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
ChatParticipantToolToken
在處理聊天請求的內容中呼叫工具時,可以傳遞給 lm.invokeTool 的權杖。
ChatParticipantToolToken: never
ChatPromptReference
使用者新增至其聊天請求的值的參考。
屬性
此種參考的唯一識別碼。
此值在 LLM 提示中可能使用的描述。
range?: [start: number, end: number]
參考在 prompt 中的開始和結束索引。當未定義時,該參考不是提示文字的一部分。
注意 索引考慮了前導 #-字元,這意味著它們可以用來按原樣修改提示。
此參考的值。目前使用了 string | Uri | Location 類型,但將來可能會擴展。
ChatRequest
對聊天參與者的請求。
屬性
為此請求選擇的 [ChatCommand 命令](#_ChatCommand 命令)名稱。
model: LanguageModelChat
這是目前在 UI 中選擇的模型。延伸模組可以使用此模型,或使用 lm.selectChatModels 選擇另一個模型。請勿在請求生命週期之外持有它。
使用者輸入的提示。
有關此請求中使用的參考資訊儲存在 ChatRequest.references 中。
注意 參與者的 [ChatParticipant.name 名稱](#_ChatParticipant.name 名稱) 和 [ChatCommand.name 命令](#_ChatCommand.name 命令) 不是提示的一部分。
references: readonly ChatPromptReference[]
提示中參考的參考列表及其值。
注意 提示包含按原樣撰寫的參考,由參與者進一步修改提示(例如透過內嵌參考值或建立連結到包含解析值的標題)取決於參與者。參考按其在提示中的範圍倒序排列。這意味著提示中的最後一個參考是此列表中的第一個。這簡化了提示的字串處理。
在處理聊天請求的內容中呼叫工具時,可以傳遞給 lm.invokeTool 的權杖。這將工具呼叫關聯到聊天工作階段。
toolReferences: readonly ChatLanguageModelToolReference[]
使用者附加到其請求的工具列表。
當存在工具參考時,聊天參與者應使用 LanguageModelChatToolMode.Required 發出聊天請求,以強制語言模型產生工具輸入。然後,參與者可以使用 lm.invokeTool 來使用該工具,並將結果附加到其為使用者提示所發出的請求中。該工具可能會為使用者的請求貢獻有用的額外內容。
ChatRequestHandler
ChatRequestHandler: (request: ChatRequest, context: ChatContext, response: ChatResponseStream, token: CancellationToken) => ProviderResult<ChatResult | void>
ChatRequestTurn
代表聊天記錄中的使用者請求。
屬性
為此請求選擇的 [ChatCommand 命令](#_ChatCommand 命令)名稱。
此請求導向的聊天參與者 ID。
使用者輸入的提示。
有關此請求中使用的參考資訊儲存在 ChatRequestTurn.references 中。
注意 參與者的 [ChatParticipant.name 名稱](#_ChatParticipant.name 名稱) 和 [ChatCommand.name 命令](#_ChatCommand.name 命令) 不是提示的一部分。
references: ChatPromptReference[]
此訊息中使用的參考。
toolReferences: readonly ChatLanguageModelToolReference[]
附加到此請求的工具列表。
ChatResponseAnchorPart
代表聊天回應的一部分,是一個錨點,渲染為目標的連結。
建構函式
new ChatResponseAnchorPart(value: Uri | Location, title?: string): ChatResponseAnchorPart
建立新的 ChatResponseAnchorPart。
| 參數 | 說明 |
|---|---|
| value: Uri | Location | URI 或位置。 |
| title?: string | 與值一起渲染的選擇性標題。 |
| 回傳值 | 說明 |
| ChatResponseAnchorPart |
屬性
與值一起渲染的選擇性標題。
此錨點的目標。
ChatResponseCommandButtonPart
代表聊天回應的一部分,是一個執行指令的按鈕。
建構函式
new ChatResponseCommandButtonPart(value: Command): ChatResponseCommandButtonPart
建立新的 ChatResponseCommandButtonPart。
| 參數 | 說明 |
|---|---|
| value: Command | 點擊按鈕時將執行的指令。 |
| 回傳值 | 說明 |
| ChatResponseCommandButtonPart |
屬性
value: Command
點擊按鈕時將執行的指令。
ChatResponseFileTree
代表聊天回應中的檔案樹狀結構。
屬性
children?: ChatResponseFileTree[]
如果目前檔案樹是目錄,則為子檔案樹陣列。
檔案或目錄的名稱。
ChatResponseFileTreePart
代表聊天回應的一部分,是一個檔案樹。
建構函式
new ChatResponseFileTreePart(value: ChatResponseFileTree[], baseUri: Uri): ChatResponseFileTreePart
建立新的 ChatResponseFileTreePart。
| 參數 | 說明 |
|---|---|
| value: ChatResponseFileTree[] | 檔案樹資料。 |
| baseUri: Uri | 此檔案樹相對的基礎 URI。 |
| 回傳值 | 說明 |
| ChatResponseFileTreePart |
屬性
baseUri: Uri
此檔案樹相對的基礎 URI
value: ChatResponseFileTree[]
檔案樹資料。
ChatResponseMarkdownPart
代表格式化為 Markdown 的聊天回應的一部分。
建構函式
new ChatResponseMarkdownPart(value: string | MarkdownString): ChatResponseMarkdownPart
建立新的 ChatResponseMarkdownPart。
| 參數 | 說明 |
|---|---|
| value: string | MarkdownString | Markdown 字串或應解釋為 markdown 的字串。不支援 MarkdownString.isTrusted 的布林形式。 |
| 回傳值 | 說明 |
| ChatResponseMarkdownPart |
屬性
value: MarkdownString
Markdown 字串或應解釋為 markdown 的字串。
ChatResponsePart
代表不同的聊天回應類型。
ChatResponsePart: ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseProgressPart | ChatResponseReferencePart | ChatResponseCommandButtonPart
ChatResponseProgressPart
代表聊天回應的一部分,是一個進度訊息。
建構函式
new ChatResponseProgressPart(value: string): ChatResponseProgressPart
建立新的 ChatResponseProgressPart。
| 參數 | 說明 |
|---|---|
| value: string | 進度訊息 |
| 回傳值 | 說明 |
| ChatResponseProgressPart |
屬性
進度訊息
ChatResponseReferencePart
代表聊天回應的一部分,是一個參考,與內容分開渲染。
建構函式
new ChatResponseReferencePart(value: Uri | Location, iconPath?: IconPath): ChatResponseReferencePart
建立新的 ChatResponseReferencePart。
| 參數 | 說明 |
|---|---|
| value: Uri | Location | URI 或位置 |
| iconPath?: IconPath | UI 中顯示的參考圖示 |
| 回傳值 | 說明 |
| ChatResponseReferencePart |
屬性
iconPath?: IconPath
參考的圖示。
參考目標。
ChatResponseStream
ChatResponseStream 是參與者如何將內容回傳給聊天檢視。它提供了多種用於串流傳輸不同類型內容的方法,這些內容將以適當方式在聊天檢視中渲染。參與者可以使用其想要回傳內容類型的輔助方法,也可以實例化 ChatResponsePart 並使用通用的 ChatResponseStream.push 方法來回傳它。
方法
anchor(value: Uri | Location, title?: string): void
將錨點部分推送到此串流。push(new ChatResponseAnchorPart(value, title)) 的簡寫。錨點是對某種資源類型的內嵌參考。
button(command: Command): void
將指令按鈕部分推送到此串流。push(new ChatResponseCommandButtonPart(value, title)) 的簡寫。
| 參數 | 說明 |
|---|---|
| command: Command | 點擊按鈕時將執行的指令。 |
| 回傳值 | 說明 |
| void |
filetree(value: ChatResponseFileTree[], baseUri: Uri): void
將檔案樹部分推送到此串流。push(new ChatResponseFileTreePart(value)) 的簡寫。
| 參數 | 說明 |
|---|---|
| value: ChatResponseFileTree[] | 檔案樹資料。 |
| baseUri: Uri | 此檔案樹相對的基礎 URI。 |
| 回傳值 | 說明 |
| void |
markdown(value: string | MarkdownString): void
將 markdown 部分推送到此串流。push(new ChatResponseMarkdownPart(value)) 的簡寫。
| 參數 | 說明 |
|---|---|
| value: string | MarkdownString | Markdown 字串或應解釋為 markdown 的字串。不支援 MarkdownString.isTrusted 的布林形式。 |
| 回傳值 | 說明 |
| void |
將進度部分推送到此串流。push(new ChatResponseProgressPart(value)) 的簡寫。
| 參數 | 說明 |
|---|---|
| value: string | 進度訊息 |
| 回傳值 | 說明 |
| void |
push(part: ChatResponsePart): void
將部分推送到此串流。
| 參數 | 說明 |
|---|---|
| part: ChatResponsePart | 回應部分,渲染內容或元資料 |
| 回傳值 | 說明 |
| void |
reference(value: Uri | Location, iconPath?: IconPath): void
將參考推送到此串流。push(new ChatResponseReferencePart(value)) 的簡寫。
注意 參考不會與回應內嵌渲染。
ChatResponseTurn
代表聊天記錄中的聊天參與者回應。
屬性
此回應來源的指令名稱。
此回應來源的聊天參與者 ID。
response: ReadonlyArray<ChatResponseMarkdownPart | ChatResponseFileTreePart | ChatResponseAnchorPart | ChatResponseCommandButtonPart>
從聊天參與者收到的內容。僅表示實際內容(而非元資料)的串流部分會被表示。
result: ChatResult
從聊天參與者收到的結果。
ChatResult
聊天請求的結果。
屬性
errorDetails?: ChatErrorDetails
如果請求導致錯誤,此屬性定義錯誤詳細資訊。
此結果的任意元資料。可以是任何東西,但必須是 JSON 可字串化的。
ChatResultFeedback
代表結果的使用者反饋。
屬性
kind: ChatResultFeedbackKind
收到的反饋類型。
result: ChatResult
使用者提供反饋的 ChatResult。此物件具有與從參與者回呼回傳的結果相同的屬性,包括 metadata,但它不是同一個實例。
ChatResultFeedbackKind
代表收到的使用者反饋類型。
列舉成員
使用者將結果標記為無幫助。
使用者將結果標記為有幫助。
Clipboard
剪貼簿提供對系統剪貼簿的讀寫存取權。
方法
以文字格式讀取剪貼簿目前的內容。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<string> | 解析為字串的 Thenable 物件。 |
writeText(value: string): Thenable<void>
將文字寫入剪貼簿。
| 參數 | 說明 |
|---|---|
| value: string | |
| 回傳值 | 說明 |
| Thenable<void> | 於寫入完成時解析的 Thenable 物件。 |
CodeAction
建構函式
new CodeAction(title: string, kind?: CodeActionKind): CodeAction
| 參數 | 說明 |
|---|---|
| title: string | 程式碼動作的標題。 |
| kind?: CodeActionKind | 程式碼動作的類型。 |
| 回傳值 | 說明 |
| CodeAction |
屬性
command?: Command
此程式碼動作所執行的 Command。
如果此命令拋出例外狀況,編輯器會在目前的游標位置向使用者顯示該例外訊息。
diagnostics?: Diagnostic[]
此程式碼動作所解決的 診斷資訊。
標記該程式碼動作目前無法套用。
已停用的程式碼動作不會顯示在自動 燈泡 (lightbulb) 程式碼動作選單中。
當使用者請求特定類型的程式碼動作(例如重構)時,已停用的動作會在選單中以淡化形式顯示。
如果使用者有自動套用程式碼動作的 按鍵綁定 (keybinding),但僅傳回已停用的程式碼動作,編輯器將會顯示包含
reason的錯誤訊息。
| 參數 | 說明 |
|---|---|
| reason: string | 人類可讀的描述,說明為何該程式碼動作目前已停用。 此內容會顯示在程式碼動作的 UI 中。 |
edit?: WorkspaceEdit
此程式碼動作執行的 工作區編輯。
標記此為偏好的動作。偏好的動作由 自動修正 (auto fix) 命令使用,並可透過按鍵綁定指定。
如果快速修正能妥善解決潛在錯誤,則應標記為偏好。若重構動作是最合理的選擇,也應標記為偏好。
kind?: CodeActionKind
程式碼動作的 類型。
用於篩選程式碼動作。
此程式碼動作簡短且人類可讀的標題。
CodeActionContext
包含執行 程式碼動作 時,關於其內容的額外診斷資訊。
屬性
diagnostics: readonly Diagnostic[]
診斷資訊陣列。
only: CodeActionKind
請求傳回的動作類型。
非此類型的動作會在顯示於 燈泡 之前被過濾掉。
triggerKind: CodeActionTriggerKind
請求程式碼動作的原因。
CodeActionKind
程式碼動作的類型。
類型是階層式的識別符列表,以 . 分隔,例如 "refactor.extract.function"。
程式碼動作類型由編輯器用於 UI 元素,例如重構內容選單。使用者也可以透過 editor.action.codeAction 命令觸發特定類型的程式碼動作。
靜態
Empty: CodeActionKind
空白類型。
Notebook: CodeActionKind
適用於整個筆記本範圍的所有程式碼動作的基礎類型。使用此類型的 CodeActionKinds 應始終以 notebook. 開頭。
這要求必須為其建立新的 CodeActions,並透過擴充套件貢獻。原有的類型無法單純加上 notebook. 前綴,因為該功能僅限於全筆記本範圍。
Notebook CodeActionKinds 可以用以下任一方式初始化(兩者都會產生 notebook.source.xyz)
const newKind = CodeActionKind.Notebook.append(CodeActionKind.Source.append('xyz').value)const newKind = CodeActionKind.Notebook.append('source.xyz')
範例類型/動作
notebook.source.organizeImports(可能會將所有匯入移至新的頂端儲存格)notebook.source.normalizeVariableNames(可能會將所有變數重新命名為標準化大小寫格式)
QuickFix: CodeActionKind
快速修正動作的基礎類型:quickfix。
快速修正動作用於解決程式碼中的問題,並顯示在一般的程式碼動作內容選單中。
Refactor: CodeActionKind
重構動作的基礎類型:refactor
重構動作會顯示在重構內容選單中。
RefactorExtract: CodeActionKind
重構提取動作的基礎類型:refactor.extract
提取動作範例
- 提取方法
- 提取函式
- 提取變數
- 從類別中提取介面
- ...
RefactorInline: CodeActionKind
重構內嵌動作的基礎類型:refactor.inline
內嵌動作範例
- 內嵌函式
- 內嵌變數
- 內嵌常數
- ...
RefactorMove: CodeActionKind
重構移動動作的基礎類型:refactor.move
移動動作範例
- 將函式移動到新檔案
- 在類別之間移動屬性
- 將方法移動到基礎類別
- ...
RefactorRewrite: CodeActionKind
重構改寫動作的基礎類型:refactor.rewrite
改寫動作範例
- 將 JavaScript 函式轉換為類別
- 新增或移除參數
- 封裝欄位
- 將方法改為靜態
- ...
Source: CodeActionKind
原始碼動作的基礎類型:source
原始碼動作適用於整個檔案。它們必須明確請求,且不會顯示在一般的 燈泡 選單中。原始碼動作可以使用 editor.codeActionsOnSave 在儲存時執行,也會顯示在 source 內容選單中。
SourceFixAll: CodeActionKind
自動修正原始碼動作的基礎類型:source.fixAll。
全部修正動作會自動修正錯誤,且該修正通常非常明確,無需使用者介入。它們不應隱藏錯誤或執行不安全的修正,例如產生新的類型或類別。
SourceOrganizeImports: CodeActionKind
組織匯入原始碼動作的基礎類型:source.organizeImports。
建構函式
new CodeActionKind(value: string): CodeActionKind
私有建構函式,請使用靜態的 CodeActionKind.XYZ 從現有的程式碼動作類型衍生。
| 參數 | 說明 |
|---|---|
| value: string | 該類型的數值,例如 |
| 回傳值 | 說明 |
| CodeActionKind |
屬性
類型的字串值,例如 "refactor.extract.function"。
方法
append(parts: string): CodeActionKind
透過附加更具體的選取器到目前類型,來建立新類型。
不會修改目前的類型。
| 參數 | 說明 |
|---|---|
| parts: string | |
| 回傳值 | 說明 |
| CodeActionKind |
contains(other: CodeActionKind): boolean
檢查 other 是否為此 CodeActionKind 的子類型。
例如,類型 "refactor.extract" 包含 "refactor.extract" 和 "refactor.extract.function",但不包含 "unicorn.refactor.extract"、"refactor.extractAll" 或 "refactor"。
| 參數 | 說明 |
|---|---|
| other: CodeActionKind | 要檢查的類型。 |
| 回傳值 | 說明 |
| boolean |
intersects(other: CodeActionKind): boolean
檢查此程式碼動作類型是否與 other 相交。
例如,類型 "refactor.extract" 與 refactor、"refactor.extract" 和 "refactor.extract.function" 相交,但不與 "unicorn.refactor.extract" 或 "refactor.extractAll" 相交。
| 參數 | 說明 |
|---|---|
| other: CodeActionKind | 要檢查的類型。 |
| 回傳值 | 說明 |
| boolean |
CodeActionProvider<T>
提供程式碼的內容相關動作。程式碼動作通常用於修正問題或美化/重構程式碼。
程式碼動作透過以下幾種方式呈現給使用者:
方法
provideCodeActions(document: TextDocument, range: Range | Selection, context: CodeActionContext, token: CancellationToken): ProviderResult<Array<Command | T>>
取得文件中給定範圍的程式碼動作。
僅回傳對使用者請求之範圍相關的程式碼動作。同時請注意回傳的程式碼動作在 UI 中的呈現方式。例如,燈泡小工具和 重構 命令會以列表顯示回傳的動作,因此不要回傳過多導致使用者不知所措的程式碼動作。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| range: Range | Selection | 呼叫命令時的選擇器或範圍。如果是在目前啟用的編輯器中請求動作,這將始終是一個 選取範圍。 |
| context: CodeActionContext | 提供請求哪些程式碼動作的額外資訊。您可以使用此資訊來查看編輯器正在請求特定類型的程式碼動作,以便回傳更相關的動作,並避免回傳編輯器將會丟棄的不相關動作。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Array<Command | T>> | 程式碼動作陣列,例如快速修正或重構動作。若無結果,可回傳 出於舊版相容性考慮,我們也支援回傳 |
resolveCodeAction(codeAction: T, token: CancellationToken): ProviderResult<T>
針對給定的程式碼動作,填入其 edit 屬性。對所有其他屬性(如標題)的變更將會被忽略。已具有 edit 的程式碼動作將不會被解析。
注意:回傳命令而非程式碼動作的程式碼動作提供者,無法成功實作此函式。回傳命令的做法已被棄用,應改為回傳程式碼動作。
| 參數 | 說明 |
|---|---|
| codeAction: T | 程式碼動作。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 已解析的程式碼動作,或解析為該動作的 Thenable 物件。回傳給定的 |
CodeActionProviderMetadata
關於 CodeActionProvider 所提供程式碼動作類型的中繼資料。
屬性
documentation?: ReadonlyArray<{command: Command, kind: CodeActionKind}>
程式碼動作類別的靜態文件說明。
如果符合下列任一情況,來自提供者的文件說明將顯示在程式碼動作選單中:
編輯器請求
kind類型的程式碼動作。在這種情況下,編輯器會顯示最符合請求類型的文件說明。例如,如果提供者同時擁有Refactor和RefactorExtract的文件說明,當使用者請求RefactorExtract的程式碼動作時,編輯器會使用RefactorExtract的文件說明,而非Refactor。提供者回傳了任何
kind類型的程式碼動作。
每個提供者最多顯示一項文件條目。
providedCodeActionKinds?: readonly CodeActionKind[]
CodeActionProvider 可能回傳的 CodeActionKinds 列表。
此列表用於判斷是否應呼叫給定的 CodeActionProvider。為了避免不必要的計算,每個 CodeActionProvider 都應使用 providedCodeActionKinds。類型列表可以是通用的,例如 [CodeActionKind.Refactor],也可以列出所有提供的類型,例如 [CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...]。
CodeActionTriggerKind
請求程式碼動作的原因。
列舉成員
由使用者或擴充套件明確請求程式碼動作。
自動請求程式碼動作。
這通常發生在檔案中的目前選取範圍變更時,但也可能在檔案內容變更時觸發。
CodeLens
程式碼透鏡 (Code lens) 代表應該與原始碼文字一起顯示的 命令,例如參考計數、執行測試的方法等。
當未關聯任何命令時,程式碼透鏡為 未解析 狀態。出於效能考量,建立與解析程式碼透鏡應分為兩個階段進行。
參見
建構函式
new CodeLens(range: Range, command?: Command): CodeLens
屬性
command?: Command
此程式碼透鏡所代表的命令。
當有關聯的命令時為 true。
range: Range
此程式碼透鏡有效範圍。應僅佔單行。
CodeLensProvider<T>
程式碼透鏡提供者會將 命令 新增至原始碼文字。命令將顯示為原始碼文字之間專用的水平線。
活動
onDidChangeCodeLenses?: Event<void>
選用事件,用以通知此提供者的程式碼透鏡已變更。
方法
provideCodeLenses(document: TextDocument, token: CancellationToken): ProviderResult<T[]>
計算 透鏡 列表。此呼叫應儘速回傳;若計算命令的成本較高,實作者應只回傳已設定範圍的程式碼透鏡物件,並實作 解析 (resolve)。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 程式碼透鏡陣列,或解析為此陣列的 Thenable 物件。若無結果,可回傳 |
resolveCodeLens(codeLens: T, token: CancellationToken): ProviderResult<T>
此函式會針對每個可見的程式碼透鏡呼叫,通常在捲動時以及呼叫 計算 透鏡之後。
| 參數 | 說明 |
|---|---|
| codeLens: T | 必須解析的程式碼透鏡。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 給定且已解析的程式碼透鏡,或解析為該透鏡的 Thenable 物件。 |
Color
代表 RGBA 空間中的顏色。
建構函式
new Color(red: number, green: number, blue: number, alpha: number): Color
建立新的顏色執行個體。
| 參數 | 說明 |
|---|---|
| red: number | 紅色分量。 |
| green: number | 綠色分量。 |
| blue: number | 藍色分量。 |
| alpha: number | Alpha 分量。 |
| 回傳值 | 說明 |
| Color |
屬性
此顏色的 Alpha 分量,範圍為 [0-1]。
此顏色的藍色分量,範圍為 [0-1]。
此顏色的綠色分量,範圍為 [0-1]。
此顏色的紅色分量,範圍為 [0-1]。
ColorInformation
代表文件中的顏色範圍。
建構函式
new ColorInformation(range: Range, color: Color): ColorInformation
建立新的顏色範圍。
| 參數 | 說明 |
|---|---|
| range: Range | 顏色出現的範圍。不得為空白。 |
| color: Color | 顏色的值。 |
| 回傳值 | 說明 |
| ColorInformation |
屬性
color: Color
此顏色範圍的實際顏色值。
range: Range
文件中出現此顏色的範圍。
ColorPresentation
顏色呈現物件描述了 顏色 應如何以文字呈現,以及在原始碼中引用它需要哪些編輯。
對於某些語言,一種顏色可以有多種呈現方式,例如 CSS 可以用常數 Red、十六進位值 #ff0000,或 rgba 和 hsla 格式來呈現紅色。在 C# 中則適用其他呈現方式,例如 System.Drawing.Color.Red。
建構函式
new ColorPresentation(label: string): ColorPresentation
建立新的顏色呈現。
| 參數 | 說明 |
|---|---|
| label: string | 此顏色呈現的標籤。 |
| 回傳值 | 說明 |
| ColorPresentation |
屬性
additionalTextEdits?: TextEdit[]
此顏色呈現的標籤。它將顯示在顏色選擇器標頭上。預設情況下,這也是選擇此顏色呈現時插入的文字。
textEdit?: TextEdit
ColorTheme
代表色彩佈景主題。
屬性
kind: ColorThemeKind
此色彩佈景主題的類型:淺色、深色、深色高對比和淺色高對比。
ColorThemeKind
代表色彩佈景主題類型。
列舉成員
淺色佈景主題。
深色佈景主題。
深色高對比佈景主題。
淺色高對比佈景主題。
Command
代表對命令的參考。提供一個用於在 UI 中表示該命令的標題,以及選擇性的引數陣列,這些引數會在觸發時傳遞給命令處理函式。
屬性
呼叫命令處理函式時應傳入的引數。
實際命令處理函式的識別碼。
命令的標題,例如 儲存 (save)。
在 UI 中顯示該命令時的工具提示。
Comment
留言會根據其提供方式,顯示在編輯器或留言面板中。
屬性
author: CommentAuthorInformation
留言的 作者資訊。
body: string | MarkdownString
人類可讀的留言內文。
留言的內容值 (context value)。這可用於提供特定於留言的動作。例如,給予一則留言內容值 editable。使用 menus 擴充點為 comments/comment/title 提供動作時,可以在 when 表達式中為 comment 鍵指定內容值,例如 comment == editable。
"contributes": {
"menus": {
"comments/comment/title": [
{
"command": "extension.deleteComment",
"when": "comment == editable"
}
]
}
}
這將僅針對內容值為 editable 的留言顯示 extension.deleteComment 動作。
選用的標籤,用以描述 Comment。若存在,該標籤將呈現在 authorName 旁邊。
mode: CommentMode
留言的 留言模式。
reactions?: CommentReaction[]
留言 的選用反應 (reactions)。
將顯示在留言中的選用時間戳記。日期將根據使用者的地區設定和喜好設定進行格式化。
CommentAuthorInformation
留言 的作者資訊。
屬性
iconPath?: Uri
作者的選用圖示路徑。
留言作者的顯示名稱。
CommentController
留言控制器能夠為編輯器提供 留言 支援,並為使用者提供與留言互動的各種方式。
屬性
commentingRangeProvider?: CommentingRangeProvider
選用的留言範圍提供者。為任何給定的資源 URI 提供支援留言的 範圍 列表。
若未提供,使用者將無法留下任何留言。
此留言控制器的 ID。
此留言控制器人類可讀的標籤。
options?: CommentOptions
留言控制器選項。
reactionHandler?: (comment: Comment, reaction: CommentReaction) => Thenable<void>
用於在 留言 上建立與刪除反應的選用反應處理常式。
| 參數 | 說明 |
|---|---|
| comment: Comment | |
| reaction: CommentReaction | |
| 回傳值 | 說明 |
| Thenable<void> |
方法
createCommentThread(uri: Uri, range: Range, comments: readonly Comment[]): CommentThread
建立一個 留言執行緒。留言執行緒一旦建立,將會顯示在可見的文字編輯器(如果資源相符)以及留言面板中。
| 參數 | 說明 |
|---|---|
| uri: Uri | 執行緒建立所在文件的 URI。 |
| range: Range | 留言執行緒位於文件中的範圍。 |
| comments: readonly Comment[] | 執行緒中依序排列的留言。 |
| 回傳值 | 說明 |
| CommentThread |
處置此留言控制器。
一旦處置,由此留言控制器建立的所有 留言執行緒 也將從編輯器和留言面板中移除。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
CommentingRangeProvider
留言控制器 的留言範圍提供者。
方法
provideCommentingRanges(document: TextDocument, token: CancellationToken): ProviderResult<Range[] | CommentingRanges>
提供允許建立新留言執行緒的範圍列表,或對給定文件回傳 null。
| 參數 | 說明 |
|---|---|
| document: TextDocument | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| ProviderResult<Range[] | CommentingRanges> |
CommentingRanges
CommentingRangeProvider 啟用留言功能的範圍。
屬性
啟用在沒有特定範圍的情況下對檔案新增留言。
ranges?: Range[]
允許建立新留言執行緒的範圍。
CommentMode
留言 的留言模式。
列舉成員
顯示留言編輯器。
顯示留言的預覽。
CommentOptions
屬性
當留言輸入框獲得焦點時,顯示為預留位置的選用字串。
當留言輸入框摺疊時,顯示在上面的選用字串。
CommentReaction
留言 的反應。
屬性
留言的 作者 是否已對此反應做出回應。
已對此反應做出回應的使用者數量。
iconPath: string | Uri
顯示在 UI 中的反應圖示。
反應的人類可讀標籤。
CommentReply
註冊於 comments/commentThread/context 的動作之命令引數。
屬性
留言編輯器中的值。
thread: CommentThread
使用中的 留言執行緒。
CommentRule
描述語言的留言規則。
屬性
blockComment?: CharacterPair
區塊留言字元對,例如 /* 區塊留言 */
lineComment?: string | LineCommentRule
行留言標記,例如 // 這是留言
CommentThread
代表文件中特定範圍內對話的 留言 集合。
屬性
canReply: boolean | CommentAuthorInformation
執行緒是否支援回覆。預設為 true。
collapsibleState: CommentThreadCollapsibleState
開啟文件時,執行緒應摺疊還是展開。預設為 Collapsed (摺疊)。
comments: readonly Comment[]
執行緒中依序排列的留言。
留言執行緒的內容值。這可用於提供特定於執行緒的動作。例如,給予留言執行緒內容值 editable。使用 menus 擴充點為 comments/commentThread/title 提供動作時,可以在 when 表達式中為 commentThread 鍵指定內容值,例如 commentThread == editable。
"contributes": {
"menus": {
"comments/commentThread/title": [
{
"command": "extension.deleteCommentThread",
"when": "commentThread == editable"
}
]
}
}
這將僅針對內容值為 editable 的留言執行緒顯示 extension.deleteCommentThread 動作。
描述 留言執行緒 的選用人類可讀標籤。
range: Range
留言執行緒位於文件中的範圍。執行緒圖示將顯示在該範圍的最後一行。當設定為 undefined 時,留言將與整個檔案關聯,而非特定範圍。
state?: CommentThreadState
留言執行緒的選用狀態,可能會影響留言的顯示方式。
uri: Uri
執行緒建立所在文件的 URI。
方法
處置此留言執行緒。
一旦處置,此留言執行緒將在適當時從可見的編輯器和留言面板中移除。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
CommentThreadCollapsibleState
留言執行緒 的摺疊狀態。
列舉成員
判定項目為摺疊狀態。
判定項目為展開狀態。
CommentThreadState
留言執行緒的狀態。
列舉成員
未解決的執行緒狀態。
已解決的執行緒狀態。
CompletionContext
包含關於觸發 完成提供者 的內容之額外資訊。
屬性
觸發完成項提供者的字元。
如果提供者不是由字元觸發,則為 undefined。
當觸發完成提供者時,觸發字元已存在於文件中。
triggerKind: CompletionTriggerKind
完成是如何被觸發的。
CompletionItem
完成項代表一個文字片段,用於建議完成正在輸入的文字。
僅透過 標籤 建立完成項就已足夠。在該情況下,完成項會以該標籤或 插入文字 取代游標前的 單字。否則,將使用給定的 編輯。
在編輯器中選擇完成項時,其定義或合成的文字編輯將套用於 所有 游標/選取範圍,而 額外文字編輯 則會按提供方式套用。
參見
建構函式
new CompletionItem(label: string | CompletionItemLabel, kind?: CompletionItemKind): CompletionItem
建立一個新的完成項。
完成項必須至少具有一個 標籤,該標籤將用作插入文字以及排序與過濾。
| 參數 | 說明 |
|---|---|
| label: string | CompletionItemLabel | 完成項的標籤。 |
| kind?: CompletionItemKind | 完成項的 類型。 |
| 回傳值 | 說明 |
| CompletionItem |
屬性
additionalTextEdits?: TextEdit[]
command?: Command
插入此完成項 之後 執行的選用 命令。注意:對目前文件的額外修改應透過 additionalTextEdits 屬性描述。
當完成項啟用時,按下這些字元會先接受該完成,然後鍵入該字元。注意:所有提交字元應為 長度=1,多餘的字元將被忽略。
人類可讀的字串,包含此項目的額外資訊,例如類型或符號資訊。
documentation?: string | MarkdownString
代表說明文件註解的人類可讀字串。
insertText?: string | SnippetString
選擇此完成項時,應插入文件中的字串或程式碼片段。若為 falsy (無值),則使用 標籤。
保持 insertText 的空白字元原樣。預設情況下,編輯器會調整新行的開頭空白,使其符合接受該項目的行之縮排 — 將此設定為 true 可防止此行為。
kind?: CompletionItemKind
此完成項的類型。編輯器會根據類型選擇圖示。
label: string | CompletionItemLabel
此完成項的標籤。預設情況下,這也是選擇此完成項時插入的文字。
顯示時預先選擇此項目。注意:每次只能選擇一個完成項,且編輯器會決定選擇哪一個。規則是選擇匹配度最高項目的 第一個。
range?: Range | {inserting: Range, replacing: Range}
tags?: readonly CompletionItemTag[]
此完成項的標籤。
textEdit?: TextEdit
- 已棄用 - 改用
CompletionItem.insertText和CompletionItem.range。
選擇此完成項時套用到文件的 編輯。提供編輯內容時,insertText 的值將被忽略。
CompletionItemKind
完成項類型。
列舉成員
Text 完成項類型。
Method 完成項類型。
Function 完成項類型。
Constructor 完成項類型。
Field 完成項類型。
Variable 完成項類型。
Class 完成項類型。
Interface 完成項類型。
Module 完成項類型。
Property 完成項類型。
Unit 完成項類型。
Value 完成項類型。
Enum 完成項類型。
Keyword 完成項類型。
Snippet 完成項類型。
Color 完成項類型。
File 完成項類型。
Reference 完成項類型。
Folder 完成項類型。
EnumMember 補全項目類型。
Constant 補全項目類型。
Struct 補全項目類型。
Event 補全項目類型。
Operator 補全項目類型。
TypeParameter 補全項目類型。
User 補全項目類型。
Issue 補全項目類型。
CompletionItemLabel
補全項目的結構化標籤。
屬性
一個選擇性的字串,呈現於 CompletionItemLabel.detail 之後,樣式較不明顯。應用於完整限定名稱或檔案路徑。
一個選擇性的字串,直接呈現於 label 之後,中間沒有空格,樣式較不明顯。應用於函式簽章或型別註解。
此補全項目的標籤。
預設情況下,這也是選定此補全時所插入的文字。
CompletionItemProvider<T>
補全項目提供者介面定義了擴充功能與 IntelliSense 之間的合約。
提供者可以透過實作 resolveCompletionItem 函式,延遲計算 detail 和 documentation 屬性。但是,在解析過程中,不得變更初始排序和篩選所需的屬性,例如 sortText、filterText、insertText 和 range。
提供者會在使用者明確觸發手勢時,或是根據設定在輸入單字或觸發字元時(隱含地),被要求提供補全。
方法
provideCompletionItems(document: TextDocument, position: Position, token: CancellationToken, context: CompletionContext): ProviderResult<CompletionList<T> | T[]>
為指定的位置和文件提供補全項目。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| context: CompletionContext | 完成是如何被觸發的。 |
| 回傳值 | 說明 |
| ProviderResult<CompletionList<T> | T[]> | 補全項目的陣列、補全列表,或解析為上述兩者之一的 thenable。若要表示沒有結果,可回傳 |
resolveCompletionItem(item: T, token: CancellationToken): ProviderResult<T>
為給定的補全項目填入更多資料,例如 文件註解 (doc-comment) 或 詳細資訊。
編輯器只會解析一次補全項目。
注意,此函式是在補全項目已顯示在 UI 中,或是項目已被選定準備插入時呼叫。因此,任何會改變呈現方式(標籤、排序、篩選等)或(主要)插入行為(insertText)的屬性皆不得變更。
此函式可以填入 additionalTextEdits。然而,這意味著項目可能會在解析完成之前被插入,在這種情況下,編輯器將會盡力套用這些額外的文字編輯。
| 參數 | 說明 |
|---|---|
| item: T | 當前在 UI 中啟用的補全項目。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 已解析的補全項目,或是解析為該項目的 thenable。回傳給定的 |
CompletionItemTag
補全項目標籤是額外的註解,用於調整補全項目的呈現方式。
列舉成員
將補全項目呈現為已棄用,通常使用刪除線。
CompletionList<T>
代表要呈現在編輯器中的補全項目集合。
建構函式
new CompletionList<T extends CompletionItem>(items?: T[], isIncomplete?: boolean): CompletionList<T>
建立新的補全列表。
| 參數 | 說明 |
|---|---|
| items?: T[] | 補全項目。 |
| isIncomplete?: boolean | 列表尚未完成。 |
| 回傳值 | 說明 |
| CompletionList<T> |
屬性
此列表未完成。繼續輸入應會導致重新計算此列表。
補全項目。
CompletionTriggerKind
補全提供者被觸發的方式
列舉成員
補全正常被觸發。
補全由觸發字元所觸發。
TriggerForIncompleteCompletions: 2
由於目前的補全列表未完成,補全被重新觸發
ConfigurationChangeEvent
描述組態變更的事件
方法
affectsConfiguration(section: string, scope?: ConfigurationScope): boolean
檢查給定章節是否已變更。若提供了範圍,則檢查該範圍內的資源之章節是否已變更。
| 參數 | 說明 |
|---|---|
| section: string | 組態名稱,支援點號分隔名稱。 |
| scope?: ConfigurationScope | 要檢查的範圍。 |
| 回傳值 | 說明 |
| boolean | 若給定章節已變更,則為 |
ConfigurationScope
組態範圍可以是
- 代表資源的 Uri
- 代表開啟之文字文件的 TextDocument
- 代表工作區資料夾的 WorkspaceFolder
- 包含以下內容的物件
uri:文字文件的選擇性 UrilanguageId:文字文件的語言識別碼
ConfigurationScope: Uri | TextDocument | WorkspaceFolder | {languageId: string, uri: Uri}
ConfigurationTarget
組態目標
列舉成員
全域組態
工作區組態
工作區資料夾組態
CustomDocument
代表由 CustomEditorProvider 所使用的自訂文件。
自訂文件僅在給定的 CustomEditorProvider 內使用。CustomDocument 的生命週期由編輯器管理。當不再有 CustomDocument 的參考時,它將會被處置 (dispose)。
屬性
uri: Uri
此文件相關聯的 uri。
方法
處置自訂文件。
當沒有更多參考指向特定的 CustomDocument 時(例如,當所有與該文件關聯的編輯器皆已關閉時),編輯器會呼叫此函式。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
CustomDocumentBackup
CustomDocument 的備份。
屬性
備份的唯一識別碼。
當從備份開啟自訂編輯器時,此 ID 會傳回給您的擴充功能中的 openCustomDocument。
方法
刪除目前的備份。
當編輯器明確指出不再需要目前備份時,編輯器會呼叫此函式,例如在建立新備份或儲存檔案時。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
CustomDocumentBackupContext
用於實作 CustomDocumentBackup 的額外資訊。
屬性
destination: Uri
建議寫入新備份的檔案位置。
請注意,您的擴充功能可以自由忽略此項,並使用自己的備份策略。
如果編輯器是針對當前工作區中的資源,destination 將會指向 ExtensionContext.storagePath 內的檔案。destination 的父資料夾可能不存在,因此請確保在寫入備份至該位置之前建立它。
CustomDocumentContentChangeEvent<T>
由擴充功能觸發的事件,用以向編輯器發出 CustomDocument 內容已變更的訊號。
屬性
變更所屬的文件。
CustomDocumentEditEvent<T>
由擴充功能觸發的事件,用以向編輯器發出 CustomDocument 已發生編輯的訊號。
屬性
編輯所屬的文件。
描述編輯動作的顯示名稱。
這將顯示於 UI 中供使用者進行復原/重作操作。
方法
重作編輯操作。
當使用者重作此編輯時,編輯器會呼叫此函式。若要實作 redo,您的擴充功能應將文件和編輯器恢復到此編輯透過 CustomEditorProvider.onDidChangeCustomDocument 加入編輯器內部編輯堆疊之後的狀態。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void | Thenable<void> |
復原編輯操作。
當使用者復原此編輯時,編輯器會呼叫此函式。若要實作 undo,您的擴充功能應將文件和編輯器恢復到此編輯透過 CustomEditorProvider.onDidChangeCustomDocument 加入編輯器內部編輯堆疊之前的狀態。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void | Thenable<void> |
CustomDocumentOpenContext
關於正在開啟之自訂文件的額外資訊。
屬性
用於還原文件的備份 ID,若無備份則為 undefined。
若提供此項目,您的擴充功能應從備份還原編輯器,而不是從使用者的工作區讀取檔案。
untitledDocumentData: Uint8Array
如果 URI 是無標題檔案,此欄位將會填入該檔案的位元組資料
若提供此項目,您的擴充功能應利用此位元組資料,而不是對傳入的 URI 執行檔案系統 API
CustomEditorProvider<T>
使用自訂文件模型的「可編輯自訂編輯器」之提供者。
自訂編輯器使用 CustomDocument 作為其文件模型,而不是 TextDocument。這賦予擴充功能對於編輯、儲存和備份等動作的完全控制權。
處理二進位檔案或更複雜的場景時,您應使用此類型的自訂編輯器。對於簡單的文字文件,請改用 CustomTextEditorProvider。
活動
onDidChangeCustomDocument: Event<CustomDocumentEditEvent<T>> | Event<CustomDocumentContentChangeEvent<T>>
發出訊號,表示自訂編輯器內發生了編輯。
只要自訂編輯器中發生編輯,您的擴充功能就必須觸發此事件。編輯可以是任何動作,從更改文字、裁切影像到重新排序列表皆可。您的擴充功能可以自由定義什麼是編輯,以及在每次編輯中儲存哪些資料。
觸發 onDidChangeCustomDocument 會導致編輯器被標記為「髒」(已修改)。當使用者儲存或還原檔案時,此標記會被清除。
支援復原/重作的編輯器,必須在發生編輯時觸發 CustomDocumentEditEvent。這允許使用者使用編輯器的標準鍵盤快速鍵來復原和重作編輯。如果使用者將所有編輯復原到最後一次儲存的狀態,編輯器也會將編輯器標記為不再是「髒」。
支援編輯但無法使用編輯器標準復原/重作機制的編輯器,必須觸發 CustomDocumentContentChangeEvent。對於不支援復原/重作的編輯器,使用者清除「髒」狀態的唯一方法是 儲存 (save) 或 還原 (revert) 檔案。
編輯器應只觸發 CustomDocumentEditEvent 事件,或是只觸發 CustomDocumentContentChangeEvent 事件。
方法
backupCustomDocument(document: T, context: CustomDocumentBackupContext, cancellation: CancellationToken): Thenable<CustomDocumentBackup>
備份「髒」的自訂文件。
備份用於熱門結束 (hot exit) 並防止資料遺失。您的 backupCustomDocument 方法應以當前狀態(即套用編輯後的狀態)保留資源。最常見的情況是將資源儲存到 ExtensionContext.storagePath 中的磁碟。當編輯器重新載入且您的自訂編輯器開啟資源時,您的擴充功能應首先檢查該資源是否有任何備份存在。如果存在備份,您的擴充功能應從該處載入檔案內容,而不是從工作區中的資源載入。
backupCustomDocument 會在使用者停止編輯文件約一秒後觸發。如果使用者快速編輯文件,則在停止編輯之前,不會呼叫 backupCustomDocument。
當啟用 自動儲存 (auto save) 時,不會呼叫 backupCustomDocument(因為自動儲存已經保留了資源)。
| 參數 | 說明 |
|---|---|
| document: T | 要備份的文件。 |
| context: CustomDocumentBackupContext | 可用於備份文件的資訊。 |
| cancellation: CancellationToken | 因為有新的備份傳入,此 Token 用以發出目前備份已取消的訊號。決定如何回應取消取決於您的擴充功能。例如,如果您的擴充功能正在執行一個大型檔案的備份操作,且該操作需要時間完成,您的擴充功能可能會決定完成正在進行的備份,而不是取消它,以確保編輯器擁有有效的備份。 |
| 回傳值 | 說明 |
| Thenable<CustomDocumentBackup> | 發出備份已完成訊號的 Thenable。 |
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
為給定資源建立新文件。
當第一次開啟給定資源的編輯器時,會呼叫 openCustomDocument。隨後,開啟的文件會傳遞給 resolveCustomEditor,以便向使用者顯示編輯器。
如果使用者開啟了額外的編輯器,已開啟的 CustomDocuments 將會被重複使用。當給定資源的所有編輯器皆關閉時,CustomDocuments 會被處置。此時若再開啟編輯器,將會觸發另一次 openCustomDocument 的呼叫。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要開啟之文件的 URI。 |
| openContext: CustomDocumentOpenContext | 關於正在開啟之自訂文件的額外資訊。 |
| token: CancellationToken | 表示不再需要結果的取消 Token。 |
| 回傳值 | 說明 |
| T | Thenable<T> | 自訂文件。 |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
解析給定資源的自訂編輯器。
每當使用者為此 CustomEditorProvider 開啟新的編輯器時,都會呼叫此函式。
| 參數 | 說明 |
|---|---|
| document: T | 正在解析之資源的文件。 |
| webviewPanel: WebviewPanel | 用於顯示此資源編輯器 UI 的 Webview 面板。 在解析期間,提供者必須填入內容 Webview 面板的初始 HTML,並勾選所有它感興趣的事件監聽器。提供者也可以持有 |
| token: CancellationToken | 表示不再需要結果的取消 Token。 |
| 回傳值 | 說明 |
| void | Thenable<void> | 指示自訂編輯器已解析的選擇性 Thenable。 |
revertCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
將自訂文件還原至其最後儲存狀態。
當使用者在自訂編輯器中觸發 檔案:還原檔案 (File: Revert File) 時,編輯器會呼叫此方法。(請注意,這僅在使用編輯器的 檔案:還原檔案 命令時使用,而非對檔案進行 git revert 時使用)。
實作者必須確保 document 的所有編輯器實例(Webviews)皆以儲存時的相同狀態顯示文件。這通常意味著從工作區重新載入檔案。
| 參數 | 說明 |
|---|---|
| document: T | 要還原的文件。 |
| cancellation: CancellationToken | 發出不再需要還原訊號的 Token。 |
| 回傳值 | 說明 |
| Thenable<void> | 發出還原已完成訊號的 Thenable。 |
saveCustomDocument(document: T, cancellation: CancellationToken): Thenable<void>
儲存自訂文件。
當使用者儲存自訂編輯器時,編輯器會呼叫此方法。這可能發生在使用者於自訂編輯器啟用時觸發儲存、透過例如 全部儲存 (save all) 的命令,或在啟用自動儲存時發生。
實作者必須保留自訂編輯器。這通常意味著將自訂文件的檔案資料寫入磁碟。當 saveCustomDocument 完成後,任何相關聯的編輯器實例將不再被標記為髒。
| 參數 | 說明 |
|---|---|
| document: T | 要儲存的文件。 |
| cancellation: CancellationToken | 發出不再需要儲存訊號的 Token(例如,如果觸發了另一個儲存動作)。 |
| 回傳值 | 說明 |
| Thenable<void> | 發出儲存已完成的 Thenable。 |
saveCustomDocumentAs(document: T, destination: Uri, cancellation: CancellationToken): Thenable<void>
將自訂文件儲存至不同位置。
當使用者在自訂編輯器上觸發「另存新檔 (save as)」時,編輯器會呼叫此方法。實作者必須將自訂編輯器保留至 destination。
當使用者接受另存新檔時,當前編輯器會被針對新儲存檔案的非髒編輯器所取代。
| 參數 | 說明 |
|---|---|
| document: T | 要儲存的文件。 |
| destination: Uri | 要儲存到的位置。 |
| cancellation: CancellationToken | 發出不再需要儲存訊號的 Token。 |
| 回傳值 | 說明 |
| Thenable<void> | 發出儲存已完成訊號的 Thenable。 |
CustomExecution
用於執行擴充功能回呼作為工作 (task) 的類別。
建構函式
new CustomExecution(callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>): CustomExecution
建構一個 CustomExecution 工作物件。回呼將在工作執行時被呼叫,此時擴充功能應回傳它將要在其中「執行」的 Pseudoterminal。工作應等待直到呼叫 Pseudoterminal.open 才進行進一步執行。工作取消應使用 Pseudoterminal.close 進行處理。當工作完成時,觸發 Pseudoterminal.onDidClose。
| 參數 | 說明 |
|---|---|
| callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal> | 當使用者啟動工作時將被呼叫的回呼。工作定義中的任何 ${} 風格變數都將被解析,並作為 |
| 回傳值 | 說明 |
| CustomExecution |
CustomReadonlyEditorProvider<T>
使用自訂文件模型的「唯讀自訂編輯器」之提供者。
自訂編輯器使用 CustomDocument 作為其文件模型,而不是 TextDocument。
處理二進位檔案或更複雜的場景時,您應使用此類型的自訂編輯器。對於簡單的文字文件,請改用 CustomTextEditorProvider。
方法
openCustomDocument(uri: Uri, openContext: CustomDocumentOpenContext, token: CancellationToken): T | Thenable<T>
為給定資源建立新文件。
當第一次開啟給定資源的編輯器時,會呼叫 openCustomDocument。隨後,開啟的文件會傳遞給 resolveCustomEditor,以便向使用者顯示編輯器。
如果使用者開啟了額外的編輯器,已開啟的 CustomDocuments 將會被重複使用。當給定資源的所有編輯器皆關閉時,CustomDocuments 會被處置。此時若再開啟編輯器,將會觸發另一次 openCustomDocument 的呼叫。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要開啟之文件的 URI。 |
| openContext: CustomDocumentOpenContext | 關於正在開啟之自訂文件的額外資訊。 |
| token: CancellationToken | 表示不再需要結果的取消 Token。 |
| 回傳值 | 說明 |
| T | Thenable<T> | 自訂文件。 |
resolveCustomEditor(document: T, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
解析給定資源的自訂編輯器。
每當使用者為此 CustomEditorProvider 開啟新的編輯器時,都會呼叫此函式。
| 參數 | 說明 |
|---|---|
| document: T | 正在解析之資源的文件。 |
| webviewPanel: WebviewPanel | 用於顯示此資源編輯器 UI 的 Webview 面板。 在解析期間,提供者必須填入內容 Webview 面板的初始 HTML,並勾選所有它感興趣的事件監聽器。提供者也可以持有 |
| token: CancellationToken | 表示不再需要結果的取消 Token。 |
| 回傳值 | 說明 |
| void | Thenable<void> | 指示自訂編輯器已解析的選擇性 Thenable。 |
CustomTextEditorProvider
基於文字的自訂編輯器提供者。
基於文字的自訂編輯器使用 TextDocument 作為其資料模型。這大幅簡化了實作自訂編輯器的過程,因為它允許編輯器處理許多常見操作,例如復原和備份。提供者負責同步 Webview 和 TextDocument 之間的文字變更。
方法
resolveCustomTextEditor(document: TextDocument, webviewPanel: WebviewPanel, token: CancellationToken): void | Thenable<void>
解析給定文字資源的自訂編輯器。
當使用者第一次開啟 CustomTextEditorProvider 的資源,或是使用此 CustomTextEditorProvider 重新開啟現有編輯器時,會呼叫此函式。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 要解析的資源文件。 |
| webviewPanel: WebviewPanel | 用於顯示此資源編輯器 UI 的 Webview 面板。 在解析期間,提供者必須填入內容 Webview 面板的初始 HTML,並勾選所有它感興趣的事件監聽器。提供者也可以持有 WebviewPanel 以供稍後(例如在命令中)使用。請參閱 WebviewPanel 以取得更多詳細資訊。 |
| token: CancellationToken | 表示不再需要結果的取消 Token。 |
| 回傳值 | 說明 |
| void | Thenable<void> | 指示自訂編輯器已解析的 Thenable。 |
DataTransfer
包含相應傳輸資料的 MIME 類型對映的對映表。
實作 handleDrag 的拖放控制器可以將額外的 MIME 類型新增至資料傳輸中。這些額外的 MIME 類型將僅在拖動是由相同拖放控制器中的元素發起時,才會包含在 handleDrop 中。
建構函式
new DataTransfer(): DataTransfer
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| DataTransfer |
方法
[iterator](): IterableIterator<[mimeType: string, item: DataTransferItem]>
取得一個新的迭代器,其中包含此資料傳輸中每個元素的 [mime, item] 配對。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| IterableIterator<[mimeType: string, item: DataTransferItem]> |
forEach(callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void, thisArg?: any): void
允許迭代資料傳輸項目。
| 參數 | 說明 |
|---|---|
| callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void | 用於迭代資料傳輸項目的回呼。 |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| void |
get(mimeType: string): DataTransferItem
擷取給定 MIME 類型的資料傳輸項目。
| 參數 | 說明 |
|---|---|
| mimeType: string | 要取得資料傳輸項目的 MIME 類型,例如 特殊 MIME 類型
|
| 回傳值 | 說明 |
| DataTransferItem |
set(mimeType: string, value: DataTransferItem): void
設定 MIME 類型到資料傳輸項目的對映。
| 參數 | 說明 |
|---|---|
| mimeType: string | 要設定資料的 MIME 類型。MIME 類型儲存為小寫,並以不區分大小寫的方式進行查找。 |
| value: DataTransferItem | 給定 MIME 類型的資料傳輸項目。 |
| 回傳值 | 說明 |
| void |
DataTransferFile
與 DataTransferItem 相關聯的檔案。
此類型的執行個體只能由編輯器建立,不能由擴充功能建立。
屬性
檔案名稱。
uri?: Uri
檔案的完整路徑。
在 Web 環境下可能為 undefined。
方法
檔案的完整內容。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<Uint8Array> |
DataTransferItem
封裝拖放操作期間傳輸的資料。
建構函式
new DataTransferItem(value: any): DataTransferItem
| 參數 | 說明 |
|---|---|
| value: any | 儲存在此項目上的自訂資料。可以使用 DataTransferItem.value 進行擷取。 |
| 回傳值 | 說明 |
| DataTransferItem |
屬性
儲存在此項目上的自訂資料。
您可以使用 value 在操作之間共享資料。只要建立 DataTransferItem 的擴充功能在同一個擴充功能主機中執行,原始物件即可被擷取。
方法
asFile(): DataTransferFile
嘗試取得與此資料傳輸項目相關聯的 檔案。
請注意,檔案物件僅在拖放操作的範圍內有效。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| DataTransferFile | 資料傳輸的檔案,如果項目不是檔案或無法存取檔案資料,則為 |
取得此項目的字串表示形式。
如果 DataTransferItem.value 是一個物件,這將回傳 DataTransferItem.value 的 JSON 字串化結果。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<string> |
DebugAdapter
如果實作了 DebugAdapter 介面,實作 Debug Adapter Protocol 的偵錯配接器可以註冊到編輯器中。
活動
onDidSendMessage: Event<DebugProtocolMessage>
在偵錯配接器向編輯器傳送 Debug Adapter Protocol 訊息後觸發的事件。訊息可以是請求、回應或事件。
方法
處置此物件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| any |
handleMessage(message: DebugProtocolMessage): void
處理 Debug Adapter Protocol 訊息。訊息可以是請求、回應或事件。結果或錯誤透過 onSendMessage 事件回傳。
| 參數 | 說明 |
|---|---|
| message: DebugProtocolMessage | Debug Adapter Protocol 訊息 |
| 回傳值 | 說明 |
| void |
DebugAdapterDescriptor
代表不同類型的偵錯配接器
DebugAdapterDescriptor: DebugAdapterExecutable | DebugAdapterServer | DebugAdapterNamedPipeServer | DebugAdapterInlineImplementation
DebugAdapterDescriptorFactory
建立 偵錯配接器描述項 的偵錯配接器工廠。
方法
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable): ProviderResult<DebugAdapterDescriptor>
'createDebugAdapterDescriptor' 在偵錯工作階段開始時被呼叫,以提供要使用的偵錯配接器詳細資訊。這些詳細資訊必須以 DebugAdapterDescriptor 型別的物件回傳。目前支援兩種偵錯配接器類型
- 偵錯配接器可執行檔,指定為指令路徑和參數(請參閱 DebugAdapterExecutable),
- 可透過通訊埠存取的偵錯配接器伺服器(請參閱 DebugAdapterServer)。如果未實作此方法,預設行為如下:createDebugAdapter(session: DebugSession, executable: DebugAdapterExecutable) { if (typeof session.configuration.debugServer === 'number') { return new DebugAdapterServer(session.configuration.debugServer); } return executable; }
| 參數 | 說明 |
|---|---|
| session: DebugSession | 將使用該偵錯配接器的 偵錯工作階段。 |
| executable: DebugAdapterExecutable | package.json 中指定的偵錯配接器可執行資訊(若無此類資訊則為 undefined)。 |
| 回傳值 | 說明 |
| ProviderResult<DebugAdapterDescriptor> | 偵錯配接器描述項或 undefined。 |
DebugAdapterExecutable
代表偵錯配接器可執行檔,以及傳遞給它的選擇性參數和執行階段選項。
建構函式
new DebugAdapterExecutable(command: string, args?: string[], options?: DebugAdapterExecutableOptions): DebugAdapterExecutable
根據可執行程式建立偵錯配接器的描述。
| 參數 | 說明 |
|---|---|
| command: string | 實作偵錯配接器的指令或可執行檔路徑。 |
| args?: string[] | 要傳遞給指令或可執行檔的選擇性參數。 |
| options?: DebugAdapterExecutableOptions | 啟動指令或可執行檔時使用的選擇性選項。 |
| 回傳值 | 說明 |
| DebugAdapterExecutable |
屬性
傳遞給偵錯配接器可執行檔的參數。預設為空陣列。
偵錯配接器可執行檔的指令或路徑。指令必須是可執行檔的絕對路徑,或是要透過 PATH 環境變數查找的指令名稱。特殊值 'node' 將對映到編輯器內建的 Node.js 執行階段。
options?: DebugAdapterExecutableOptions
啟動偵錯配接器時使用的選擇性選項。預設為 undefined。
DebugAdapterExecutableOptions
偵錯配接器可執行檔的選項。
屬性
所執行偵錯配接器的目前工作目錄。
所執行程式或 Shell 的額外環境。如果省略,則使用父處理序的環境。如果提供,它會與父處理序的環境合併。
DebugAdapterInlineImplementation
內聯實作的偵錯配接器描述項。
建構函式
new DebugAdapterInlineImplementation(implementation: DebugAdapter): DebugAdapterInlineImplementation
建立偵錯配接器內聯實作的描述項。
| 參數 | 說明 |
|---|---|
| implementation: DebugAdapter | |
| 回傳值 | 說明 |
| DebugAdapterInlineImplementation |
DebugAdapterNamedPipeServer
代表以具名管道(Windows 上)/ UNIX 網域通訊端(非 Windows 上)為基礎之伺服器執行的偵錯配接器。
建構函式
new DebugAdapterNamedPipeServer(path: string): DebugAdapterNamedPipeServer
建立以具名管道(Windows 上)/ UNIX 網域通訊端(非 Windows 上)為基礎之伺服器執行的偵錯配接器之描述。
| 參數 | 說明 |
|---|---|
| path: string | |
| 回傳值 | 說明 |
| DebugAdapterNamedPipeServer |
屬性
具名管道/UNIX 網域通訊端的路徑。
DebugAdapterServer
代表以通訊端為基礎之伺服器執行的偵錯配接器。
建構函式
new DebugAdapterServer(port: number, host?: string): DebugAdapterServer
建立以通訊端為基礎之伺服器執行的偵錯配接器之描述。
| 參數 | 說明 |
|---|---|
| port: number | |
| host?: string | |
| 回傳值 | 說明 |
| DebugAdapterServer |
屬性
主機。
通訊埠。
DebugAdapterTracker
偵錯配接器追蹤器是一種用來追蹤編輯器與偵錯配接器之間通訊的方法。
活動
onDidSendMessage(message: any): void
偵錯配接器已向編輯器傳送 Debug Adapter Protocol 訊息。
| 參數 | 說明 |
|---|---|
| message: any | |
| 回傳值 | 說明 |
| void |
onWillReceiveMessage(message: any): void
偵錯配接器即將從編輯器接收 Debug Adapter Protocol 訊息。
| 參數 | 說明 |
|---|---|
| message: any | |
| 回傳值 | 說明 |
| void |
與偵錯配接器的工作階段即將啟動。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
偵錯配接器工作階段即將停止。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
方法
偵錯配接器發生錯誤。
| 參數 | 說明 |
|---|---|
| error: Error | |
| 回傳值 | 說明 |
| void |
onExit(code: number, signal: string): void
偵錯配接器已以給定的結束代碼或訊號結束。
| 參數 | 說明 |
|---|---|
| code: number | |
| signal: string | |
| 回傳值 | 說明 |
| void |
DebugAdapterTrackerFactory
建立 偵錯配接器追蹤器 的偵錯配接器工廠。
方法
createDebugAdapterTracker(session: DebugSession): ProviderResult<DebugAdapterTracker>
'createDebugAdapterTracker' 方法在偵錯工作階段開始時被呼叫,以回傳一個「追蹤器」物件,提供對編輯器與偵錯配接器之間通訊的讀取存取權。
| 參數 | 說明 |
|---|---|
| session: DebugSession | 將使用該偵錯配接器追蹤器的 偵錯工作階段。 |
| 回傳值 | 說明 |
| ProviderResult<DebugAdapterTracker> | 偵錯配接器追蹤器或 undefined。 |
DebugConfiguration
偵錯工作階段的組態。
屬性
偵錯工作階段的名稱。
偵錯工作階段的請求類型。
偵錯工作階段的型別。
DebugConfigurationProvider
偵錯組態提供者允許將偵錯組態新增至偵錯服務,並在用於啟動偵錯工作階段之前解析啟動組態。偵錯組態提供者透過 debug.registerDebugConfigurationProvider 註冊。
方法
provideDebugConfigurations(folder: WorkspaceFolder, token?: CancellationToken): ProviderResult<DebugConfiguration[]>
向偵錯服務提供 偵錯組態。如果為同一型別註冊了多個偵錯組態提供者,偵錯組態將以任意順序串接。
| 參數 | 說明 |
|---|---|
| folder: WorkspaceFolder | 使用該組態的工作區資料夾,或對於無資料夾設定則為 |
| token?: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<DebugConfiguration[]> | 偵錯組態陣列。 |
resolveDebugConfiguration(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
透過填入缺失的值,或新增/變更/刪除屬性來解析 偵錯組態。如果為同一型別註冊了多個偵錯組態提供者,resolveDebugConfiguration 呼叫將以任意順序鏈結,且初始偵錯組態將透過鏈結傳遞。回傳值 'undefined' 會阻止偵錯工作階段啟動。回傳值 'null' 會阻止偵錯工作階段啟動,並開啟底層的偵錯組態。
| 參數 | 說明 |
|---|---|
| folder: WorkspaceFolder | 組態來源的工作區資料夾,或對於無資料夾設定則為 |
| debugConfiguration: DebugConfiguration | 要解析的 偵錯組態。 |
| token?: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<DebugConfiguration> | 已解析的偵錯組態,或是 undefined 或 null。 |
resolveDebugConfigurationWithSubstitutedVariables(folder: WorkspaceFolder, debugConfiguration: DebugConfiguration, token?: CancellationToken): ProviderResult<DebugConfiguration>
此 Hook 會在 'resolveDebugConfiguration' 之後被直接呼叫,且所有變數皆已完成替換。它可用於透過填入遺失的值或新增/變更/移除屬性,來解析或驗證 偵錯組態 (debug configuration)。如果針對相同類型註冊了多個偵錯組態提供者,'resolveDebugConfigurationWithSubstitutedVariables' 的呼叫將會以任意順序串連,且初始偵錯組態會被管道傳遞至整個鏈中。回傳 'undefined' 值將會阻止偵錯工作階段啟動。回傳 'null' 值將會阻止偵錯工作階段啟動,並改為開啟底層的偵錯組態。
| 參數 | 說明 |
|---|---|
| folder: WorkspaceFolder | 組態來源的工作區資料夾,或對於無資料夾設定則為 |
| debugConfiguration: DebugConfiguration | 要解析的 偵錯組態。 |
| token?: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<DebugConfiguration> | 已解析的偵錯組態,或是 undefined 或 null。 |
DebugConfigurationProviderTriggerKind
DebugConfigurationProviderTriggerKind 指定了 DebugConfigurationProvider 的 provideDebugConfigurations 方法何時被觸發。目前有兩種情況:為新建立的 launch.json 提供初始偵錯組態,或在使用者透過 UI(例如透過「選取並啟動偵錯」指令)要求時,提供動態產生的偵錯組態。當使用 debug.registerDebugConfigurationProvider 註冊 DebugConfigurationProvider 時,會用到觸發類型 (trigger kind)。
列舉成員
呼叫 DebugConfigurationProvider.provideDebugConfigurations 以為新建立的 launch.json 提供初始偵錯組態。
當使用者透過 UI 要求時(例如透過「選取並啟動偵錯」指令),呼叫 DebugConfigurationProvider.provideDebugConfigurations 以提供動態產生的偵錯組態。
DebugConsole
代表偵錯主控台。
方法
將指定的值附加至偵錯主控台。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值 (falsy values) 將不會被列印。 |
| 回傳值 | 說明 |
| void |
appendLine(value: string): void
將指定的值及換行字元附加至偵錯主控台。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值將會被列印。 |
| 回傳值 | 說明 |
| void |
DebugConsoleMode
偵錯工作階段所使用的偵錯主控台模式,請參閱 選項。
列舉成員
偵錯工作階段應擁有獨立的偵錯主控台。
偵錯工作階段應與其父代工作階段共用偵錯主控台。此值對於沒有父代工作階段的工作階段無效。
DebugProtocolBreakpoint
DebugProtocolBreakpoint 是一個不透明的替代型別,用於代表偵錯轉接器協定 (Debug Adapter Protocol) 中定義的 Breakpoint 型別。
DebugProtocolMessage
DebugProtocolMessage 是一個不透明的替代型別,用於代表偵錯轉接器協定中定義的 ProtocolMessage 型別。
DebugProtocolSource
DebugProtocolSource 是一個不透明的替代型別,用於代表偵錯轉接器協定中定義的 Source 型別。
DebugSession
偵錯工作階段。
屬性
configuration: DebugConfiguration
此工作階段的「已解析」偵錯組態。「已解析」代表
- 所有變數皆已替換,且
- 特定平台的屬性區段已針對匹配的平台進行「扁平化」處理,並移除了不匹配的平台區段。
此偵錯工作階段的唯一 ID。
偵錯工作階段的名稱最初取自 偵錯組態。任何變更都會正確地反映在 UI 中。
parentSession?: DebugSession
此偵錯工作階段的父代工作階段(若其是以子工作階段身分建立的)。
另請參閱 DebugSessionOptions.parentSession
取自 偵錯組態 的偵錯工作階段類型。
workspaceFolder: WorkspaceFolder
此工作階段的工作區資料夾,若為無資料夾設定則為 undefined。
方法
customRequest(command: string, args?: any): Thenable<any>
傳送自訂要求至偵錯轉接器。
| 參數 | 說明 |
|---|---|
| command: string | |
| args?: any | |
| 回傳值 | 說明 |
| Thenable<any> |
getDebugProtocolBreakpoint(breakpoint: Breakpoint): Thenable<DebugProtocolBreakpoint>
將編輯器中的中斷點對應至偵錯工作階段的偵錯轉接器所管理的對應偵錯轉接器協定 (DAP) 中斷點。如果沒有 DAP 中斷點存在(可能是因為編輯器中斷點尚未註冊,或因為偵錯轉接器對該中斷點不感興趣),則會回傳 undefined 值。
| 參數 | 說明 |
|---|---|
| breakpoint: Breakpoint | 編輯器中的 中斷點。 |
| 回傳值 | 說明 |
| Thenable<DebugProtocolBreakpoint> | 一個會解析為偵錯轉接器協定中斷點或 |
DebugSessionCustomEvent
從 偵錯工作階段 接收到的自訂偵錯轉接器協定事件。
屬性
事件特定的資訊。
事件類型。
session: DebugSession
接收到自訂事件的 偵錯工作階段。
DebugSessionOptions
啟動偵錯工作階段的選項。
屬性
控制即使偵錯工作階段的父代工作階段只有一個子工作階段時,是否在「呼叫堆疊」檢視中顯示該父代工作階段。預設情況下,偵錯工作階段永遠不會隱藏其父代。若 compact 為 true,則只有單一子項的偵錯工作階段會在「呼叫堆疊」檢視中被隱藏,以使樹狀結構更為簡潔。
consoleMode?: DebugConsoleMode
控制此工作階段應擁有獨立的偵錯主控台,還是與父代工作階段共用。對沒有父代工作階段的工作階段無效。預設為 Separate。
lifecycleManagedByParent?: boolean
控制生命週期要求(如 'restart')是傳送至新建立的工作階段還是其父代工作階段。預設情況下(若屬性為 false 或遺失),生命週期要求會傳送至新的工作階段。若工作階段沒有父代工作階段,則此屬性會被忽略。
控制此工作階段是否應在沒有偵錯的情況下執行(即忽略中斷點)。當未指定此屬性時,會使用來自父代工作階段的值(若有)。
parentSession?: DebugSession
指定後,新建立的偵錯工作階段將會註冊為此「父代」偵錯工作階段的「子」工作階段。
suppressDebugStatusbar?: boolean
若為 true,此工作階段將不會變更視窗狀態列的顏色。
suppressDebugToolbar?: boolean
若為 true,此工作階段將不會顯示偵錯工具列。
若為 true,此工作階段將不會自動顯示偵錯檢視器 (debug viewlet)。
suppressSaveBeforeStart?: boolean
若為 true,則無論 debug.saveBeforeStart 設定的值為何,在啟動偵錯工作階段時都不會觸發開啟編輯器的儲存動作。
testRun?: TestRun
向編輯器發出訊號,表示偵錯工作階段是從測試執行要求所啟動的。這用於在 UI 動作中連結偵錯工作階段與測試執行的生命週期。
DebugStackFrame
代表偵錯工作階段中的堆疊框架。
屬性
偵錯協定中堆疊框架的 ID。
session: DebugSession
執行緒的偵錯工作階段。
偵錯協定中相關聯執行緒的 ID。
DebugThread
代表偵錯工作階段中的執行緒。
屬性
session: DebugSession
執行緒的偵錯工作階段。
偵錯協定中相關聯執行緒的 ID。
Declaration
Declaration: Location | Location[] | LocationLink[]
DeclarationCoverage
包含宣告的覆蓋率資訊。根據報告程式與語言,這可能是函式、方法或命名空間等型別。
建構函式
new DeclarationCoverage(name: string, executed: number | boolean, location: Range | Position): DeclarationCoverage
| 參數 | 說明 |
|---|---|
| name: string | |
| executed: number | boolean | 此宣告執行的次數;若確切計數未知,則為布林值,表示其是否已執行。若為零或 false,該宣告將被標記為未覆蓋。 |
| location: Range | Position | 宣告位置。 |
| 回傳值 | 說明 |
| DeclarationCoverage |
屬性
此宣告執行的次數;若確切計數未知,則為布林值,表示其是否已執行。若為零或 false,該宣告將被標記為未覆蓋。
宣告位置。
宣告名稱。
DeclarationProvider
宣告提供者介面定義了擴充功能與「移至宣告」功能之間的合約。
方法
provideDeclaration(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Declaration>
提供在指定位置與文件中的符號宣告。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Declaration> | 宣告或解析為此類內容的 Thenable。若無結果,可透過回傳 |
DecorationInstanceRenderOptions
代表裝飾實例的轉譯選項。請參閱 DecorationOptions.renderOptions。
屬性
after?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之後的附件之轉譯選項。
before?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之前的附件之轉譯選項。
dark?: ThemableDecorationInstanceRenderOptions
覆寫深色主題的選項。
light?: ThemableDecorationInstanceRenderOptions
覆寫淺色主題的選項。
DecorationOptions
代表 裝飾集合 中特定裝飾的選項。
屬性
hoverMessage?: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>
游標懸停在裝飾上時應顯示的訊息。
range: Range
套用此裝飾的範圍。該範圍不得為空。
renderOptions?: DecorationInstanceRenderOptions
套用於目前裝飾的轉譯選項。基於效能考量,裝飾專屬的選項數量應儘量精簡,並儘可能使用裝飾型別。
DecorationRangeBehavior
描述裝飾在邊緣進行輸入/編輯時的行為。
列舉成員
裝飾的範圍將會在開頭或結尾進行編輯時擴大。
裝飾的範圍不會在開頭或結尾進行編輯時擴大。
裝飾的範圍將會在開頭進行編輯時擴大,但結尾則否。
裝飾的範圍將會在結尾進行編輯時擴大,但開頭則否。
DecorationRenderOptions
代表 文字編輯器裝飾 的轉譯樣式。
屬性
after?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之後的附件之轉譯選項。
backgroundColor?: string | ThemeColor
裝飾的背景顏色。請使用 rgba() 並定義透明背景色,以便與其他裝飾良好相容。或者,也可以 參考 顏色登錄檔中的顏色。
before?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之前的附件之轉譯選項。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
borderColor?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
color?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
dark?: ThemableDecorationRenderOptions
覆寫深色主題的選項。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
gutterIconPath?: string | Uri
要在裝訂線中轉譯之影像的 絕對路徑 或 URI。
指定裝訂線圖示的大小。可用值為 'auto'、'contain'、'cover' 及任何百分比值。更多資訊請參閱:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx
裝飾是否也應轉譯於行文字之後的空白區域。預設為 false。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
light?: ThemableDecorationRenderOptions
覆寫淺色主題的選項。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
outlineColor?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'outline' 來設定一個或多個個別輪廓屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'outline' 來設定一個或多個個別輪廓屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'outline' 來設定一個或多個個別輪廓屬性。
overviewRulerColor?: string | ThemeColor
總覽尺規中裝飾的顏色。請使用 rgba() 並定義透明顏色,以便與其他裝飾良好相容。
overviewRulerLane?: OverviewRulerLane
總覽尺規中應轉譯裝飾的位置。
rangeBehavior?: DecorationRangeBehavior
自訂裝飾在裝飾範圍邊緣發生編輯時的擴大行為。預設為 DecorationRangeBehavior.OpenOpen。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
Definition
符號的定義,表示為一個或多個 位置。對於大多數程式語言,符號定義的位置只有一個。
Definition: Location | Location[]
DefinitionLink
關於符號定義位置的資訊。
提供超越一般 位置 定義的額外中繼資料,包含定義符號的範圍
DefinitionLink: LocationLink
DefinitionProvider
定義提供者介面定義了擴充功能與 移至定義 以及預覽定義功能之間的合約。
方法
provideDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供在指定位置與文件中的符號定義。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Definition | LocationLink[]> | 定義或解析為此類內容的 Thenable。若無結果,可透過回傳 |
Diagnostic
代表診斷,例如編譯器錯誤或警告。診斷物件僅在檔案範圍內有效。
建構函式
new Diagnostic(range: Range, message: string, severity?: DiagnosticSeverity): Diagnostic
建立新的診斷物件。
| 參數 | 說明 |
|---|---|
| range: Range | 此診斷適用的範圍。 |
| message: string | 人類可讀的訊息。 |
| severity?: DiagnosticSeverity | 嚴重程度,預設為 錯誤 (error)。 |
| 回傳值 | 說明 |
| Diagnostic |
屬性
code?: string | number | {target: Uri, value: string | number}
此診斷的程式碼或識別碼。應保留供後續處理使用,例如在提供 程式碼動作 時。
人類可讀的訊息。
range: Range
此診斷適用的範圍。
relatedInformation?: DiagnosticRelatedInformation[]
相關診斷資訊的陣列,例如當範圍內的符號名稱發生衝突時,所有定義皆可透過此屬性進行標記。
severity: DiagnosticSeverity
嚴重程度,預設為 錯誤 (error)。
人類可讀的字串,描述此診斷的來源,例如 'typescript' 或 'super lint'。
tags?: DiagnosticTag[]
關於診斷的額外中繼資料。
DiagnosticChangeEvent
當診斷變更時所觸發的事件。
屬性
uris: readonly Uri[]
診斷已變更的資源陣列。
DiagnosticCollection
診斷集合是一個管理一組 診斷 的容器。診斷永遠適用於某個診斷集合與資源。
若要取得 DiagnosticCollection 的實例,請使用 createDiagnosticCollection。
屬性
此診斷集合的名稱,例如 typescript。來自此集合的每個診斷皆會與此名稱相關聯。此外,任務架構在定義 問題比對程式 (problem matchers) 時也會使用此名稱。
方法
從此集合中移除所有診斷。與呼叫 #set(undefined) 相同;
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
delete(uri: Uri): void
從此集合中移除所有屬於指定 uri 的診斷。與 #set(uri, undefined) 相同。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| 回傳值 | 說明 |
| void |
處置並釋放相關資源。會呼叫 clear。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
forEach(callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any, thisArg?: any): void
疊代此集合中的每個項目。
| 參數 | 說明 |
|---|---|
| callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any | 要為每個項目執行的函式。 |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| void |
get(uri: Uri): readonly Diagnostic[]
取得指定資源的診斷。注意:您無法修改此呼叫所回傳的診斷陣列。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| 回傳值 | 說明 |
| readonly Diagnostic[] | 不可變的 診斷 陣列或 |
has(uri: Uri): boolean
檢查此集合是否包含指定資源的診斷。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| 回傳值 | 說明 |
| boolean | 若此集合擁有指定資源的診斷,則為 |
set(uri: Uri, diagnostics: readonly Diagnostic[]): void
為指定資源指派診斷。將會取代該資源現有的診斷。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| diagnostics: readonly Diagnostic[] | 診斷陣列或 |
| 回傳值 | 說明 |
| void |
set(entries: ReadonlyArray<[Uri, readonly Diagnostic[]]>): void
取代此集合中多個資源的診斷。
注意:多個相同 uri 的元組將會合併,例如 [[file1, [d1]], [file1, [d2]]] 等同於 [[file1, [d1, d2]]]。若診斷項目為 undefined(如 [file1, undefined]),則之前(但非之後)的所有診斷皆會被移除。
| 參數 | 說明 |
|---|---|
| entries: ReadonlyArray<[Uri, readonly Diagnostic[]]> | 元組陣列,例如 |
| 回傳值 | 說明 |
| void |
DiagnosticRelatedInformation
代表診斷的相關訊息與原始碼位置。此應用於指向導致診斷或與診斷相關的程式碼位置,例如當在範圍中重複符號時。
建構函式
new DiagnosticRelatedInformation(location: Location, message: string): DiagnosticRelatedInformation
建立新的相關診斷資訊物件。
| 參數 | 說明 |
|---|---|
| location: Location | 位置。 |
| message: string | 訊息。 |
| 回傳值 | 說明 |
| DiagnosticRelatedInformation |
屬性
location: Location
此相關診斷資訊的位置。
此相關診斷資訊的訊息。
DiagnosticSeverity
代表診斷的嚴重程度。
列舉成員
語言規則或其他方式所不允許的事物。
可疑但允許的事物。
提供資訊而非問題的事物。
提示更好做法的事物,例如建議重構。
DiagnosticTag
關於診斷類型的額外中繼資料。
列舉成員
未使用或不必要的程式碼。
帶有此標籤的診斷會以淡出方式轉譯。淡出程度由 "editorUnnecessaryCode.opacity" 主題顏色控制。例如,"editorUnnecessaryCode.opacity": "#000000c0" 將會以 75% 的不透明度轉譯程式碼。對於高對比主題,請使用 "editorUnnecessaryCode.border" 主題顏色來為不必要的程式碼加上底線,而不是使其淡出。
已棄用或過時的程式碼。
帶有此標籤的診斷會以刪除線轉譯。
Disposable
代表一種可以釋放資源的型別,例如事件監聽器或計時器。
靜態
from(...disposableLikes: Array<{dispose: () => any}>): Disposable
將多個類可處置 (disposable-likes) 物件合併為一個。當物件具有處置函式但並非 Disposable 實例時,可以使用此方法。
| 參數 | 說明 |
|---|---|
| ...disposableLikes: Array<{dispose: () => any}> | 至少具有 |
| 回傳值 | 說明 |
| Disposable | 回傳一個新的 Disposable,在處置時會處置所有提供的可處置物件。 |
建構函式
new Disposable(callOnDispose: () => any): Disposable
建立一個新的 Disposable,在處置時會呼叫指定的函式。
注意:非同步函式不會被等待。
| 參數 | 說明 |
|---|---|
| callOnDispose: () => any | 處置某些內容的函式。 |
| 回傳值 | 說明 |
| Disposable |
方法
處置此物件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| any |
DocumentColorProvider
文件顏色提供者定義了擴充功能與編輯器中選取與修改顏色功能之間的合約。
方法
provideColorPresentations(color: Color, context: {document: TextDocument, range: Range}, token: CancellationToken): ProviderResult<ColorPresentation[]>
提供顏色的 呈現方式。
| 參數 | 說明 |
|---|---|
| color: Color | 要顯示並插入的顏色。 |
| context: {document: TextDocument, range: Range} | 帶有額外資訊的內容物件 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<ColorPresentation[]> | 顏色呈現陣列或解析為此類內容的 Thenable。若無結果,可透過回傳 |
provideDocumentColors(document: TextDocument, token: CancellationToken): ProviderResult<ColorInformation[]>
提供指定文件的顏色。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<ColorInformation[]> | 一組 顏色資訊 陣列或解析為此類內容的 Thenable。若無結果,可透過回傳 |
DocumentDropEdit
套用於 拖放操作 的編輯作業。
建構函式
new DocumentDropEdit(insertText: string | SnippetString, title?: string, kind?: DocumentDropOrPasteEditKind): DocumentDropEdit
| 參數 | 說明 |
|---|---|
| insertText: string | SnippetString | 要在拖放位置插入的文字或程式碼片段。 |
| title?: string | 描述編輯內容的人類可讀標籤。 |
| kind?: DocumentDropOrPasteEditKind | |
| 回傳值 | 說明 |
| DocumentDropEdit |
屬性
additionalEdit?: WorkspaceEdit
拖放時套用的選用性額外編輯。
insertText: string | SnippetString
要在拖放位置插入的文字或程式碼片段。
kind?: DocumentDropOrPasteEditKind
描述編輯內容的人類可讀標籤。
yieldTo?: readonly DocumentDropOrPasteEditKind[]
控制多個編輯的順序。如果此提供者讓位於 (yield to) 其他編輯,它在清單中的顯示順序將會較低。
DocumentDropEditProvider<T>
處理將資源拖放至文字編輯器中的提供者。
這允許使用者將資源(包含來自外部應用程式的資源)拖放至編輯器中。在拖放檔案時,使用者可按住 shift 鍵,將檔案拖放至編輯器中,而非直接開啟它。要求 editor.dropIntoEditor.enabled 必須啟用。
方法
provideDocumentDropEdits(document: TextDocument, position: Position, dataTransfer: DataTransfer, token: CancellationToken): ProviderResult<T | T[]>
提供將被拖放的內容插入文件中的編輯。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 發生拖放的文件。 |
| position: Position | 發生拖放的文件位置。 |
| dataTransfer: DataTransfer | 一個 DataTransfer 物件,保存關於被拖放內容的資訊。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T | T[]> | DocumentDropEdit 或解析為此類內容的 Thenable。若無結果,可透過回傳 |
resolveDocumentDropEdit(edit: T, token: CancellationToken): ProviderResult<T>
選用方法,在套用編輯前填入 DocumentDropEdit.additionalEdit。
此方法每次編輯呼叫一次;若產生完整編輯可能需要很長時間,則應使用此方法。解析 (resolve) 僅可用於變更 DocumentDropEdit.additionalEdit。
| 參數 | 說明 |
|---|---|
| edit: T | 要解析的 DocumentDropEdit。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 解析後的編輯或解析為此類內容的 Thenable。回傳給定的 |
DocumentDropEditProviderMetadata
提供關於 DocumentDropEditProvider 如何運作的額外中繼資料。
屬性
dropMimeTypes: readonly string[]
提供者可以處理的 DataTransfer MIME 類型清單。
這可以是精確的 MIME 類型(如 image/png),或是萬用字元模式(如 image/*)。
使用 text/uri-list 處理從工作台中的檔案總管或其他樹狀檢視拖放的資源。
使用 files 來表示若 DataTransfer 中存在任何 檔案,則應呼叫此提供者。注意:DataTransferFile 項目僅在從編輯器外部(如作業系統)拖放內容時才會建立。
providedDropEditKinds?: readonly DocumentDropOrPasteEditKind[]
提供者可能會在 provideDocumentDropEdits 中回傳的 種類 清單。
這用於在要求特定 種類 的編輯時篩選提供者。
DocumentDropOrPasteEditKind
靜態
Empty: DocumentDropOrPasteEditKind
Text: DocumentDropOrPasteEditKind
基本文字編輯的根種類。
此種類應用於將基本文字插入文件中的編輯。一個好的例子是貼上剪貼簿文字的編輯,同時根據貼上的文字更新檔案中的匯入項目。為此,我們可以利用如 text.updateImports.someLanguageId 之類的種類。
即使大多數拖放/貼上編輯最終都會插入文字,也不應對所有編輯都使用 Text 作為基礎種類,因為這會顯得冗餘。應改用描述正在插入內容類型的特定種類。例如,若編輯新增了 Markdown 連結,請使用 markdown.link,因為儘管插入的內容是文字,但瞭解該編輯插入的是 Markdown 語法更為重要。
TextUpdateImports: DocumentDropOrPasteEditKind
除了插入文字外,還會更新文件中匯入項目的編輯之根種類。
建構函式
new DocumentDropOrPasteEditKind(value: string): DocumentDropOrPasteEditKind
| 參數 | 說明 |
|---|---|
| value: string | |
| 回傳值 | 說明 |
| DocumentDropOrPasteEditKind |
屬性
該種類的原始字串值。
方法
append(...parts: string[]): DocumentDropOrPasteEditKind
透過在目前種類中附加額外的範圍來建立新的種類。
不會修改目前的類型。
| 參數 | 說明 |
|---|---|
| ...parts: string[] | |
| 回傳值 | 說明 |
| DocumentDropOrPasteEditKind |
contains(other: DocumentDropOrPasteEditKind): boolean
檢查 other 是否為此 DocumentDropOrPasteEditKind 的子種類。
例如,種類 "text.plain" 包含 "text.plain" 與 "text.plain.list",但不包含 "text" 或 "unicorn.text.plain"。
| 參數 | 說明 |
|---|---|
| other: DocumentDropOrPasteEditKind | 要檢查的類型。 |
| 回傳值 | 說明 |
| boolean |
intersects(other: DocumentDropOrPasteEditKind): boolean
檢查此種類是否與 other 交集。
例如,種類 "text.plain" 與 text、"text.plain" 及 "text.plain.list" 交集,但與 "unicorn" 或 "textUnicorn.plain" 不交集。
| 參數 | 說明 |
|---|---|
| other: DocumentDropOrPasteEditKind | 要檢查的類型。 |
| 回傳值 | 說明 |
| boolean |
DocumentFilter
文件篩選器透過不同屬性標記文件,例如 語言、其資源的 配置 (scheme),或是套用於 路徑 的全域模式 (glob-pattern)。
範例:套用於磁碟上 TypeScript 檔案的語言篩選器
{ language: 'typescript', scheme: 'file' }
範例:套用於所有 package.json 路徑的語言篩選器
{ language: 'json', pattern: '**/package.json' }
屬性
語言識別碼,例如 typescript。
pattern?: GlobPattern
Uri 配置 (scheme),例如 file 或 untitled。
DocumentFormattingEditProvider
文件格式化提供者介面定義了擴充功能與格式化功能之間的契約。
方法
provideDocumentFormattingEdits(document: TextDocument, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
為整個文件提供格式化編輯。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| options: FormattingOptions | 控制格式化的選項。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TextEdit[]> | 一組文字編輯或解析為此類編輯的 thenable。若無結果,可傳回 |
DocumentHighlight
文件標示是文字文件中值得特別注意的範圍。通常,文件標示是透過變更其範圍的背景顏色來視覺化呈現。
建構函式
new DocumentHighlight(range: Range, kind?: DocumentHighlightKind): DocumentHighlight
建立新的文件標示物件。
| 參數 | 說明 |
|---|---|
| range: Range | 標示所套用的範圍。 |
| kind?: DocumentHighlightKind | 標示類型,預設為 文字。 |
| 回傳值 | 說明 |
| DocumentHighlight |
屬性
kind?: DocumentHighlightKind
標示類型,預設為 文字。
range: Range
此標示所套用的範圍。
DocumentHighlightKind
文件標示類型。
列舉成員
文字出現位置。
符號的讀取存取,例如讀取變數。
符號的寫入存取,例如寫入變數。
DocumentHighlightProvider
文件標示提供者介面定義了擴充功能與文字標示功能之間的契約。
方法
provideDocumentHighlights(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<DocumentHighlight[]>
提供一組文件標示,例如變數的所有出現位置或函式的所有結束點。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<DocumentHighlight[]> | 一組文件標示陣列或解析為此類陣列的 thenable。若無結果,可傳回 |
DocumentLink
文件連結是文字文件中的一個範圍,它連結至內部或外部資源,例如另一份文字文件或網站。
建構函式
new DocumentLink(range: Range, target?: Uri): DocumentLink
建立新的文件連結。
| 參數 | 說明 |
|---|---|
| range: Range | 文件連結所套用的範圍。必須非空。 |
| target?: Uri | 文件連結指向的 URI。 |
| 回傳值 | 說明 |
| DocumentLink |
屬性
range: Range
此連結所套用的範圍。
target?: Uri
此連結指向的 URI。
將滑鼠懸停在此連結上時顯示的工具提示文字。
如果提供了工具提示,它將顯示在一個字串中,該字串包含有關如何觸發連結的說明,例如 {0} (ctrl + click)。具體說明會因作業系統、使用者設定和在地化設定而異。
DocumentLinkProvider<T>
文件連結提供者定義了擴充功能與編輯器中顯示連結功能之間的契約。
方法
provideDocumentLinks(document: TextDocument, token: CancellationToken): ProviderResult<T[]>
為指定文件提供連結。注意:編輯器隨附一個預設提供者,可偵測 http(s) 和 file 連結。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 一組 文件連結 陣列或解析為此類陣列的 thenable。若無結果,可傳回 |
resolveDocumentLink(link: T, token: CancellationToken): ProviderResult<T>
給定一個連結,填入其 目標 (target)。當 UI 中選取不完整的連結時,會呼叫此方法。提供者可以實作此方法,並從 provideDocumentLinks 方法傳回不完整的連結(無目標),這通常有助於提升效能。
| 參數 | 說明 |
|---|---|
| link: T | 要解析的連結。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> |
DocumentPasteEdit
套用貼上作業的編輯。
建構函式
new DocumentPasteEdit(insertText: string | SnippetString, title: string, kind: DocumentDropOrPasteEditKind): DocumentPasteEdit
建立新的貼上編輯。
| 參數 | 說明 |
|---|---|
| insertText: string | SnippetString | 在貼上位置插入的文字或程式碼片段。 |
| title: string | 描述編輯內容的人類可讀標籤。 |
| kind: DocumentDropOrPasteEditKind | |
| 回傳值 | 說明 |
| DocumentPasteEdit |
屬性
additionalEdit?: WorkspaceEdit
貼上時可選擇套用的額外編輯。
insertText: string | SnippetString
在貼上位置插入的文字或程式碼片段。
如果您的編輯需要更進階的插入邏輯,請將此設定為空字串,並改為提供 額外編輯。
kind: DocumentDropOrPasteEditKind
描述編輯內容的人類可讀標籤。
yieldTo?: readonly DocumentDropOrPasteEditKind[]
當可能套用多個貼上編輯時,控制其排序。
如果此編輯讓步於另一個編輯,它會在顯示給使用者的可能貼上編輯清單中排在較後的位置。
DocumentPasteEditContext
關於貼上作業的額外資訊。
屬性
only: DocumentDropOrPasteEditKind
請求傳回的貼上編輯類型。
當透過 PasteAs 請求特定類型時,建議提供者在產生該請求類型的編輯時更加靈活。
triggerKind: DocumentPasteTriggerKind
請求貼上編輯的原因。
DocumentPasteEditProvider<T>
當使用者在 文字文件 中執行複製或貼上時所呼叫的提供者。
方法
prepareDocumentPaste(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
使用者從 文字編輯器 執行複製後所呼叫的選擇性方法。
這允許提供者將有關已複製文字的中繼資料附加到 DataTransfer。此資料傳輸接著會在 provideDocumentPasteEdits 中傳回給提供者。
請注意,目前對 DataTransfer 的任何變更僅限於目前的編輯器視窗。這意味著其他編輯器視窗或其他應用程式無法看到新增的中繼資料。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 進行複製作業的文字文件。 |
| ranges: readonly Range[] | 文件 中被複製的範圍。 |
| dataTransfer: DataTransfer | 與複製相關聯的資料傳輸。您可以儲存額外的值以便後續在 provideDocumentPasteEdits 中使用。此物件僅在此方法執行期間有效。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| void | Thenable<void> | 當對 |
provideDocumentPasteEdits(document: TextDocument, ranges: readonly Range[], dataTransfer: DataTransfer, context: DocumentPasteEditContext, token: CancellationToken): ProviderResult<T[]>
在使用者貼上至 文字編輯器 之前呼叫。
傳回的編輯可以取代標準的貼上行為。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 正在貼入的文件 |
| ranges: readonly Range[] | 文件 中要貼入的範圍。 |
| dataTransfer: DataTransfer | 與貼上相關聯的 資料傳輸。此物件僅在貼上作業期間有效。 |
| context: DocumentPasteEditContext | 貼上的額外內容。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 可套用貼上的一組潛在 編輯。一次僅套用一個傳回的 DocumentPasteEdit。如果所有提供者傳回多個編輯,則會自動套用第一個,並顯示一個小工具,讓使用者切換至其他編輯。 |
resolveDocumentPasteEdit(pasteEdit: T, token: CancellationToken): ProviderResult<T>
選擇性方法,在套用編輯前填入 DocumentPasteEdit.additionalEdit。
此方法對每個編輯呼叫一次,如果產生完整編輯可能需要很長時間,則應使用此方法。解析 (Resolve) 僅可用於變更 DocumentPasteEdit.insertText 或 DocumentPasteEdit.additionalEdit。
| 參數 | 說明 |
|---|---|
| pasteEdit: T | 要解析的 DocumentPasteEdit。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 已解析的貼上編輯或解析為此類編輯的 thenable。傳回給定的 |
DocumentPasteProviderMetadata
提供關於 DocumentPasteEditProvider 如何運作的額外中繼資料。
屬性
copyMimeTypes?: readonly string[]
prepareDocumentPaste 在複製時可能新增的 MIME 類型。
pasteMimeTypes?: readonly string[]
應該呼叫 provideDocumentPasteEdits 的 MIME 類型。
這可以是精確的 MIME 類型(如 image/png),或是萬用字元模式(如 image/*)。
使用 text/uri-list 處理從工作台中的檔案總管或其他樹狀檢視拖放的資源。
使用 files 來表示如果 DataTransfer 中存在任何 檔案,則應呼叫該提供者。注意:DataTransferFile 項目僅在從編輯器外部(例如從作業系統)貼上內容時建立。
providedPasteEditKinds: readonly DocumentDropOrPasteEditKind[]
提供者可能在 provideDocumentPasteEdits 中傳回的 種類 (kinds) 清單。
這用於在要求特定 種類 的編輯時篩選提供者。
DocumentPasteTriggerKind
請求貼上編輯的原因。
列舉成員
貼上動作是作為一般貼上作業的一部分請求的。
貼上動作是使用者透過 paste as (貼上為) 指令請求的。
DocumentRangeFormattingEditProvider
文件格式化提供者介面定義了擴充功能與格式化功能之間的契約。
方法
provideDocumentRangeFormattingEdits(document: TextDocument, range: Range, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
為文件中的範圍提供格式化編輯。
給定的範圍僅作為提示,提供者可以決定格式化更小或更大的範圍。這通常是透過將範圍的開頭和結尾調整至完整的語法節點來完成。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| range: Range | 應格式化的範圍。 |
| options: FormattingOptions | 控制格式化的選項。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TextEdit[]> | 一組文字編輯或解析為此類編輯的 thenable。若無結果,可傳回 |
provideDocumentRangesFormattingEdits(document: TextDocument, ranges: Range[], options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
為文件中的多個範圍提供格式化編輯。
此功能是選擇性的,但在僅格式化修改過的範圍或格式化大量選取內容時,允許格式化工具執行得更快。
給定的範圍僅作為提示,提供者可以決定格式化更小或更大的範圍。這通常是透過將範圍的開頭和結尾調整至完整的語法節點來完成。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| ranges: Range[] | 應格式化的範圍。 |
| options: FormattingOptions | 控制格式化的選項。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TextEdit[]> | 一組文字編輯或解析為此類編輯的 thenable。若無結果,可傳回 |
DocumentRangeSemanticTokensProvider
文件範圍語意符號提供者介面定義了擴充功能與語意符號之間的契約。
活動
onDidChangeSemanticTokens?: Event<void>
一個選擇性事件,用以發出此提供者的語意符號已變更的訊號。
方法
provideDocumentRangeSemanticTokens(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<SemanticTokens>
| 參數 | 說明 |
|---|---|
| document: TextDocument | |
| range: Range | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| ProviderResult<SemanticTokens> |
DocumentSelector
語言選取器是一個或多個語言識別碼與 語言篩選器 的組合。
注意:僅包含語言識別碼的語言選取器會選取 所有 文件,甚至是那些尚未儲存到磁碟的文件。僅在功能無需進一步內容(例如無需解析相關「檔案」)即可運作時才使用此類選取器。
範例
let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };
DocumentSelector: DocumentFilter | string | ReadonlyArray<DocumentFilter | string>
DocumentSemanticTokensProvider
文件語意符號提供者介面定義了擴充功能與語意符號之間的契約。
活動
onDidChangeSemanticTokens?: Event<void>
一個選擇性事件,用以發出此提供者的語意符號已變更的訊號。
方法
provideDocumentSemanticTokens(document: TextDocument, token: CancellationToken): ProviderResult<SemanticTokens>
檔案中的符號表示為整數陣列。每個符號的位置都相對於前一個符號表示,因為當檔案進行編輯時,大多數符號彼此保持相對穩定。
簡而言之,每個符號需要 5 個整數來表示,因此檔案中特定的符號 i 由以下陣列索引組成
- 在索引
5*i-deltaLine:符號行號,相對於前一個符號 - 在索引
5*i+1-deltaStart:符號起始字元,相對於前一個符號(相對於 0 或前一個符號的開頭,如果它們在同一行) - 在索引
5*i+2-length:符號的長度。符號不能跨越多行。 - 在索引
5*i+3-tokenType:將在SemanticTokensLegend.tokenTypes中查閱。我們目前要求tokenType< 65536。 - 在索引
5*i+4-tokenModifiers:每個設定的位元將在SemanticTokensLegend.tokenModifiers中查閱
如何編碼符號
以下是在 uint32 陣列中編碼 3 個符號的檔案範例
{ line: 2, startChar: 5, length: 3, tokenType: "property", tokenModifiers: ["private", "static"] },
{ line: 2, startChar: 10, length: 4, tokenType: "type", tokenModifiers: [] },
{ line: 5, startChar: 2, length: 7, tokenType: "class", tokenModifiers: [] }
- 首先,必須設計一個圖例 (legend)。此圖例必須預先提供,並涵蓋所有可能的符號類型。在此範例中,我們選擇以下圖例,該圖例必須在註冊提供者時傳入
tokenTypes: ['property', 'type', 'class'],
tokenModifiers: ['private', 'static']
- 第一個轉換步驟是使用圖例將
tokenType和tokenModifiers編碼為整數。符號類型依索引查閱,因此tokenType值為1表示tokenTypes[1]。可以使用位元旗標設定多個符號修飾元,因此tokenModifier值為3首先被視為二進位0b00000011,這表示[tokenModifiers[0], tokenModifiers[1]],因為位元 0 和 1 已設定。使用此圖例,符號現在為
{ line: 2, startChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
{ line: 2, startChar: 10, length: 4, tokenType: 1, tokenModifiers: 0 },
{ line: 5, startChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
- 下一步是將每個符號表示為相對於檔案中前一個符號。在此情況下,第二個符號與第一個符號在同一行,因此第二個符號的
startChar相對於第一個符號的startChar,所以它將是10 - 5。第三個符號與第二個符號不在同一行,因此第三個符號的startChar不會改變
{ deltaLine: 2, deltaStartChar: 5, length: 3, tokenType: 0, tokenModifiers: 3 },
{ deltaLine: 0, deltaStartChar: 5, length: 4, tokenType: 1, tokenModifiers: 0 },
{ deltaLine: 3, deltaStartChar: 2, length: 7, tokenType: 2, tokenModifiers: 0 }
- 最後一步是在單一陣列中內嵌符號的 5 個欄位,這是一種對記憶體友善的表示方式
// 1st token, 2nd token, 3rd token
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
另請參閱 SemanticTokensBuilder,這是一個協助將符號編碼為整數的輔助程式。 注意:執行編輯時,編輯器決定呼叫語意符號提供者之前可能會發生多次編輯。 注意:如果提供者暫時無法計算語意符號,可以透過丟出包含訊息「Busy」的錯誤來指示。
| 參數 | 說明 |
|---|---|
| document: TextDocument | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| ProviderResult<SemanticTokens> |
provideDocumentSemanticTokensEdits(document: TextDocument, previousResultId: string, token: CancellationToken): ProviderResult<SemanticTokens | SemanticTokensEdits>
除了始終傳回檔案中的所有符號外,DocumentSemanticTokensProvider 也可以實作此方法(provideDocumentSemanticTokensEdits),然後傳回對先前提供的語意符號的遞增更新。
文件變更時符號如何變更
假設 provideDocumentSemanticTokens 先前已傳回以下語意符號
// 1st token, 2nd token, 3rd token
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
同樣假設在進行一些編輯後,檔案中的新語意符號為
// 1st token, 2nd token, 3rd token
[ 3,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ]
可以根據套用到先前符號的編輯來表示這些新符號
[ 2,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ] // old tokens
[ 3,5,3,0,3, 0,5,4,1,0, 3,2,7,2,0 ] // new tokens
edit: { start: 0, deleteCount: 1, data: [3] } // replace integer at offset 0 with 3
注意:如果提供者無法計算 SemanticTokensEdits,它可以「放棄」並再次傳回文件中的所有符號。 注意:SemanticTokensEdits 中的所有編輯都包含舊整數陣列中的索引,因此它們都參照先前的結果狀態。
| 參數 | 說明 |
|---|---|
| document: TextDocument | |
| previousResultId: string | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| ProviderResult<SemanticTokens | SemanticTokensEdits> |
DocumentSymbol
表示出現在文件中的程式設計結構,如變數、類別、介面等。文件符號可以是階層式的,並且具有兩個範圍:一個是包含其定義的範圍,另一個是指向其最有趣範圍的範圍,例如識別碼的範圍。
建構函式
new DocumentSymbol(name: string, detail: string, kind: SymbolKind, range: Range, selectionRange: Range): DocumentSymbol
建立新的文件符號。
| 參數 | 說明 |
|---|---|
| name: string | 符號的名稱。 |
| detail: string | 符號的詳細資料。 |
| kind: SymbolKind | 符號的類型。 |
| range: Range | 符號的完整範圍。 |
| selectionRange: Range | 應顯示的範圍。 |
| 回傳值 | 說明 |
| DocumentSymbol |
屬性
children: DocumentSymbol[]
此符號的子項,例如類別的屬性。
此符號的更多細節,例如函式的簽章。
kind: SymbolKind
此符號的類型。
此符號的名稱。
range: Range
包含此符號的範圍,不包括前導/尾隨空白,但包含其他所有內容,例如註解和程式碼。
selectionRange: Range
選取此符號時應被選取並顯示的範圍,例如函式名稱。必須包含在 range 中。
tags?: readonly SymbolTag[]
此符號的標記。
DocumentSymbolProvider
文件符號提供者介面定義了擴充功能與 前往符號 (go to symbol) 功能之間的契約。
方法
provideDocumentSymbols(document: TextDocument, token: CancellationToken): ProviderResult<DocumentSymbol[] | SymbolInformation[]>
為給定文件提供符號資訊。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<DocumentSymbol[] | SymbolInformation[]> | 一組文件標示陣列或解析為此類陣列的 thenable。若無結果,可傳回 |
DocumentSymbolProviderMetadata
關於文件符號提供者的中繼資料。
屬性
當同一文件出現多個大綱樹狀結構時顯示的人類可讀字串。
EndOfLine
表示 文件 中的行尾字元序列。
列舉成員
換行字元 \n。
歸位換行序列 \r\n。
EnterAction
描述按下 Enter 時要執行的動作。
屬性
描述在換行及縮排之後要附加的文字。
indentAction: IndentAction
描述對縮排要執行的動作。
描述從新行的縮排中移除的字元數量。
EnvironmentVariableCollection
擴充功能可套用到處理序環境的變更集合。
屬性
description: string | MarkdownString
環境變數集合的描述,這將用於在 UI 中描述變更。
集合是否應為工作區快取,並在視窗重載後套用到終端機。設為 true 時,集合將在視窗重載時立即啟用。此外,若存在快取版本,此 API 將傳回快取版本。當解除安裝擴充功能或清除集合時,該集合將失效。預設值為 true。
方法
append(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
將值附加到環境變數。
請注意,擴充功能對任何一個變數只能進行一次變更,因此這會覆寫先前任何取代、附加或前置的呼叫。
| 參數 | 說明 |
|---|---|
| variable: string | 要附加的變數。 |
| value: string | 要附加到變數的值。 |
| options?: EnvironmentVariableMutatorOptions | 套用到變更器的選項,若未提供選項,預設為 |
| 回傳值 | 說明 |
| void |
清除此集合中的所有變更器。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
delete(variable: string): void
刪除此集合中針對某變數的變更器。
| 參數 | 說明 |
|---|---|
| variable: string | 要刪除變更器的變數。 |
| 回傳值 | 說明 |
| void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
逐一查看此集合中的每個變更器。
| 參數 | 說明 |
|---|---|
| callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any | 要為每個項目執行的函式。 |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| void |
get(variable: string): EnvironmentVariableMutator
取得此集合套用到變數的變更器(若有的話)。
| 參數 | 說明 |
|---|---|
| variable: string | 要取得變更器的變數。 |
| 回傳值 | 說明 |
| EnvironmentVariableMutator |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
將值前置到環境變數。
請注意,擴充功能對任何一個變數只能進行一次變更,因此這會覆寫先前任何取代、附加或前置的呼叫。
| 參數 | 說明 |
|---|---|
| variable: string | 要前置的變數。 |
| value: string | 要前置到變數的值。 |
| options?: EnvironmentVariableMutatorOptions | 套用到變更器的選項,若未提供選項,預設為 |
| 回傳值 | 說明 |
| void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
以值取代環境變數。
請注意,擴充功能對任何一個變數只能進行一次變更,因此這會覆寫先前任何取代、附加或前置的呼叫。
| 參數 | 說明 |
|---|---|
| variable: string | 要取代的變數。 |
| value: string | 要用來取代變數的值。 |
| options?: EnvironmentVariableMutatorOptions | 套用到變更器的選項,若未提供選項,預設為 |
| 回傳值 | 說明 |
| void |
EnvironmentVariableMutator
要套用到環境變數的變更類型及其值。
屬性
options: EnvironmentVariableMutatorOptions
套用到變更器的選項。
type: EnvironmentVariableMutatorType
將對變數進行的變更類型。
要用於變數的值。
EnvironmentVariableMutatorOptions
套用到變更器的選項。
屬性
applyAtProcessCreation?: boolean
在處理序建立前立即套用到環境。預設值為 false。
applyAtShellIntegration?: boolean
套用到 Shell 整合指令碼中的環境。注意:如果 Shell 整合已停用或因故無法運作,此變更器 將不會 套用。預設值為 false。
EnvironmentVariableMutatorType
可套用到環境變數的變更類型。
列舉成員
取代變數的現有值。
附加到變數現有值的末尾。
前置到變數現有值的開頭。
EnvironmentVariableScope
環境變數集合套用的範圍物件。
屬性
workspaceFolder?: WorkspaceFolder
要取得集合的任何特定工作區資料夾。
EvaluatableExpression
EvaluatableExpression 代表文件中可由作用中偵錯工具或執行階段評估的運算式。此評估的結果會顯示在類似工具提示的小工具中。如果僅指定一個範圍,運算式將從基礎文件中提取。選擇性的運算式可用於覆寫提取的運算式。在此情況下,範圍仍用於反白顯示文件中的該範圍。
建構函式
new EvaluatableExpression(range: Range, expression?: string): EvaluatableExpression
建立新的可評估運算式物件。
| 參數 | 說明 |
|---|---|
| range: Range | 從中提取可評估運算式的基礎文件中的範圍。 |
| expression?: string | 如果指定,將覆寫提取的運算式。 |
| 回傳值 | 說明 |
| EvaluatableExpression |
屬性
如果指定,運算式將覆寫提取的運算式。
range: Range
該範圍用於從基礎文件中提取可評估運算式,並反白顯示它。
EvaluatableExpressionProvider
可評估運算式提供者介面定義了擴充功能與偵錯懸停 (debug hover) 之間的契約。在此契約中,提供者針對文件中的指定位置傳回一個可評估運算式,編輯器會在作用中的偵錯工作階段中評估此運算式,並在偵錯懸停中顯示結果。
方法
provideEvaluatableExpression(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<EvaluatableExpression>
為指定文件和位置提供可評估運算式。編輯器將在作用中的偵錯工作階段中評估此運算式,並在偵錯懸停中顯示結果。運算式可以隱式地由基礎文件中的範圍指定,或透過明確傳回運算式來指定。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 即將顯示偵錯懸停的文件。 |
| position: Position | 即將顯示偵錯懸停的文件中的行和字元位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<EvaluatableExpression> | 一個 EvaluatableExpression 或解析為此類運算式的 thenable。若無結果,可傳回 |
Event<T>
表示一個型別化事件。
一個表示事件的函式,您可以透過以監聽器函式作為引數呼叫它來訂閱該事件。
範例
item.onDidChange(function(event) {
console.log('Event happened: ' + event);
});
(listener: (e: T) => any, thisArgs?: any, disposables?: Disposable[]): Disposable
一個表示事件的函式,您可以透過以監聽器函式作為引數呼叫它來訂閱該事件。
| 參數 | 說明 |
|---|---|
| listener: (e: T) => any | 當事件發生時,監聽器函式將被呼叫。 |
| thisArgs?: any | 呼叫事件監聽器時將使用的 |
| disposables?: Disposable[] | 將加入 Disposable 的陣列。 |
| 回傳值 | 說明 |
| Disposable | 取消訂閱事件監聽器的拋棄式物件 (disposable)。 |
EventEmitter<T>
事件發射器可用於建立和管理供他人訂閱的 事件。一個發射器始終擁有一個事件。
如果您想從擴充功能內部提供事件(例如在 TextDocumentContentProvider 內部,或向其他擴充功能提供 API 時),請使用此類別。
建構函式
new EventEmitter<T>(): EventEmitter<T>
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| EventEmitter<T> |
屬性
event: Event<T>
監聽器可以訂閱的事件。
方法
拋棄此物件並釋放資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
通知 事件 的所有訂閱者。一個或多個監聽器的失敗不會導致此函式呼叫失敗。
| 參數 | 說明 |
|---|---|
| data: T | 事件物件。 |
| 回傳值 | 說明 |
| void |
Extension<T>
表示一個擴充功能。
若要取得 Extension 的執行個體,請使用 getExtension。
屬性
此擴充功能匯出的公用 API(activate 的傳回值)。在此擴充功能啟用前存取此欄位是無效的操作。
extensionKind: ExtensionKind
擴充功能類型描述了擴充功能是在 UI 執行處執行,還是遠端擴充功能主機執行處執行。擴充功能類型定義在擴充功能的 package.json 檔案中,但也可以透過 remote.extensionKind 設定進行調整。當沒有遠端擴充功能主機存在時,值為 ExtensionKind.UI。
包含此擴充功能的目錄的絕對檔案路徑。Extension.extensionUri.fsPath 的速記符號(獨立於 uri 配置)。
extensionUri: Uri
包含該擴充功能的目錄的 URI。
標準擴充功能識別碼,格式為:publisher.name。
如果擴充功能已啟用,則為 true。
擴充功能 package.json 的剖析內容。
方法
啟用此擴充功能並傳回其公用 API。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<T> | 此擴充功能啟用後將解析的承諾 (promise)。 |
ExtensionContext
擴充功能內容是擴充功能私有的公用程式集合。
ExtensionContext 的執行個體作為擴充功能 activate 呼叫的第一個參數提供。
屬性
environmentVariableCollection: GlobalEnvironmentVariableCollection
取得此工作區擴充功能的全域環境變數集合,從而能夠將變更套用到終端機環境變數。
extension: Extension<any>
目前的 Extension 執行個體。
extensionMode: ExtensionMode
擴充功能執行的模式。請參閱 ExtensionMode 以取得可能的值和情境。
包含擴充功能的目錄的絕對檔案路徑。ExtensionContext.extensionUri.fsPath 的速記符號(獨立於 uri 配置)。
extensionUri: Uri
包含該擴充功能的目錄的 URI。
globalState: Memento & {setKeysForSync}
一個 memento 物件,用於儲存獨立於目前開啟的 工作區 的狀態。
擴充功能可用於儲存全域狀態的絕對檔案路徑。該目錄可能不存在於磁碟上,建立與否取決於擴充功能。但是,保證父目錄是存在的。
使用 globalState 來儲存鍵值資料。
- 已棄用 - 改用 globalStorageUri。
globalStorageUri: Uri
擴充功能可用於儲存全域狀態的目錄 URI。該目錄可能不存在於磁碟上,建立與否取決於擴充功能。但是,保證父目錄是存在的。
使用 globalState 來儲存鍵值資料。
另請參閱 workspace.fs,了解如何從 URI 讀取和寫入檔案與資料夾。
languageModelAccessInformation: LanguageModelAccessInformation
一個物件,保持有關此擴充功能如何使用語言模型的資訊。
擴充功能可用於建立記錄檔的目錄的絕對檔案路徑。該目錄可能不存在於磁碟上,建立與否取決於擴充功能。但是,保證父目錄是存在的。
- 已棄用 - 改用 logUri。
logUri: Uri
擴充功能可用於建立記錄檔的目錄的 URI。該目錄可能不存在於磁碟上,建立與否取決於擴充功能。但是,保證父目錄是存在的。
另請參閱 workspace.fs,了解如何從 URI 讀取和寫入檔案與資料夾。
secrets: SecretStorage
一個秘密儲存物件,用於儲存獨立於目前開啟的 工作區 的狀態。
工作區特定目錄的絕對檔案路徑,擴充功能可在其中儲存私有狀態。該目錄可能不存在於磁碟上,建立與否取決於擴充功能。但是,保證父目錄是存在的。
使用 workspaceState 或 globalState 來儲存鍵值資料。
- 已棄用 - 改用 storageUri。
storageUri: Uri
工作區特定目錄的 URI,擴充功能可在其中儲存私有狀態。該目錄可能不存在,建立與否取決於擴充功能。但是,保證父目錄是存在的。當未開啟工作區或資料夾時,值為 undefined。
使用 workspaceState 或 globalState 來儲存鍵值資料。
另請參閱 workspace.fs,了解如何從 URI 讀取和寫入檔案與資料夾。
subscriptions: Array<{dispose}>
可加入拋棄式物件 (disposables) 的陣列。當此擴充功能停用時,拋棄式物件將被拋棄。
注意:非同步拋棄函式不會被等待 (await)。
workspaceState: Memento
一個 memento 物件,用於在目前開啟的 工作區 的上下文中儲存狀態。
方法
asAbsolutePath(relativePath: string): string
取得擴充功能中包含資源的絕對路徑。
注意:絕對 URI 可透過 Uri.joinPath 和 extensionUri 建構,例如 vscode.Uri.joinPath(context.extensionUri, relativePath);
| 參數 | 說明 |
|---|---|
| relativePath: string | 指向擴充功能內包含資源的相對路徑。 |
| 回傳值 | 說明 |
| string | 資源的絕對路徑。 |
ExtensionKind
在遠端視窗中,擴充功能類型描述了擴充功能是在 UI(視窗)執行處執行,還是遠端執行。
列舉成員
擴充功能在 UI 執行處執行。
擴充功能在遠端擴充功能主機執行處執行。
ExtensionMode
ExtensionMode 提供於 ExtensionContext 上,並指出特定擴充功能執行的模式。
列舉成員
擴充功能以一般方式(例如,從市集或 VSIX)安裝在編輯器中。
擴充功能從啟動編輯器時提供的 --extensionDevelopmentPath 執行。
擴充功能從 --extensionTestsPath 執行,且擴充功能主機正在執行單元測試。
ExtensionTerminalOptions
描述虛擬處理序終端機應使用哪些選項的值物件。
屬性
color?: ThemeColor
終端機的圖示 ThemeColor。建議使用標準 terminal.ansi* 主題索引鍵,以在不同主題中獲得最佳對比度和一致性。
iconPath?: IconPath
終端機的圖示路徑或 ThemeIcon。
選擇退出重啟和重載時的預設終端機持久性。這僅在啟用 terminal.integrated.enablePersistentSessions 時生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
將用於在 UI 中表示終端機的人類可讀字串。
pty: Pseudoterminal
允許擴充功能控制終端機的 Pseudoterminal 實作。
shellIntegrationNonce?: string
用於驗證 Shell 整合序列來自受信任來源的 nonce。此功能對 UX 的影響範例為:如果命令列是以 nonce 回報的,則在透過 Shell 整合命令裝飾 重新執行之前,無需向使用者驗證命令列是否正確。
如果終端機包含 自訂 Shell 整合支援,則應使用此項。它應設定為隨機 GUID。在 Pseudoterminal 實作內部,此值可在相關序列中傳遞,以使其受信任。
FileChangeEvent
檔案系統提供者必須用來發出檔案變更訊號的事件。
屬性
type: FileChangeType
變更類型。
uri: Uri
已變更檔案的 URI。
FileChangeType
檔案變更類型列舉。
列舉成員
檔案的內容或中繼資料已變更。
檔案已被建立。
檔案已被刪除。
FileCoverage
包含檔案的覆蓋範圍中繼資料。
靜態
fromDetails(uri: Uri, details: readonly FileCoverageDetail[]): FileCoverage
建立一個 FileCoverage 實例,其計數由覆蓋範圍詳細資訊填入。
| 參數 | 說明 |
|---|---|
| uri: Uri | 覆蓋範圍檔案 URI |
| details: readonly FileCoverageDetail[] | 詳細覆蓋範圍資訊 |
| 回傳值 | 說明 |
| FileCoverage |
建構函式
new FileCoverage(uri: Uri, statementCoverage: TestCoverageCount, branchCoverage?: TestCoverageCount, declarationCoverage?: TestCoverageCount, includesTests?: TestItem[]): FileCoverage
| 參數 | 說明 |
|---|---|
| uri: Uri | 覆蓋範圍檔案 URI |
| statementCoverage: TestCoverageCount | 語句覆蓋率資訊。如果報告程式未提供語句覆蓋率資訊,此欄位可用於表示行覆蓋率。 |
| branchCoverage?: TestCoverageCount | 分支覆蓋率資訊 |
| declarationCoverage?: TestCoverageCount | 宣告覆蓋率資訊 |
| includesTests?: TestItem[] | 包含在此覆蓋率報告中的測試案例,請參閱 FileCoverage.includesTests |
| 回傳值 | 說明 |
| FileCoverage |
屬性
branchCoverage?: TestCoverageCount
分支覆蓋率資訊。
declarationCoverage?: TestCoverageCount
宣告覆蓋率資訊。根據報告程式與程式語言的不同,這可能是函式、方法或命名空間等類型。
includesTests?: TestItem[]
在此檔案中產生覆蓋率的 測試案例 清單。若已設定,則亦應定義 TestRunProfile.loadDetailedCoverageForTest 以便擷取詳細的覆蓋率資訊。
statementCoverage: TestCoverageCount
語句覆蓋率資訊。如果報告程式未提供語句覆蓋率資訊,此欄位可用於表示行覆蓋率。
uri: Uri
檔案 URI。
FileCoverageDetail
從 TestRunProfile.loadDetailedCoverage 傳回的覆蓋率詳細資訊。
FileCoverageDetail: StatementCoverage | DeclarationCoverage
FileCreateEvent
在檔案建立後觸發的事件。
屬性
files: readonly Uri[]
已建立的檔案。
FileDecoration
檔案裝飾代表可以隨檔案一起呈現的中繼資料。
建構函式
new FileDecoration(badge?: string, tooltip?: string, color?: ThemeColor): FileDecoration
建立新的裝飾。
| 參數 | 說明 |
|---|---|
| badge?: string | 代表該裝飾的字母。 |
| tooltip?: string | 裝飾的工具提示。 |
| color?: ThemeColor | 裝飾的顏色。 |
| 回傳值 | 說明 |
| FileDecoration |
屬性
代表此裝飾的極短字串。
color?: ThemeColor
此裝飾的顏色。
一個旗標,表示此裝飾應傳播至其父項目。
此裝飾的人類可讀工具提示。
FileDecorationProvider
裝飾提供者介面定義了擴充功能與檔案裝飾之間的契約。
活動
onDidChangeFileDecorations?: Event<Uri | Uri[]>
方法
provideFileDecoration(uri: Uri, token: CancellationToken): ProviderResult<FileDecoration>
提供給定 uri 的裝飾。
注意:此函式僅在檔案於 UI 中呈現時呼叫。這意味著來自向外傳播的子項目的裝飾,必須透過 onDidChangeFileDecorations 事件向編輯器發出訊號。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要提供裝飾的檔案 uri。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<FileDecoration> | 一個裝飾,或是解析為裝飾的 thenable。 |
FileDeleteEvent
在檔案刪除後觸發的事件。
屬性
files: readonly Uri[]
已刪除的檔案。
FilePermission
檔案的權限。
列舉成員
檔案為唯讀。
注意:所有從註冊了 isReadonly: true 選項的 FileSystemProvider 取得的 FileStat,將會被隱式處理為如同設定了 FilePermission.Readonly。因此,不可能註冊一個唯讀檔案系統提供者,但其中某些 FileStat 不是唯讀的情況。
FileRenameEvent
在檔案更名後觸發的事件。
屬性
files: ReadonlyArray<{newUri: Uri, oldUri: Uri}>
已更名的檔案。
FileStat
FileStat 類型表示有關檔案的中繼資料
屬性
建立時間戳記,以 1970 年 1 月 1 日 00:00:00 UTC 以來的毫秒數表示。
修改時間戳記,以 1970 年 1 月 1 日 00:00:00 UTC 以來的毫秒數表示。
注意:如果檔案已變更,提供一個從前一個值推進的更新後 mtime 非常重要。否則可能會出現最佳化機制,導致例如在編輯器中無法顯示更新後的檔案內容。
permissions?: FilePermission
檔案的權限,例如檔案是否為唯讀。
注意:此值可能是一個位元遮罩,例如 FilePermission.Readonly | FilePermission.Other。
位元組大小。
注意:如果檔案已變更,提供更新後的 size 非常重要。否則可能會出現最佳化機制,導致例如在編輯器中無法顯示更新後的檔案內容。
type: FileType
檔案類型,例如是否為一般檔案、目錄或檔案符號連結。
注意:此值可能是一個位元遮罩,例如 FileType.File | FileType.SymbolicLink。
FileSystem
檔案系統介面公開了編輯器內建及外掛貢獻的 檔案系統提供者。它允許擴充功能處理來自本機磁碟以及遠端位置(例如遠端擴充功能主機或 ftp 伺服器)的檔案。
注意:此介面的執行個體可透過 workspace.fs 取得。
方法
copy(source: Uri, target: Uri, options?: {overwrite: boolean}): Thenable<void>
複製檔案或資料夾。
createDirectory(uri: Uri): Thenable<void>
建立新目錄(注意,新檔案是透過 write 呼叫建立的)。
注意:缺失的目錄會自動建立,例如此呼叫具有 mkdirp 語意。
| 參數 | 說明 |
|---|---|
| uri: Uri | 新資料夾的 uri。 |
| 回傳值 | 說明 |
| Thenable<void> |
delete(uri: Uri, options?: {recursive: boolean, useTrash: boolean}): Thenable<void>
刪除檔案。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要刪除的資源。 |
| options?: {recursive: boolean, useTrash: boolean} | 定義是否應使用垃圾桶以及刪除資料夾是否為遞迴的。 |
| 回傳值 | 說明 |
| Thenable<void> |
isWritableFileSystem(scheme: string): boolean
檢查給定的檔案系統是否支援寫入檔案。
請記住,僅僅因為檔案系統支援寫入,並不代表寫入一定會成功。可能存在權限問題或其他錯誤導致檔案無法寫入。
| 參數 | 說明 |
|---|---|
| scheme: string | 檔案系統的架構(scheme),例如 |
| 回傳值 | 說明 |
| boolean | 如果檔案系統支援寫入,則為 |
readDirectory(uri: Uri): Thenable<Array<[string, FileType]>>
擷取 目錄 的所有項目。
readFile(uri: Uri): Thenable<Uint8Array>
讀取整個檔案內容。
| 參數 | 說明 |
|---|---|
| uri: Uri | 檔案的 uri。 |
| 回傳值 | 說明 |
| Thenable<Uint8Array> | 位元組陣列,或是解析為該陣列的 thenable。 |
rename(source: Uri, target: Uri, options?: {overwrite: boolean}): Thenable<void>
重新命名檔案或資料夾。
stat(uri: Uri): Thenable<FileStat>
writeFile(uri: Uri, content: Uint8Array): Thenable<void>
將資料寫入檔案,取代其全部內容。
| 參數 | 說明 |
|---|---|
| uri: Uri | 檔案的 uri。 |
| content: Uint8Array | 檔案的新內容。 |
| 回傳值 | 說明 |
| Thenable<void> |
FileSystemError
檔案系統提供者應使用此類型來標示錯誤。
此類別具有常見錯誤案例的工廠方法,例如檔案或資料夾不存在時的 FileNotFound,使用方式如下:throw vscode.FileSystemError.FileNotFound(someUri);
靜態
FileExists(messageOrUri?: string | Uri): FileSystemError
建立錯誤以標示檔案或資料夾已存在,例如在建立檔案但不覆寫時。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
FileIsADirectory(messageOrUri?: string | Uri): FileSystemError
建立錯誤以標示檔案為資料夾。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
FileNotADirectory(messageOrUri?: string | Uri): FileSystemError
建立錯誤以標示檔案不是資料夾。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
FileNotFound(messageOrUri?: string | Uri): FileSystemError
建立錯誤以標示檔案或資料夾未找到。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
NoPermissions(messageOrUri?: string | Uri): FileSystemError
建立錯誤以標示作業缺乏必要權限。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
Unavailable(messageOrUri?: string | Uri): FileSystemError
建立錯誤以標示檔案系統不可用或過於忙碌而無法完成要求。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
建構函式
new FileSystemError(messageOrUri?: string | Uri): FileSystemError
建立新的檔案系統錯誤。
| 參數 | 說明 |
|---|---|
| messageOrUri?: string | Uri | 訊息或 uri。 |
| 回傳值 | 說明 |
| FileSystemError |
屬性
識別此錯誤的代碼。
可能的值為錯誤名稱,如 FileNotFound,或未指定錯誤的 Unknown。
FileSystemProvider
檔案系統提供者定義了編輯器讀取、寫入、探索及管理檔案和資料夾所需的功能。它允許擴充功能提供來自遠端位置(例如 ftp 伺服器)的檔案,並將其無縫整合到編輯器中。
活動
onDidChangeFile: Event<FileChangeEvent[]>
方法
copy(source: Uri, destination: Uri, options: {overwrite: boolean}): void | Thenable<void>
複製檔案或資料夾。實作此函式是選用的,但它會加速複製操作。
- 拋出 - 當
source不存在時拋出 FileNotFound。
- 拋出 - 當
destination的父項不存在時拋出 FileNotFound,例如無需 mkdirp 邏輯。
- 拋出 - 當
destination存在且overwrite選項不為true時拋出 FileExists。
- 拋出 - 當權限不足時拋出 NoPermissions。
createDirectory(uri: Uri): void | Thenable<void>
建立新目錄(注意,新檔案是透過 write 呼叫建立的)。
- 拋出 - 當
uri的父項不存在時拋出 FileNotFound,例如無需 mkdirp 邏輯。
- 拋出 - 當
uri已存在時拋出 FileExists。
- 拋出 - 當權限不足時拋出 NoPermissions。
| 參數 | 說明 |
|---|---|
| uri: Uri | 新資料夾的 uri。 |
| 回傳值 | 說明 |
| void | Thenable<void> |
delete(uri: Uri, options: {recursive: boolean}): void | Thenable<void>
| 參數 | 說明 |
|---|---|
| uri: Uri | 要刪除的資源。 |
| options: {recursive: boolean} | 定義刪除資料夾是否為遞迴的。 |
| 回傳值 | 說明 |
| void | Thenable<void> |
readDirectory(uri: Uri): Array<[string, FileType]> | Thenable<Array<[string, FileType]>>
擷取 目錄 的所有項目。
- 拋出 - 當
uri不存在時拋出 FileNotFound。
readFile(uri: Uri): Uint8Array | Thenable<Uint8Array>
讀取整個檔案內容。
- 拋出 - 當
uri不存在時拋出 FileNotFound。
| 參數 | 說明 |
|---|---|
| uri: Uri | 檔案的 uri。 |
| 回傳值 | 說明 |
| Uint8Array | Thenable<Uint8Array> | 位元組陣列,或是解析為該陣列的 thenable。 |
rename(oldUri: Uri, newUri: Uri, options: {overwrite: boolean}): void | Thenable<void>
重新命名檔案或資料夾。
- 拋出 - 當
oldUri不存在時拋出 FileNotFound。
- 拋出 - 當
newUri的父項不存在時拋出 FileNotFound,例如無需 mkdirp 邏輯。
- 拋出 - 當
newUri存在且overwrite選項不為true時拋出 FileExists。
- 拋出 - 當權限不足時拋出 NoPermissions。
stat(uri: Uri): FileStat | Thenable<FileStat>
擷取有關檔案的中繼資料。
請注意,符號連結的中繼資料應為其所指向檔案的中繼資料。儘管如此,除了實際類型外,還必須使用 SymbolicLink 類型,例如 FileType.SymbolicLink | FileType.Directory。
- 拋出 - 當
uri不存在時拋出 FileNotFound。
watch(uri: Uri, options: {excludes: readonly string[], recursive: boolean}): Disposable
訂閱 uri 指定之檔案或資料夾中的檔案變更事件。對於資料夾,recursive 選項指示是否也應監控子資料夾、孫資料夾等檔案變更。使用 recursive: false 時,僅對直接位於該資料夾下的檔案變更應觸發事件。
excludes 陣列用於指示應從檔案監控中排除的路徑。它通常源自使用者可設定的 files.watcherExclude 設定。每個項目可以是
- 要排除的絕對路徑
- 要排除的相對路徑(例如
build/output) - 簡單的 glob 模式(例如
**/build,output/**)
注意:內建檔案系統提供者對於 excludes 模式的大小寫敏感度取決於底層檔案系統:在 Windows 和 macOS 上,比對將是不區分大小寫的,而在 Linux 上則是區分大小寫的。
檔案系統提供者的工作是根據這些規則對每次變更呼叫 onDidChangeFile。對於符合任何提供之排除條件的檔案,不應發出事件。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要監控的檔案或資料夾的 uri。 |
| options: {excludes: readonly string[], recursive: boolean} | 設定監控。 |
| 回傳值 | 說明 |
| Disposable | 一個可處置物件(Disposable),告知提供者停止監控 |
writeFile(uri: Uri, content: Uint8Array, options: {create: boolean, overwrite: boolean}): void | Thenable<void>
將資料寫入檔案,取代其全部內容。
- 拋出 - 當
uri不存在且未設定create時拋出 FileNotFound。
- 拋出 - 當
uri的父項不存在且已設定create時拋出 FileNotFound,例如無需 mkdirp 邏輯。
- 拋出 - 當
uri已存在,已設定create但未設定overwrite時拋出 FileExists。
- 拋出 - 當權限不足時拋出 NoPermissions。
| 參數 | 說明 |
|---|---|
| uri: Uri | 檔案的 uri。 |
| content: Uint8Array | 檔案的新內容。 |
| options: {create: boolean, overwrite: boolean} | 定義缺失的檔案是否應或必須建立。 |
| 回傳值 | 說明 |
| void | Thenable<void> |
FileSystemWatcher
檔案系統監控器會通知磁碟上或來自其他 FileSystemProviders 的檔案和資料夾變更。
若要取得 FileSystemWatcher 的執行個體,請使用 createFileSystemWatcher。
活動
檔案/資料夾變更時觸發的事件。
檔案/資料夾建立時觸發的事件。
檔案/資料夾刪除時觸發的事件。
屬性
若此檔案系統監控器已建立為忽略變更檔案系統事件,則為 true。
若此檔案系統監控器已建立為忽略建立檔案系統事件,則為 true。
若此檔案系統監控器已建立為忽略刪除檔案系統事件,則為 true。
方法
處置此物件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| any |
FileType
檔案類型列舉。類型 File 和 Directory 也可以是符號連結,在這種情況下使用 FileType.File | FileType.SymbolicLink 和 FileType.Directory | FileType.SymbolicLink。
列舉成員
檔案類型未知。
一般檔案。
目錄。
檔案的符號連結。
FileWillCreateEvent
屬性
files: readonly Uri[]
即將建立的檔案。
token: CancellationToken
取消權杖。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允許暫停事件並套用 工作區編輯。
注意:此函式只能在事件派發期間呼叫,不能以非同步方式呼叫。
workspace.onWillCreateFiles(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 參數 | 說明 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
waitUntil(thenable: Thenable<any>): void
允許暫停事件,直到提供的 thenable 解析為止。
注意:此函式只能在事件派發期間呼叫。
| 參數 | 說明 |
|---|---|
| thenable: Thenable<any> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
FileWillDeleteEvent
屬性
files: readonly Uri[]
即將刪除的檔案。
token: CancellationToken
取消權杖。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允許暫停事件並套用 工作區編輯。
注意:此函式只能在事件派發期間呼叫,不能以非同步方式呼叫。
workspace.onWillCreateFiles(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 參數 | 說明 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
waitUntil(thenable: Thenable<any>): void
允許暫停事件,直到提供的 thenable 解析為止。
注意:此函式只能在事件派發期間呼叫。
| 參數 | 說明 |
|---|---|
| thenable: Thenable<any> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
FileWillRenameEvent
屬性
files: ReadonlyArray<{newUri: Uri, oldUri: Uri}>
即將更名的檔案。
token: CancellationToken
取消權杖。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允許暫停事件並套用 工作區編輯。
注意:此函式只能在事件派發期間呼叫,不能以非同步方式呼叫。
workspace.onWillCreateFiles(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 參數 | 說明 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
waitUntil(thenable: Thenable<any>): void
允許暫停事件,直到提供的 thenable 解析為止。
注意:此函式只能在事件派發期間呼叫。
| 參數 | 說明 |
|---|---|
| thenable: Thenable<any> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
FoldingContext
摺疊上下文(供日後使用)
FoldingRange
基於行的摺疊範圍。若要有效,起始行與結束行必須大於零且小於文件中的行數。無效的範圍將被忽略。
建構函式
new FoldingRange(start: number, end: number, kind?: FoldingRangeKind): FoldingRange
建立新的摺疊範圍。
| 參數 | 說明 |
|---|---|
| start: number | 摺疊範圍的起始行。 |
| end: number | 摺疊範圍的結束行。 |
| kind?: FoldingRangeKind | 摺疊範圍的種類。 |
| 回傳值 | 說明 |
| FoldingRange |
屬性
以零為基底的摺疊範圍結束行。摺疊區域以該行的最後一個字元結束。若要有效,結束值必須為零或更大,且小於文件中的總行數。
kind?: FoldingRangeKind
描述摺疊範圍的 種類,例如 註解 (Comment) 或 區域 (Region)。種類用於分類摺疊範圍,並供「摺疊所有註解」等命令使用。請參閱 FoldingRangeKind 以取得所有種類的列舉。若未設定,則該範圍源自語法元素。
以零為基底的摺疊範圍起始行。摺疊區域從該行的最後一個字元後開始。若要有效,結束值必須為零或更大,且小於文件中的總行數。
FoldingRangeKind
特定摺疊範圍種類的列舉。種類是 FoldingRange 的選用欄位,用於區分特定摺疊範圍,例如源自註解的範圍。種類由「摺疊所有註解」或「摺疊所有區域」等命令使用。若該範圍未設定種類,則該範圍源自註解、匯入或區域標記以外的語法元素。
列舉成員
表示註解的摺疊範圍種類。
表示匯入的摺疊範圍種類。
表示源自摺疊標記(如 #region 和 #endregion)的區域的摺疊範圍種類。
FoldingRangeProvider
摺疊範圍提供者介面定義了擴充功能與編輯器中 摺疊 功能之間的契約。
活動
onDidChangeFoldingRanges?: Event<void>
一個選用事件,用於發送來自此提供者的摺疊範圍已變更的訊號。
方法
provideFoldingRanges(document: TextDocument, context: FoldingContext, token: CancellationToken): ProviderResult<FoldingRange[]>
傳回摺疊範圍清單;若提供者不想參與或被取消,則傳回 null 或 undefined。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| context: FoldingContext | 額外的上下文資訊(供日後使用) |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<FoldingRange[]> |
FormattingOptions
描述格式化應使用哪些選項的值物件。
屬性
偏好空格勝過定位字元 (tabs)。
定位字元的大小(以空格數計)。
FunctionBreakpoint
由函式名稱指定的斷點。
建構函式
new FunctionBreakpoint(functionName: string, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): FunctionBreakpoint
建立新的函式斷點。
| 參數 | 說明 |
|---|---|
| functionName: string | |
| enabled?: boolean | |
| condition?: string | |
| hitCondition?: string | |
| logMessage?: string | |
| 回傳值 | 說明 |
| FunctionBreakpoint |
屬性
條件中斷點的選擇性運算式。
是否啟用中斷點。
附加此斷點的函式名稱。
控制忽略多少次中斷點命中的選擇性運算式。
中斷點的唯一 ID。
命中此中斷點時記錄的選擇性訊息。{} 內的內嵌運算式會由偵錯介面卡進行插值。
GlobalEnvironmentVariableCollection
擴充功能可對程序環境套用的變動集合。適用於所有範圍。
屬性
description: string | MarkdownString
環境變數集合的描述,這將用於在 UI 中描述變更。
集合是否應為工作區快取,並在視窗重載後套用到終端機。設為 true 時,集合將在視窗重載時立即啟用。此外,若存在快取版本,此 API 將傳回快取版本。當解除安裝擴充功能或清除集合時,該集合將失效。預設值為 true。
方法
append(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
將值附加到環境變數。
請注意,擴充功能對任何一個變數只能進行一次變更,因此這會覆寫先前任何取代、附加或前置的呼叫。
| 參數 | 說明 |
|---|---|
| variable: string | 要附加的變數。 |
| value: string | 要附加到變數的值。 |
| options?: EnvironmentVariableMutatorOptions | 套用到變更器的選項,若未提供選項,預設為 |
| 回傳值 | 說明 |
| void |
清除此集合中的所有變更器。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
delete(variable: string): void
刪除此集合中針對某變數的變更器。
| 參數 | 說明 |
|---|---|
| variable: string | 要刪除變更器的變數。 |
| 回傳值 | 說明 |
| void |
forEach(callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any, thisArg?: any): void
逐一查看此集合中的每個變更器。
| 參數 | 說明 |
|---|---|
| callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any | 要為每個項目執行的函式。 |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| void |
get(variable: string): EnvironmentVariableMutator
取得此集合套用到變數的變更器(若有的話)。
| 參數 | 說明 |
|---|---|
| variable: string | 要取得變更器的變數。 |
| 回傳值 | 說明 |
| EnvironmentVariableMutator |
getScoped(scope: EnvironmentVariableScope): EnvironmentVariableCollection
為擴充功能取得範圍特定的環境變數集合。這使得終端機環境變數的變更僅在指定範圍內進行,並且是全域集合之外(且之後)應用的。
透過此方法取得的每個物件都是隔離的,不會影響其他範圍的物件,包括全域集合。
| 參數 | 說明 |
|---|---|
| scope: EnvironmentVariableScope | 環境變數集合適用的範圍。 如果省略範圍參數,則傳回該參數所有相關範圍適用的集合。例如,如果未指定 'workspaceFolder' 參數,將傳回適用於所有工作區資料夾的集合。 |
| 回傳值 | 說明 |
| EnvironmentVariableCollection | 傳入範圍的環境變數集合。 |
prepend(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
將值前置到環境變數。
請注意,擴充功能對任何一個變數只能進行一次變更,因此這會覆寫先前任何取代、附加或前置的呼叫。
| 參數 | 說明 |
|---|---|
| variable: string | 要前置的變數。 |
| value: string | 要前置到變數的值。 |
| options?: EnvironmentVariableMutatorOptions | 套用到變更器的選項,若未提供選項,預設為 |
| 回傳值 | 說明 |
| void |
replace(variable: string, value: string, options?: EnvironmentVariableMutatorOptions): void
以值取代環境變數。
請注意,擴充功能對任何一個變數只能進行一次變更,因此這會覆寫先前任何取代、附加或前置的呼叫。
| 參數 | 說明 |
|---|---|
| variable: string | 要取代的變數。 |
| value: string | 要用來取代變數的值。 |
| options?: EnvironmentVariableMutatorOptions | 套用到變更器的選項,若未提供選項,預設為 |
| 回傳值 | 說明 |
| void |
GlobPattern
用於比對檔案路徑的檔案 glob 模式。這可以是 glob 模式字串(例如 **/*.{ts,js} 或 *.{ts,js})或 相對模式。
Glob 模式可以具有以下語法
*:符合路徑片段中零個或多個字元?:符合路徑片段中一個字元**:符合任意數量的路徑片段,包括沒有{}用於組合條件(例如**/*.{ts,js}比對所有 TypeScript 和 JavaScript 檔案)[]用於宣告路徑區段中要比對的字元範圍(例如,example.[0-9]可比對example.0,example.1, …)[!...]用於否定路徑區段中要比對的字元範圍(例如,example.[!0-9]可比對example.a,example.b,但不可比對example.0)
注意:反斜線(`\`)在 glob 模式內無效。如果您有現有的檔案路徑要比對,請考慮使用支援將任何反斜線轉換為斜線的 相對模式。否則,請確保在建立 glob 模式時將所有反斜線轉換為斜線。
GlobPattern: string | RelativePattern
Hover
懸停代表符號或單字的額外資訊。懸停以類似工具提示的視窗呈現。
建構函式
new Hover(contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>, range?: Range): Hover
建立新的懸停物件。
| 參數 | 說明 |
|---|---|
| contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString> | 懸停的內容。 |
| range?: Range | 懸停適用的範圍。 |
| 回傳值 | 說明 |
| 懸停 |
屬性
contents: Array<MarkdownString | MarkedString>
此懸停的內容。
range?: Range
此懸停適用的範圍。當缺失時,編輯器將使用目前位置的範圍或目前位置本身。
HoverProvider
懸停提供者介面定義了擴充功能與 懸停 功能之間的契約。
方法
provideHover(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Hover>
提供給定位置與文件的懸停資訊。同一位置的多個懸停將由編輯器合併。懸停可以有一個範圍,若省略,預設為該位置的單字範圍。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Hover> | 一個懸停,或是解析為懸停的 thenable。可透過傳回 |
IconPath
代表 UI 中的圖示。這可以是 uri、明亮與深色主題的個別 uris,或是 主題圖示。
IconPath: Uri | {dark: Uri, light: Uri} | ThemeIcon
ImplementationProvider
實作提供者介面定義了擴充功能與「前往實作」功能之間的契約。
方法
provideImplementation(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供給定位置與文件中符號的實作。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Definition | LocationLink[]> | 定義或解析為此類內容的 Thenable。若無結果,可透過回傳 |
IndentAction
描述按下 Enter 鍵時對縮排的操作。
列舉成員
插入新行並複製前一行的縮排。
插入新行並縮排一次(相對於前一行的縮排)。
插入兩行新行
- 第一行縮排,游標將位於此處
- 第二行位於相同的縮排層級
插入新行並向左縮排一次(相對於前一行的縮排)。
IndentationRule
描述語言的縮排規則。
屬性
如果某行符合此模式,則其後的所有行應向左縮排一次(直到另一個規則符合)。
如果某行符合此模式,則其後的所有行應縮排一次(直到另一個規則符合)。
indentNextLinePattern?: RegExp
如果某行符合此模式,則 僅其後的下一行 應縮排一次。
unIndentedLinePattern?: RegExp
如果某行符合此模式,則其縮排不應更改,且不應針對其他規則進行評估。
InlayHint
內嵌提示(Inlay hint)資訊。
建構函式
new InlayHint(position: Position, label: string | InlayHintLabelPart[], kind?: InlayHintKind): InlayHint
建立新的內嵌提示。
| 參數 | 說明 |
|---|---|
| position: Position | 提示的位置。 |
| label: string | InlayHintLabelPart[] | 提示的標籤。 |
| kind?: InlayHintKind | 提示的 種類。 |
| 回傳值 | 說明 |
| InlayHint |
屬性
kind?: InlayHintKind
此提示的種類。內嵌提示種類定義了此內嵌提示的外觀。
label: string | InlayHintLabelPart[]
此提示的標籤。人類可讀的字串或 標籤部分 的陣列。
注意:字串和標籤部分都不能為空。
在提示之前呈現填補(padding)。填補將使用編輯器的背景顏色,而不是提示本身的背景顏色。這意味著填補可用於在視覺上對齊/分隔內嵌提示。
在提示之後呈現填補。填補將使用編輯器的背景顏色,而不是提示本身的背景顏色。這意味著填補可用於在視覺上對齊/分隔內嵌提示。
position: Position
此提示的位置。
textEdits?: TextEdit[]
tooltip?: string | MarkdownString
當您將滑鼠懸停在此項目上時的工具提示文字。
注意:此屬性可以在內嵌提示的 解析 過程中後期設定。
InlayHintKind
內嵌提示種類。
內嵌提示的種類定義了其外觀,例如使用了相應的前景和背景顏色。
列舉成員
用於類型註解的內嵌提示。
用於參數的內嵌提示。
InlayHintLabelPart
內嵌提示標籤部分允許互動式和複合式的內嵌提示標籤。
建構函式
new InlayHintLabelPart(value: string): InlayHintLabelPart
建立新的內嵌提示標籤部分。
| 參數 | 說明 |
|---|---|
| value: string | 該部分的內容值。 |
| 回傳值 | 說明 |
| InlayHintLabelPart |
屬性
command?: Command
location?: Location
tooltip?: string | MarkdownString
當滑鼠懸停在此標籤部分時顯示的工具提示文字。
注意:此屬性可以在內嵌提示的 解析 過程中後期設定。
此標籤部分的值。
InlayHintsProvider<T>
嵌入提示(Inlay hints)提供者介面定義了擴充功能與嵌入提示功能之間的契約。
活動
onDidChangeInlayHints?: Event<void>
一個可選事件,用於發出此提供者的嵌入提示已變更的訊號。
方法
provideInlayHints(document: TextDocument, range: Range, token: CancellationToken): ProviderResult<T[]>
為給定的範圍與文件提供嵌入提示。
注意,未被給定範圍 包含 的嵌入提示將被忽略。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| range: Range | 應計算嵌入提示的範圍。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 一個嵌入提示陣列,或一個解析為該陣列的 Thenable。 |
resolveInlayHint(hint: T, token: CancellationToken): ProviderResult<T>
| 參數 | 說明 |
|---|---|
| hint: T | 一個嵌入提示。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 解析後的嵌入提示,或解析為該提示的 Thenable。傳回給定的 |
InlineCompletionContext
提供有關請求行內補全(inline completion)時上下文的資訊。
屬性
selectedCompletionInfo: SelectedCompletionInfo
若自動補全小工具可見,則提供有關目前所選項目的資訊。
如果已設定,提供的行內補全必須擴充所選項目的文字並使用相同的範圍,否則它們將不會顯示為預覽。例如,如果文件文字是 console. 而所選項目是取代文件中 . 的 .log,則行內補全也必須取代 . 並以 .log 開頭,例如 .log()。
每當所選項目變更時,就會再次請求行內補全提供者。
triggerKind: InlineCompletionTriggerKind
描述行內補全是如何被觸發的。
InlineCompletionItem
行內補全項目代表一個文字片段,建議以行內方式補全正在輸入的文字。
參見 InlineCompletionItemProvider.provideInlineCompletionItems
建構函式
new InlineCompletionItem(insertText: string | SnippetString, range?: Range, command?: Command): InlineCompletionItem
建立一個新的行內補全項目。
| 參數 | 說明 |
|---|---|
| insertText: string | SnippetString | 要取代該範圍的文字。 |
| range?: Range | 要取代的範圍。如果未設定,將使用請求位置處的單字。 |
| command?: Command | 一個可選的 指令,會在插入此補全項目後執行。 |
| 回傳值 | 說明 |
| InlineCompletionItem |
屬性
command?: Command
一個可選的 指令,會在插入此補全項目後執行。
用於決定是否應顯示此行內補全的文字。當為 falsy 時,將使用 InlineCompletionItem.insertText。
如果待取代的文字是過濾文字的前綴,則會顯示行內補全。
insertText: string | SnippetString
要取代該範圍的文字。必須設定。用於預覽與接受操作。
range?: Range
要取代的範圍。必須在同一行開始與結束。
偏好使用取代而非插入,以便在使用者刪除輸入的文字時提供更好的體驗。
InlineCompletionItemProvider
行內補全項目提供者介面定義了擴充功能與行內補全功能之間的契約。
補全請求由使用者手勢明確觸發,或在輸入時隱式觸發。
方法
provideInlineCompletionItems(document: TextDocument, position: Position, context: InlineCompletionContext, token: CancellationToken): ProviderResult<InlineCompletionList | InlineCompletionItem[]>
為給定的位置與文件提供行內補全項目。如果啟用了行內補全,則每當使用者停止輸入時,都會呼叫此方法。當使用者明確觸發行內補全,或明確要求下一個或上一個行內補全時,也會呼叫此方法。在這種情況下,應傳回所有可用的行內補全。context.triggerKind 可用於區分這些情境。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 請求行內補全的文件。 |
| position: Position | 請求行內補全的位置。 |
| context: InlineCompletionContext | 包含附加資訊的上下文物件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<InlineCompletionList | InlineCompletionItem[]> | 補全項目陣列,或解析為該陣列的 Thenable。 |
InlineCompletionList
代表要在編輯器中呈現的 行內補全項目 集合。
建構函式
new InlineCompletionList(items: InlineCompletionItem[]): InlineCompletionList
建立新的行內補全項目清單。
| 參數 | 說明 |
|---|---|
| items: InlineCompletionItem[] | |
| 回傳值 | 說明 |
| InlineCompletionList |
屬性
items: InlineCompletionItem[]
行內補全項目。
InlineCompletionTriggerKind
描述 行內補全提供者 是如何被觸發的。
列舉成員
補全由使用者手勢明確觸發。傳回多個補全項目以啟用切換功能。
補全在編輯時自動觸發。在此情況下,傳回單一補全項目即可。
InlineValue
行內值(Inline value)資訊可以透過不同方式提供:
- 直接作為文字值 (類別 InlineValueText)。
- 作為變數查找的名稱 (類別 InlineValueVariableLookup)
- 作為可評估的表達式 (類別 InlineValueEvaluatableExpression)。InlineValue 類型將所有行內值類型組合成一個類型。
InlineValue: InlineValueText | InlineValueVariableLookup | InlineValueEvaluatableExpression
InlineValueContext
一個值物件,當從 InlineValuesProvider 請求行內值時,包含上下文資訊。
屬性
執行停止時的堆疊框架(作為 DAP ID)。
stoppedLocation: Range
執行停止的文件範圍。通常範圍的結束位置表示顯示行內值的行。
InlineValueEvaluatableExpression
透過表達式評估提供行內值。如果僅指定範圍,將從底層文件中提取表達式。可選的表達式可用於覆寫提取的表達式。
建構函式
new InlineValueEvaluatableExpression(range: Range, expression?: string): InlineValueEvaluatableExpression
建立新的 InlineValueEvaluatableExpression 物件。
| 參數 | 說明 |
|---|---|
| range: Range | 從中提取可評估運算式的基礎文件中的範圍。 |
| expression?: string | 如果指定,將覆寫提取的運算式。 |
| 回傳值 | 說明 |
| InlineValueEvaluatableExpression |
屬性
如果指定,運算式將覆寫提取的運算式。
range: Range
行內值適用的文件範圍。該範圍用於從底層文件中提取可評估的表達式。
InlineValuesProvider
行內值提供者介面定義了擴充功能與編輯器除錯器行內值功能之間的契約。在此契約中,提供者針對給定的文件範圍傳回行內值資訊,編輯器會在編輯器的行尾顯示此資訊。
活動
onDidChangeInlineValues?: Event<void>
一個可選事件,用於發出行內值已變更的訊號。
另請參閱 EventEmitter
方法
provideInlineValues(document: TextDocument, viewPort: Range, context: InlineValueContext, token: CancellationToken): ProviderResult<InlineValue[]>
為給定的文件與範圍提供「行內值」資訊。編輯器會在給定文件中除錯停止時呼叫此方法。傳回的行內值資訊會渲染在編輯器的行尾。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 需要行內值資訊的文件。 |
| viewPort: Range | 應計算行內值的可見文件範圍。 |
| context: InlineValueContext | 包含上下文資訊(如目前位置)的包裹物件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<InlineValue[]> | InlineValueDescriptors 陣列,或解析為該陣列的 Thenable。傳回 |
InlineValueText
以文字形式提供行內值。
建構函式
new InlineValueText(range: Range, text: string): InlineValueText
建立新的 InlineValueText 物件。
| 參數 | 說明 |
|---|---|
| range: Range | 要顯示行內值的文件行。 |
| text: string | 該行要顯示的值。 |
| 回傳值 | 說明 |
| InlineValueText |
屬性
range: Range
行內值適用的文件範圍。
行內值的文字。
InlineValueVariableLookup
透過變數查找提供行內值。如果僅指定範圍,將從底層文件中提取變數名稱。可選的變數名稱可用於覆寫提取的名稱。
建構函式
new InlineValueVariableLookup(range: Range, variableName?: string, caseSensitiveLookup?: boolean): InlineValueVariableLookup
建立新的 InlineValueVariableLookup 物件。
| 參數 | 說明 |
|---|---|
| range: Range | 要顯示行內值的文件行。 |
| variableName?: string | 要查找的變數名稱。 |
| caseSensitiveLookup?: boolean | 如何執行查找。如果遺失,查找為區分大小寫。 |
| 回傳值 | 說明 |
| InlineValueVariableLookup |
屬性
如何執行查找。
range: Range
行內值適用的文件範圍。該範圍用於從底層文件中提取變數名稱。
如果指定,則為要查找的變數名稱。
InputBox
一種具體的 QuickInput,用於讓使用者輸入文字值。
請注意,在許多情況下,更方便的 window.showInputBox 較易於使用。當 window.showInputBox 無法提供所需的靈活性時,應使用 window.createInputBox。
活動
onDidAccept: Event<void>
當使用者表示接受輸入值時發出的事件。
onDidChangeValue: Event<string>
當值已變更時發出的事件。
onDidHide: Event<void>
onDidTriggerButton: Event<QuickInputButton>
當按鈕被觸發時發出的事件。
屬性
決定 UI 是否應顯示進度指示器。預設為 false。
例如,在載入更多資料或驗證使用者輸入時,將此變更為 true。
buttons: readonly QuickInputButton[]
UI 中動作的按鈕。
決定 UI 是否應允許使用者輸入。預設為 true。
例如,在驗證使用者輸入或為使用者輸入的下一步載入資料時,將此變更為 false。
決定 UI 在失去焦點時是否應保持開啟。預設為 false。此設定在 iPad 上會被忽略,且永遠為 false。
決定是否應隱藏輸入值。預設為 false。
未輸入值時顯示的可選預留位置文字。
可選的提示文字,向使用者提供詢問或解釋。
多步驟輸入流程的可選目前步驟計數。
輸入 UI 的可選標題。
多步驟輸入流程的可選總步驟計數。
validationMessage: string | InputBoxValidationMessage
可選的驗證訊息,指出目前輸入值有問題。
透過設定字串,InputBox 將使用預設的 InputBoxValidationSeverity (Error)。傳回 undefined 可清除驗證訊息。
目前的輸入值。
valueSelection: readonly [number, number]
輸入值中的選取範圍。
定義為兩個數字的元組,其中第一個是包含的起始索引,第二個是不包含的結束索引。當為 undefined 時,將選取整個預填值;當為空(開始等於結束)時,僅設定游標;否則將選取定義的範圍。
此屬性不會在使用者輸入或進行選取時更新,但可由擴充功能更新。
方法
處置此輸入 UI 及任何相關資源。
如果它仍然可見,它會先被隱藏。在此呼叫之後,輸入 UI 不再運作,且不應存取其上的任何額外方法或屬性。應改為建立新的輸入 UI。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
隱藏此輸入 UI。
這也會觸發 onDidHide 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
使輸入 UI 以目前的配置可見。
任何其他輸入 UI 將首先觸發 onDidHide 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
InputBoxOptions
用於配置輸入框 UI 行為的選項。
屬性
設定為 true 可在焦點移至編輯器的另一部分或另一個視窗時保持輸入框開啟。此設定在 iPad 上會被忽略,且永遠為 false。
控制是否顯示密碼輸入。密碼輸入會隱藏輸入的文字。
一個可選字串,顯示為輸入框中的預留位置,引導使用者輸入內容。
顯示在輸入框下方的文字。
代表輸入框標題的可選字串。
預填在輸入框中的值。
valueSelection?: [number, number]
預填 值 的選取範圍。定義為兩個數字的元組,其中第一個是包含的起始索引,第二個是不包含的結束索引。當為 undefined 時,將選取整個預填值;當為空(開始等於結束)時,僅設定游標;否則將選取定義的範圍。
方法
validateInput(value: string): string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>
一個可選函式,將被呼叫以驗證輸入並給予使用者提示。
| 參數 | 說明 |
|---|---|
| value: string | 輸入框的目前值。 |
| 回傳值 | 說明 |
| string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage> | 作為錯誤訊息呈現的人類可讀字串,或是可提供特定訊息嚴重性的 InputBoxValidationMessage。當 'value' 有效時,傳回 |
InputBoxValidationMessage
代表 InputBox 的驗證訊息。
屬性
要顯示給使用者的驗證訊息。
severity: InputBoxValidationSeverity
驗證訊息的嚴重性等級。
注意: 使用 InputBoxValidationSeverity.Error 時,使用者將無法接受輸入(例如,透過按下 Enter)。Info 和 Warning 嚴重性仍允許接受輸入。
InputBoxValidationSeverity
輸入框驗證訊息的嚴重性等級。
列舉成員
表示不會阻止輸入接受的資訊性訊息。
表示不會阻止輸入接受的警告訊息。
表示會阻止使用者接受輸入的錯誤訊息。
LanguageConfiguration
語言配置介面定義了擴充功能與各種編輯器功能(如自動括號插入、自動縮排等)之間的契約。
屬性
__characterPairSupport?: {autoClosingPairs: Array<{close: string, notIn: string[], open: string}>}
已棄用 請勿使用。
- 已棄用 - * 請改用語言配置檔案中的 autoClosingPairs 屬性。
| 參數 | 說明 |
|---|---|
| autoClosingPairs: Array<{close: string, notIn: string[], open: string}> |
|
__electricCharacterSupport?: {brackets: any, docComment: {close: string, lineStart: string, open: string, scope: string}}
已棄用 請勿使用。
- 已棄用 - 即將由更好的 API 取代。
| 參數 | 說明 |
|---|---|
| brackets: any | 此屬性已棄用,將被編輯器忽略。
|
| docComment: {close: string, lineStart: string, open: string, scope: string} | 此屬性已棄用,編輯器不再完全支援(scope 和 lineStart 會被忽略)。請改用語言配置檔案中的 autoClosingPairs 屬性。
|
autoClosingPairs?: AutoClosingPair[]
語言的自動閉合配對。
brackets?: CharacterPair[]
語言的括號。此配置隱含影響這些括號周圍按下 Enter 的行為。
comments?: CommentRule
語言的註解設定。
indentationRules?: IndentationRule
語言的縮排設定。
onEnterRules?: OnEnterRule[]
按下 Enter 時要評估的語言規則。
語言的單字定義。如果語言支援 Unicode 識別碼(例如 JavaScript),建議提供一個排除已知分隔符號的單字定義。例如:一個匹配除已知分隔符號之外任何內容的正規表示式(且小數點允許出現在浮點數中)。
/(-?\d*\.\d\w*)|([^\`\~\!\\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>/\?\s]+)/g
LanguageModelAccessInformation
代表擴充功能特定關於語言模型存取的資訊。
活動
onDidChange: Event<void>
當存取資訊變更時發出的事件。
方法
canSendRequest(chat: LanguageModelChat): boolean
檢查是否可以向語言模型發出請求。
注意,呼叫此函式不會觸發同意 UI,而只是檢查持續存在的狀態。
| 參數 | 說明 |
|---|---|
| chat: LanguageModelChat | 語言模型對話物件。 |
| 回傳值 | 說明 |
| boolean |
|
LanguageModelChat
代表用於進行對話請求的語言模型。
屬性
語言模型的不透明家族名稱。值可能是 gpt-3.5-turbo、gpt4、phi2 或 llama,但這些是由提供語言的擴充功能所定義,並可能隨時變更。
語言模型的不透明識別碼。
單次請求中可以傳送給模型的最大權杖(token)數量。
語言模型的人類可讀名稱。
語言模型供應商的著名識別碼。範例為 copilot,但值是由提供對話模型的擴充功能定義,需要與它們一起查找。
模型的不透明版本字串。這由提供語言模型的擴充功能定義,並可能隨時變更。
方法
countTokens(text: string | LanguageModelChatMessage, token?: CancellationToken): Thenable<number>
使用模型特定的 tokenizer 邏輯計算訊息中的權杖數量。
| 參數 | 說明 |
|---|---|
| text: string | LanguageModelChatMessage | 字串或訊息實例。 |
| token?: CancellationToken | 可選的取消權杖。請參見 CancellationTokenSource 以了解如何建立一個。 |
| 回傳值 | 說明 |
| Thenable<number> | 解析為權杖數量的 Thenable。 |
sendRequest(messages: LanguageModelChatMessage[], options?: LanguageModelChatRequestOptions, token?: CancellationToken): Thenable<LanguageModelChatResponse>
使用語言模型發出對話請求。
注意,語言模型的使用可能受到存取限制與使用者同意的約束。第一次(針對某個擴充功能)呼叫此函式將向使用者顯示同意對話框,因此此函式僅能在回應使用者動作時呼叫!擴充功能可以使用 LanguageModelAccessInformation.canSendRequest 來檢查它們是否擁有發出請求的必要權限。
如果無法向語言模型發出請求,此函式將傳回拒絕的承諾。原因可能為:
- 使用者未給予同意,請參見
NoPermissions - 模型已不存在,請參見
NotFound - 超出配額限制,請參見
Blocked - 其他問題,此時擴充功能必須檢查 [LanguageModelError.cause](#_LanguageModelError.cause)
擴充功能可以透過將一組工具傳遞給 LanguageModelChatRequestOptions.tools 來利用語言模型工具呼叫。語言模型將傳回一個 LanguageModelToolCallPart,擴充功能可以呼叫該工具並使用結果發出另一個請求。
| 參數 | 說明 |
|---|---|
| messages: LanguageModelChatMessage[] | 訊息實例陣列。 |
| options?: LanguageModelChatRequestOptions | 控制請求的選項。 |
| token?: CancellationToken | 控制請求的取消權杖。請參見 CancellationTokenSource 以了解如何建立一個。 |
| 回傳值 | 說明 |
| Thenable<LanguageModelChatResponse> | 解析為 LanguageModelChatResponse 的 Thenable。當無法發出請求時,承諾將被拒絕。 |
LanguageModelChatCapabilities
LanguageModelChatInformation 支援的各種功能,例如工具呼叫或影像輸入。
屬性
模型是否支援影像輸入。常見支援的影像格式為 jpg 和 png,但每個模型支援的 MIME 類型各不相同。
toolCalling?: number | boolean
模型是否支援工具呼叫。如果提供了數字,則為請求中可提供給模型的最大工具數量。
LanguageModelChatInformation
代表由 LanguageModelChatProvider 提供的語言模型。
屬性
capabilities: LanguageModelChatCapabilities
模型支援的各種功能,例如工具呼叫或影像輸入。
可選的人類可讀字串,將顯示在模型旁邊。用於在 UI 中區分同名模型。
語言模型的不透明家族名稱。值可能是 gpt-3.5-turbo、gpt4、phi2 或 llama
語言模型的唯一識別碼。每個提供者必須是唯一的,但不需要全域唯一。
模型作為輸入可接受的最大權杖數量。
模型能夠產生的最大權杖數量。
語言模型的人類可讀名稱。
懸停模型時呈現的工具提示。用於提供有關模型的更多資訊。
模型的不透明版本字串。這被用作 LanguageModelChatSelector.version 中的查找值。例如,GPT 4o 具有 2024-11-20 和 2024-08-06 等多個版本。
LanguageModelChatMessage
代表對話中的訊息。可以擔任不同的角色,例如使用者或助理。
靜態
Assistant(content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart>, name?: string): LanguageModelChatMessage
建立新助理訊息的工具。
| 參數 | 說明 |
|---|---|
| content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart> | 訊息內容。 |
| name?: string | 該訊息使用者的可選名稱。 |
| 回傳值 | 說明 |
| LanguageModelChatMessage |
User(content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart>, name?: string): LanguageModelChatMessage
建立新使用者訊息的工具。
| 參數 | 說明 |
|---|---|
| content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart> | 訊息內容。 |
| name?: string | 該訊息使用者的可選名稱。 |
| 回傳值 | 說明 |
| LanguageModelChatMessage |
建構函式
new LanguageModelChatMessage(role: LanguageModelChatMessageRole, content: string | LanguageModelInputPart[], name?: string): LanguageModelChatMessage
建立新使用者訊息。
| 參數 | 說明 |
|---|---|
| role: LanguageModelChatMessageRole | 訊息的角色。 |
| content: string | LanguageModelInputPart[] | 訊息內容。 |
| name?: string | 該訊息使用者的可選名稱。 |
| 回傳值 | 說明 |
| LanguageModelChatMessage |
屬性
content: LanguageModelInputPart[]
訊息可以包含作為內容的字串或異質陣列。對於某些模型,部分內容可能是訊息類型特定的。
此訊息使用者的可選名稱。
role: LanguageModelChatMessageRole
此訊息的角色。
LanguageModelChatMessageRole
代表對話訊息的角色。這不是使用者就是助理。
列舉成員
使用者角色,例如與語言模型互動的人類。
助理角色,例如產生回應的語言模型。
LanguageModelChatProvider<T>
LanguageModelChatProvider 實作了對語言模型的存取,使用者隨後可以透過對話檢視或透過擴充功能 API 取得 LanguageModelChat 來使用。一個範例是 OpenAI 提供者,它提供 gpt-5、o3 等模型。
活動
onDidChangeLanguageModelChatInformation?: Event<void>
當可用語言模型集變更時觸發的可選事件。
方法
provideLanguageModelChatInformation(options: PrepareLanguageModelChatModelOptions, token: CancellationToken): ProviderResult<T[]>
取得此提供者所提供的可用語言模型清單
| 參數 | 說明 |
|---|---|
| options: PrepareLanguageModelChatModelOptions | 指定此函式呼叫上下文的選項 |
| token: CancellationToken | 取消權杖 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 可用語言模型清單 |
provideLanguageModelChatResponse(model: T, messages: readonly LanguageModelChatRequestMessage[], options: ProvideLanguageModelChatResponseOptions, progress: Progress<LanguageModelResponsePart>, token: CancellationToken): Thenable<void>
傳回對話請求的回應,並將結果傳遞給進度回呼。LanguageModelChatProvider 必須在從語言模型接收到回應部分時,將其發出給進度回呼。
| 參數 | 說明 |
|---|---|
| model: T | 要使用的語言模型 |
| messages: readonly LanguageModelChatRequestMessage[] | 請求中包含的訊息 |
| options: ProvideLanguageModelChatResponseOptions | 請求選項 |
| progress: Progress<LanguageModelResponsePart> | 要將串流回應區塊發出給的進度 |
| token: CancellationToken | 取消權杖 |
| 回傳值 | 說明 |
| Thenable<void> | 當回應完成時解析的承諾。結果實際上是傳遞給進度回呼的。 |
provideTokenCount(model: T, text: string | LanguageModelChatRequestMessage, token: CancellationToken): Thenable<number>
使用模型特定的 tokenizer 邏輯傳回給定文字的權杖數量
| 參數 | 說明 |
|---|---|
| model: T | 要使用的語言模型 |
| text: string | LanguageModelChatRequestMessage | 要計算權杖數量的文字 |
| token: CancellationToken | 取消權杖 |
| 回傳值 | 說明 |
| Thenable<number> | 權杖數量 |
LanguageModelChatRequestMessage
LanguageModelChatMessage 的提供者版本。
屬性
訊息可以包含作為內容的異質陣列。對於某些模型,部分內容可能是訊息類型特定的。
此訊息使用者的可選名稱。
role: LanguageModelChatMessageRole
此訊息的角色。
LanguageModelChatRequestOptions
使用語言模型發出對話請求的選項。
屬性
人類可讀的訊息,解釋為什麼需要存取語言模型,以及它啟用了什麼功能。
控制語言模型行為的一組選項。這些選項是語言模型特定的,需要查詢相關文件。
toolMode?: LanguageModelChatToolMode
要使用的工具選擇模式。預設為 LanguageModelChatToolMode.Auto。
tools?: LanguageModelChatTool[]
語言模型可選的可用工具清單。這些可以是透過 lm.tools 註冊的可用工具,或是僅在呼叫擴充功能中實作的私有工具。
如果 LLM 要求呼叫其中一個工具,它將在 LanguageModelChatResponse.stream 中傳回一個 LanguageModelToolCallPart。呼叫者有責任呼叫該工具。如果是透過 lm.tools 註冊的工具,這意味著呼叫 lm.invokeTool。
然後,可以透過建立一個帶有 LanguageModelToolCallPart 的助理類型 LanguageModelChatMessage,接著一個帶有 LanguageModelToolResultPart 的使用者類型訊息,將工具結果提供給 LLM。
LanguageModelChatResponse
代表語言模型回應。
參見 ChatRequest
屬性
stream: AsyncIterable<unknown>
一個非同步可迭代物件,是形成整體回應的文字與工具呼叫部分的串流。LanguageModelTextPart 是助理回應中要向使用者顯示的部分。LanguageModelToolCallPart 是來自語言模型要求呼叫工具的請求。後者僅在透過 LanguageModelChatRequestOptions.tools 傳遞工具時才會傳回。unknown 類型用作未來部分(如影像資料部分)的預留位置。
注意,當在接收資料期間發生錯誤時,此串流會報錯。串流的消費者應相應地處理錯誤。
要取消串流,消費者可以 取消 用於發出請求的權杖,或中斷 for-loop。
範例
try {
// consume stream
for await (const chunk of response.stream) {
if (chunk instanceof LanguageModelTextPart) {
console.log('TEXT', chunk);
} else if (chunk instanceof LanguageModelToolCallPart) {
console.log('TOOL CALL', chunk);
}
}
} catch (e) {
// stream ended with an error
console.error(e);
}
這等同於過濾掉 LanguageModelChatResponse.stream 中除了文字部分以外的所有內容。
LanguageModelChatSelector
描述如何選擇對話請求的語言模型。
屬性
語言模型家族。
語言模型的識別碼。
語言模型供應商。
語言模型的版本。
LanguageModelChatTool
透過 LanguageModelChatRequestOptions 提供給語言模型的工具。語言模型使用此介面的所有屬性來決定呼叫哪個工具,以及如何呼叫它。
屬性
工具描述。
此工具接受的輸入之 JSON 架構。
工具名稱。
LanguageModelChatToolMode
供語言模型使用的工具呼叫模式。
列舉成員
語言模型可以選擇呼叫工具或產生訊息。為預設值。
語言模型必須呼叫提供的工具之一。注意:某些模型在使用此模式時僅支援單一工具。
LanguageModelDataPart
靜態
image(data: Uint8Array, mime: string): LanguageModelDataPart
為影像建立一個新的 LanguageModelDataPart。
| 參數 | 說明 |
|---|---|
| data: Uint8Array | 二進位影像資料 |
| mime: string | 影像的 MIME 類型。常見值為 |
| 回傳值 | 說明 |
| LanguageModelDataPart |
json(value: any, mime?: string): LanguageModelDataPart
為 json 建立一個新的 LanguageModelDataPart。
注意,此函式不預期「字串化的 JSON」,而是可以字串化的物件。當無法將傳入的值 JSON 字串化時,此函式將拋出錯誤。
| 參數 | 說明 |
|---|---|
| value: any | 可 JSON 字串化的值。 |
| mime?: string | 可選的 MIME 類型,預設為 |
| 回傳值 | 說明 |
| LanguageModelDataPart |
text(value: string, mime?: string): LanguageModelDataPart
為文字建立一個新的 LanguageModelDataPart。
注意,UTF-8 編碼器用於為字串建立位元組。
| 參數 | 說明 |
|---|---|
| value: string | 文字資料 |
| mime?: string | MIME 類型(如果有的話)。常見值為 |
| 回傳值 | 說明 |
| LanguageModelDataPart |
建構函式
new LanguageModelDataPart(data: Uint8Array, mimeType: string): LanguageModelDataPart
建構一個帶有給定內容的通用資料部分。
| 參數 | 說明 |
|---|---|
| data: Uint8Array | 此部分的位元組資料。 |
| mimeType: string | 資料的 MIME 類型。 |
| 回傳值 | 說明 |
| LanguageModelDataPart |
屬性
此部分的位元組資料。
決定資料屬性如何解釋的 MIME 類型。
LanguageModelError
語言模型特定錯誤的錯誤類型。
語言模型的消費者應檢查代碼屬性以確定特定的失敗原因,例如在參考未知語言模型的情況下,檢查 if(someError.code === vscode.LanguageModelError.NotFound.name) {...}。對於未指定的錯誤,cause 屬性將包含實際錯誤。
靜態
Blocked(message?: string): LanguageModelError
請求者被封鎖,無法使用此語言模型。
| 參數 | 說明 |
|---|---|
| message?: string | |
| 回傳值 | 說明 |
| LanguageModelError |
NoPermissions(message?: string): LanguageModelError
請求者沒有使用此語言模型的權限。
| 參數 | 說明 |
|---|---|
| message?: string | |
| 回傳值 | 說明 |
| LanguageModelError |
NotFound(message?: string): LanguageModelError
該語言模型不存在。
| 參數 | 說明 |
|---|---|
| message?: string | |
| 回傳值 | 說明 |
| LanguageModelError |
建構函式
new LanguageModelError(message?: string): LanguageModelError
| 參數 | 說明 |
|---|---|
| message?: string | |
| 回傳值 | 說明 |
| LanguageModelError |
屬性
識別此錯誤的代碼。
可能的值為錯誤名稱,如 NotFound,或對於來自語言模型本身未指定錯誤的 Unknown。在後一種情況下,cause 屬性將包含實際錯誤。
LanguageModelInputPart
可以透過 LanguageModelChat.sendRequest 傳送並由 LanguageModelChatProvider 處理的各種訊息類型。
LanguageModelInputPart: LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart | LanguageModelDataPart
LanguageModelPromptTsxPart
包含來自 vscode/prompt-tsx 的 PromptElementJSON 之語言模型回應部分。
建構函式
new LanguageModelPromptTsxPart(value: unknown): LanguageModelPromptTsxPart
使用給定內容建構 prompt-tsx 部分。
| 參數 | 說明 |
|---|---|
| value: unknown | 該部分的值,為 |
| 回傳值 | 說明 |
| LanguageModelPromptTsxPart |
屬性
該部分的內容值。
LanguageModelResponsePart
LanguageModelChatProvider 在聊天回應串流中可發出的各種訊息類型
LanguageModelResponsePart: LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelToolCallPart | LanguageModelDataPart
LanguageModelTextPart
包含一段文字的語言模型回應部分,由 LanguageModelChatResponse 回傳。
建構函式
new LanguageModelTextPart(value: string): LanguageModelTextPart
使用給定內容建構文字部分。
| 參數 | 說明 |
|---|---|
| value: string | 該部分的文字內容。 |
| 回傳值 | 說明 |
| LanguageModelTextPart |
屬性
該部分的文字內容。
LanguageModelTool<T>
可由對 LanguageModelChat 的呼叫所啟動的工具。
方法
invoke(options: LanguageModelToolInvocationOptions<T>, token: CancellationToken): ProviderResult<LanguageModelToolResult>
使用給定輸入啟動工具並回傳結果。
提供的 LanguageModelToolInvocationOptions.input 已針對所宣告的結構描述進行驗證。
| 參數 | 說明 |
|---|---|
| options: LanguageModelToolInvocationOptions<T> | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| ProviderResult<LanguageModelToolResult> |
prepareInvocation(options: LanguageModelToolInvocationPrepareOptions<T>, token: CancellationToken): ProviderResult<PreparedToolInvocation>
在啟動工具前呼叫一次。建議實作此方法以自訂工具執行時出現的進度訊息,並提供更具語境的有用訊息(來自啟動輸入)。若適當,也可發出訊號表示工具在執行前需要使用者確認。
- 註 1:必須沒有副作用。
- 註 2:對
prepareInvocation的呼叫不一定會接著呼叫invoke。
| 參數 | 說明 |
|---|---|
| options: LanguageModelToolInvocationPrepareOptions<T> | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| ProviderResult<PreparedToolInvocation> |
LanguageModelToolCallPart
語言模型回應部分,表示一個工具呼叫,由 LanguageModelChatResponse 回傳,也可以包含在 LanguageModelChatMessage 的內容部分中,以表示聊天請求中先前的工具呼叫。
建構函式
new LanguageModelToolCallPart(callId: string, name: string, input: object): LanguageModelToolCallPart
建立新的 LanguageModelToolCallPart。
| 參數 | 說明 |
|---|---|
| callId: string | 工具呼叫的 ID。 |
| name: string | 要呼叫的工具名稱。 |
| input: object | 用來呼叫該工具的輸入。 |
| 回傳值 | 說明 |
| LanguageModelToolCallPart |
屬性
工具呼叫的 ID。這是聊天請求內工具呼叫的唯一識別碼。
用來呼叫該工具的輸入。
要呼叫的工具名稱。
LanguageModelToolConfirmationMessages
當此項目在 PreparedToolInvocation 中回傳時,會在執行工具前詢問使用者是否確認。這些訊息將顯示「繼續」(Continue) 和「取消」(Cancel) 按鈕。
屬性
message: string | MarkdownString
確認訊息的內容主體。
確認訊息的標題。
LanguageModelToolInformation
關於 lm.tools 中可用且已註冊工具的資訊。
屬性
可傳遞給語言模型的工具描述。
此工具接受的輸入之 JSON 架構。
工具的唯一名稱。
由工具宣告的一組標籤,大致描述了工具的能力。工具使用者可以使用這些標籤來篩選工具集,僅保留與當前任務相關的工具。
LanguageModelToolInvocationOptions<T>
提供給工具啟動的選項。
屬性
用來啟動工具的輸入。該輸入必須符合 LanguageModelToolInformation.inputSchema 中定義的結構描述。
tokenizationOptions?: LanguageModelToolTokenizationOptions
用於提示工具在回應中應回傳多少 Token,並使工具能夠準確計算 Token 數量的選項。
toolInvocationToken: undefined
一個不透明物件,將工具啟動與來自 聊天參與者 (chat participant) 的聊天請求連結起來。
取得有效工具啟動 Token 的唯一方法是使用聊天請求中提供的 toolInvocationToken。在這種情況下,聊天回應檢視中會自動顯示該工具啟動的進度條;如果工具需要使用者確認,確認介面將會內嵌顯示在聊天檢視中。
如果在聊天請求之外啟動工具,則應改為傳遞 undefined,屆時將不會顯示任何特殊 UI(除了確認視窗之外)。
請注意,在啟動期間啟動另一個工具的工具,可以傳遞它所接收到的 toolInvocationToken。
LanguageModelToolInvocationPrepareOptions<T>
屬性
啟動工具時所使用的輸入。
LanguageModelToolResult
工具啟動後回傳的結果。若使用 vscode/prompt-tsx,此結果可以使用 ToolResult 來渲染。
建構函式
new LanguageModelToolResult(content: unknown[]): LanguageModelToolResult
建立一個 LanguageModelToolResult
| 參數 | 說明 |
|---|---|
| content: unknown[] | 工具結果內容部分的清單 |
| 回傳值 | 說明 |
| LanguageModelToolResult |
屬性
工具結果內容部分的清單。包含 unknown 是因為此清單未來可能會擴充新的內容類型。
另請參閱 lm.invokeTool。
LanguageModelToolResultPart
工具呼叫的結果。這是 工具呼叫 的對應項,且只能包含在使用者訊息的內容中
建構函式
new LanguageModelToolResultPart(callId: string, content: unknown[]): LanguageModelToolResultPart
| 參數 | 說明 |
|---|---|
| callId: string | 工具呼叫的 ID。 |
| content: unknown[] | 工具結果的內容。 |
| 回傳值 | 說明 |
| LanguageModelToolResultPart |
屬性
工具呼叫的 ID。
請注意,此值應與工具呼叫部分的 callId 相符。
工具結果的值。
LanguageModelToolTokenizationOptions
與工具啟動之 Token 化相關的選項。
屬性
若已知,則為該工具在其結果中應發出的最大 Token 數量。
方法
countTokens(text: string, token?: CancellationToken): Thenable<number>
使用模型特定的 tokenizer 邏輯計算訊息中的權杖數量。
| 參數 | 說明 |
|---|---|
| text: string | 一個字串。 |
| token?: CancellationToken | 可選的取消權杖。請參見 CancellationTokenSource 以了解如何建立一個。 |
| 回傳值 | 說明 |
| Thenable<number> | 解析為權杖數量的 Thenable。 |
LanguageStatusItem
語言狀態項目是為使用中文字編輯器呈現語言狀態報告的首選方式,例如選定的檢查工具 (linter) 或通知配置問題。
屬性
accessibilityInformation?: AccessibilityInformation
螢幕助讀程式與此項目互動時所使用的輔助功能資訊
控制項目是否顯示為「忙碌」狀態。預設值為 false。
command: Command
此項目的 命令。
此項目的選用性、人類可讀的詳細資訊。
此項目的識別碼。
此項目的簡稱,例如 'Java Language Status' 等。
selector: DocumentSelector
定義此項目顯示於哪些編輯器的 選擇器。
severity: LanguageStatusSeverity
此項目的嚴重性。
預設值為 資訊 (information)。您可以使用此屬性向使用者發出訊號,表示存在需要注意的問題,例如缺少執行檔或配置無效。
要顯示的入口文字。您可以透過以下語法在文字中嵌入圖示:
My text $(icon-name) contains icons like $(icon-name) this one.
其中 icon-name 取自 ThemeIcon 圖示集,例如 light-bulb、thumbsup、zap 等。
方法
處置並釋放相關資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
LanguageStatusSeverity
表示語言狀態的嚴重等級。
列舉成員
資訊嚴重等級。
警告嚴重等級。
錯誤嚴重等級。
LineCommentRule
行註解的配置。
屬性
行註解符號,例如 //
註解符號是否不應縮排並放置在第一欄。預設值為 false。
LinkedEditingRangeProvider
連結編輯範圍提供者介面定義了擴充功能與連結編輯功能之間的合約。
方法
provideLinkedEditingRanges(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<LinkedEditingRanges>
對於文件中的給定位置,回傳該位置符號的範圍以及所有具有相同內容的範圍。如果新內容有效,則對其中一個範圍的變更可以套用到所有其他範圍。結果可以回傳一個選用的文字模式 (word pattern) 來描述有效的內容。如果沒有提供結果特定的文字模式,則會使用語言配置中的文字模式。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 啟動提供者的文件。 |
| position: Position | 啟動提供者的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<LinkedEditingRanges> | 可一起編輯的範圍清單 |
LinkedEditingRanges
表示一組可以一起編輯的範圍,以及描述有效範圍內容的文字模式。
建構函式
new LinkedEditingRanges(ranges: Range[], wordPattern?: RegExp): LinkedEditingRanges
建立新的連結編輯範圍物件。
| 參數 | 說明 |
|---|---|
| ranges: Range[] | 可一起編輯的範圍清單 |
| wordPattern?: RegExp | 描述給定範圍有效內容的選用文字模式 |
| 回傳值 | 說明 |
| LinkedEditingRanges |
屬性
ranges: Range[]
可以一起編輯的範圍清單。這些範圍必須具有相同的長度和文字內容。範圍不能重疊。
描述給定範圍有效內容的選用文字模式。如果沒有提供模式,將使用語言配置的文字模式。
Location
表示資源內的位置,例如文字檔中的某一行。
建構函式
new Location(uri: Uri, rangeOrPosition: Range | Position): Location
屬性
range: Range
此位置的文件範圍。
uri: Uri
此位置的資源識別碼。
LocationLink
表示兩個位置之間的連結。提供比一般 位置 更多的中繼資料,包括原始範圍 (origin range)。
屬性
originSelectionRange?: Range
此連結原始點的跨度。
用作滑鼠定義懸停時的底線標記。預設為定義位置處的單字範圍。
targetRange: Range
此連結的完整目標範圍。
targetSelectionRange?: Range
此連結的跨度。
targetUri: Uri
此連結的目標資源識別碼。
LogLevel
記錄層級 (Log levels)
列舉成員
此層級不會記錄任何訊息。
所有訊息都會在此層級記錄。
偵錯 (debug) 及更高層級的訊息會在此層級記錄。
資訊 (info) 及更高層級的訊息會在此層級記錄。
警告 (warning) 及更高層級的訊息會在此層級記錄。
僅有錯誤訊息會在此層級記錄。
LogOutputChannel
用於包含日誌輸出的頻道。
若要取得 LogOutputChannel 的實例,請使用 createOutputChannel。
活動
onDidChangeLogLevel: Event<LogLevel>
當頻道日誌層級變更時觸發的 事件。
屬性
logLevel: LogLevel
頻道目前的日誌層級。預設為 編輯器日誌層級。
此輸出頻道的人類可讀名稱。
方法
將給定值附加到頻道。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值 (falsy values) 將不會被列印。 |
| 回傳值 | 說明 |
| void |
appendLine(value: string): void
將給定值和一個換行字元附加到頻道。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值將會被列印。 |
| 回傳值 | 說明 |
| void |
移除頻道中的所有輸出。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
debug(message: string, ...args: any[]): void
將給定的偵錯訊息輸出到頻道。
只有在頻道設定為顯示 偵錯 (debug) 或更低層級的日誌時,才會記錄該訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要記錄的偵錯訊息 |
| ...args: any[] | |
| 回傳值 | 說明 |
| void |
處置並釋放相關資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
error(error: string | Error, ...args: any[]): void
將給定的錯誤或錯誤訊息輸出到頻道。
只有在頻道設定為顯示 錯誤 (error) 或更低層級的日誌時,才會記錄該訊息。
| 參數 | 說明 |
|---|---|
| error: string | Error | 要記錄的錯誤或錯誤訊息 |
| ...args: any[] | |
| 回傳值 | 說明 |
| void |
從 UI 中隱藏此頻道。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
info(message: string, ...args: any[]): void
將給定的資訊訊息輸出到頻道。
只有在頻道設定為顯示 資訊 (info) 或更低層級的日誌時,才會記錄該訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要記錄的資訊訊息 |
| ...args: any[] | |
| 回傳值 | 說明 |
| void |
將頻道中的所有輸出替換為給定值。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值 (falsy values) 將不會被列印。 |
| 回傳值 | 說明 |
| void |
show(preserveFocus?: boolean): void
在 UI 中顯示此頻道。
| 參數 | 說明 |
|---|---|
| preserveFocus?: boolean | 當為 |
| 回傳值 | 說明 |
| void |
show(column?: ViewColumn, preserveFocus?: boolean): void
在 UI 中顯示此頻道。
- 已棄用 - 請使用僅包含一個參數的多載方法 (
show(preserveFocus?: boolean): void)。
| 參數 | 說明 |
|---|---|
| column?: ViewColumn | 此參數已棄用並將被忽略。 |
| preserveFocus?: boolean | 當為 |
| 回傳值 | 說明 |
| void |
trace(message: string, ...args: any[]): void
將給定的追蹤訊息輸出到頻道。使用此方法來記錄詳細資訊。
只有在頻道設定為顯示 追蹤 (trace) 日誌層級時,才會記錄該訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要記錄的追蹤訊息 |
| ...args: any[] | |
| 回傳值 | 說明 |
| void |
warn(message: string, ...args: any[]): void
將給定的警告訊息輸出到頻道。
只有在頻道設定為顯示 警告 (warning) 或更低層級的日誌時,才會記錄該訊息。
| 參數 | 說明 |
|---|---|
| message: string | 要記錄的警告訊息 |
| ...args: any[] | |
| 回傳值 | 說明 |
| void |
MarkdownString
支援透過 Markdown 語法 進行格式化的人類可讀文字。
當 supportThemeIcons 設定為 true 時,支援透過 $(<name>) 語法來渲染 佈景主題圖示。
當 supportHtml 設定為 true 時,支援渲染嵌入的 HTML。
建構函式
new MarkdownString(value?: string, supportThemeIcons?: boolean): MarkdownString
使用給定值建立新的 Markdown 字串。
| 參數 | 說明 |
|---|---|
| value?: string | 選用,初始值。 |
| supportThemeIcons?: boolean | 選用,指定是否在 MarkdownString 中支援 ThemeIcons。 |
| 回傳值 | 說明 |
| MarkdownString |
屬性
baseUri?: Uri
用來解析相對路徑的 URI。
如果 baseUri 以 / 結尾,則被視為目錄,Markdown 中的相對路徑將相對於該目錄進行解析。
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/dir/');
// Here 'link' in the rendered markdown resolves to '/path/to/dir/file.js'
如果 baseUri 是檔案,則 Markdown 中的相對路徑將相對於該檔案的父目錄進行解析。
const md = new vscode.MarkdownString(`[link](./file.js)`);
md.baseUri = vscode.Uri.file('/path/to/otherFile.js');
// Here 'link' in the rendered markdown resolves to '/path/to/file.js'
isTrusted?: boolean | {enabledCommands: readonly string[]}
表示此 Markdown 字串來自受信任的來源。只有 受信任的 Markdown 才支援執行命令的連結,例如 [Run it](command:myCommandId)。
預設值為 false(命令已停用)。
表示此 Markdown 字串可以包含原始 HTML 標籤。預設值為 false。
當 supportHtml 為 false 時,Markdown 渲染器會移除 Markdown 文字中出現的所有原始 HTML 標籤。這意味著您只能使用 Markdown 語法進行渲染。
當 supportHtml 為 true 時,Markdown 渲染器也將允許渲染安全子集的 HTML 標籤和屬性。請參閱 https://github.com/microsoft/vscode/blob/6d2920473c6f13759c978dd89104c4270a83422d/src/vs/base/browser/markdownRenderer.ts#L296 以取得所有支援標籤和屬性的清單。
表示此 Markdown 字串可以包含 ThemeIcons,例如 $(zap)。
Markdown 字串。
方法
appendCodeblock(value: string, language?: string): MarkdownString
將給定字串作為程式碼區塊並使用提供的語言附加。
| 參數 | 說明 |
|---|---|
| value: string | 程式碼片段。 |
| language?: string | 選用的 語言識別碼。 |
| 回傳值 | 說明 |
| MarkdownString |
appendMarkdown(value: string): MarkdownString
將給定字串「按原樣」附加到此 Markdown 字串。當 supportThemeIcons 為 true 時,value 中的 ThemeIcons 將被圖示化。
| 參數 | 說明 |
|---|---|
| value: string | Markdown 字串。 |
| 回傳值 | 說明 |
| MarkdownString |
appendText(value: string): MarkdownString
將給定字串附加並跳脫處理 (escape) 到此 Markdown 字串。
| 參數 | 說明 |
|---|---|
| value: string | 純文字。 |
| 回傳值 | 說明 |
| MarkdownString |
MarkedString
MarkedString 可用於渲染人類可讀文字。它既可以是 Markdown 字串,也可以是提供語言和程式碼片段的程式碼區塊。請注意,Markdown 字串將會經過消毒處理 (sanitized),這意味著 HTML 將被跳脫處理。
- 已棄用 - 此類型已棄用,請改用 MarkdownString。
MarkedString: string | {language: string, value: string}
McpHttpServerDefinition
McpHttpServerDefinition 表示使用 Streamable HTTP 傳輸方式可用的 MCP 伺服器。
建構函式
new McpHttpServerDefinition(label: string, uri: Uri, headers?: Record<string, string>, version?: string): McpHttpServerDefinition
| 參數 | 說明 |
|---|---|
| label: string | 伺服器的人類可讀名稱。 |
| uri: Uri | 伺服器的 URI。 |
| headers?: Record<string, string> | 每次對伺服器發出請求時包含的選用性額外標頭。 |
| version?: string | |
| 回傳值 | 說明 |
| McpHttpServerDefinition |
屬性
headers: Record<string, string>
每次對伺服器發出請求時包含的選用性額外標頭。
伺服器的人類可讀名稱。
uri: Uri
伺服器的 URI。編輯器將對此 URI 發出 POST 請求以開始每個工作階段。
伺服器的選用版本識別。如果此版本變更,編輯器將指出工具已變更並提示重新整理。
McpServerDefinition
描述不同類型模型內容協定 (Model Context Protocol) 伺服器的定義,可由 McpServerDefinitionProvider 回傳。
McpServerDefinition: McpStdioServerDefinition | McpHttpServerDefinition
McpServerDefinitionProvider<T>
可以提供模型內容協定伺服器定義的類型。應在擴充功能啟用期間使用 lm.registerMcpServerDefinitionProvider 進行註冊。
活動
onDidChangeMcpServerDefinitions?: Event<void>
觸發以表示可用伺服器集合已變更的選用事件。
方法
provideMcpServerDefinitions(token: CancellationToken): ProviderResult<T[]>
提供可用的 MCP 伺服器。編輯器將急切地呼叫此方法,以確保語言模型可以使用伺服器,因此擴充功能不應採取需要使用者互動的操作,例如身分驗證。
| 參數 | 說明 |
|---|---|
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 可用的 MCP 伺服器陣列 |
resolveMcpServerDefinition(server: T, token: CancellationToken): ProviderResult<T>
當編輯器需要啟動 MCP 伺服器時,將呼叫此函數。此時,擴充功能可以採取任何可能需要使用者互動的操作,例如身分驗證。可以修改伺服器的任何非 readonly 屬性,且擴充功能應回傳解析後的伺服器。
擴充功能可以回傳 undefined 以表示不應啟動伺服器,或拋出錯誤。如果存在待處理的工具呼叫,編輯器將取消它並回傳錯誤訊息給語言模型。
| 參數 | 說明 |
|---|---|
| server: T | 要解析的 MCP 伺服器 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 解析後的伺服器或解析為此結果的 Thenable 物件。這可能是填入了非唯讀屬性的給定 |
McpStdioServerDefinition
McpStdioServerDefinition 表示一個 MCP 伺服器,可透過執行本機程序並在其 stdin 和 stdout 串流上運作來使用。該程序將作為擴充功能主機的子程序啟動,預設情況下不會在 shell 環境中執行。
建構函式
new McpStdioServerDefinition(label: string, command: string, args?: string[], env?: Record<string, string | number>, version?: string): McpStdioServerDefinition
| 參數 | 說明 |
|---|---|
| label: string | 伺服器的人類可讀名稱。 |
| command: string | 用於啟動伺服器的命令。 |
| args?: string[] | 傳遞給伺服器的其他命令列引數。 |
| env?: Record<string, string | number> | 伺服器的選用性額外環境資訊。 |
| version?: string | 伺服器的選用版本識別。 |
| 回傳值 | 說明 |
| McpStdioServerDefinition |
屬性
傳遞給伺服器的其他命令列引數。
用於啟動伺服器的命令。基於 Node.js 的伺服器可以使用 process.execPath 來使用編輯器的 Node.js 版本來執行腳本。
cwd?: Uri
用於啟動伺服器的工作目錄。
env: Record<string, string | number>
伺服器的選用性額外環境資訊。此環境中的變數將覆蓋或移除(如果為 null)編輯器擴充功能主機的預設環境變數。
伺服器的人類可讀名稱。
伺服器的選用版本識別。如果此版本變更,編輯器將指出工具已變更並提示重新整理。
Memento
Memento 代表一種儲存公用程式。它可以儲存和擷取值。
方法
回傳一個值。
| 參數 | 說明 |
|---|---|
| key: string | 一個字串。 |
| 回傳值 | 說明 |
| T | 儲存的值或 |
get<T>(key: string, defaultValue: T): T
回傳一個值。
| 參數 | 說明 |
|---|---|
| key: string | 一個字串。 |
| defaultValue: T | 當給定索引鍵沒有對應值 ( |
| 回傳值 | 說明 |
| T | 儲存的值或 defaultValue。 |
回傳儲存的索引鍵。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| readonly string[] | 儲存的索引鍵。 |
update(key: string, value: any): Thenable<void>
儲存一個值。該值必須是 JSON 可序列化的。
請注意,使用 undefined 作為值會從基礎儲存空間中移除該索引鍵。
| 參數 | 說明 |
|---|---|
| key: string | 一個字串。 |
| value: any | 一個值。必須不包含循環參照。 |
| 回傳值 | 說明 |
| Thenable<void> |
MessageItem
屬性
用於強制回應對話方塊 (modal dialogs) 的提示,表示當使用者取消對話方塊(例如按 ESC 鍵)時應觸發此項目。
注意:此選項對於非強制回應訊息將被忽略。
簡短標題,例如 'Retry'、'Open Log' 等。
MessageOptions
屬性
以較不顯眼方式呈現的人類可讀詳細訊息。請注意,詳細資訊僅針對 強制回應 (modal) 訊息顯示。
表示此訊息應為強制回應。
NotebookCell
表示 筆記本 的單元格,可以是 程式碼 (code) 單元格或 標記 (markup) 單元格。
NotebookCell 實例是不可變的,並且只要它們是筆記本的一部分,就會保持同步。
屬性
document: TextDocument
此單元格的 文字,表示為文字文件。
executionSummary: NotebookCellExecutionSummary
此單元格最近的 執行摘要。
此單元格在其 所屬筆記本 中的索引。當單元格在筆記本內移動時,索引會更新。當單元格從其筆記本中移除時,索引為 -1。
kind: NotebookCellKind
此單元格的類型。
此單元格的中繼資料。可以是任何內容,但必須是 JSON 可序列化的。
notebook: NotebookDocument
包含此單元格的 筆記本。
outputs: readonly NotebookCellOutput[]
此單元格的輸出。
NotebookCellData
NotebookCellData 是筆記本單元格的原始表示法。它是 NotebookData 的一部分。
建構函式
new NotebookCellData(kind: NotebookCellKind, value: string, languageId: string): NotebookCellData
建立新的單元格資料。最小化的單元格資料會指定其類型、來源值以及來源的語言識別碼。
| 參數 | 說明 |
|---|---|
| kind: NotebookCellKind | 類型。 |
| value: string | 來源值。 |
| languageId: string | 來源值的語言識別碼。 |
| 回傳值 | 說明 |
| NotebookCellData |
屬性
executionSummary?: NotebookCellExecutionSummary
此單元格資料的執行摘要。
kind: NotebookCellKind
此單元格資料的 類型。
此單元格資料來源值的語言識別碼。可以使用來自 getLanguages 的任何值。
此單元格資料的任意中繼資料。可以是任何內容,但必須是 JSON 可序列化的。
outputs?: NotebookCellOutput[]
此單元格資料的輸出。
此單元格資料的來源值 - 原始程式碼或格式化文字。
NotebookCellExecution
NotebookCellExecution 是 筆記本控制器 修改筆記本單元格執行方式的方式。
當建立單元格執行物件時,單元格進入 [NotebookCellExecutionState.Pending Pending](#_NotebookCellExecutionState.Pending Pending) 狀態。當在執行任務上呼叫 start(...) 時,它進入 [NotebookCellExecutionState.Executing Executing](#_NotebookCellExecutionState.Executing Executing) 狀態。當呼叫 end(...) 時,它進入 [NotebookCellExecutionState.Idle Idle](#_NotebookCellExecutionState.Idle Idle) 狀態。
屬性
cell: NotebookCell
已為其建立此執行的 單元格。
設定並取消設定此單元格執行的順序。
token: CancellationToken
當單元格執行從 UI 中取消時,將觸發的取消 Token。
請注意,當建立此執行的 控制器 使用 中斷處理常式 (interrupt-handler) 時,將不會觸發取消 Token。
方法
appendOutput(out: NotebookCellOutput | readonly NotebookCellOutput[], cell?: NotebookCell): Thenable<void>
附加到正在執行中的單元格輸出,或受到此執行影響的另一個單元格輸出。
| 參數 | 說明 |
|---|---|
| out: NotebookCellOutput | readonly NotebookCellOutput[] | 附加到當前輸出的輸出。 |
| cell?: NotebookCell | 要清除輸出的單元格。預設為此執行的 單元格。 |
| 回傳值 | 說明 |
| Thenable<void> | 操作完成時解析的 Thenable。 |
appendOutputItems(items: NotebookCellOutputItem | readonly NotebookCellOutputItem[], output: NotebookCellOutput): Thenable<void>
將輸出項目附加到現有的單元格輸出。
| 參數 | 說明 |
|---|---|
| items: NotebookCellOutputItem | readonly NotebookCellOutputItem[] | 附加到現有輸出的輸出項目。 |
| output: NotebookCellOutput | 已經存在的輸出物件。 |
| 回傳值 | 說明 |
| Thenable<void> | 操作完成時解析的 Thenable。 |
clearOutput(cell?: NotebookCell): Thenable<void>
清除正在執行中的單元格輸出,或受到此執行影響的另一個單元格輸出。
| 參數 | 說明 |
|---|---|
| cell?: NotebookCell | 要清除輸出的單元格。預設為此執行的 單元格。 |
| 回傳值 | 說明 |
| Thenable<void> | 操作完成時解析的 Thenable。 |
end(success: boolean, endTime?: number): void
發出訊號表示執行已結束。
| 參數 | 說明 |
|---|---|
| success: boolean | 如果為 true,則在單元格狀態列上顯示綠色勾號。如果為 false,則顯示紅色 X。如果未定義,則不顯示勾號或 X 圖示。 |
| endTime?: number | 執行完成的時間(Unix 紀元毫秒)。 |
| 回傳值 | 說明 |
| void |
replaceOutput(out: NotebookCellOutput | readonly NotebookCellOutput[], cell?: NotebookCell): Thenable<void>
替換正在執行中的單元格輸出,或受到此執行影響的另一個單元格輸出。
| 參數 | 說明 |
|---|---|
| out: NotebookCellOutput | readonly NotebookCellOutput[] | 替換當前輸出的輸出。 |
| cell?: NotebookCell | 要清除輸出的單元格。預設為此執行的 單元格。 |
| 回傳值 | 說明 |
| Thenable<void> | 操作完成時解析的 Thenable。 |
replaceOutputItems(items: NotebookCellOutputItem | readonly NotebookCellOutputItem[], output: NotebookCellOutput): Thenable<void>
替換現有單元格輸出的所有輸出項目。
| 參數 | 說明 |
|---|---|
| items: NotebookCellOutputItem | readonly NotebookCellOutputItem[] | 替換現有輸出項目的輸出項目。 |
| output: NotebookCellOutput | 已經存在的輸出物件。 |
| 回傳值 | 說明 |
| Thenable<void> | 操作完成時解析的 Thenable。 |
start(startTime?: number): void
發出訊號表示執行已開始。
| 參數 | 說明 |
|---|---|
| startTime?: number | 執行開始的時間(Unix 紀元毫秒)。用於驅動顯示單元格執行時長度的時鐘。如果不提供,則不會顯示時鐘。 |
| 回傳值 | 說明 |
| void |
NotebookCellExecutionSummary
筆記本單元格執行的摘要。
屬性
執行發生的順序。
執行是否成功完成。
timing?: {endTime: number, startTime: number}
執行開始和結束的時間,以 Unix 時間戳表示
| 參數 | 說明 |
|---|---|
| endTime: number | 執行結束時間。 |
| startTime: number | 執行開始時間。 |
NotebookCellKind
筆記本單元格類型。
列舉成員
標記單元格是格式化的來源,用於顯示。
NotebookCellOutput
筆記本單元格輸出代表執行單元格的結果。它是多個 輸出項目 的容器類型,其中包含的項目表示相同的結果,但使用不同的 MIME 類型。
建構函式
new NotebookCellOutput(items: NotebookCellOutputItem[], metadata?: ): NotebookCellOutput
建立新的筆記本輸出。
| 參數 | 說明 |
|---|---|
| items: NotebookCellOutputItem[] | 筆記本輸出項目。 |
| metadata?: | 選用的中繼資料。 |
| 回傳值 | 說明 |
| NotebookCellOutput |
屬性
items: NotebookCellOutputItem[]
此輸出的輸出項目。每個項目必須表示相同的結果。請注意,每個輸出重複的 MIME 類型是無效的,編輯器將僅選擇其中一個。
new vscode.NotebookCellOutput([
vscode.NotebookCellOutputItem.text('Hello', 'text/plain'),
vscode.NotebookCellOutputItem.text('<i>Hello</i>', 'text/html'),
vscode.NotebookCellOutputItem.text('_Hello_', 'text/markdown'),
vscode.NotebookCellOutputItem.text('Hey', 'text/plain') // INVALID: repeated type, editor will pick just one
]);
此單元格輸出的任意中繼資料。可以是任何內容,但必須是 JSON 可序列化的。
NotebookCellOutputItem
筆記本輸出 的一種表示方式,由 MIME 類型和資料定義。
靜態
error(value: Error): NotebookCellOutputItem
工廠函數,用於建立使用 application/vnd.code.notebook.error MIME 類型的 NotebookCellOutputItem。
| 參數 | 說明 |
|---|---|
| value: Error | 錯誤物件。 |
| 回傳值 | 說明 |
| NotebookCellOutputItem | 新的輸出項目物件。 |
json(value: any, mime?: string): NotebookCellOutputItem
從 JSON 物件建立 NotebookCellOutputItem 的工廠函數。
注意,此函式不預期「字串化的 JSON」,而是可以字串化的物件。當無法將傳入的值 JSON 字串化時,此函式將拋出錯誤。
| 參數 | 說明 |
|---|---|
| value: any | 可 JSON 字串化的值。 |
| mime?: string | 可選的 MIME 類型,預設為 |
| 回傳值 | 說明 |
| NotebookCellOutputItem | 新的輸出項目物件。 |
stderr(value: string): NotebookCellOutputItem
工廠函數,用於建立使用 application/vnd.code.notebook.stderr MIME 類型的 NotebookCellOutputItem。
| 參數 | 說明 |
|---|---|
| value: string | 一個字串。 |
| 回傳值 | 說明 |
| NotebookCellOutputItem | 新的輸出項目物件。 |
stdout(value: string): NotebookCellOutputItem
工廠函數,用於建立使用 application/vnd.code.notebook.stdout MIME 類型的 NotebookCellOutputItem。
| 參數 | 說明 |
|---|---|
| value: string | 一個字串。 |
| 回傳值 | 說明 |
| NotebookCellOutputItem | 新的輸出項目物件。 |
text(value: string, mime?: string): NotebookCellOutputItem
從字串建立 NotebookCellOutputItem 的工廠函式。
注意,UTF-8 編碼器用於為字串建立位元組。
| 參數 | 說明 |
|---|---|
| value: string | 一個字串。 |
| mime?: string | 選用的 MIME 類型,預設為 |
| 回傳值 | 說明 |
| NotebookCellOutputItem | 新的輸出項目物件。 |
建構函式
new NotebookCellOutputItem(data: Uint8Array, mime: string): NotebookCellOutputItem
建立一個新的筆記本儲存格輸出項目。
| 參數 | 說明 |
|---|---|
| data: Uint8Array | 輸出項目的值。 |
| mime: string | 輸出項目的 MIME 類型。 |
| 回傳值 | 說明 |
| NotebookCellOutputItem |
屬性
此輸出項目的資料。必須永遠為 8 位元無號整數陣列。
決定如何解讀 data 屬性的 MIME 類型。
筆記本內建支援特定 MIME 類型,擴充功能可以增加對新類型的支援並覆寫現有類型。
NotebookCellStatusBarAlignment
代表狀態列項目的對齊方式。
列舉成員
靠左對齊。
靠右對齊。
NotebookCellStatusBarItem
對儲存格狀態列的貢獻項目。
建構函式
new NotebookCellStatusBarItem(text: string, alignment: NotebookCellStatusBarAlignment): NotebookCellStatusBarItem
建立新的 NotebookCellStatusBarItem。
| 參數 | 說明 |
|---|---|
| text: string | 項目顯示的文字。 |
| alignment: NotebookCellStatusBarAlignment | 該項目是靠左還是靠右對齊。 |
| 回傳值 | 說明 |
| NotebookCellStatusBarItem |
屬性
accessibilityInformation?: AccessibilityInformation
當螢幕助讀程式與此項目互動時使用的無障礙資訊。
alignment: NotebookCellStatusBarAlignment
該項目是靠左還是靠右對齊。
command?: string | Command
項目的優先順序。數值較高的項目會顯示在更靠左的位置。
項目顯示的文字。
滑鼠懸停在項目上時顯示的工具提示。
NotebookCellStatusBarItemProvider
一種提供者,可以將項目貢獻至儲存格編輯器下方的狀態列。
活動
onDidChangeCellStatusBarItems?: Event<void>
一個選用的事件,用以發出狀態列項目已變更的訊號。此時 provide 方法將會再次被呼叫。
方法
provideCellStatusBarItems(cell: NotebookCell, token: CancellationToken): ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]>
當儲存格捲動進入視窗、內容、輸出、語言或詮釋資料 (metadata) 變更,以及執行狀態變更時,將會呼叫此提供者。
| 參數 | 說明 |
|---|---|
| cell: NotebookCell | 要回傳項目的儲存格。 |
| token: CancellationToken | 如果此請求應被取消,則會觸發的權杖 (token)。 |
| 回傳值 | 說明 |
| ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]> | 一個或多個 儲存格狀態列項目 |
NotebookController
筆記本控制器代表可以執行筆記本儲存格的實體。通常稱為核心 (kernel)。
可以有多個控制器,編輯器會讓使用者選擇要為特定筆記本使用哪個控制器。notebookType 屬性定義了控制器適用於哪種筆記本,而 updateNotebookAffinity 函式允許控制器為特定的筆記本文件設定偏好。當選擇控制器後,其 onDidChangeSelectedNotebooks 事件將會觸發。
當儲存格正在執行時,編輯器會呼叫 executeHandler,預期控制器會建立並完成 筆記本儲存格執行。不過,控制器也可以自行建立執行。
活動
onDidChangeSelectedNotebooks: Event<{notebook: NotebookDocument, selected: boolean}>
屬性
人類可讀的描述,渲染時較不明顯。
人類可讀的詳細資訊,渲染時較不明顯。
executeHandler: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>
當 UI 中的執行手勢(例如「執行儲存格」、「全部執行」、「執行選取範圍」等)被選取時,會呼叫執行處理常式。執行處理常式負責建立並管理 執行 物件。
| 參數 | 說明 |
|---|---|
| cells: NotebookCell[] | |
| notebook: NotebookDocument | |
| controller: NotebookController | |
| 回傳值 | 說明 |
| void | Thenable<void> |
此筆記本控制器的識別碼。
注意:控制器是透過識別碼來記憶的,擴充功能應在不同工作階段中使用固定的識別碼。
interruptHandler?: (notebook: NotebookDocument) => void | Thenable<void>
選用的中斷處理常式。
預設情況下,儲存格執行是透過 權杖 (tokens) 取消的。取消權杖要求控制器能夠追蹤其執行狀態,以便稍後取消特定執行。並非所有情境都允許這樣做,例如 REPL 風格的控制器通常透過中斷當前正在執行的任何內容來運作。對於這些情況,存在中斷處理常式——它可以被視為終端機中 SIGINT 或 Control+C 的對等物。
注意:建議使用 取消權杖,只有在無法支援權杖時才應使用中斷處理常式。
| 參數 | 說明 |
|---|---|
| notebook: NotebookDocument | |
| 回傳值 | 說明 |
| void | Thenable<void> |
此筆記本控制器的人類可讀標籤。
此控制器適用的筆記本類型。
此控制器支援的語言識別碼陣列。可以使用 getLanguages 中的任何語言識別碼。如果為假值 (falsy),則支援所有語言。
範例
// support JavaScript and TypeScript
myController.supportedLanguages = ['javascript', 'typescript'];
// support all languages
myController.supportedLanguages = undefined; // falsy
myController.supportedLanguages = []; // falsy
supportsExecutionOrder?: boolean
此控制器是否支援執行順序,以便編輯器能為它們渲染預留位置。
方法
createNotebookCellExecution(cell: NotebookCell): NotebookCellExecution
建立儲存格執行任務。
注意:每個儲存格一次只能有一個執行狀態,如果在另一個執行尚在進行時建立新的儲存格執行,將會拋出錯誤。
此功能應在 執行處理常式 被呼叫時使用,或者在儲存格執行已在其他地方啟動時使用,例如儲存格已經在執行中,或從其他來源觸發了儲存格執行。
| 參數 | 說明 |
|---|---|
| cell: NotebookCell | 要為其建立執行的筆記本儲存格。 |
| 回傳值 | 說明 |
| NotebookCellExecution | 筆記本儲存格執行。 |
處置並釋放相關資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
updateNotebookAffinity(notebook: NotebookDocument, affinity: NotebookControllerAffinity): void
控制器可以為特定的筆記本文件設定親和性 (affinities)。這使得控制器在某些筆記本中顯得更為顯著。
| 參數 | 說明 |
|---|---|
| notebook: NotebookDocument | 已設定優先順序的筆記本。 |
| affinity: NotebookControllerAffinity | 控制器親和性。 |
| 回傳值 | 說明 |
| void |
NotebookControllerAffinity
筆記本文件之筆記本控制器親和性。
列舉成員
預設親和性。
控制器對該筆記本而言是偏好的。
NotebookData
建構函式
new NotebookData(cells: NotebookCellData[]): NotebookData
建立新的筆記本資料。
| 參數 | 說明 |
|---|---|
| cells: NotebookCellData[] | 儲存格資料陣列。 |
| 回傳值 | 說明 |
| NotebookData |
屬性
cells: NotebookCellData[]
此筆記本資料的儲存格資料。
筆記本資料的任意詮釋資料 (metadata)。
NotebookDocument
屬性
筆記本中的儲存格數量。
若筆記本已關閉,則為 true。已關閉的筆記本不再同步,且當再次開啟相同資源時不會被重複使用。
若有未持久化的變更,則為 true。
此筆記本是否代表尚未儲存的未命名檔案。
此筆記本的任意詮釋資料。可以是任何內容,但必須能夠被 JSON 序列化。
筆記本類型。
uri: Uri
與此筆記本相關聯的 URI。
注意:大多數筆記本使用 file 配置 (scheme),這表示它們是磁碟上的檔案。然而,並非所有筆記本都儲存在磁碟上,因此在嘗試存取磁碟上的基礎檔案或同層項目之前,必須檢查 scheme。
此筆記本的版本號碼(每次變更後會嚴格增加,包括復原/重做)。
方法
cellAt(index: number): NotebookCell
回傳指定索引處的儲存格。索引將會調整至筆記本。
| 參數 | 說明 |
|---|---|
| index: number | 要擷取的儲存格索引。 |
| 回傳值 | 說明 |
| NotebookCell | 一個 儲存格。 |
getCells(range?: NotebookRange): NotebookCell[]
取得此筆記本的儲存格。透過提供範圍可以擷取子集。範圍將會調整至筆記本。
| 參數 | 說明 |
|---|---|
| range?: NotebookRange | 筆記本範圍。 |
| 回傳值 | 說明 |
| NotebookCell[] | 範圍中包含的儲存格或所有儲存格。 |
儲存文件。儲存動作將由相應的 序列化器 處理。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<boolean> | 一個承諾 (promise),當文件儲存成功時將解析為 true。若檔案未變更 (dirty) 或儲存失敗,將回傳 false。 |
NotebookDocumentCellChange
描述對筆記本儲存格的變更。
屬性
cell: NotebookCell
受影響的儲存格。
document: TextDocument
儲存格的文件,若未變更則為 undefined。
注意:您應使用 onDidChangeTextDocument 事件來獲取詳細的變更資訊,例如已執行了哪些編輯。
executionSummary: NotebookCellExecutionSummary
儲存格的新執行摘要,若未變更則為 undefined。
儲存格的新詮釋資料,若未變更則為 undefined。
outputs: readonly NotebookCellOutput[]
儲存格的新輸出,若未變更則為 undefined。
NotebookDocumentChangeEvent
描述事務性 筆記本 變更的事件。
屬性
cellChanges: readonly NotebookDocumentCellChange[]
儲存格變更 的陣列。
contentChanges: readonly NotebookDocumentContentChange[]
描述新增或移除 儲存格 的內容變更陣列。
筆記本的新詮釋資料,若未變更則為 undefined。
notebook: NotebookDocument
受影響的筆記本。
NotebookDocumentContentChange
描述對筆記本文件的結構性變更,例如新增加和移除的儲存格。
屬性
addedCells: readonly NotebookCell[]
已新增至文件的儲存格。
range: NotebookRange
removedCells: readonly NotebookCell[]
已從文件中移除的儲存格。
NotebookDocumentContentOptions
筆記本內容選項定義了筆記本的哪些部分會被持久化。注意
例如,筆記本序列化器可以選擇不儲存輸出,在這種情況下,當其輸出變更時,編輯器不會將筆記本標記為 dirty。
屬性
控制儲存格詮釋資料屬性變更事件是否會觸發筆記本文件內容變更事件,以及是否會在差異編輯器中使用,預設為 false。如果內容提供者不在檔案文件中持久化詮釋資料屬性,則應將其設為 true。
控制文件詮釋資料屬性變更事件是否會觸發筆記本文件內容變更事件,以及是否會在差異編輯器中使用,預設為 false。如果內容提供者不在檔案文件中持久化詮釋資料屬性,則應將其設為 true。
控制輸出變更事件是否會觸發筆記本文件內容變更事件,以及是否會在差異編輯器中使用,預設為 false。如果內容提供者不在檔案文件中持久化輸出,則應將其設為 true。
NotebookDocumentShowOptions
屬性
一個選用的旗標,當為 true 時,將阻止 筆記本編輯器 取得焦點。
一個選用的旗標,用以控制 筆記本編輯器 索引標籤是否顯示為預覽。預覽索引標籤將會被替換和重複使用,直到設定為保留——透過明確設定或透過編輯。預設行為取決於 workbench.editor.enablePreview 設定。
selections?: readonly NotebookRange[]
一個選用的選取範圍,用於套用至 筆記本編輯器 中的文件。
viewColumn?: ViewColumn
一個選用的視圖欄位,其中應顯示 筆記本編輯器。預設為 作用中。不存在的欄位將根據需要建立,最大至 ViewColumn.Nine。使用 ViewColumn.Beside 在目前作用中編輯器的旁邊開啟新編輯器。
NotebookDocumentWillSaveEvent
當 筆記本文件 即將儲存時觸發的事件。
若要在文件儲存前進行修改,請使用解析為 工作區編輯 (workspace edit) 的 thenable 呼叫 waitUntil 函式。
屬性
notebook: NotebookDocument
即將儲存的 筆記本文件。
reason: TextDocumentSaveReason
觸發儲存的原因。
token: CancellationToken
取消權杖。
方法
waitUntil(thenable: Thenable<WorkspaceEdit>): void
允許暫停事件迴圈並套用 工作區編輯。隨後呼叫此函式的編輯將會依序套用。如果筆記本文件發生了並行修改,這些編輯將被 忽略。
注意:此函式只能在事件派發期間呼叫,不能以非同步方式呼叫。
workspace.onWillSaveNotebookDocument(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
| 參數 | 說明 |
|---|---|
| thenable: Thenable<WorkspaceEdit> | 解析為 工作區編輯 的 thenable。 |
| 回傳值 | 說明 |
| void |
waitUntil(thenable: Thenable<any>): void
允許暫停事件迴圈,直到提供的 thenable 解析完成。
注意:此函式只能在事件派發期間呼叫。
| 參數 | 說明 |
|---|---|
| thenable: Thenable<any> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
NotebookEdit
筆記本編輯代表應套用於筆記本內容的編輯。
靜態
deleteCells(range: NotebookRange): NotebookEdit
用於建立刪除筆記本中儲存格之編輯的公用程式。
| 參數 | 說明 |
|---|---|
| range: NotebookRange | 要刪除的儲存格範圍。 |
| 回傳值 | 說明 |
| NotebookEdit |
insertCells(index: number, newCells: NotebookCellData[]): NotebookEdit
用於建立替換筆記本中儲存格之編輯的公用程式。
| 參數 | 說明 |
|---|---|
| index: number | 要插入儲存格的索引。 |
| newCells: NotebookCellData[] | 新的筆記本儲存格。 |
| 回傳值 | 說明 |
| NotebookEdit |
replaceCells(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
用於建立替換筆記本中儲存格之編輯的公用程式。
| 參數 | 說明 |
|---|---|
| range: NotebookRange | 要替換的儲存格範圍 |
| newCells: NotebookCellData[] | 新的筆記本儲存格。 |
| 回傳值 | 說明 |
| NotebookEdit |
updateCellMetadata(index: number, newCellMetadata: ): NotebookEdit
用於建立更新儲存格詮釋資料之編輯的公用程式。
| 參數 | 說明 |
|---|---|
| index: number | 要更新的儲存格索引。 |
| newCellMetadata: | 儲存格的新詮釋資料。 |
| 回傳值 | 說明 |
| NotebookEdit |
updateNotebookMetadata(newNotebookMetadata: ): NotebookEdit
用於建立更新筆記本詮釋資料之編輯的公用程式。
| 參數 | 說明 |
|---|---|
| newNotebookMetadata: | 筆記本的新詮釋資料。 |
| 回傳值 | 說明 |
| NotebookEdit |
建構函式
new NotebookEdit(range: NotebookRange, newCells: NotebookCellData[]): NotebookEdit
建立新的筆記本編輯。
| 參數 | 說明 |
|---|---|
| range: NotebookRange | 筆記本範圍。 |
| newCells: NotebookCellData[] | 新儲存格資料陣列。 |
| 回傳值 | 說明 |
| NotebookEdit |
屬性
儲存格的選用新詮釋資料。
newCells: NotebookCellData[]
正在插入的新儲存格。可能為空。
筆記本的選用新詮釋資料。
range: NotebookRange
正在編輯的儲存格範圍。可能為空。
NotebookEditor
代表附屬於 筆記本 的筆記本編輯器。NotebookEditor 的額外屬性可在建議的 API 中取得,將於稍後完成。
屬性
notebook: NotebookDocument
與此筆記本編輯器相關聯的 筆記本文件。
selection: NotebookRange
此筆記本編輯器中的主要選取範圍。
selections: readonly NotebookRange[]
此筆記本編輯器中的所有選取範圍。
主要選取範圍(或焦點範圍)是 selections[0]。當文件沒有儲存格時,主要選取範圍為空 { start: 0, end: 0 };
viewColumn?: ViewColumn
此編輯器顯示所在的欄位。
visibleRanges: readonly NotebookRange[]
編輯器中目前可見的範圍(垂直方向)。
方法
revealRange(range: NotebookRange, revealType?: NotebookEditorRevealType): void
根據 revealType 捲動以顯示給定範圍。
| 參數 | 說明 |
|---|---|
| range: NotebookRange | 範圍。 |
| revealType?: NotebookEditorRevealType | 顯示 |
| 回傳值 | 說明 |
| void |
NotebookEditorRevealType
代表附屬於 筆記本 的筆記本編輯器。
列舉成員
該範圍將以盡可能少的捲動量顯示。
該範圍將始終顯示在視窗中心。
如果範圍在視窗之外,它將會顯示在視窗中心。否則,它將以盡可能少的捲動量顯示。
該範圍將始終顯示在視窗頂部。
NotebookEditorSelectionChangeEvent
代表描述 筆記本編輯器選取範圍 變更的事件。
屬性
notebookEditor: NotebookEditor
選取範圍已變更的 筆記本編輯器。
selections: readonly NotebookRange[]
筆記本編輯器選取範圍 的新值。
NotebookEditorVisibleRangesChangeEvent
代表描述 筆記本編輯器可見範圍 變更的事件。
屬性
notebookEditor: NotebookEditor
可見範圍已變更的 筆記本編輯器。
visibleRanges: readonly NotebookRange[]
筆記本編輯器可見範圍 的新值。
NotebookRange
筆記本範圍代表兩個儲存格索引的有序對。保證 start 小於或等於 end。
建構函式
new NotebookRange(start: number, end: number): NotebookRange
建立新的筆記本範圍。如果 start 不小於或等於 end,這些值將會交換。
| 參數 | 說明 |
|---|---|
| start: number | 開始索引 |
| end: number | 結束索引。 |
| 回傳值 | 說明 |
| NotebookRange |
屬性
此範圍的專屬 (exclusive) 結束索引(基於零)。
若 start 和 end 相等,則為 true。
此範圍的起始索引(基於零)。
方法
with(change: {end: number, start: number}): NotebookRange
根據此範圍衍生出一個新範圍。
| 參數 | 說明 |
|---|---|
| change: {end: number, start: number} | 描述此範圍變更的物件。 |
| 回傳值 | 說明 |
| NotebookRange | 反映給定變更的範圍。如果變更沒有影響,則會回傳 |
NotebookRendererMessaging
渲染器通訊用於與單一渲染器進行通訊。它由 notebooks.createRendererMessaging 回傳。
活動
onDidReceiveMessage: Event<{editor: NotebookEditor, message: any}>
當從渲染器接收到訊息時觸發的事件。
方法
postMessage(message: any, editor?: NotebookEditor): Thenable<boolean>
發送訊息給一個或所有渲染器。
| 參數 | 說明 |
|---|---|
| message: any | 要發送的訊息 |
| editor?: NotebookEditor | 訊息的目標編輯器。如果未提供,則訊息會發送給所有渲染器。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 一個布林值,表示訊息是否成功傳遞給任何渲染器。 |
NotebookSerializer
筆記本序列化器使編輯器能夠開啟筆記本檔案。
其核心是編輯器只知道 筆記本資料結構,但不知道該資料結構如何寫入檔案,也不知如何從檔案讀取。筆記本序列化器透過將位元組反序列化為筆記本資料(反之亦然)來填補此鴻溝。
方法
deserializeNotebook(content: Uint8Array, token: CancellationToken): NotebookData | Thenable<NotebookData>
將筆記本檔案的內容反序列化為筆記本資料結構。
| 參數 | 說明 |
|---|---|
| content: Uint8Array | 筆記本檔案的內容。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| NotebookData | Thenable<NotebookData> | 筆記本資料,或解析為此資料的 thenable。 |
serializeNotebook(data: NotebookData, token: CancellationToken): Uint8Array | Thenable<Uint8Array>
將筆記本資料序列化為檔案內容。
| 參數 | 說明 |
|---|---|
| data: NotebookData | 筆記本資料結構。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| Uint8Array | Thenable<Uint8Array> | 位元組陣列,或是解析為該陣列的 thenable。 |
OnEnterRule
描述按下 Enter 時要評估的規則。
屬性
action: EnterAction
要執行的動作。
此規則僅在游標後的文字符合此規則運算式時執行。
此規則僅在游標前的文字符合此規則運算式時執行。
此規則僅在目前行上方的文字符合此規則運算式時執行。
OnTypeFormattingEditProvider
文件格式化提供者介面定義了擴充功能與格式化功能之間的契約。
方法
provideOnTypeFormattingEdits(document: TextDocument, position: Position, ch: string, options: FormattingOptions, token: CancellationToken): ProviderResult<TextEdit[]>
在輸入字元後提供格式化編輯。
給定的位置和字元應向提供者提示位置擴展的範圍,例如當輸入 } 時找到匹配的 {。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| ch: string | 已輸入的字元。 |
| options: FormattingOptions | 控制格式化的選項。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TextEdit[]> | 一組文字編輯或解析為此類編輯的 thenable。若無結果,可傳回 |
OpenDialogOptions
設定檔案開啟對話方塊行為的選項。
- 注意 1:在 Windows 和 Linux 上,檔案對話方塊不能同時是檔案選擇器和資料夾選擇器,因此如果您在這些平台上將
canSelectFiles和canSelectFolders都設為true,則會顯示資料夾選擇器。 - 注意 2:明確將
canSelectFiles和canSelectFolders設為false是徒勞的,編輯器會默默地將選項調整為選取檔案。
屬性
允許選取檔案,預設為 true。
允許選取資料夾,預設為 false。
允許選取多個檔案或資料夾。
defaultUri?: Uri
對話方塊開啟時顯示的資源。
對話方塊使用的一組檔案篩選器。每個條目都是人類可讀的標籤(例如 "TypeScript")以及副檔名陣列,例如
{
'Images': ['png', 'jpg'],
'TypeScript': ['ts', 'tsx']
}
開啟按鈕的人類可讀字串。
對話方塊標題。
此參數可能會被忽略,因為並非所有作業系統都會在開啟對話方塊上顯示標題(例如 macOS)。
OutputChannel
輸出通道是唯讀文字資訊的容器。
要取得 OutputChannel 的實例,請使用 createOutputChannel。
屬性
此輸出頻道的人類可讀名稱。
方法
將給定值附加到頻道。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值 (falsy values) 將不會被列印。 |
| 回傳值 | 說明 |
| void |
appendLine(value: string): void
將給定值和一個換行字元附加到頻道。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值將會被列印。 |
| 回傳值 | 說明 |
| void |
移除頻道中的所有輸出。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
處置並釋放相關資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
從 UI 中隱藏此頻道。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
將頻道中的所有輸出替換為給定值。
| 參數 | 說明 |
|---|---|
| value: string | 字串,虛假值 (falsy values) 將不會被列印。 |
| 回傳值 | 說明 |
| void |
show(preserveFocus?: boolean): void
在 UI 中顯示此頻道。
| 參數 | 說明 |
|---|---|
| preserveFocus?: boolean | 當為 |
| 回傳值 | 說明 |
| void |
show(column?: ViewColumn, preserveFocus?: boolean): void
在 UI 中顯示此頻道。
- 已棄用 - 請使用僅包含一個參數的多載方法 (
show(preserveFocus?: boolean): void)。
| 參數 | 說明 |
|---|---|
| column?: ViewColumn | 此參數已棄用並將被忽略。 |
| preserveFocus?: boolean | 當為 |
| 回傳值 | 說明 |
| void |
OverviewRulerLane
代表在 概覽尺規 (overview ruler) 中渲染裝飾的不同位置。概覽尺規支援三個車道 (lanes)。
列舉成員
概覽尺規的左側車道。
概覽尺規的中央車道。
概覽尺規的右側車道。
概覽尺規的所有車道。
ParameterInformation
代表可呼叫簽章的參數。參數可以擁有標籤和說明註解。
建構函式
new ParameterInformation(label: string | [number, number], documentation?: string | MarkdownString): ParameterInformation
建立新的參數資訊物件。
| 參數 | 說明 |
|---|---|
| label: string | [number, number] | 標籤字串,或是其包含之簽章標籤內的包含起點與專屬終點偏移量。 |
| documentation?: string | MarkdownString | 說明字串。 |
| 回傳值 | 說明 |
| ParameterInformation |
屬性
documentation?: string | MarkdownString
此簽章的人類可讀說明註解。將會在 UI 中顯示,但可以省略。
label: string | [number, number]
Position
建構函式
new Position(line: number, character: number): Position
| 參數 | 說明 |
|---|---|
| line: number | 基於零的行數值。 |
| character: number | 基於零的字元數值。 |
| 回傳值 | 說明 |
| Position |
屬性
基於零的字元數值。
字元偏移量使用 UTF-16 代碼單元 (code units) 表示。
基於零的行數值。
方法
compareTo(other: Position): number
將此與 other 進行比較。
| 參數 | 說明 |
|---|---|
| other: Position | 一個位置。 |
| 回傳值 | 說明 |
| number | 若此位置在給定位置之前,則回傳小於零的數值;若此位置在給定位置之後,則回傳大於零的數值;若此位置與給定位置相等,則回傳零。 |
isAfter(other: Position): boolean
檢查此位置是否在 other 之後。
| 參數 | 說明 |
|---|---|
| other: Position | 一個位置。 |
| 回傳值 | 說明 |
| boolean | 若位置在更大的行數上,或在同一行但更大的字元位置上,則為 |
isAfterOrEqual(other: Position): boolean
檢查此位置是否在 other 之後或相等。
| 參數 | 說明 |
|---|---|
| other: Position | 一個位置。 |
| 回傳值 | 說明 |
| boolean | 若位置在更大的行數上,或在同一行但更大或相等的字元位置上,則為 |
isBefore(other: Position): boolean
檢查此位置是否在 other 之前。
| 參數 | 說明 |
|---|---|
| other: Position | 一個位置。 |
| 回傳值 | 說明 |
| boolean | 若位置在更小的行數上,或在同一行但更小的字元位置上,則為 |
isBeforeOrEqual(other: Position): boolean
檢查此位置是否在 other 之前或相等。
| 參數 | 說明 |
|---|---|
| other: Position | 一個位置。 |
| 回傳值 | 說明 |
| boolean | 若位置在更小的行數上,或在同一行但更小或相等的字元位置上,則為 |
isEqual(other: Position): boolean
檢查此位置是否與 other 相等。
| 參數 | 說明 |
|---|---|
| other: Position | 一個位置。 |
| 回傳值 | 說明 |
| boolean | 若給定位置的行和字元與此位置的行和字元相等,則為 |
translate(lineDelta?: number, characterDelta?: number): Position
建立一個相對於此位置的新位置。
| 參數 | 說明 |
|---|---|
| lineDelta?: number | 行數值的增量值,預設為 |
| characterDelta?: number | 字元數值的增量值,預設為 |
| 回傳值 | 說明 |
| Position | 一個位置,其行和字元是目前行和字元與對應增量的總和。 |
translate(change: {characterDelta: number, lineDelta: number}): Position
衍生出一個相對於此位置的新位置。
| 參數 | 說明 |
|---|---|
| change: {characterDelta: number, lineDelta: number} | 描述此位置增量的物件。 |
| 回傳值 | 說明 |
| Position | 反映給定增量的位置。如果變更沒有影響,則會回傳 |
with(line?: number, character?: number): Position
建立一個衍生自此位置的新位置。
with(change: {character: number, line: number}): Position
從此位置衍生出一個新位置。
| 參數 | 說明 |
|---|---|
| change: {character: number, line: number} | 描述此位置變更的物件。 |
| 回傳值 | 說明 |
| Position | 反映給定變更的位置。如果變更沒有影響,則會回傳 |
PreparedToolInvocation
屬性
confirmationMessages?: LanguageModelToolConfirmationMessages
此屬性的存在表示使用者在執行該工具前應先進行確認。對於任何具有副作用或可能具有危險性的工具,都應要求使用者確認。
invocationMessage?: string | MarkdownString
工具執行時顯示的自訂進度訊息。
PrepareLanguageModelChatModelOptions
屬性
使用者是否應透過某些 UI 流程進行提示,或是模型應嘗試以無訊息方式解析。如果 silent 為 true,由於缺乏 API 金鑰等資訊,可能無法解析所有模型。
ProcessExecution
任務執行作為一個不需 shell 互動的外部處理程序。
建構函式
new ProcessExecution(process: string, options?: ProcessExecutionOptions): ProcessExecution
建立一個處理程序執行。
| 參數 | 說明 |
|---|---|
| process: string | 要啟動的處理程序。 |
| options?: ProcessExecutionOptions | 已啟動處理程序的選用選項。 |
| 回傳值 | 說明 |
| ProcessExecution |
new ProcessExecution(process: string, args: string[], options?: ProcessExecutionOptions): ProcessExecution
建立一個處理程序執行。
| 參數 | 說明 |
|---|---|
| process: string | 要啟動的處理程序。 |
| args: string[] | 要傳遞給處理程序的參數。 |
| options?: ProcessExecutionOptions | 已啟動處理程序的選用選項。 |
| 回傳值 | 說明 |
| ProcessExecution |
屬性
傳遞給處理程序的參數。預設為空陣列。
options?: ProcessExecutionOptions
執行處理程序時使用的處理程序選項。預設為 undefined。
要執行的處理程序。
ProcessExecutionOptions
處理程序執行的選項
屬性
已執行程式或 shell 的目前工作目錄。若省略,則使用工具的目前工作區根目錄。
所執行程式或 Shell 的額外環境。如果省略,則使用父處理序的環境。如果提供,它會與父處理序的環境合併。
Progress<T>
定義報告進度更新的廣義方式。
方法
報告進度更新。
| 參數 | 說明 |
|---|---|
| value: T | 進度項目,例如訊息和/或關於已完成工作量的報告 |
| 回傳值 | 說明 |
| void |
ProgressLocation
編輯器中可以顯示進度資訊的位置。進度的視覺化呈現取決於位置。
列舉成員
顯示原始碼控制 (Source Control) 的進度,作為圖示的疊加層以及視圖內的進度列 (若可見)。不支援取消、離散進度或描述操作的標籤。
在編輯器的狀態列顯示進度。不支援取消或離散進度。支援透過進度標籤中的 $(<name>) 語法來渲染 主題圖示。
以通知形式顯示進度,並提供選用的取消按鈕。支援顯示無限和離散進度,但不支援渲染圖示。
ProgressOptions
描述應於何處及如何顯示進度的值物件。
屬性
控制是否應顯示取消按鈕,以允許使用者取消長時間執行的操作。請注意,目前只有 ProgressLocation.Notification 支援顯示取消按鈕。
location: ProgressLocation | {viewId: string}
應顯示進度的位置。
一個用於描述操作的易讀字串。
ProvideLanguageModelChatResponseOptions
屬性
控制語言模型行為的一組選項。這些選項特定於該語言模型。
toolMode: LanguageModelChatToolMode
要使用的工具選擇模式。提供者必須實作並遵守此模式。
tools?: readonly LanguageModelChatTool[]
語言模型可選的可用工具清單。這些可以是透過 lm.tools 註冊的可用工具,或是僅在呼叫擴充功能中實作的私有工具。
如果 LLM 要求呼叫其中一個工具,它將在 LanguageModelChatResponse.stream 中傳回一個 LanguageModelToolCallPart。呼叫者有責任呼叫該工具。如果是透過 lm.tools 註冊的工具,這意味著呼叫 lm.invokeTool。
然後,可以透過建立一個帶有 LanguageModelToolCallPart 的助理類型 LanguageModelChatMessage,接著一個帶有 LanguageModelToolResultPart 的使用者類型訊息,將工具結果提供給 LLM。
ProviderResult<T>
提供者結果代表像是 HoverProvider 等提供者可能回傳的值。一方面是實際的結果類型 T(例如 Hover),或是解析為該類型 T 的 thenable。此外,也可以回傳 null 和 undefined(無論是直接回傳或從 thenable 回傳)。
下方的程式碼片段皆為 HoverProvider 的有效實作
let a: HoverProvider = {
provideHover(doc, pos, token): ProviderResult<Hover> {
return new Hover('Hello World');
}
};
let b: HoverProvider = {
provideHover(doc, pos, token): ProviderResult<Hover> {
return new Promise(resolve => {
resolve(new Hover('Hello World'));
});
}
};
let c: HoverProvider = {
provideHover(doc, pos, token): ProviderResult<Hover> {
return; // undefined
}
};
ProviderResult: T | undefined | null | Thenable<T | undefined | null>
Pseudoterminal
定義終端 pty 的介面,使擴充功能能夠控制終端。
活動
onDidChangeName?: Event<string>
一個事件,觸發時允許變更終端名稱。
在呼叫 Pseudoterminal.open 之前觸發的事件將會被忽略。
範例: 將終端名稱變更為 "My new terminal"。
const writeEmitter = new vscode.EventEmitter<string>();
const changeNameEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
onDidChangeName: changeNameEmitter.event,
open: () => changeNameEmitter.fire('My new terminal'),
close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });
onDidClose?: Event<number | void>
一個事件,觸發時會發出訊號表示 pty 已關閉並處置該終端。
在呼叫 Pseudoterminal.open 之前觸發的事件將會被忽略。
可以使用數字來提供終端的結束代碼。結束代碼必須為正數;非零的結束代碼表示失敗,這會顯示普通終端的通知,並允許在使用 CustomExecution API 時讓依賴的任務繼續執行。
範例: 當按下 "y" 時關閉終端,否則顯示通知。
const writeEmitter = new vscode.EventEmitter<string>();
const closeEmitter = new vscode.EventEmitter<void>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
onDidClose: closeEmitter.event,
open: () => writeEmitter.fire('Press y to exit successfully'),
close: () => {},
handleInput: data => {
if (data !== 'y') {
vscode.window.showInformationMessage('Something went wrong');
}
closeEmitter.fire();
}
};
const terminal = vscode.window.createTerminal({ name: 'Exit example', pty });
terminal.show(true);
onDidOverrideDimensions?: Event<TerminalDimensions>
一個事件,觸發時允許覆寫終端的 尺寸。請注意,設定後,覆寫的尺寸僅在小於終端實際尺寸時才會生效(即不會出現捲軸)。若要讓終端回到常規尺寸(符合面板大小),請設為 undefined。
在呼叫 Pseudoterminal.open 之前觸發的事件將會被忽略。
範例: 將終端尺寸覆寫為 20 欄 10 列
const dimensionsEmitter = new vscode.EventEmitter<vscode.TerminalDimensions>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
onDidOverrideDimensions: dimensionsEmitter.event,
open: () => {
dimensionsEmitter.fire({
columns: 20,
rows: 10
});
},
close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });
onDidWrite: Event<string>
一個事件,觸發時會將資料寫入終端。與將文字傳送至底層子虛擬裝置(子處理程序)的 Terminal.sendText 不同,此事件會將文字寫入父虛擬裝置(即終端本身)。
請注意,寫入 \n 只會將游標向下移動 1 列,您還需要寫入 \r 才能將游標移動到最左側的單元格。
在呼叫 Pseudoterminal.open 之前觸發的事件將會被忽略。
範例: 將紅色文字寫入終端
const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
onDidWrite: writeEmitter.event,
open: () => writeEmitter.fire('\x1b[31mHello world\x1b[0m'),
close: () => {}
};
vscode.window.createTerminal({ name: 'My terminal', pty });
範例: 將游標移動到第 10 列和第 20 欄並寫入星號
writeEmitter.fire('\x1b[10;20H*');
方法
實作此方法以處理使用者關閉終端時的情況。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
handleInput(data: string): void
實作此方法以處理終端中的傳入按鍵,或當擴充功能呼叫 Terminal.sendText 時。data 包含序列化為對應 VT 序列表示法的按鍵/文字。
| 參數 | 說明 |
|---|---|
| data: string | 傳入的資料。 範例: 在終端中回顯輸入。Enter 的序列 (
|
| 回傳值 | 說明 |
| void |
open(initialDimensions: TerminalDimensions): void
實作此方法以處理 pty 開啟並準備好開始觸發事件時的情況。
| 參數 | 說明 |
|---|---|
| initialDimensions: TerminalDimensions | 終端的尺寸,如果終端面板在呼叫此方法前尚未開啟,則此值將為 undefined。 |
| 回傳值 | 說明 |
| void |
setDimensions(dimensions: TerminalDimensions): void
實作此方法以處理適合終端面板的行數和列數變更時的情況(例如字體大小變更或面板調整大小時)。終端尺寸的初始狀態應視為 undefined,直到觸發此方法為止,因為終端尺寸在顯示於使用者介面前是未知的。
當尺寸被 onDidOverrideDimensions 覆寫時,setDimensions 將繼續使用常規面板尺寸呼叫,允許擴充功能持續回應尺寸變更。
| 參數 | 說明 |
|---|---|
| dimensions: TerminalDimensions | 新尺寸。 |
| 回傳值 | 說明 |
| void |
QuickDiffProvider
快速差異 (Quick diff) 提供者提供一個指向已修改資源原始狀態的 uri。編輯器將使用此資訊在文字中呈現 ad-hoc 差異。
方法
provideOriginalResource(uri: Uri, token: CancellationToken): ProviderResult<Uri>
為任何給定的資源 uri 提供指向原始資源的 Uri。
| 參數 | 說明 |
|---|---|
| uri: Uri | 在文字編輯器中開啟的資源 uri。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Uri> | 一個解析為匹配的原始資源 uri 的 thenable。 |
QuickInput
所有快速輸入類型的基礎介面。
快速輸入提供了一種統一的方式,讓擴充功能透過簡單的 UI 元素與使用者互動。快速輸入 UI 最初不可見。在透過其屬性設定後,擴充功能可以呼叫 show 使其可見。
此 UI 可能因多種原因而隱藏,擴充功能將透過 onDidHide 收到通知。範例包括:明確呼叫 hide、使用者按下 Esc 鍵、開啟另一個輸入 UI 等。
使用者按下 Enter 或其他暗示接受目前狀態的手勢時,不會自動隱藏此 UI 元件。由擴充功能決定是否接受使用者的輸入,以及是否應透過呼叫 hide 隱藏 UI。
當擴充功能不再需要此輸入 UI 時,應 處置 (dispose) 它,以釋放與其相關的任何資源。
活動
onDidHide: Event<void>
屬性
決定 UI 是否應顯示進度指示器。預設為 false。
例如,在載入更多資料或驗證使用者輸入時,將此變更為 true。
決定 UI 是否應允許使用者輸入。預設為 true。
例如,在驗證使用者輸入或為使用者輸入的下一步載入資料時,將此變更為 false。
決定 UI 在失去焦點時是否應保持開啟。預設為 false。此設定在 iPad 上會被忽略,且永遠為 false。
多步驟輸入流程的可選目前步驟計數。
輸入 UI 的可選標題。
多步驟輸入流程的可選總步驟計數。
方法
處置此輸入 UI 及任何相關資源。
如果它仍然可見,它會先被隱藏。在此呼叫之後,輸入 UI 不再運作,且不應存取其上的任何額外方法或屬性。應改為建立新的輸入 UI。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
隱藏此輸入 UI。
這也會觸發 onDidHide 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
使輸入 UI 以目前的配置可見。
任何其他輸入 UI 將首先觸發 onDidHide 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
QuickInputButton
屬性
iconPath: IconPath
按鈕的圖示。
location?: QuickInputButtonLocation
當出現時,表示該按鈕是一個可以勾選或取消勾選的切換按鈕。
| 參數 | 說明 |
|---|---|
| checked: boolean | 指示切換按鈕目前是否已勾選。此屬性將在按鈕被切換時更新。 |
將滑鼠懸停在按鈕上時顯示的可選工具提示。
QuickInputButtonLocation
指定 QuickInputButton 應渲染的位置。
列舉成員
按鈕渲染在標題列中。
按鈕渲染在輸入框右側的行內。
按鈕渲染在輸入框內的最末端。
QuickInputButtons
靜態
Back: QuickInputButton
QuickPick<T>
一個具體的 QuickInput,讓使用者從類型 T 的項目列表中挑選項目。
這些項目可以透過篩選文字欄位進行篩選,並且有一個選項 canSelectMany 允許選擇多個項目。
請注意,在許多情況下,更方便的 window.showQuickPick 較易於使用。當 window.showQuickPick 無法提供所需的靈活性時,應使用 window.createQuickPick。
活動
onDidAccept: Event<void>
當使用者表示接受所選項目時發出的事件。
onDidChangeActive: Event<readonly T[]>
當活動項目變更時發出的事件。
onDidChangeSelection: Event<readonly T[]>
當所選項目變更時發出的事件。
onDidChangeValue: Event<string>
當篩選文字的值變更時發出的事件。
onDidHide: Event<void>
onDidTriggerButton: Event<QuickInputButton>
當按鈕被觸發時發出的事件。
此事件針對儲存在 buttons 陣列中的按鈕觸發。此事件不會針對 QuickPickItem 上的按鈕觸發。
onDidTriggerItemButton: Event<QuickPickItemButtonEvent<T>>
當特定 QuickPickItem 中的按鈕被觸發時發出的事件。
此事件不會針對屬於 buttons 的標題列按鈕觸發。
屬性
活動項目。此內容可由擴充功能讀取和更新。
決定 UI 是否應顯示進度指示器。預設為 false。
例如,在載入更多資料或驗證使用者輸入時,將此變更為 true。
buttons: readonly QuickInputButton[]
UI 中動作的按鈕。
確定是否可以同時選擇多個項目。預設為 false。
決定 UI 是否應允許使用者輸入。預設為 true。
例如,在驗證使用者輸入或為使用者輸入的下一步載入資料時,將此變更為 false。
決定 UI 在失去焦點時是否應保持開啟。預設為 false。此設定在 iPad 上會被忽略,且永遠為 false。
要挑選的項目。此內容可由擴充功能讀取和更新。
確定更新快速挑選項目時是否維持捲軸位置。預設為 false。
確定篩選文字是否也應與項目的 description 進行比對。預設為 false。
確定篩選文字是否也應與項目的 detail 進行比對。預設為 false。
當未輸入任何值時,顯示在篩選文字方塊中的選用預留位置文字。
為使用者提供說明或上下文的選用文字。
提示文字顯示在輸入框下方、項目列表上方。
所選項目。此內容可由擴充功能讀取和更新。
多步驟輸入流程的可選目前步驟計數。
輸入 UI 的可選標題。
多步驟輸入流程的可選總步驟計數。
篩選文字的目前值。
方法
處置此輸入 UI 及任何相關資源。
如果它仍然可見,它會先被隱藏。在此呼叫之後,輸入 UI 不再運作,且不應存取其上的任何額外方法或屬性。應改為建立新的輸入 UI。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
隱藏此輸入 UI。
這也會觸發 onDidHide 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
使輸入 UI 以目前的配置可見。
任何其他輸入 UI 將首先觸發 onDidHide 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
QuickPickItem
代表可以從項目列表中選擇的項目。
屬性
確定此項目是否總是顯示,即使被使用者輸入篩選掉時也是如此。
注意: 當 kind 設為 QuickPickItemKind.Separator 時,此屬性將被忽略。
buttons?: readonly QuickInputButton[]
將在此特定項目上渲染的選用按鈕。
這些按鈕在按下時會觸發 QuickPickItemButtonEvent。按鈕僅在使用由 createQuickPick API 建立的快速挑選器時才會渲染。使用 showQuickPick API 時,按鈕不會渲染。
注意: 當 kind 設為 QuickPickItemKind.Separator 時,此屬性將被忽略。
一個在同一行中以較不明顯方式渲染的易讀字串。
支援透過 $(<name>) 語法渲染 主題圖示。
注意: 當 kind 設為 QuickPickItemKind.Separator 時,此屬性將被忽略。
一個在單獨一行中以較不明顯方式渲染的易讀字串。
支援透過 $(<name>) 語法渲染 主題圖示。
注意: 當 kind 設為 QuickPickItemKind.Separator 時,此屬性將被忽略。
iconPath?: IconPath
該項目的圖示。
kind?: QuickPickItemKind
該項目的類型,決定其在快速挑選器中的呈現方式。
若未指定,預設為 QuickPickItemKind.Default。
一個明顯渲染的易讀字串。
支援透過 $(<name>) 語法渲染 主題圖示。
注意: 當 kind 設為 QuickPickItemKind.Default 時(即一般項目而非分隔符),它支援透過 $(<name>) 語法渲染 主題圖示。
一個選用旗標,指示該項目是否最初被選中。
這僅在使用 showQuickPick API 時有效。若要對 createQuickPick API 執行相同操作,只需將 selectedItems 設為您想要最初選中的項目即可。
注意: 這僅在挑選器允許多次選擇時有效。
另請參閱 QuickPickOptions.canPickMany
注意: 當 kind 設為 QuickPickItemKind.Separator 時,此屬性將被忽略。
resourceUri?: Uri
一個代表與此項目關聯之資源的 Uri。
當設定時,若未明確提供,此屬性會被用來自動導出多個項目屬性
- Label:當未提供 label 或為空時,從資源的檔案名稱導出。
- Description:當未提供 description 或為空時,從資源的路徑導出。
- Icon:當 iconPath 設為 ThemeIcon.File 或 ThemeIcon.Folder 時,從目前的檔案圖示主題導出。
QuickPickItemButtonEvent<T>
描述在 QuickPickItem 上按下之按鈕的事件。
屬性
button: QuickInputButton
被按下的按鈕。
按鈕所屬的項目。
QuickPickItemKind
定義 快速挑選項目 的類型。
列舉成員
提供視覺分組的分隔項目。
當 QuickPickItem 的類型為 Separator 時,該項目僅作為視覺分隔符,不代表可選擇的項目。唯一適用的屬性是 label。所有其他 QuickPickItem 的屬性將被忽略且無效。
可以在快速挑選器中選擇之項目的預設類型。
QuickPickOptions
配置快速挑選器 UI 行為的選項。
活動
onDidSelectItem(item: string | QuickPickItem): any
每當項目被選中時呼叫的選用函式。
| 參數 | 說明 |
|---|---|
| item: string | QuickPickItem | |
| 回傳值 | 說明 |
| any |
屬性
確定挑選器是否允許多次選擇。當為 true 時,結果為選取項目的陣列。
設為 true 可在焦點移至編輯器的其他部分或另一個視窗時保持挑選器開啟。此設定在 iPad 上將被忽略,並且始終為 false。
確定篩選項目時是否應包含 description。預設為 false。
確定篩選項目時是否應包含 detail。預設為 false。
在輸入框中顯示為預留位置的選用字串,用以指引使用者。
為使用者提供說明或上下文的選用文字。
提示文字顯示在輸入框下方、項目列表上方。
快速挑選器的選用標題。
Range
範圍代表兩個位置的有序對。保證 start.isBeforeOrEqual(end)
Range 物件是 不可變 (immutable) 的。請使用 with、intersection 或 union 方法從現有範圍導出新範圍。
建構函式
new Range(start: Position, end: Position): Range
new Range(startLine: number, startCharacter: number, endLine: number, endCharacter: number): Range
從數值座標建立新範圍。這比使用 new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter)) 更簡短。
| 參數 | 說明 |
|---|---|
| startLine: number | 基於零的行數值。 |
| startCharacter: number | 基於零的字元數值。 |
| endLine: number | 基於零的行數值。 |
| endCharacter: number | 基於零的字元數值。 |
| 回傳值 | 說明 |
| Range |
屬性
end: Position
結束位置。它位於 start 之後或相等。
若 start 和 end 相等,則為 true。
如果 start.line 和 end.line 相等,則為 true。
start: Position
起始位置。它位於 end 之前或相等。
方法
contains(positionOrRange: Range | Position): boolean
檢查位置或範圍是否包含在此範圍內。
intersection(range: Range): Range
將 range 與此範圍相交並回傳一個新範圍;如果範圍沒有重疊,則回傳 undefined。
isEqual(other: Range): boolean
with(start?: Position, end?: Position): Range
從此範圍導出新範圍。
with(change: {end: Position, start: Position}): Range
從此範圍導出新範圍。
ReferenceContext
請求參考時包含額外資訊的值物件。
屬性
包含目前符號的宣告。
ReferenceProvider
參考提供者介面定義了擴充功能與 尋找參考 功能之間的合約。
方法
provideReferences(document: TextDocument, position: Position, context: ReferenceContext, token: CancellationToken): ProviderResult<Location[]>
為給定位置和文件提供專案範圍的參考。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| context: ReferenceContext | 關於參考請求的額外資訊。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Location[]> | 位置陣列或解析為該陣列的 thenable。若無結果,可透過回傳 |
RelativePattern
相對模式是一個輔助工具,用於建構相對於基底檔案路徑匹配的 glob 模式。基底路徑可以是作為字串或 uri 的絕對檔案路徑,或是 工作區資料夾(這是建立相對模式的首選方式)。
建構函式
new RelativePattern(base: string | Uri | WorkspaceFolder, pattern: string): RelativePattern
建立一個具有基底檔案路徑和匹配模式的新相對模式物件。此模式將根據相對於基底的檔案路徑進行匹配。
範例
const folder = vscode.workspace.workspaceFolders?.[0];
if (folder) {
// Match any TypeScript file in the root of this workspace folder
const pattern1 = new vscode.RelativePattern(folder, '*.ts');
// Match any TypeScript file in `someFolder` inside this workspace folder
const pattern2 = new vscode.RelativePattern(folder, 'someFolder/*.ts');
}
| 參數 | 說明 |
|---|---|
| base: string | Uri | WorkspaceFolder | 此模式將與之相對匹配的基底。若模式應在工作區內匹配,建議傳入 工作區資料夾。否則,僅當模式用於工作區外的檔案路徑時,才應使用 uri 或字串。 |
| pattern: string | 檔案 glob 模式(如 |
| 回傳值 | 說明 |
| RelativePattern |
屬性
此模式將與之相對匹配的基底檔案路徑。
這符合 RelativePattern.baseUri 的 fsPath 值。
注意: 更新此值將更新 RelativePattern.baseUri 為一個具有 file 機制的 uri。
- 已棄用 - 此屬性已棄用,請改用 RelativePattern.baseUri。
baseUri: Uri
此模式將與之相對匹配的基底檔案路徑。檔案路徑必須是絕對路徑,不應包含任何尾隨路徑分隔符,且不包含任何相對區段(. 或 ..)。
檔案 glob 模式(如 *.{ts,js}),將根據相對於基底路徑的檔案路徑進行匹配。
範例:給定基底 /home/work/folder 和檔案路徑 /home/work/folder/index.js,檔案 glob 模式將匹配 index.js。
RenameProvider
重新命名提供者介面定義了擴充功能與 重新命名 功能之間的合約。
方法
prepareRename(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Range | {placeholder: string, range: Range}>
用於在執行重新命名前解析並驗證位置的選用函式。結果可以是範圍,或包含範圍與預留位置文字。預留位置文字應為正在重新命名的符號識別碼——省略時,將使用返回範圍中的文字。
注意: 當提供的位置不允許重新命名時,此函式應拋出錯誤或返回拒絕的 thenable。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 將呼叫重新命名的文件。 |
| position: Position | 將呼叫重新命名的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Range | {placeholder: string, range: Range}> | 要重新命名之識別碼的範圍,或範圍與預留位置文字。若無結果,可回傳 |
provideRenameEdits(document: TextDocument, position: Position, newName: string, token: CancellationToken): ProviderResult<WorkspaceEdit>
提供一個編輯,描述為將符號重新命名為不同名稱而必須對一個或多個資源進行的變更。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| newName: string | 符號的新名稱。如果給定名稱無效,提供者必須返回拒絕的承諾 (rejected promise)。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<WorkspaceEdit> | 工作區編輯或解析為該編輯的 thenable。若無結果,可透過回傳 |
RunOptions
任務的執行選項。
屬性
控制重新執行時是否重新評估任務變數。
SaveDialogOptions
配置檔案儲存對話框行為的選項。
屬性
defaultUri?: Uri
對話方塊開啟時顯示的資源。
對話方塊使用的一組檔案篩選器。每個條目都是人類可讀的標籤(例如 "TypeScript")以及副檔名陣列,例如
{
'Images': ['png', 'jpg'],
'TypeScript': ['ts', 'tsx']
}
儲存按鈕的易讀字串。
對話方塊標題。
此參數可能會被忽略,因為並非所有作業系統都會在儲存對話框上顯示標題(例如 macOS)。
SecretStorage
代表加密儲存機密(或任何敏感資訊)的儲存公用程式。機密儲存的實作在不同平台上會有所不同,且機密不會在多台機器間同步。
活動
onDidChange: Event<SecretStorageChangeEvent>
當機密被儲存或刪除時觸發。
方法
delete(key: string): Thenable<void>
從儲存中移除機密。
| 參數 | 說明 |
|---|---|
| key: string | 儲存機密時使用的鍵值。 |
| 回傳值 | 說明 |
| Thenable<void> |
get(key: string): Thenable<string>
檢索以鍵值儲存的機密。如果沒有與該鍵值相符的密碼,則返回 undefined。
| 參數 | 說明 |
|---|---|
| key: string | 儲存機密時使用的鍵值。 |
| 回傳值 | 說明 |
| Thenable<string> | 儲存的值或 |
檢索此擴充功能所儲存所有機密的鍵值。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<string[]> |
store(key: string, value: string): Thenable<void>
在給定鍵值下儲存機密。
| 參數 | 說明 |
|---|---|
| key: string | 儲存機密的鍵值。 |
| value: string | 該機密。 |
| 回傳值 | 說明 |
| Thenable<void> |
SecretStorageChangeEvent
當機密被新增或移除時觸發的事件資料。
屬性
已變更機密的鍵值。
SelectedCompletionInfo
描述目前選中的自動完成項目。
屬性
range: Range
如果接受此自動完成項目,將被取代的範圍。
如果接受此自動完成,該範圍將被取代成的文字。
Selection
代表編輯器中的文字選取範圍。
建構函式
new Selection(anchor: Position, active: Position): Selection
new Selection(anchorLine: number, anchorCharacter: number, activeLine: number, activeCharacter: number): Selection
從四個座標建立選取範圍。
| 參數 | 說明 |
|---|---|
| anchorLine: number | 基於零的行數值。 |
| anchorCharacter: number | 基於零的字元數值。 |
| activeLine: number | 基於零的行數值。 |
| activeCharacter: number | 基於零的字元數值。 |
| 回傳值 | 說明 |
| Selection |
屬性
active: Position
游標的位置。此位置可能在 anchor 之前或之後。
anchor: Position
選取範圍開始的位置。此位置可能在 active 之前或之後。
end: Position
結束位置。它位於 start 之後或相等。
若 start 和 end 相等,則為 true。
如果 start.line 和 end.line 相等,則為 true。
start: Position
起始位置。它位於 end 之前或相等。
方法
contains(positionOrRange: Range | Position): boolean
檢查位置或範圍是否包含在此範圍內。
intersection(range: Range): Range
將 range 與此範圍相交並回傳一個新範圍;如果範圍沒有重疊,則回傳 undefined。
isEqual(other: Range): boolean
with(start?: Position, end?: Position): Range
從此範圍導出新範圍。
with(change: {end: Position, start: Position}): Range
從此範圍導出新範圍。
SelectionRange
選取範圍代表選取階層的一部分。選取範圍可以有一個包含它的父選取範圍。
建構函式
new SelectionRange(range: Range, parent?: SelectionRange): SelectionRange
建立一個新選取範圍。
| 參數 | 說明 |
|---|---|
| range: Range | 選取範圍的範圍。 |
| parent?: SelectionRange | 選取範圍的父項。 |
| 回傳值 | 說明 |
| SelectionRange |
屬性
parent?: SelectionRange
包含此範圍的父選取範圍。
range: Range
此選取範圍的 Range。
SelectionRangeProvider
選取範圍提供者介面定義了擴充功能與「展開和縮小選取範圍」功能之間的合約。
方法
provideSelectionRanges(document: TextDocument, positions: readonly Position[], token: CancellationToken): ProviderResult<SelectionRange[]>
為給定位置提供選取範圍。
應針對每個位置個別且獨立地計算選取範圍。編輯器會合併並移除重複範圍,但提供者必須返回選取範圍的階層,以便範圍被其父項 包含。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| positions: readonly Position[] | 呼叫該命令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<SelectionRange[]> | 選取範圍或解析為該範圍的 thenable。若無結果,可透過回傳 |
SemanticTokens
代表語意標記,可以是範圍內的標記,也可以是整個文件的標記。
參見
- provideDocumentSemanticTokens 以了解格式說明。
- SemanticTokensBuilder 作為建立實例的輔助工具。
建構函式
new SemanticTokens(data: Uint32Array, resultId?: string): SemanticTokens
建立新的語意標記。
| 參數 | 說明 |
|---|---|
| data: Uint32Array | 標記資料。 |
| resultId?: string | 結果識別碼。 |
| 回傳值 | 說明 |
| SemanticTokens |
屬性
實際的標記資料。
參閱 provideDocumentSemanticTokens 以了解格式說明。
標記的結果 ID。
這將作為 ID 傳遞給 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已實作)。
SemanticTokensBuilder
語意標記產生器,有助於建立包含增量編碼語意標記的 SemanticTokens 實例。
建構函式
new SemanticTokensBuilder(legend?: SemanticTokensLegend): SemanticTokensBuilder
建立語意標記產生器。
| 參數 | 說明 |
|---|---|
| legend?: SemanticTokensLegend | 語意標記圖例。 |
| 回傳值 | 說明 |
| SemanticTokensBuilder |
方法
build(resultId?: string): SemanticTokens
完成並建立 SemanticTokens 實例。
| 參數 | 說明 |
|---|---|
| resultId?: string | |
| 回傳值 | 說明 |
| SemanticTokens |
push(line: number, char: number, length: number, tokenType: number, tokenModifiers?: number): void
加入另一個標記。
| 參數 | 說明 |
|---|---|
| line: number | 標記起始行號(絕對值)。 |
| char: number | 標記起始字元(絕對值)。 |
| length: number | 標記的字元長度。 |
| tokenType: number | 編碼後的標記類型。 |
| tokenModifiers?: number | 編碼後的標記修飾詞。 |
| 回傳值 | 說明 |
| void |
push(range: Range, tokenType: string, tokenModifiers?: readonly string[]): void
加入另一個標記。僅在提供圖例時使用。
| 參數 | 說明 |
|---|---|
| range: Range | 標記的範圍。必須為單一行。 |
| tokenType: string | 標記類型。 |
| tokenModifiers?: readonly string[] | 標記修飾詞。 |
| 回傳值 | 說明 |
| void |
SemanticTokensEdit
代表對語意標記的編輯。
參閱 provideDocumentSemanticTokensEdits 以了解格式說明。
建構函式
new SemanticTokensEdit(start: number, deleteCount: number, data?: Uint32Array): SemanticTokensEdit
建立語意標記編輯。
| 參數 | 說明 |
|---|---|
| start: number | 起始位移量 |
| deleteCount: number | 要移除的元素數量。 |
| data?: Uint32Array | 要插入的元素 |
| 回傳值 | 說明 |
| SemanticTokensEdit |
屬性
要插入的元素。
要移除的元素數量。
編輯的起始位移量。
SemanticTokensEdits
代表對語意標記的編輯集合。
參閱 provideDocumentSemanticTokensEdits 以了解格式說明。
建構函式
new SemanticTokensEdits(edits: SemanticTokensEdit[], resultId?: string): SemanticTokensEdits
建立新的語意標記編輯集合。
| 參數 | 說明 |
|---|---|
| edits: SemanticTokensEdit[] | 語意標記編輯陣列 |
| resultId?: string | 結果識別碼。 |
| 回傳值 | 說明 |
| SemanticTokensEdits |
屬性
edits: SemanticTokensEdit[]
對標記資料的編輯。所有編輯均參照初始資料狀態。
標記的結果 ID。
這將作為 ID 傳遞給 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(如果已實作)。
SemanticTokensLegend
語意標記圖例包含了解碼語意標記整數表示形式所需的資訊。
建構函式
new SemanticTokensLegend(tokenTypes: string[], tokenModifiers?: string[]): SemanticTokensLegend
建立語意標記圖例。
| 參數 | 說明 |
|---|---|
| tokenTypes: string[] | 標記類型陣列。 |
| tokenModifiers?: string[] | 標記修飾詞陣列。 |
| 回傳值 | 說明 |
| SemanticTokensLegend |
屬性
可能的標記修飾詞。
可能的標記類型。
ShellExecution
代表在 Shell 中執行的任務執行。
建構函式
new ShellExecution(commandLine: string, options?: ShellExecutionOptions): ShellExecution
建立具有完整指令行的 Shell 執行。
| 參數 | 說明 |
|---|---|
| commandLine: string | 要執行的指令行。 |
| options?: ShellExecutionOptions | 啟動 Shell 的選用選項。 |
| 回傳值 | 說明 |
| ShellExecution |
new ShellExecution(command: string | ShellQuotedString, args: Array<string | ShellQuotedString>, options?: ShellExecutionOptions): ShellExecution
建立具有指令與參數的 Shell 執行。實際執行時,編輯器會從指令與參數建構指令行。這可能會受到解釋,特別是在引號處理方面。如果需要對指令行進行完全控制,請使用建立包含完整指令行之 ShellExecution 的建構函式。
| 參數 | 說明 |
|---|---|
| command: string | ShellQuotedString | 要執行的指令。 |
| args: Array<string | ShellQuotedString> | 指令參數。 |
| options?: ShellExecutionOptions | 啟動 Shell 的選用選項。 |
| 回傳值 | 說明 |
| ShellExecution |
屬性
args: Array<string | ShellQuotedString>
Shell 參數。如果是使用完整指令行建立,則為 undefined。
command: string | ShellQuotedString
Shell 指令。如果是使用完整指令行建立,則為 undefined。
Shell 指令行。如果是使用指令與參數建立,則為 undefined。
options?: ShellExecutionOptions
當指令行在 Shell 中執行時使用的 Shell 選項。預設為 undefined。
ShellExecutionOptions
Shell 執行的選項
屬性
執行 Shell 的目前工作目錄。若省略,則使用工具的目前工作區根目錄。
執行 Shell 的額外環境變數。若省略,則使用父處理序的環境。若提供,將與父處理序的環境合併。
Shell 可執行檔。
傳遞給用於執行任務的 Shell 可執行檔的參數。大多數 Shell 需要特定參數才能執行指令。例如 bash 需要 -c 參數來執行指令,PowerShell 需要 -Command,而 cmd 同時需要 /d 與 /c。
shellQuoting?: ShellQuotingOptions
此 Shell 支援的 Shell 引號。
ShellQuotedString
根據所使用的 Shell 會加上引號的字串。
屬性
quoting: ShellQuoting
要使用的引號樣式。
實際的字串值。
ShellQuoting
定義如果引數包含空格或不支援的字元時,應如何加上引號。
列舉成員
應使用字元跳脫。例如在 bash 使用 \,在 PowerShell 使用 `。
應使用強引號。例如在 Windows cmd 使用 ",在 bash 與 PowerShell 使用 '。強引號將引數視為字面字串。在 PowerShell 中,echo 'The value is $(2 * 3)' 會列印 The value is $(2 * 3)
應使用弱引號。例如在 Windows cmd、bash 與 PowerShell 使用 "。弱引號仍會在引號字串內執行某種評估。在 PowerShell 中,echo "The value is $(2 * 3)" 會列印 The value is 6
ShellQuotingOptions
Shell 引號選項。
屬性
escape?: string | {charsToEscape: string, escapeChar: string}
用於進行字元跳脫的字元。若提供字串,僅空格會被跳脫。若提供 { escapeChar, charsToEscape } 字面值,則 charsToEscape 中的所有字元都會使用 escapeChar 進行跳脫。
用於強引號的字元。字串長度必須為 1。
用於弱引號的字元。字串長度必須為 1。
SignatureHelp
簽章說明代表可呼叫物件的簽章。可以有多個簽章,但只有一個是作用中,且只有一個作用中參數。
建構函式
new SignatureHelp(): SignatureHelp
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| SignatureHelp |
屬性
作用中簽章的作用中參數。
作用中簽章。
signatures: SignatureInformation[]
一個或多個簽章。
SignatureHelpContext
關於 SignatureHelpProvider 被觸發之上下文的額外資訊。
屬性
activeSignatureHelp: SignatureHelp
目前作用中的 SignatureHelp。
activeSignatureHelp 會根據使用者透過方向鍵瀏覽可用簽章來更新其 activeSignature 欄位。
若觸發時簽章說明已在顯示中,則為 true。
當簽章說明已啟用時會發生重新觸發,這可能是由鍵入觸發字元、游標移動或文件內容變更等動作所引起。
導致簽章說明被觸發的字元。
當簽章說明不是由鍵入(例如手動呼叫或移動游標)觸發時,此值為 undefined。
triggerKind: SignatureHelpTriggerKind
導致簽章說明被觸發的動作。
SignatureHelpProvider
簽章說明提供者介面定義了擴充功能與 參數提示 功能之間的合約。
方法
provideSignatureHelp(document: TextDocument, position: Position, token: CancellationToken, context: SignatureHelpContext): ProviderResult<SignatureHelp>
提供給定位置與文件的簽章說明。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| context: SignatureHelpContext | 關於簽章說明如何被觸發的資訊。 |
| 回傳值 | 說明 |
| ProviderResult<SignatureHelp> | 簽章說明或解析為該說明的 Thenable。若無結果,可透過回傳 |
SignatureHelpProviderMetadata
關於已註冊 SignatureHelpProvider 的中繼資料。
屬性
retriggerCharacters: readonly string[]
重新觸發簽章說明的字元列表。
這些觸發字元僅在簽章說明已顯示時才作用。所有觸發字元也會被計算為重新觸發字元。
triggerCharacters: readonly string[]
觸發簽章說明的字元列表。
SignatureHelpTriggerKind
SignatureHelpProvider 如何被觸發。
列舉成員
簽章說明由使用者手動或透過指令呼叫。
簽章說明由觸發字元所觸發。
簽章說明由游標移動或文件內容變更所觸發。
SignatureInformation
代表可呼叫物件的簽章。簽章可以包含標籤(如函數名稱)、說明註解與一組參數。
建構函式
new SignatureInformation(label: string, documentation?: string | MarkdownString): SignatureInformation
建立新的簽章資訊物件。
| 參數 | 說明 |
|---|---|
| label: string | 標籤字串。 |
| documentation?: string | MarkdownString | 說明字串。 |
| 回傳值 | 說明 |
| SignatureInformation |
屬性
作用中參數的索引。
若提供此值,將取代 SignatureHelp.activeParameter 使用。
documentation?: string | MarkdownString
此簽章的人類可讀說明註解。將會在 UI 中顯示,但可以省略。
此簽章的標籤。將顯示在 UI 中。
parameters: ParameterInformation[]
此簽章的參數。
SnippetString
程式碼片段字串是一個模板,允許在插入時插入文字並控制編輯器游標。
程式碼片段可以使用 $1、$2 與 ${3:foo} 定義定位停駐點與預留位置。$0 定義最終定位停駐點,預設為片段結尾。變數定義為 $name 與 ${name:default value}。另請參閱 完整的程式碼片段語法。
建構函式
new SnippetString(value?: string): SnippetString
建立新的程式碼片段字串。
| 參數 | 說明 |
|---|---|
| value?: string | 程式碼片段字串。 |
| 回傳值 | 說明 |
| SnippetString |
屬性
程式碼片段字串。
方法
appendChoice(values: readonly string[], number?: number): SnippetString
Builder 函式,將選擇項 (${1|a,b,c|}) 附加至此片段字串的 值。
| 參數 | 說明 |
|---|---|
| values: readonly string[] | 選擇項的值 - 字串陣列 |
| number?: number | 此定位停駐點的編號,預設為從 1 開始的自動遞增值。 |
| 回傳值 | 說明 |
| SnippetString | 此程式碼片段字串。 |
appendPlaceholder(value: string | (snippet: SnippetString) => any, number?: number): SnippetString
Builder 函式,將預留位置 (${1:value}) 附加至此片段字串的 值。
| 參數 | 說明 |
|---|---|
| value: string | (snippet: SnippetString) => any | 此預留位置的值 - 可以是字串,或可用於建立巢狀片段的函式。 |
| number?: number | 此定位停駐點的編號,預設為從 1 開始的自動遞增值。 |
| 回傳值 | 說明 |
| SnippetString | 此程式碼片段字串。 |
appendTabstop(number?: number): SnippetString
Builder 函式,將定位停駐點 ($1, $2 等) 附加至此片段字串的 值。
| 參數 | 說明 |
|---|---|
| number?: number | 此定位停駐點的編號,預設為從 1 開始的自動遞增值。 |
| 回傳值 | 說明 |
| SnippetString | 此程式碼片段字串。 |
appendText(string: string): SnippetString
Builder 函式,將給定字串附加至此片段字串的 值。
| 參數 | 說明 |
|---|---|
| string: string | 要「原樣」附加的值。該字串將會被跳脫。 |
| 回傳值 | 說明 |
| SnippetString | 此程式碼片段字串。 |
appendVariable(name: string, defaultValue: string | (snippet: SnippetString) => any): SnippetString
Builder 函式,將變數 (${VAR}) 附加至此片段字串的 值。
| 參數 | 說明 |
|---|---|
| name: string | 變數名稱 - 不包含 |
| defaultValue: string | (snippet: SnippetString) => any | 變數名稱無法解析時使用的預設值 - 可以是字串,或可用於建立巢狀片段的函式。 |
| 回傳值 | 說明 |
| SnippetString | 此程式碼片段字串。 |
SnippetTextEdit
程式碼片段編輯代表由編輯器執行的互動式編輯。
注意:程式碼片段編輯始終可以作為一般 文字編輯 執行。這會發生在沒有開啟相符編輯器時,或當 工作區編輯 包含多個檔案的片段編輯時。在這種情況下,只有與作用中編輯器相符的才會作為片段編輯執行,其他則會作為一般文字編輯執行。
靜態
insert(position: Position, snippet: SnippetString): SnippetTextEdit
建立插入式片段編輯的公用工具。
| 參數 | 說明 |
|---|---|
| position: Position | 一個位置,將成為空範圍。 |
| snippet: SnippetString | 程式碼片段字串。 |
| 回傳值 | 說明 |
| SnippetTextEdit | 新的片段編輯物件。 |
replace(range: Range, snippet: SnippetString): SnippetTextEdit
建立替換式片段編輯的公用工具。
| 參數 | 說明 |
|---|---|
| range: Range | 範圍。 |
| snippet: SnippetString | 程式碼片段字串。 |
| 回傳值 | 說明 |
| SnippetTextEdit | 新的片段編輯物件。 |
建構函式
new SnippetTextEdit(range: Range, snippet: SnippetString): SnippetTextEdit
建立新的片段編輯。
| 參數 | 說明 |
|---|---|
| range: Range | 範圍。 |
| snippet: SnippetString | 程式碼片段字串。 |
| 回傳值 | 說明 |
| SnippetTextEdit |
屬性
應用程式片段編輯時是否應保留現有的空格。
range: Range
此編輯套用的範圍。
snippet: SnippetString
此編輯將執行的 片段。
SourceBreakpoint
由來源位置指定的斷點。
建構函式
new SourceBreakpoint(location: Location, enabled?: boolean, condition?: string, hitCondition?: string, logMessage?: string): SourceBreakpoint
為來源位置建立新的斷點。
| 參數 | 說明 |
|---|---|
| location: Location | |
| enabled?: boolean | |
| condition?: string | |
| hitCondition?: string | |
| logMessage?: string | |
| 回傳值 | 說明 |
| SourceBreakpoint |
屬性
條件中斷點的選擇性運算式。
是否啟用中斷點。
控制忽略多少次中斷點命中的選擇性運算式。
中斷點的唯一 ID。
location: Location
此斷點的來源與行號位置。
命中此中斷點時記錄的選擇性訊息。{} 內的內嵌運算式會由偵錯介面卡進行插值。
SourceControl
原始碼控制能夠提供 資源狀態 給編輯器,並以多種原始碼控制相關方式與編輯器互動。
屬性
acceptInputCommand?: Command
選用的接受輸入指令。
當使用者接受原始碼控制輸入中的值時,將會呼叫此指令。
選用的提交模板字串。
原始碼控制檢視器會在適當時機使用此值填入原始碼控制輸入框。
此原始碼控制的 ID。
inputBox: SourceControlInputBox
此原始碼控制的 輸入框。
此原始碼控制的人類可讀標籤。
quickDiffProvider?: QuickDiffProvider
選用的 快速差異提供者。
rootUri: Uri
此原始碼控制根目錄的(選用)Uri。
statusBarCommands?: Command[]
選用的狀態列指令。
這些指令將顯示在編輯器的狀態列中。
方法
createResourceGroup(id: string, label: string): SourceControlResourceGroup
建立新的 資源群組。
| 參數 | 說明 |
|---|---|
| id: string | |
| label: string | |
| 回傳值 | 說明 |
| SourceControlResourceGroup |
處置此原始碼控制。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
SourceControlInputBox
代表原始碼控制檢視器中的輸入框。
屬性
控制輸入框是否啟用(預設為 true)。
輸入框中顯示作為提示的字串,以引導使用者。
輸入框內容的存取器。
控制輸入框是否可見(預設為 true)。
SourceControlResourceDecorations
原始碼控制資源狀態 的裝飾。可針對淺色與深色佈景主題分別指定。
屬性
dark?: SourceControlResourceThemableDecorations
深色佈景主題裝飾。
在 UI 中是否應將 原始碼控制資源狀態 淡化。
iconPath?: string | Uri | ThemeIcon
特定 原始碼控制資源狀態 的圖示路徑。
light?: SourceControlResourceThemableDecorations
淺色佈景主題裝飾。
在 UI 中是否應將 原始碼控制資源狀態 加上刪除線。
特定 原始碼控制資源狀態 的標題。
SourceControlResourceGroup
原始碼控制資源群組是 原始碼控制資源狀態 的集合。
屬性
資源群組的上下文值。這可用於貢獻資源群組特定的動作。例如,如果一個資源群組的上下文值設為 exportable,當使用 menus 擴充點貢獻動作至 scm/resourceGroup/context 時,您可以在 when 表達式中指定 scmResourceGroupState 的上下文鍵值,例如 scmResourceGroupState == exportable。
"contributes": {
"menus": {
"scm/resourceGroup/context": [
{
"command": "extension.export",
"when": "scmResourceGroupState == exportable"
}
]
}
}
這將僅為 contextValue 等於 exportable 的資源群組顯示 extension.export 動作。
當此原始碼控制資源群組不包含任何 原始碼控制資源狀態 時,是否隱藏該群組。
此原始碼控制資源群組的 ID。
此原始碼控制資源群組的標籤。
resourceStates: SourceControlResourceState[]
此群組的 原始碼控制資源狀態 集合。
方法
處置此原始碼控制資源群組。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
SourceControlResourceState
原始碼控制資源狀態代表特定 原始碼控制群組 內基礎工作區資源的狀態。
屬性
command?: Command
當資源狀態在原始碼控制檢視器中開啟時應執行的 指令。
資源狀態的上下文值。這可用於貢獻資源特定的動作。例如,如果一個資源的上下文值設為 diffable。當使用 menus 擴充點貢獻動作至 scm/resourceState/context 時,您可以在 when 表達式中指定 scmResourceState 的上下文鍵值,例如 scmResourceState == diffable。
"contributes": {
"menus": {
"scm/resourceState/context": [
{
"command": "extension.diff",
"when": "scmResourceState == diffable"
}
]
}
}
這將僅為 contextValue 為 diffable 的資源顯示 extension.diff 動作。
decorations?: SourceControlResourceDecorations
此原始碼控制資源狀態的 裝飾。
resourceUri: Uri
工作區內基礎資源的 Uri。
SourceControlResourceThemableDecorations
原始碼控制資源狀態 的佈景主題感知裝飾。
屬性
iconPath?: string | Uri | ThemeIcon
特定 原始碼控制資源狀態 的圖示路徑。
StatementCoverage
包含單一陳述式或行的涵蓋範圍資訊。
建構函式
new StatementCoverage(executed: number | boolean, location: Range | Position, branches?: BranchCoverage[]): StatementCoverage
| 參數 | 說明 |
|---|---|
| executed: number | boolean | 此陳述式執行的次數,或若確切次數未知則為布林值,指示其是否已執行。如果為零或 false,該陳述式將標記為未涵蓋。 |
| location: Range | Position | 陳述式位置。 |
| branches?: BranchCoverage[] | 來自此行分支的涵蓋範圍。如果不是條件式,則應省略。 |
| 回傳值 | 說明 |
| StatementCoverage |
屬性
branches: BranchCoverage[]
來自此行或陳述式分支的涵蓋範圍。如果不是條件式,則此值為空。
此陳述式執行的次數,或若確切次數未知則為布林值,指示其是否已執行。如果為零或 false,該陳述式將標記為未涵蓋。
陳述式位置。
StatusBarAlignment
代表狀態列項目的對齊方式。
列舉成員
靠左對齊。
靠右對齊。
StatusBarItem
狀態列項目是一種狀態列貢獻,可以顯示文字與圖示,並在點擊時執行指令。
屬性
accessibilityInformation: AccessibilityInformation
當螢幕助讀程式與此狀態列項目互動時使用的協助工具資訊
alignment: StatusBarAlignment
此項目的對齊方式。
backgroundColor: ThemeColor
此項目的背景顏色。
注意:僅支援以下顏色
new ThemeColor('statusBarItem.errorBackground')new ThemeColor('statusBarItem.warningBackground')
未來可能會支援更多背景顏色。
注意:設定背景顏色時,狀態列可能會覆寫 color 選擇,以確保項目在所有佈景主題中皆可讀。
color: string | ThemeColor
此項目的前景顏色。
command: string | Command
此項目的識別碼。
注意:若 window.createStatusBarItem 方法未提供識別碼,則識別碼將與 擴充功能識別碼 相符。
項目的名稱,例如 'Python Language Indicator'、'Git Status' 等。嘗試保持名稱簡短,但具備足夠的描述性,讓使用者能理解狀態列項目的內容。
此項目的優先順序。數值越高,表示項目應越靠左顯示。
要顯示的入口文字。您可以透過以下語法在文字中嵌入圖示:
My text $(icon-name) contains icons like $(icon-name) this one.
其中 icon-name 取自 ThemeIcon 圖示集,例如 light-bulb、thumbsup、zap 等。
tooltip: string | MarkdownString
滑鼠懸停在此項目上時的提示文字。
方法
處置並釋放相關資源。請呼叫 hide。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
隱藏狀態列中的項目。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
顯示狀態列中的項目。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
SymbolInformation
代表關於變數、類別、介面等程式設計結構的資訊。
建構函式
new SymbolInformation(name: string, kind: SymbolKind, containerName: string, location: Location): SymbolInformation
建立新的符號資訊物件。
| 參數 | 說明 |
|---|---|
| name: string | 符號的名稱。 |
| kind: SymbolKind | 符號的類型。 |
| containerName: string | 包含該符號的符號名稱。 |
| location: Location | 符號的位置。 |
| 回傳值 | 說明 |
| SymbolInformation |
new SymbolInformation(name: string, kind: SymbolKind, range: Range, uri?: Uri, containerName?: string): SymbolInformation
建立新的符號資訊物件。
- 已棄用 - 請使用接受 Location 物件的建構函式。
| 參數 | 說明 |
|---|---|
| name: string | 符號的名稱。 |
| kind: SymbolKind | 符號的類型。 |
| range: Range | 符號位置的範圍。 |
| uri?: Uri | 符號位置的資源,預設為目前文件。 |
| containerName?: string | 包含該符號的符號名稱。 |
| 回傳值 | 說明 |
| SymbolInformation |
屬性
包含此符號的符號名稱。
kind: SymbolKind
此符號的類型。
location: Location
此符號的位置。
此符號的名稱。
tags?: readonly SymbolTag[]
此符號的標記。
SymbolKind
符號類型。
列舉成員
File 符號類型。
Module 符號類型。
Namespace 符號類型。
Package 符號類型。
Class 符號類型。
Method 符號類型。
Property 符號類型。
Field 符號類型。
Constructor 符號類型。
Enum 符號類型。
Interface 符號類型。
Function 符號類型。
Variable 符號類型。
Constant 符號類型。
String 符號類型。
Number 符號類型。
Boolean 符號類型。
Array 符號類型。
Object 符號類型。
Key 符號類型。
Null 符號類型。
EnumMember 符號類型。
Struct 符號類型。
Event 符號類型。
Operator 符號類型。
TypeParameter 符號類型。
SymbolTag
符號標籤是額外的註釋,用於調整符號的呈現方式。
列舉成員
將符號呈現為已淘汰,通常使用刪除線。
SyntaxTokenType
常見語法詞彙類型的列舉。
列舉成員
除註解、字串實值和規則運算式以外的所有詞彙。
註解。
字串實值。
規則運算式。
Tab
代表索引標籤群組中的索引標籤。索引標籤僅為編輯器區域中的圖形表示。不保證背後一定有對應的編輯器。
屬性
group: TabGroup
該索引標籤所屬的群組。
定義索引標籤的結構,例如文字、筆記本、自訂等。資源與其他有用的屬性定義於索引標籤類型中。
索引標籤目前是否為啟用狀態。這取決於它是否為群組中選定的標籤。
索引標籤上是否顯示未儲存(dirty)指標。
索引標籤是否已釘選(是否出現釘選圖示)。
索引標籤是否處於預覽模式。
索引標籤上顯示的文字。
TabChangeEvent
描述索引標籤變更的事件。
屬性
changed: readonly Tab[]
已變更的索引標籤,例如變更了其啟用狀態。
closed: readonly Tab[]
已關閉的索引標籤。
opened: readonly Tab[]
已開啟的索引標籤。
TabGroup
代表索引標籤群組。索引標籤群組本身由多個索引標籤組成。
屬性
activeTab: Tab
tabs: readonly Tab[]
群組內包含的索引標籤清單。如果群組沒有開啟任何標籤,則此清單為空。
viewColumn: ViewColumn
該群組的檢視欄。
TabGroupChangeEvent
描述索引標籤群組變更的事件。
屬性
changed: readonly TabGroup[]
已變更的索引標籤群組,例如變更了其啟用狀態。
closed: readonly TabGroup[]
已關閉的索引標籤群組。
opened: readonly TabGroup[]
已開啟的索引標籤群組。
TabGroups
代表由多個群組組成的主編輯器區域,每個群組中包含多個索引標籤。
活動
onDidChangeTabGroups: Event<TabGroupChangeEvent>
onDidChangeTabs: Event<TabChangeEvent>
屬性
activeTabGroup: TabGroup
目前啟用中的群組。
all: readonly TabGroup[]
群組容器內的所有群組。
方法
close(tab: Tab | readonly Tab[], preserveFocus?: boolean): Thenable<boolean>
關閉索引標籤。這會使標籤物件失效,且該標籤不應再用於進一步的操作。注意:若為未儲存的標籤,會顯示確認對話方塊,使用者可取消。若取消,則該標籤依然有效。
close(tabGroup: TabGroup | readonly TabGroup[], preserveFocus?: boolean): Thenable<boolean>
關閉索引標籤群組。這會使標籤群組物件失效,且該群組不應再用於進一步的操作。
TabInputCustom
此索引標籤代表一個自訂編輯器。
建構函式
new TabInputCustom(uri: Uri, viewType: string): TabInputCustom
建構一個自訂編輯器索引標籤輸入。
| 參數 | 說明 |
|---|---|
| uri: Uri | 索引標籤的 URI。 |
| viewType: string | 自訂編輯器的檢視類型。 |
| 回傳值 | 說明 |
| TabInputCustom |
屬性
uri: Uri
索引標籤所代表的 URI。
自訂編輯器的類型。
TabInputNotebook
此索引標籤代表一個筆記本。
建構函式
new TabInputNotebook(uri: Uri, notebookType: string): TabInputNotebook
建構一個筆記本的新索引標籤輸入。
| 參數 | 說明 |
|---|---|
| uri: Uri | 筆記本的 URI。 |
| notebookType: string | 筆記本的類型。對應至 NotebookDocument 的 notebookType。 |
| 回傳值 | 說明 |
| TabInputNotebook |
屬性
筆記本的類型。對應至 NotebookDocument 的 notebookType。
uri: Uri
索引標籤所代表的 URI。
TabInputNotebookDiff
此索引標籤代表處於差異比較配置中的兩個筆記本。
建構函式
new TabInputNotebookDiff(original: Uri, modified: Uri, notebookType: string): TabInputNotebookDiff
建構一個筆記本差異比較索引標籤輸入。
| 參數 | 說明 |
|---|---|
| original: Uri | 原始未修改筆記本的 URI。 |
| modified: Uri | 已修改筆記本的 URI。 |
| notebookType: string | 筆記本的類型。對應至 NotebookDocument 的 notebookType。 |
| 回傳值 | 說明 |
| TabInputNotebookDiff |
屬性
modified: Uri
已修改筆記本的 URI。
筆記本的類型。對應至 NotebookDocument 的 notebookType。
original: Uri
原始筆記本的 URI。
TabInputTerminal
此索引標籤代表編輯器區域中的終端機。
建構函式
new TabInputTerminal(): TabInputTerminal
建構一個終端機索引標籤輸入。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| TabInputTerminal |
TabInputText
此索引標籤代表單一以文字為基礎的資源。
建構函式
new TabInputText(uri: Uri): TabInputText
建構具有給定 URI 的文字索引標籤輸入。
| 參數 | 說明 |
|---|---|
| uri: Uri | 索引標籤的 URI。 |
| 回傳值 | 說明 |
| TabInputText |
屬性
uri: Uri
索引標籤所代表的 URI。
TabInputTextDiff
此索引標籤代表以差異比較方式呈現的兩個文字資源。
建構函式
new TabInputTextDiff(original: Uri, modified: Uri): TabInputTextDiff
使用給定的 URI 建構一個新的文字差異比較索引標籤輸入。
| 參數 | 說明 |
|---|---|
| original: Uri | 原始文字資源的 URI。 |
| modified: Uri | 已修改文字資源的 URI。 |
| 回傳值 | 說明 |
| TabInputTextDiff |
屬性
modified: Uri
已修改文字資源的 URI。
original: Uri
原始文字資源的 URI。
TabInputWebview
此索引標籤代表 Webview。
建構函式
new TabInputWebview(viewType: string): TabInputWebview
建構具有給定檢視類型的 Webview 索引標籤輸入。
| 參數 | 說明 |
|---|---|
| viewType: string | Webview 的類型。對應至 WebviewPanel 的 viewType。 |
| 回傳值 | 說明 |
| TabInputWebview |
屬性
Webview 的類型。對應至 WebviewPanel 的 viewType。
Task
要執行的任務
建構函式
new Task(taskDefinition: TaskDefinition, scope: WorkspaceFolder | Global | Workspace, name: string, source: string, execution?: ProcessExecution | ShellExecution | CustomExecution, problemMatchers?: string | string[]): Task
建立一個新任務。
| 參數 | 說明 |
|---|---|
| taskDefinition: TaskDefinition | 於 taskDefinitions 擴充點中所定義的任務定義。 |
| scope: WorkspaceFolder | Global | Workspace | 指定任務的範圍。範圍可以是全域、工作區,或是特定工作區資料夾的任務。目前不支援全域任務。 |
| name: string | 任務名稱。會顯示於使用者介面中。 |
| source: string | 任務來源 (例如 'gulp', 'npm' 等)。會顯示於使用者介面中。 |
| execution?: ProcessExecution | ShellExecution | CustomExecution | 處理程序 (Process) 或殼層 (Shell) 執行。 |
| problemMatchers?: string | string[] | 要使用的問題比對器名稱,例如 '$tsc' 或 '$eslint'。問題比對器可由擴充功能使用 |
| 回傳值 | 說明 |
| Task |
new Task(taskDefinition: TaskDefinition, name: string, source: string, execution?: ProcessExecution | ShellExecution, problemMatchers?: string | string[]): Task
建立一個新任務。
- 已淘汰 - 請使用可指定任務範圍的新建構函式。
| 參數 | 說明 |
|---|---|
| taskDefinition: TaskDefinition | 於 taskDefinitions 擴充點中所定義的任務定義。 |
| name: string | 任務名稱。會顯示於使用者介面中。 |
| source: string | 任務來源 (例如 'gulp', 'npm' 等)。會顯示於使用者介面中。 |
| execution?: ProcessExecution | ShellExecution | 處理程序 (Process) 或殼層 (Shell) 執行。 |
| problemMatchers?: string | string[] | 要使用的問題比對器名稱,例如 '$tsc' 或 '$eslint'。問題比對器可由擴充功能使用 |
| 回傳值 | 說明 |
| Task |
屬性
definition: TaskDefinition
任務的定義。
一個易於閱讀的字串,在顯示任務名稱的地方會以較不突出的方式在獨立的一行呈現。支援透過 $(<name>) 語法呈現 佈景主題圖示。
execution?: ProcessExecution | ShellExecution | CustomExecution
任務的執行引擎。
group?: TaskGroup
此任務所屬的任務群組。關於預定義可用群組的集合,請參閱 TaskGroup。預設為 undefined,表示任務不屬於任何特殊群組。
任務是否為背景任務。
任務名稱。
presentationOptions: TaskPresentationOptions
呈現選項。預設為空的實字。
附加至任務的問題比對器。預設為空陣列。
runOptions: RunOptions
任務的執行選項。
scope: WorkspaceFolder | Global | Workspace
任務範圍。
一個易於閱讀的字串,用於描述此 Shell 任務的來源,例如 'gulp' 或 'npm'。支援透過 $(<name>) 語法呈現 佈景主題圖示。
TaskDefinition
定義系統中任務類型的結構。該值必須為 JSON 可序列化。
屬性
描述由擴充功能提供之任務的任務定義。通常任務提供者會定義更多屬性來識別任務。這些屬性需要在擴充功能的 package.json 中的 'taskDefinitions' 擴充點下定義。例如,npm 任務定義如下所示:
interface NpmTaskDefinition extends TaskDefinition {
script: string;
}
請注意,以 '$' 開頭的類型識別項保留給內部使用,不應由擴充功能使用。
TaskEndEvent
表示已執行任務結束的事件。
此介面不打算被實作。
屬性
execution: TaskExecution
代表已完成任務的任務項目。
TaskExecution
代表已執行任務的物件。可用於終止任務。
此介面不打算被實作。
屬性
task: Task
已啟動的任務。
方法
終止任務執行。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
TaskFilter
任務篩選器,根據版本與類型標示任務。
屬性
要傳回的任務類型;
tasks.json 檔案中所使用的任務版本。此字串支援 package.json 的 semver 標記法。
TaskGroup
任務的分組。編輯器預設支援 'Clean'、'Build'、'RebuildAll' 和 'Test' 群組。
靜態
Build: TaskGroup
建置任務群組;
Clean: TaskGroup
清除任務群組;
Rebuild: TaskGroup
重建所有任務群組;
Test: TaskGroup
測試所有任務群組;
建構函式
new TaskGroup(id: string, label: string): TaskGroup
私有建構函式。
| 參數 | 說明 |
|---|---|
| id: string | 任務群組的識別碼。 |
| label: string | 任務群組的易讀名稱。 |
| 回傳值 | 說明 |
| TaskGroup |
屬性
任務群組的 ID。為 TaskGroup.Clean.id、TaskGroup.Build.id、TaskGroup.Rebuild.id 或 TaskGroup.Test.id 之一。
此群組中的任務是否為該群組的預設任務。此屬性無法透過 API 設定,而是由使用者的任務設定控制。
TaskPanelKind
控制任務之間如何使用任務頻道。
列舉成員
與其他任務共用一個面板。這是預設值。
為此任務使用專用面板。該面板不會與其他任務共用。
每次執行此任務時,都會建立一個新的面板。
TaskPresentationOptions
控制任務在 UI 中的呈現方式。
屬性
控制執行任務前是否清除終端機。
控制執行任務後是否關閉終端機。
控制與任務關聯的指令是否在使用者介面中回顯。
控制顯示任務輸出的面板是否取得焦點。
panel?: TaskPanelKind
控制任務面板是僅用於此任務(dedicated)、在任務間共用(shared),還是每次執行任務時建立新面板(new)。預設為 TaskInstanceKind.Shared。
reveal?: TaskRevealKind
控制任務輸出是否顯示在使用者介面中。預設為 RevealKind.Always。
控制是否顯示「終端機將由任務重複使用,按下任意鍵即可關閉」的訊息。
TaskProcessEndEvent
表示透過任務觸發的程序執行結束的事件。
屬性
execution: TaskExecution
啟動該程序的任務執行。
程序的結束代碼。當任務終止時,將為 undefined。
TaskProcessStartEvent
表示透過任務觸發的程序執行開始的事件。
屬性
execution: TaskExecution
啟動該程序的任務執行。
底層程序 ID。
TaskProvider<T>
任務提供者允許將任務新增至任務服務。任務提供者透過 tasks.registerTaskProvider 註冊。
方法
provideTasks(token: CancellationToken): ProviderResult<T[]>
提供任務。
| 參數 | 說明 |
|---|---|
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 任務陣列。 |
resolveTask(task: T, token: CancellationToken): ProviderResult<T>
解析未設定 execution 的任務。任務通常從 tasks.json 檔案中的資訊建立。這類任務缺少執行方式的資訊,任務提供者必須在 resolveTask 方法中補足遺失的資訊。此方法不會針對從上述 provideTasks 方法傳回的任務呼叫,因為那些任務已完整解析。resolveTask 方法的一個有效預設實作是傳回 undefined。
請注意,在填寫 task 屬性時,您 必須 確保使用完全相同的 TaskDefinition,而不要建立新的定義。其他屬性則可以變更。
| 參數 | 說明 |
|---|---|
| task: T | 要解析的任務。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 已解析的任務。 |
TaskRevealKind
控制終端機可見性的行為。
列舉成員
執行任務時,永遠將終端機帶至最上層。
僅在執行任務時偵測到問題(例如,因無法啟動任務)時,才將終端機帶至最上層。
執行任務時,終端機永遠不會帶至最上層。
TaskScope
任務的範圍。
列舉成員
任務為全域任務。目前不支援全域任務。
任務為工作區任務。
TaskStartEvent
表示任務執行開始的事件。
此介面不打算被實作。
屬性
execution: TaskExecution
代表已啟動任務的任務項目。
TelemetryLogger
擴充功能可用於記錄使用量與錯誤遙測資料的遙測記錄器。
記錄器封裝了 寄件者 (sender),但它保證:
- 使用者停用或調整遙測的設定會被遵守,以及
- 潛在的敏感資料會被移除。
它還啟用「回顯 UI」,會列印所傳送的任何資料,並允許編輯器將未處理的錯誤轉寄給對應的擴充功能。
若要取得 TelemetryLogger 的執行個體,請使用 createTelemetryLogger。
活動
onDidChangeEnableStates: Event<TelemetryLogger>
當使用量或錯誤遙測的啟用狀態變更時引發的 事件。
屬性
此記錄器的錯誤遙測功能是否啟用。
此記錄器的使用量遙測功能是否啟用。
方法
拋棄此物件並釋放資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
logError(eventName: string, data?: Record<string, any>): void
記錄錯誤事件。
在完成清除、遙測設定檢查和資料混合後,呼叫 TelemetrySender.sendEventData 以記錄事件。與 logUsage 不同之處在於,如果遙測設定為 Error+,它會記錄事件。自動支援回顯至擴充功能遙測輸出頻道。
| 參數 | 說明 |
|---|---|
| eventName: string | 要記錄的事件名稱。 |
| data?: Record<string, any> | 要記錄的資料。 |
| 回傳值 | 說明 |
| void |
logError(error: Error, data?: Record<string, any>): void
記錄錯誤事件。
呼叫 TelemetrySender.sendErrorData。執行清除、遙測檢查和資料混合。自動支援回顯至擴充功能遙測輸出頻道。也會自動記錄擴充功能主程序中擲出的任何例外狀況。
| 參數 | 說明 |
|---|---|
| error: Error | 錯誤物件,其中包含已清除 PII (個人識別資訊) 的堆疊追蹤。 |
| data?: Record<string, any> | 與堆疊追蹤一起記錄的額外資料。 |
| 回傳值 | 說明 |
| void |
logUsage(eventName: string, data?: Record<string, any>): void
記錄使用量事件。
在完成清除、遙測設定檢查和資料混合後,呼叫 TelemetrySender.sendEventData 以記錄事件。自動支援回顯至擴充功能遙測輸出頻道。
| 參數 | 說明 |
|---|---|
| eventName: string | 要記錄的事件名稱。 |
| data?: Record<string, any> | 要記錄的資料。 |
| 回傳值 | 說明 |
| void |
TelemetryLoggerOptions
建立 TelemetryLogger 的選項。
屬性
additionalCommonProperties?: Record<string, any>
應注入資料物件中的任何額外通用屬性。
ignoreBuiltInCommonProperties?: boolean
是否避免將內建的通用屬性(如 os、擴充功能名稱等)注入到資料物件中。如果未定義,預設為 false。
ignoreUnhandledErrors?: boolean
擴充功能主程序中由您的擴充功能所引起的未處理錯誤,是否應記錄到您的寄件者。如果未定義,預設為 false。
TelemetrySender
遙測寄件者是遙測記錄器與某些遙測服務之間的合約。注意:擴充功能絕不可直接呼叫其寄件者的方法,因為記錄器提供了額外的保護措施與清除作業。
const sender: vscode.TelemetrySender = {...};
const logger = vscode.env.createTelemetryLogger(sender);
// GOOD - uses the logger
logger.logUsage('myEvent', { myData: 'myValue' });
// BAD - uses the sender directly: no data cleansing, ignores user settings, no echoing to the telemetry output channel etc
sender.logEvent('myEvent', { myData: 'myValue' });
方法
flush(): void | Thenable<void>
選擇性的 flush 函式,當 TelemetryLogger 被處置 (dispose) 時,讓此寄件者有機會傳送剩餘的事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void | Thenable<void> |
sendErrorData(error: Error, data?: Record<string, any>): void
傳送錯誤的函式。用於 TelemetryLogger 內。
| 參數 | 說明 |
|---|---|
| error: Error | 正在記錄的錯誤。 |
| data?: Record<string, any> | 與例外狀況一起收集的任何額外資料。 |
| 回傳值 | 說明 |
| void |
sendEventData(eventName: string, data?: Record<string, any>): void
傳送不含堆疊追蹤之事件資料的函式。用於 TelemetryLogger 內。
| 參數 | 說明 |
|---|---|
| eventName: string | 您正在記錄的事件名稱。 |
| data?: Record<string, any> | 正在記錄的可序列化鍵值對。 |
| 回傳值 | 說明 |
| void |
TelemetryTrustedValue<T>
一種特殊的數值封裝程式,表示該數值可以安全地不進行清除。這適用於當您可以保證數值中不包含識別資訊,且清除程式錯誤地將其遮蔽時。
建構函式
new TelemetryTrustedValue<T>(value: T): TelemetryTrustedValue<T>
建立一個新的遙測受信任數值。
| 參數 | 說明 |
|---|---|
| value: T | 要信任的數值。 |
| 回傳值 | 說明 |
| TelemetryTrustedValue<T> |
屬性
信任不包含 PII (個人識別資訊) 的數值。
Terminal
整合式終端機內的個別終端機執行個體。
屬性
creationOptions: Readonly<TerminalOptions | ExtensionTerminalOptions>
用於初始化終端機的物件。這有助於例如偵測當終端機不是由該擴充功能啟動時的殼層類型,或偵測殼層是在哪個資料夾中啟動。
exitStatus: TerminalExitStatus
終端機的結束狀態,當終端機處於啟用狀態時,此值將為 undefined。
範例:當終端機以非零的結束代碼退出時,顯示包含結束代碼的通知。
window.onDidCloseTerminal(t => {
if (t.exitStatus && t.exitStatus.code) {
vscode.window.showInformationMessage(`Exit code: ${t.exitStatus.code}`);
}
});
終端機名稱。
殼層程序的程序 ID。
shellIntegration: TerminalShellIntegration
包含 殼層整合 (shell integration) 驅動之終端機功能的物件。終端機建立後立即存取此值將永遠為 undefined。請接聽 window.onDidChangeTerminalShellIntegration 以在終端機啟動殼層整合時取得通知。
注意:如果殼層整合從未啟動,此物件可能保持 undefined。例如,命令提示字元 (Command Prompt) 不支援殼層整合,且使用者的殼層設定可能會與自動殼層整合啟動衝突。
state: TerminalState
Terminal 的目前狀態。
方法
處置並釋放相關資源。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
如果目前顯示的是此終端機,則隱藏終端機面板。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
sendText(text: string, shouldExecute?: boolean): void
傳送文字至終端機。文字會寫入終端機的底層 pty 程序 (殼層) 的 stdin。
| 參數 | 說明 |
|---|---|
| text: string | 要傳送的文字。 |
| shouldExecute?: boolean | 指示傳送的文字應執行,而不僅僅是插入終端機。根據平台,新增的字元為 |
| 回傳值 | 說明 |
| void |
show(preserveFocus?: boolean): void
顯示終端機面板並在 UI 中呈現此終端機。
| 參數 | 說明 |
|---|---|
| preserveFocus?: boolean | 當為 |
| 回傳值 | 說明 |
| void |
TerminalDimensions
代表終端機的維度。
屬性
終端機中的欄數。
終端機中的列數。
TerminalEditorLocationOptions
假定為編輯器所在的 TerminalLocation,並允許指定 ViewColumn 和 preserveFocus 屬性。
屬性
選用旗標,當為 true 時,將會阻止 Terminal 取得焦點。
viewColumn: ViewColumn
應在編輯器區域中顯示 終端機 的檢視欄。預設為 active。不存在的欄將會視需要建立,最多到 ViewColumn.Nine。使用 ViewColumn.Beside 在目前啟用編輯器的旁邊開啟新編輯器。
TerminalExitReason
終端機退出原因類型。
列舉成員
未知原因。
視窗已關閉/重新載入。
殼層程序已退出。
使用者關閉了終端機。
擴充功能處置了終端機。
TerminalExitStatus
代表終端機退出的方式。
屬性
終端機退出的結束代碼,它可以有以下值:
- 零:終端機程序或自訂執行成功。
- 非零:終端機程序或自訂執行失敗。
undefined:使用者強制關閉終端機,或是自訂執行在未提供結束代碼的情況下退出。
reason: TerminalExitReason
觸發終端機退出的原因。
TerminalLink
終端機行上的連結。
建構函式
new TerminalLink(startIndex: number, length: number, tooltip?: string): TerminalLink
建立新的終端機連結。
| 參數 | 說明 |
|---|---|
| startIndex: number | 連結在 TerminalLinkContext.line 上的起始索引。 |
| length: number | 連結在 TerminalLinkContext.line 上的長度。 |
| tooltip?: string | 將滑鼠懸停在此連結上時顯示的工具提示文字。 如果提供了工具提示,它將顯示在一個字串中,該字串包含有關如何觸發連結的說明,例如 |
| 回傳值 | 說明 |
| TerminalLink |
屬性
連結在 TerminalLinkContext.line 上的長度。
連結在 TerminalLinkContext.line 上的起始索引。
將滑鼠懸停在此連結上時顯示的工具提示文字。
如果提供了工具提示,它將顯示在一個字串中,該字串包含有關如何觸發連結的說明,例如 {0} (ctrl + click)。具體說明會因作業系統、使用者設定和在地化設定而異。
TerminalLinkContext
提供終端機行上的資訊,以便為其提供連結。
屬性
這是終端機中未換行行的文字。
terminal: Terminal
連結所屬的終端機。
TerminalLinkProvider<T>
啟用終端機內連結偵測與處理的提供者。
方法
handleTerminalLink(link: T): ProviderResult<void>
處理已啟動的終端機連結。
| 參數 | 說明 |
|---|---|
| link: T | 要處理的連結。 |
| 回傳值 | 說明 |
| ProviderResult<void> |
provideTerminalLinks(context: TerminalLinkContext, token: CancellationToken): ProviderResult<T[]>
為給定內容提供終端機連結。請注意,這可能會在先前的呼叫解析之前被多次呼叫,請確保不要共用可能會在非同步使用時發生衝突的通用物件(例如 RegExp)。
| 參數 | 說明 |
|---|---|
| context: TerminalLinkContext | 關於提供哪些連結的資訊。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 給定行的終端機連結清單。 |
TerminalLocation
終端機的位置。
列舉成員
在終端機檢視中
在編輯器區域中
TerminalOptions
描述終端機應使用哪些選項的數值物件。
屬性
color?: ThemeColor
終端機的圖示 ThemeColor。為了在不同佈景主題間保持最佳對比度和一致性,建議使用 terminal.ansi* 佈景主題鍵。
cwd?: string | Uri
終端機所使用的當前工作目錄的路徑或 Uri。
包含將會加入編輯器處理程序之環境變數的物件。
啟用時,終端機會正常執行程序,但在呼叫 Terminal.show 之前不會對使用者顯示。典型的使用場景是當您需要執行某些可能需要互動的任務,但只希望在需要互動時才告知使用者。請注意,這些隱藏的終端機仍會如常對所有擴充功能公開。隱藏的終端機在下次開啟工作區時將不會被還原。
iconPath?: IconPath
終端機的圖示路徑或 ThemeIcon。
選擇退出重啟和重載時的預設終端機持久性。這僅在啟用 terminal.integrated.enablePersistentSessions 時生效。
location?: TerminalEditorLocationOptions | TerminalSplitLocationOptions | TerminalLocation
首次啟動時寫入終端機的訊息,請注意這並非傳送給程序,而是直接寫入終端機。這支援如設定文字樣式等的跳脫序列。
將用於在 UI 中表示終端機的人類可讀字串。
自訂 Shell 執行檔的引數。Windows 上可使用字串,允許以 命令列格式 指定 Shell 引數。
shellIntegrationNonce?: string
用於驗證 Shell 整合序列來自受信任來源的 nonce。此功能對 UX 的影響範例為:如果命令列是以 nonce 回報的,則在透過 Shell 整合命令裝飾 重新執行之前,無需向使用者驗證命令列是否正確。
如果終端機包含 自訂 Shell 整合支援,則應使用此項。它應設定為隨機 GUID,進而設定 VSCODE_NONCE 環境變數。在 Shell 內部,應將其從環境中移除,以防止一般存取。一旦完成,即可在相關序列中傳遞以使其受信任。
要在終端機中使用的自訂 Shell 執行檔路徑。
終端機程序環境是否應與 TerminalOptions.env 中提供的完全一致。當此值為 false(預設)時,環境將基於視窗的環境,並在其上套用已設定的平台設定(例如 terminal.integrated.env.windows)。當此值為 true 時,必須提供完整的環境,因為不會從程序或任何設定中繼承任何內容。
TerminalProfile
終端機設定檔定義了終端機將如何啟動。
建構函式
new TerminalProfile(options: TerminalOptions | ExtensionTerminalOptions): TerminalProfile
建立新的終端機設定檔。
| 參數 | 說明 |
|---|---|
| options: TerminalOptions | ExtensionTerminalOptions | 終端機啟動時所使用的選項。 |
| 回傳值 | 說明 |
| TerminalProfile |
屬性
options: TerminalOptions | ExtensionTerminalOptions
終端機啟動時所使用的選項。
TerminalProfileProvider
當透過 UI 或命令啟動時,為貢獻的終端機設定檔提供終端機設定檔。
方法
provideTerminalProfile(token: CancellationToken): ProviderResult<TerminalProfile>
提供終端機設定檔。
| 參數 | 說明 |
|---|---|
| token: CancellationToken | 表示不再需要結果的取消 Token。 |
| 回傳值 | 說明 |
| ProviderResult<TerminalProfile> | 終端機設定檔。 |
TerminalShellExecution
在終端機中執行的命令。
屬性
commandLine: TerminalShellExecutionCommandLine
已執行的命令列。此值的 信心度 取決於特定 Shell 的 Shell 整合實作。在 window.onDidEndTerminalShellExecution 觸發後,此值可能會變得更準確。
範例
// Log the details of the command line on start and end
window.onDidStartTerminalShellExecution(event => {
const commandLine = event.execution.commandLine;
console.log(`Command started\n${summarizeCommandLine(commandLine)}`);
});
window.onDidEndTerminalShellExecution(event => {
const commandLine = event.execution.commandLine;
console.log(`Command ended\n${summarizeCommandLine(commandLine)}`);
});
function summarizeCommandLine(commandLine: TerminalShellExecutionCommandLine) {
return [
` Command line: ${command.commandLine.value}`,
` Confidence: ${command.commandLine.confidence}`,
` Trusted: ${command.commandLine.isTrusted}
].join('\n');
}
cwd: Uri
此命令執行時 Shell 所回報的工作目錄。此 Uri 可能代表另一台機器上的檔案(例如,透過 SSH 存取另一台機器)。這需要 Shell 整合支援工作目錄回報功能。
方法
建立寫入終端機的原始資料流(包括跳脫序列)。這僅包含首次呼叫 read 之後寫入的資料;亦即,您必須在透過 TerminalShellIntegration.executeCommand 或 window.onDidStartTerminalShellExecution 執行命令後立即呼叫 read,以免遺漏任何資料。
範例
// Log all data written to the terminal for a command
const command = term.shellIntegration.executeCommand({ commandLine: 'echo "Hello world"' });
const stream = command.read();
for await (const data of stream) {
console.log(data);
}
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| AsyncIterable<string> |
TerminalShellExecutionCommandLine
在終端機中執行的命令列。
屬性
confidence: TerminalShellExecutionCommandLineConfidence
命令列值的信心度,取決於取得該值的方式。這取決於 Shell 整合指令碼的實作。
命令列值是否來自受信任來源,因此可安全執行而無需使用者額外確認(例如詢問「您是否要執行 (command)?」的通知)。此驗證僅在您打算再次執行該命令時才可能需要。
只有當命令列由 Shell 整合指令碼明確回報(即 高信心度)且使用 Nonce 進行驗證時,此值才會為 true。
已執行的完整命令列,包括命令及其引數。
TerminalShellExecutionCommandLineConfidence
列舉成員
命令列值的信心度為低。這意味著該值是使用 Shell 整合指令碼所回報的標記,從終端機緩衝區讀取的。此外,將滿足下列其中一個條件:
- 命令從最左側的欄開始,這是罕見的,或者
- 命令是多行的,由於換行符號和右側提示,這更難以準確檢測。
- Shell 整合指令碼未回報命令列標記。
命令列值的信心度為中。這意味著該值是使用 Shell 整合指令碼所回報的標記,從終端機緩衝區讀取的。該命令是單行的,且不是從最左側欄開始(這是罕見的)。
命令列值的信心度為高。這意味著該值是由 Shell 整合指令碼明確傳送,或者是透過 TerminalShellIntegration.executeCommand API 執行的。
TerminalShellExecutionEndEvent
表示終端機中執行已結束的事件。
屬性
execution: TerminalShellExecution
已結束的終端機 Shell 執行。
Shell 回報的結束代碼。
當此值為 undefined 時,可能表示以下幾種情況:
- Shell 未回報結束代碼(例如 Shell 整合指令碼運作異常)
- Shell 在命令完成前報告了命令已開始(例如開啟了子 Shell)。
- 使用者透過 ctrl+c 取消了命令。
- 使用者在沒有輸入的情況下按下了 Enter 鍵。
通常這種情況不應該發生。視使用情境而定,最好將其視為失敗。
範例
const execution = shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
window.onDidEndTerminalShellExecution(event => {
if (event.execution === execution) {
if (event.exitCode === undefined) {
console.log('Command finished but exit code is unknown');
} else if (event.exitCode === 0) {
console.log('Command succeeded');
} else {
console.log('Command failed');
}
}
});
shellIntegration: TerminalShellIntegration
Shell 整合物件。
terminal: Terminal
已啟用 Shell 整合的終端機。
TerminalShellExecutionStartEvent
表示終端機中執行已開始的事件。
屬性
execution: TerminalShellExecution
已結束的終端機 Shell 執行。
shellIntegration: TerminalShellIntegration
Shell 整合物件。
terminal: Terminal
已啟用 Shell 整合的終端機。
TerminalShellIntegration
由終端機擁有的 Shell 整合 功能。
屬性
cwd: Uri
終端機的當前工作目錄。此 Uri 可能代表另一台機器上的檔案(例如,透過 SSH 存取另一台機器)。這需要 Shell 整合支援工作目錄回報功能。
方法
executeCommand(commandLine: string): TerminalShellExecution
執行命令,必要時傳送 ^C 以中斷任何正在執行的命令。
- 擲出例外 - 當在不支援此 API 的終端機(如工作終端機)上執行時。
範例
// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
if (terminal === myTerm) {
const execution = shellIntegration.executeCommand('echo "Hello world"');
window.onDidEndTerminalShellExecution(event => {
if (event.execution === execution) {
console.log(`Command exited with code ${event.exitCode}`);
}
});
}
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
if (!myTerm.shellIntegration) {
myTerm.sendText('echo "Hello world"');
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
}, 3000);
範例
// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
const execution = shellIntegration.executeCommand({ commandLine });
window.onDidEndTerminalShellExecution(event => {
if (event.execution === execution) {
console.log(`Command exited with code ${event.exitCode}`);
}
});
} else {
term.sendText(commandLine);
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
| 參數 | 說明 |
|---|---|
| commandLine: string | 要執行的命令列,這是將傳送給終端機的精確文字。 |
| 回傳值 | 說明 |
| TerminalShellExecution |
executeCommand(executable: string, args: string[]): TerminalShellExecution
執行命令,必要時傳送 ^C 以中斷任何正在執行的命令。
注意 不保證此功能一定有效,因為必須啟動 Shell 整合。請檢查 TerminalShellExecution.exitCode 是否被拒絕以驗證是否成功。
範例
// Execute a command in a terminal immediately after being created
const myTerm = window.createTerminal();
window.onDidChangeTerminalShellIntegration(async ({ terminal, shellIntegration }) => {
if (terminal === myTerm) {
const command = shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
}
}));
// Fallback to sendText if there is no shell integration within 3 seconds of launching
setTimeout(() => {
if (!myTerm.shellIntegration) {
myTerm.sendText('echo "Hello world"');
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
}, 3000);
範例
// Send command to terminal that has been alive for a while
const commandLine = 'echo "Hello world"';
if (term.shellIntegration) {
const command = term.shellIntegration.executeCommand({
command: 'echo',
args: ['Hello world']
});
const code = await command.exitCode;
console.log(`Command exited with code ${code}`);
} else {
term.sendText(commandLine);
// Without shell integration, we can't know when the command has finished or what the
// exit code was.
}
| 參數 | 說明 |
|---|---|
| executable: string | 要執行的命令。 |
| args: string[] | 執行可執行檔時使用的引數。引數將會被跳脫,以便當引數既包含空白字元且不包含任何單引號、雙引號或反引號字元時,它們會被解釋為單一引數。 請注意,此跳脫並非安全措施。在將不受信任的資料傳遞給此 API 時請小心,因為字串中的 |
| 回傳值 | 說明 |
| TerminalShellExecution |
TerminalShellIntegrationChangeEvent
表示終端機 Shell 整合已變更的事件。
屬性
shellIntegration: TerminalShellIntegration
Shell 整合物件。
terminal: Terminal
已啟用 Shell 整合的終端機。
TerminalSplitLocationOptions
使用父 Terminal 的位置作為此終端機的位置。
屬性
parentTerminal: Terminal
要與此終端機分割的父終端機。無論父終端機是在面板還是在編輯器區域中,此功能皆可運作。
TerminalState
代表 Terminal 的狀態。
屬性
是否已與 Terminal 進行互動。互動意味著終端機已將資料傳送至程序,具體取決於終端機的 模式。預設情況下,當按下按鍵或當命令或擴充功能傳送文字時,會傳送輸入;但根據終端機的模式,它也可能發生在:
- 指標點擊事件
- 指標捲動事件
- 指標移動事件
- 終端機焦點進入/離開
有關可傳送資料之事件的詳細資訊,請參閱 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 上的「DEC 私有模式設定 (DECSET)」。
Terminal 檢測到的 Shell 類型。當沒有明確訊號顯示 Shell 為何,或者 Shell 尚未支援時,此值將為 undefined。當啟動子 Shell 時(例如在 zsh 中執行 bash),此值應變更為該子 Shell 的 Shell 類型。
請注意,可能的數值目前定義如下:'bash', 'cmd', 'csh', 'fish', 'gitbash', 'julia', 'ksh', 'node', 'nu', 'pwsh', 'python', 'sh', 'wsl', 'xonsh', 'zsh'。
TestController
探索並執行測試的進入點。它包含用於填入編輯器 UI 的 TestController.items,並與 執行設定檔 (run profiles) 相關聯,以允許執行測試。
屬性
tests.createTestController 中傳入的控制器 ID。這必須是全域唯一的。
items: TestItemCollection
「頂層」TestItem 執行個體的集合,這些執行個體反過來可以擁有自己的 子項 (children) 以形成「測試樹」。
擴充功能控制何時新增測試。例如,為了使檔案內的測試裝飾可見,擴充功能應在 workspace.onDidOpenTextDocument 觸發時為檔案新增測試。
然而,編輯器有時可能會使用 resolveHandler 明確請求子項。請參閱該方法的說明文件以取得更多詳細資訊。
測試控制器的人類可讀標籤。
refreshHandler: (token: CancellationToken) => void | Thenable<void>
如果存在此方法,UI 中會出現重新整理按鈕,並在按一下時呼叫此方法。呼叫時,擴充功能應掃描工作區以尋找任何新增、變更或移除的測試。
建議擴充功能嘗試即時更新測試,例如使用 FileSystemWatcher,並將此方法作為備援。
| 參數 | 說明 |
|---|---|
| token: CancellationToken | |
| 回傳值 | 說明 |
| void | Thenable<void> | 測試重新整理完成後解析的 Thenable。 |
resolveHandler?: (item: TestItem) => void | Thenable<void>
若 TestItem.canResolveChildren 為 true,編輯器可能會呼叫此由擴充功能提供的函式來請求測試項目的子項。呼叫時,該項目應探索子項並在發現子項時呼叫 TestController.createTestItem。
通常擴充功能會管理測試項目的生命週期,但在某些條件下,編輯器可能會要求載入特定項目的子項。例如,如果使用者在重新載入編輯器後要求重新執行測試,編輯器可能需要呼叫此方法來解析先前執行的測試。
總管中的該項目將自動標記為「忙碌 (busy)」,直到函式傳回或傳回的 Thenable 解析為止。
方法
createRunProfile(label: string, kind: TestRunProfileKind, runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>, isDefault?: boolean, tag?: TestTag, supportsContinuousRun?: boolean): TestRunProfile
建立用於執行測試的設定檔。擴充功能必須至少建立一個設定檔才能執行測試。
| 參數 | 說明 |
|---|---|
| label: string | 此設定檔的人類可讀標籤。 |
| kind: TestRunProfileKind | 設定此設定檔管理何種類型的執行。 |
| runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void> | 呼叫以啟動測試執行的函式。 |
| isDefault?: boolean | 此是否為其類型的預設動作。 |
| tag?: TestTag | 設定檔測試標籤。 |
| supportsContinuousRun?: boolean | 此設定檔是否支援持續執行。 |
| 回傳值 | 說明 |
| TestRunProfile | TestRunProfile 的執行個體,會自動與此控制器建立關聯。 |
createTestItem(id: string, label: string, uri?: Uri): TestItem
建立新的受管理 TestItem 執行個體。它可以新增至現有項目的 TestItem.children 中,或新增至 TestController.items 中。
| 參數 | 說明 |
|---|---|
| id: string | TestItem 的識別碼。測試項目的 ID 在其新增入的 TestItemCollection 中必須是唯一的。 |
| label: string | 測試項目的人類可讀標籤。 |
| uri?: Uri | 此 TestItem 關聯的 URI。可以是檔案或目錄。 |
| 回傳值 | 說明 |
| TestItem |
createTestRun(request: TestRunRequest, name?: string, persist?: boolean): TestRun
建立 TestRun。當請求執行測試時,應由 TestRunProfile 呼叫此方法,如果外部檢測到測試執行,也可能呼叫此方法。建立後,請求中包含的測試將進入佇列狀態。
使用相同 request 執行個體建立的所有執行將被歸類在一起。這在例如單一套件測試在多個平台上執行時非常有用。
| 參數 | 說明 |
|---|---|
| request: TestRunRequest | 測試執行請求。僅能修改 |
| name?: string | 執行的可讀名稱。這可用於釐清測試執行中的多組結果。例如,如果測試跨多個平台執行,這將非常有用。 |
| persist?: boolean | 由執行建立的結果是否應保留在編輯器中。如果結果來自外部已儲存的檔案(例如涵蓋率資訊檔案),則此值可能為 false。 |
| 回傳值 | 說明 |
| TestRun | TestRun 的執行個體。從呼叫此方法的那一刻起,直到呼叫 TestRun.end 為止,它將被視為「執行中」。 |
取消註冊測試控制器,並處置其關聯的測試和未保留的結果。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
invalidateTestResults(items?: TestItem | readonly TestItem[]): void
將項目的結果標記為過期。當程式碼或設定變更且先前的結果不再被視為相關時,通常會呼叫此方法。用於將結果標記為過期的相同邏輯,可用於驅動 連續測試執行 (continuous test runs)。
如果將項目傳遞給此方法,該項目及其所有子項的測試結果將標記為過期。如果未傳遞項目,則 TestController 擁有的所有測試都將標記為過期。
在此方法呼叫之前啟動的任何測試執行(包括可能仍在進行中的執行),都將標記為過期並在編輯器的 UI 中降低優先順序。
TestCoverageCount
包含涵蓋資源資訊的類別。可以提供檔案中行、分支和宣告的計數。
建構函式
new TestCoverageCount(covered: number, total: number): TestCoverageCount
| 參數 | 說明 |
|---|---|
| covered: number | |
| total: number | |
| 回傳值 | 說明 |
| TestCoverageCount |
屬性
檔案中已涵蓋的項目數量。
檔案中已涵蓋項目的總數。
TestItem
顯示在「測試總管」檢視中的項目。
TestItem 可以代表測試套件或測試本身,因為它們具有相似的功能。
屬性
控制該項目在測試總管檢視中是否顯示為「忙碌 (busy)」。這在探索子項時顯示狀態非常有用。
預設為 false。
指示此測試項目是否可能有透過解析發現的子項。
若為 true,此項目在測試總管檢視中顯示為可展開,展開該項目將導致 TestController.resolveHandler 使用該項目被呼叫。
預設為 false。
children: TestItemCollection
此測試項目的子項。對於測試套件,這可能包含個別測試案例或巢狀套件。
顯示在標籤旁邊的選用說明。
error: string | MarkdownString
載入測試時遇到的選用錯誤。
請注意,這不是測試結果,僅應在測試探索中(例如語法錯誤)表示錯誤。
TestItem 的識別碼。這用於將測試結果和文件中的測試與工作區(測試總管)中的測試建立關聯。它在 TestItem 的生命週期內不得變更,並且必須在其父項的直接子項中是唯一的。
描述測試案例的顯示名稱。
parent: TestItem
此項目的父項。它是自動設定的,對於 TestController.items 中的頂層項目,以及尚未包含在另一個項目的 children 中的項目,它是 undefined。
range: Range
測試項目在其 uri 中的位置。
這僅在 uri 指向檔案時才有意義。
將此項目與其他項目比較時應使用的字串。當為 falsy 時,會使用 label。
tags: readonly TestTag[]
與此測試項目關聯的標籤。可與 標籤 (tags) 結合使用,或僅作為組織功能。
uri: Uri
此 TestItem 關聯的 URI。可以是檔案或目錄。
TestItemCollection
測試項目的集合,位於 TestItem.children 和 TestController.items 中。
屬性
取得集合中的項目數量。
方法
add(item: TestItem): void
將測試項目新增至子項。如果具有相同 ID 的項目已經存在,它將被取代。
| 參數 | 說明 |
|---|---|
| item: TestItem | 要新增的項目。 |
| 回傳值 | 說明 |
| void |
從集合中移除單一測試項目。
| 參數 | 說明 |
|---|---|
| itemId: string | 要刪除的項目 ID。 |
| 回傳值 | 說明 |
| void |
forEach(callback: (item: TestItem, collection: TestItemCollection) => unknown, thisArg?: any): void
疊代此集合中的每個項目。
| 參數 | 說明 |
|---|---|
| callback: (item: TestItem, collection: TestItemCollection) => unknown | 要為每個項目執行的函式。 |
| thisArg?: any | 呼叫處理函式時使用的 |
| 回傳值 | 說明 |
| void |
get(itemId: string): TestItem
有效率地透過 ID 從子項中取得測試項目(如果存在)。
| 參數 | 說明 |
|---|---|
| itemId: string | 要取得的項目 ID。 |
| 回傳值 | 說明 |
| TestItem | 找到的項目,若不存在則為 undefined。 |
replace(items: readonly TestItem[]): void
取代集合儲存的項目。
| 參數 | 說明 |
|---|---|
| items: readonly TestItem[] | 要儲存的項目。 |
| 回傳值 | 說明 |
| void |
TestMessage
與測試狀態相關聯的訊息。可以連結到特定的來源範圍——例如對於斷言失敗非常有用。
靜態
diff(message: string | MarkdownString, expected: string, actual: string): TestMessage
建立一個將作為差異 (diff) 在編輯器中呈現的新 TestMessage。
| 參數 | 說明 |
|---|---|
| message: string | MarkdownString | 要顯示給使用者的訊息。 |
| expected: string | 預期輸出。 |
| actual: string | 實際輸出。 |
| 回傳值 | 說明 |
| TestMessage |
建構函式
new TestMessage(message: string | MarkdownString): TestMessage
建立新的 TestMessage 執行個體。
| 參數 | 說明 |
|---|---|
| message: string | MarkdownString | 要顯示給使用者的訊息。 |
| 回傳值 | 說明 |
| TestMessage |
屬性
實際測試輸出。如果與 expectedOutput 一起提供,將顯示差異檢視。
測試項目的內容值。這可用於為測試 Peek 檢視提供特定於訊息的動作。此處設定的值可以在下列 menus 貢獻點的 testMessage 屬性中找到:
testing/message/context- 結果樹中訊息的內容選單testing/message/content- 覆蓋顯示訊息之編輯器內容的顯眼按鈕。
例如
"contributes": {
"menus": {
"testing/message/content": [
{
"command": "extension.deleteCommentThread",
"when": "testMessage == canApplyRichDiff"
}
]
}
}
該命令將使用包含下列內容的物件進行呼叫:
test: 與訊息相關聯的 TestItem(前提是它仍然存在於 TestController.items 集合中)。message: TestMessage 執行個體。
預期測試輸出。如果與 actualOutput 一起提供,將顯示差異檢視。
location?: Location
相關聯的檔案位置。
message: string | MarkdownString
要顯示的人類可讀訊息文字。
stackTrace?: TestMessageStackFrame[]
與訊息或失敗相關聯的堆疊追蹤。
TestMessageStackFrame
TestMessage.stackTrace 中找到的堆疊框架。
建構函式
new TestMessageStackFrame(label: string, uri?: Uri, position?: Position): TestMessageStackFrame
| 參數 | 說明 |
|---|---|
| label: string | 堆疊框架的名稱 |
| uri?: Uri | |
| position?: Position | 堆疊框架在檔案中的位置 |
| 回傳值 | 說明 |
| TestMessageStackFrame |
屬性
堆疊框架的名稱,通常是方法或函式名稱。
position?: Position
堆疊框架在檔案中的位置。
uri?: Uri
此堆疊框架的位置。如果編輯器可以存取呼叫框架的位置,應將其作為 URI 提供。
TestRun
TestRun 代表正在進行或已完成的測試執行,並提供方法來報告執行中個別測試的狀態。
活動
onDidDispose: Event<void>
當編輯器不再對與測試執行相關聯的資料感興趣時觸發的事件。
屬性
測試執行是否會由編輯器在重新載入時保留。
執行的可讀名稱。這可用於釐清測試執行中的多組結果。例如,如果測試跨多個平台執行,這將非常有用。
token: CancellationToken
當測試執行從 UI 取消時將觸發的取消 Token。
方法
addCoverage(fileCoverage: FileCoverage): void
新增執行中檔案的涵蓋率。
| 參數 | 說明 |
|---|---|
| fileCoverage: FileCoverage | |
| 回傳值 | 說明 |
| void |
appendOutput(output: string, location?: Location, test?: TestItem): void
附加來自測試執行程式的原始輸出。應使用者請求,輸出將顯示在終端機中。支援 ANSI 跳脫序列(如顏色和文字樣式)。換行必須以 CRLF (\r\n) 而非 LF (\n) 提供。
發出測試執行結束的訊號。任何包含在執行中但狀態尚未更新的測試,其狀態將被重設。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
enqueued(test: TestItem): void
指示測試已排入佇列以供稍後執行。
| 參數 | 說明 |
|---|---|
| test: TestItem | 要更新的測試項目。 |
| 回傳值 | 說明 |
| void |
errored(test: TestItem, message: TestMessage | readonly TestMessage[], duration?: number): void
指示測試已發生錯誤。您應該傳遞一或多個 TestMessage 來描述失敗。這與「失敗 (failed)」狀態的不同之處在於,它指示測試根本無法執行(例如因編譯錯誤)。
| 參數 | 說明 |
|---|---|
| test: TestItem | 要更新的測試項目。 |
| message: TestMessage | readonly TestMessage[] | 與測試失敗相關聯的訊息。 |
| duration?: number | 測試執行所需的時間(以毫秒為單位)。 |
| 回傳值 | 說明 |
| void |
failed(test: TestItem, message: TestMessage | readonly TestMessage[], duration?: number): void
指示測試已失敗。您應該傳遞一或多個 TestMessage 來描述失敗。
| 參數 | 說明 |
|---|---|
| test: TestItem | 要更新的測試項目。 |
| message: TestMessage | readonly TestMessage[] | 與測試失敗相關聯的訊息。 |
| duration?: number | 測試執行所需的時間(以毫秒為單位)。 |
| 回傳值 | 說明 |
| void |
passed(test: TestItem, duration?: number): void
指示測試已通過。
| 參數 | 說明 |
|---|---|
| test: TestItem | 要更新的測試項目。 |
| duration?: number | 測試執行所需的時間(以毫秒為單位)。 |
| 回傳值 | 說明 |
| void |
skipped(test: TestItem): void
指示測試已被跳過。
| 參數 | 說明 |
|---|---|
| test: TestItem | 要更新的測試項目。 |
| 回傳值 | 說明 |
| void |
started(test: TestItem): void
指示測試已開始執行。
| 參數 | 說明 |
|---|---|
| test: TestItem | 要更新的測試項目。 |
| 回傳值 | 說明 |
| void |
TestRunProfile
TestRunProfile 描述了一種在 TestController 中執行測試的方法。
活動
onDidChangeDefault: Event<boolean>
當使用者變更此是否為預設設定檔時觸發。事件包含 isDefault 的新值。
屬性
如果存在此方法,UI 中將出現設定齒輪,並在按一下時呼叫此方法。呼叫時,您可以採取其他編輯器動作,例如顯示快速挑選 (Quick Pick) 或開啟設定檔。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
控制當動作類別被觸發時,此設定檔是否為採取的預設動作。例如,如果使用者按一下一般的「執行全部」按鈕,則會執行 TestRunProfileKind.Run 的預設設定檔,儘管使用者可以設定此行為。
使用者在預設設定檔中所做的變更,將在 onDidChangeDefault 事件後反映在此屬性中。
kind: TestRunProfileKind
設定此設定檔控制何種類型的執行。如果某種類型沒有設定檔,它將不會在 UI 中提供。
在 UI 中向使用者顯示的標籤。
請注意,如果使用者要求以特定方式重新執行測試,標籤具有一定重要性。例如,如果測試正常執行,而使用者要求以除錯模式重新執行,編輯器將嘗試使用與 Debug 類型具有相同標籤的設定。如果沒有此類設定,則使用預設值。
loadDetailedCoverage?: (testRun: TestRun, fileCoverage: FileCoverage, token: CancellationToken) => Thenable<FileCoverageDetail[]>
由擴充功能提供,用於提供檔案詳細語句和函式層級涵蓋率的函式。當檔案需要更多詳細資訊時(例如在編輯器中開啟或在 **測試涵蓋率 (Test Coverage)** 檢視中展開時),編輯器將呼叫此函式。
傳遞給此函式的 FileCoverage 物件,與在關聯此設定檔的 TestRun.addCoverage 呼叫中發出的執行個體相同。
| 參數 | 說明 |
|---|---|
| testRun: TestRun | |
| fileCoverage: FileCoverage | |
| token: CancellationToken | |
| 回傳值 | 說明 |
| Thenable<FileCoverageDetail[]> |
loadDetailedCoverageForTest?: (testRun: TestRun, fileCoverage: FileCoverage, fromTestItem: TestItem, token: CancellationToken) => Thenable<FileCoverageDetail[]>
由擴充功能提供,用於提供檔案中單一測試之詳細語句和函式層級涵蓋率的函式。這是 TestRunProfile.loadDetailedCoverage 的測試專用兄弟函式,僅在 FileCoverage.includesTests 中提供測試項目,且僅針對回報此類資料的檔案呼叫。
通常在使用者開啟檔案時會先呼叫 TestRunProfile.loadDetailedCoverage,若使用者進一步鑽研特定測試的涵蓋率資訊,則會呼叫此方法。此方法應僅傳回執行期間由特定測試所執行的語句和宣告的涵蓋率資料。
傳遞給此函式的 FileCoverage 物件,與在關聯此設定檔的 TestRun.addCoverage 呼叫中發出的執行個體相同。
| 參數 | 說明 |
|---|---|
| testRun: TestRun | 產生涵蓋率資料的測試執行。 |
| fileCoverage: FileCoverage | 要載入詳細涵蓋率的檔案涵蓋率物件。 |
| fromTestItem: TestItem | 要請求涵蓋率資訊的測試項目。 |
| token: CancellationToken | 指示應取消操作的取消 Token。 |
| 回傳值 | 說明 |
| Thenable<FileCoverageDetail[]> |
runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>
呼叫以啟動測試執行的處理常式。觸發時,函式應至少呼叫一次 TestController.createTestRun,並且在函式傳回或傳回的 Promise 解析之前,應建立與請求關聯的所有測試執行。
若設定了 supportsContinuousRun,則 TestRunRequest.continuous 可能為 true。在此情況下,設定檔應觀察原始碼的變更,並透過呼叫 TestController.createTestRun 建立新的測試執行,直到 token 上請求取消為止。
| 參數 | 說明 |
|---|---|
| request: TestRunRequest | 測試執行的請求資訊。 |
| token: CancellationToken | |
| 回傳值 | 說明 |
| void | Thenable<void> |
supportsContinuousRun: boolean
此設定檔是否支援持續執行請求。如果是,則 TestRunRequest.continuous 可能設定為 true。預設為 false。
tag: TestTag
設定檔的關聯標籤。若設定此項,只有包含該標籤的 TestItem 執行個體才有資格在此設定檔中執行。
方法
刪除執行設定檔。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
TestRunProfileKind
TestRunProfiles 所控制的執行類型。
列舉成員
Run 測試設定檔類型。
Debug 測試設定檔類型。
Coverage 測試設定檔類型。
TestRunRequest
TestRunRequest 是 TestRun 的前驅,它是透過將請求傳遞給 TestController.createTestRun 來建立的。TestRunRequest 包含有關應執行哪些測試、不應執行哪些測試以及如何執行它們(透過 profile)的資訊。
通常 TestRunRequest 是由編輯器建立並傳遞給 TestRunProfile.runHandler,不過您也可以在 runHandler 之外建立測試請求和執行。
建構函式
new TestRunRequest(include?: readonly TestItem[], exclude?: readonly TestItem[], profile?: TestRunProfile, continuous?: boolean, preserveFocus?: boolean): TestRunRequest
| 參數 | 說明 |
|---|---|
| include?: readonly TestItem[] | 要執行的特定測試陣列,或 undefined 以執行所有測試 |
| exclude?: readonly TestItem[] | 從執行中排除的測試陣列。 |
| profile?: TestRunProfile | 用於此請求的執行設定檔。 |
| continuous?: boolean | 是否隨原始碼變更而持續執行測試。 |
| preserveFocus?: boolean | 啟動執行時是否保留使用者的焦點 |
| 回傳值 | 說明 |
| TestRunRequest |
屬性
隨著原始碼變更,設定檔是否應持續執行。僅與設定 TestRunProfile.supportsContinuousRun 的設定檔相關。
exclude: readonly TestItem[]
使用者標記為從本次執行中排除的測試陣列;排除項應在包含項之後套用。
如果未請求任何排除項,則可省略。測試控制器不應執行排除的測試或排除測試的任何子項。
include: readonly TestItem[]
特定測試的執行篩選器。如果提供,擴充功能應執行所有包含的測試及其所有子項,排除出現在 TestRunRequest.exclude 中的任何測試。如果此屬性為 undefined,則擴充功能應僅執行所有測試。
執行測試的過程應解析尚未解析之任何測試項目的子項。
控制「測試結果 (Test Results)」檢視的焦點方式。若為 true,編輯器將維持使用者的焦點。若為 false,編輯器將傾向於將焦點移至「測試結果」檢視,儘管這可能由使用者進行設定。
profile: TestRunProfile
用於此請求的設定檔。對於從編輯器 UI 發出的請求,此值將始終定義,儘管擴充功能可以程式設計方式建立不與任何設定檔關聯的請求。
TestTag
標籤可以與 TestItems 和 TestRunProfiles 關聯。具有標籤的設定檔只能執行在其 TestItem.tags 陣列中包含該標籤的 TestItem 執行個體。
建構函式
new TestTag(id: string): TestTag
建立新的 TestTag 執行個體。
| 參數 | 說明 |
|---|---|
| id: string | 測試標籤的 ID。 |
| 回傳值 | 說明 |
| TestTag |
屬性
測試標籤的 ID。具有相同 ID 的 TestTag 執行個體被視為相同。
TextDocument
代表文字文件,例如原始碼檔案。文字文件有 行 (lines),並具備關於基礎資源(如檔案)的知識。
屬性
儲存文件時將使用的此文件檔案編碼。
使用 onDidChangeTextDocument 事件來在文件編碼變更時取得通知。
請注意,可能的編碼數值目前定義如下:'utf8', 'utf8bom', 'utf16le', 'utf16be', 'windows1252', 'iso88591', 'iso88593', 'iso885915', 'macroman', 'cp437', 'windows1256', 'iso88596', 'windows1257', 'iso88594', 'iso885914', 'windows1250', 'iso88592', 'cp852', 'windows1251', 'cp866', 'cp1125', 'iso88595', 'koi8r', 'koi8u', 'iso885913', 'windows1253', 'iso88597', 'windows1255', 'iso88598', 'iso885910', 'iso885916', 'windows1254', 'iso88599', 'windows1258', 'gbk', 'gb18030', 'cp950', 'big5hkscs', 'shiftjis', 'eucjp', 'euckr', 'windows874', 'iso885911', 'koi8ru', 'koi8t', 'gb2312', 'cp865', 'cp850'。
eol: EndOfLine
此文件中主要使用的 換行結束 (end of line) 序列。
相關資源的檔案系統路徑。TextDocument.uri.fsPath 的簡寫。與 URI 方案 (scheme) 無關。
如果文件已關閉,則為 true。已關閉的文件不再同步,且當再次開啟同一資源時,不會重複使用該文件。
若有未持久化的變更,則為 true。
此文件是否代表尚未儲存的未命名檔案。注意,這並不意味著文件會儲存到磁碟,請使用 Uri.scheme 來釐清文件將在何處 儲存,例如 file、ftp 等。
與此文件關聯的語言識別碼。
此文件中的行數。
uri: Uri
此文件相關聯的 uri。
注意,大多數文件使用 file 方案,這意味著它們是磁碟上的檔案。然而,並非所有文件都儲存在磁碟上,因此在嘗試存取磁碟上的底層檔案或同層項目之前,必須檢查 scheme。
參見
此文件的版本號碼(每次變更後將嚴格遞增,包括復原/重做)。
方法
getText(range?: Range): string
getWordRangeAtPosition(position: Position, regex?: RegExp): Range
取得給定位置的單字範圍。預設情況下,單字由常見的分隔符號定義,例如空格、-、_ 等。此外,可以針對各語言定義自訂的 [單字定義 (word definitions)]。也可以提供自訂的正則表達式。
- 註 1:自訂的正則表達式不得匹配空字串,如果匹配到空字串,它將會被忽略。
- 註 2:自訂的正則表達式無法匹配多行字串,且為了效能考量,正則表達式不應匹配包含空格的單字。若需處理更複雜、非單字的情境,請使用 TextLine.text。
該位置將會被調整。
lineAt(line: number): TextLine
傳回由行號指定的文字行。請注意,傳回的物件不是即時更新的,文件變更不會反映在其中。
lineAt(position: Position): TextLine
offsetAt(position: Position): number
將位置轉換為以零為基礎的位移量 (offset)。
該位置將會被調整。
| 參數 | 說明 |
|---|---|
| position: Position | 一個位置。 |
| 回傳值 | 說明 |
| number | 有效的以零為基礎的 UTF-16 代碼單元 (code units) 位移量。 |
positionAt(offset: number): Position
儲存基礎檔案。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| Thenable<boolean> | 一個 Promise,當檔案儲存成功時會解析為 |
validatePosition(position: Position): Position
validateRange(range: Range): Range
TextDocumentChangeEvent
描述交易式 文件 變更的事件。
屬性
contentChanges: readonly TextDocumentContentChangeEvent[]
內容變更的陣列。
document: TextDocument
受影響的文件。
reason: TextDocumentChangeReason
文件變更的原因。若原因不明則為 undefined。
TextDocumentChangeReason
文字文件發生變更的原因。
列舉成員
文字變更是由復原 (Undo) 操作所引起。
文字變更是由取消復原 (Redo) 操作所引起。
TextDocumentContentChangeEvent
描述 文件 中個別文字變更的事件。
屬性
range: Range
被取代的範圍。
被取代範圍的長度。
被取代範圍的位移量。
該範圍的新文字。
TextDocumentContentProvider
文字文件內容提供者允許將唯讀文件新增至編輯器,例如來自 DLL 的原始程式碼或從 Markdown 產生的 HTML。
內容提供者是針對 URI 方案 (scheme) 進行 註冊 的。當具有該方案的 URI 即將被 載入 時,編輯器會向內容提供者請求內容。
活動
用來發送資源已變更訊號的事件。
方法
provideTextDocumentContent(uri: Uri, token: CancellationToken): ProviderResult<string>
提供給定 URI 的文字內容。
編輯器將使用傳回的字串內容來建立一個唯讀的 文件。當對應的文件被 關閉 時,應釋放分配的資源。
註:由於行尾序列 (end-of-line-sequence) 的標準化,所建立的 文件 內容可能與提供的文字不完全相同。
| 參數 | 說明 |
|---|---|
| uri: Uri | 一個 URI,其方案必須與此提供者 註冊 時的方案相符。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<string> | 一個字串或一個可解析為該字串的 Thenable 物件。 |
TextDocumentSaveReason
表示文字文件被儲存的原因。
列舉成員
手動觸發,例如使用者按下儲存、開始偵錯,或透過 API 呼叫。
延遲後自動儲存。
當編輯器失去焦點時。
TextDocumentShowOptions
屬性
一個選擇性旗標,若設為 true,將防止 編輯器 取得焦點。
一個選擇性旗標,控制 編輯器 分頁是否以預覽模式顯示。預覽分頁會被取代與重複使用,直到被設定為保留——可透過明確操作或編輯來達成。
註:如果使用者在設定中停用了預覽編輯器,則此旗標會被忽略。
selection?: Range
一個要在 編輯器 文件中套用的選擇性選取範圍。
viewColumn?: ViewColumn
應顯示 編輯器 的選擇性檢視欄位。預設值為 目前作用中 的欄位。不存在的欄位將視需要建立,最多可達 ViewColumn.Nine。請使用 ViewColumn.Beside 在目前作用中的編輯器旁開啟編輯器。
TextDocumentWillSaveEvent
當 文件 即將被儲存時觸發的事件。
若要在文件儲存前進行修改,請呼叫 waitUntil 函式,並傳入一個會解析為 文字編輯 (text edits) 陣列的 Thenable 物件。
屬性
document: TextDocument
即將被儲存的文件。
reason: TextDocumentSaveReason
觸發儲存的原因。
方法
waitUntil(thenable: Thenable<readonly TextEdit[]>): void
允許暫停事件迴圈並套用 儲存前編輯 (pre-save-edits)。隨後對此函式的呼叫將按順序執行。如果文件發生了併發修改,這些編輯將會被忽略。
注意:此函式只能在事件派發期間呼叫,不能以非同步方式呼叫。
workspace.onWillSaveTextDocument(event => {
// async, will *throw* an error
setTimeout(() => event.waitUntil(promise));
// sync, OK
event.waitUntil(promise);
});
waitUntil(thenable: Thenable<any>): void
允許暫停事件迴圈,直到提供的 thenable 解析完成。
注意:此函式只能在事件派發期間呼叫。
| 參數 | 說明 |
|---|---|
| thenable: Thenable<any> | 延遲儲存的 thenable。 |
| 回傳值 | 說明 |
| void |
TextEdit
文字編輯表示應套用於文件的變更。
靜態
delete(range: Range): TextEdit
insert(position: Position, newText: string): TextEdit
replace(range: Range, newText: string): TextEdit
setEndOfLine(eol: EndOfLine): TextEdit
建構函式
new TextEdit(range: Range, newText: string): TextEdit
屬性
newEol?: EndOfLine
文件中使用的行尾序列。
註:行尾序列將會套用於整份文件。
此編輯將插入的字串。
range: Range
此編輯套用的範圍。
TextEditor
代表與 文件 連結的編輯器。
屬性
document: TextDocument
與此文字編輯器關聯的文件。該文件在文字編輯器的整個生命週期內保持不變。
options: TextEditorOptions
文字編輯器選項。
selection: Selection
在此文字編輯器上的主要選取範圍。即 TextEditor.selections[0] 的簡寫。
selections: readonly Selection[]
在此文字編輯器中的選取範圍。主要選取範圍總是位於索引 0 處。
viewColumn: ViewColumn
此編輯器顯示的欄位。如果是嵌入式編輯器等非主要編輯器,或當編輯器欄位大於三時,則會是 undefined。
visibleRanges: readonly Range[]
編輯器目前的可見範圍(垂直方向)。這僅考量垂直捲動,不包含水平捲動。
方法
edit(callback: (editBuilder: TextEditorEdit) => void, options?: {undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
對與此文字編輯器關聯的文件執行編輯。
給定的回呼函式 (callback) 會由一個必須用於執行編輯的 編輯建構器 (edit-builder) 呼叫。請注意,該編輯建構器僅在回呼執行期間有效。
| 參數 | 說明 |
|---|---|
| callback: (editBuilder: TextEditorEdit) => void | 一個可以使用 編輯建構器 建立編輯的函式。 |
| options?: {undoStopAfter: boolean, undoStopBefore: boolean} | 此編輯周圍的復原/取消復原行為。預設情況下,會在此編輯前後建立復原停駐點。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 一個 Promise,解析值指示編輯是否能被套用。 |
隱藏文字編輯器。
- 已棄用 - 請改用指令
workbench.action.closeActiveEditor。此方法顯示出非預期的行為,並將於下一個主要更新中移除。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
insertSnippet(snippet: SnippetString, location?: Range | Position | readonly Range[] | readonly Position[], options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean}): Thenable<boolean>
插入一段 程式碼片段 (snippet) 並將編輯器進入片段模式。「片段模式」意味著編輯器會增加佔位符和額外的游標,以便使用者可以完成或接受該片段。
| 參數 | 說明 |
|---|---|
| snippet: SnippetString | 此編輯中要插入的片段。 |
| location?: Range | Position | readonly Range[] | readonly Position[] | 插入片段的位置或範圍,預設為目前的編輯器選取範圍。 |
| options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean} | 此編輯周圍的復原/取消復原行為。預設情況下,會在此編輯前後建立復原停駐點。 |
| 回傳值 | 說明 |
| Thenable<boolean> | 一個 Promise,解析值指示片段是否能被插入。請注意,此 Promise 不代表片段已被完整填入或接受。 |
revealRange(range: Range, revealType?: TextEditorRevealType): void
根據 revealType 捲動以顯示給定範圍。
| 參數 | 說明 |
|---|---|
| range: Range | 範圍。 |
| revealType?: TextEditorRevealType | 顯示 |
| 回傳值 | 說明 |
| void |
setDecorations(decorationType: TextEditorDecorationType, rangesOrOptions: readonly Range[] | readonly DecorationOptions[]): void
將一組裝飾 (decorations) 新增至文字編輯器。如果已存在給定 裝飾類型 的裝飾集,則會被取代。若 rangesOrOptions 為空,則會移除現有該類型的裝飾。
| 參數 | 說明 |
|---|---|
| decorationType: TextEditorDecorationType | 一個裝飾類型。 |
| rangesOrOptions: readonly Range[] | readonly DecorationOptions[] | |
| 回傳值 | 說明 |
| void |
show(column?: ViewColumn): void
顯示文字編輯器。
- 已棄用 - 請改用 window.showTextDocument。
| 參數 | 說明 |
|---|---|
| column?: ViewColumn | 要顯示此編輯器的 欄位。此方法顯示出非預期的行為,並將於下一個主要更新中移除。 |
| 回傳值 | 說明 |
| void |
TextEditorCursorStyle
游標的渲染樣式。
列舉成員
將游標渲染為垂直粗線。
將游標渲染為實心區塊。
將游標渲染為粗水平線。
將游標渲染為垂直細線。
將游標渲染為空心區塊外框。
將游標渲染為細水平線。
TextEditorDecorationType
代表在 文字編輯器 中共享相同 樣式選項 的一組裝飾的控制代碼。
若要取得 TextEditorDecorationType 的實例,請使用 createTextEditorDecorationType。
屬性
控制代碼的內部表示。
方法
移除此裝飾類型,以及所有使用該類型的文字編輯器上的所有裝飾。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| void |
TextEditorEdit
方法
delete(location: Range | Selection): void
insert(location: Position, value: string): void
在某個位置插入文字。您可以在 value 中使用 \r\n 或 \n,它們將被標準化為目前的 文件。儘管可以使用 replace 執行相同的文字編輯,但 insert 會產生不同的結果選取範圍(該範圍會被移動)。
| 參數 | 說明 |
|---|---|
| location: Position | 應插入新文字的位置。 |
| value: string | 此操作應插入的新文字。 |
| 回傳值 | 說明 |
| void |
replace(location: Range | Position | Selection, value: string): void
將特定的文字區域取代為新值。您可以在 value 中使用 \r\n 或 \n,它們將被標準化為目前的 文件。
setEndOfLine(endOfLine: EndOfLine): void
TextEditorLineNumbersStyle
行號的渲染樣式。
列舉成員
不渲染行號。
渲染行號。
渲染相對於主要游標位置值的行號。
每隔 10 行渲染一次行號。
TextEditorOptions
屬性
cursorStyle?: TextEditorCursorStyle
在此編輯器中游標的渲染樣式。取得文字編輯器的選項時,此屬性將永遠存在。設定文字編輯器選項時,此屬性為選填。
當 insertSpaces 為 true 時要插入的空格數量。
取得文字編輯器的選項時,此屬性永遠為一個數字(已解析)。設定文字編輯器選項時,此屬性為選填,可以是數字或 "tabSize"。
insertSpaces?: string | boolean
按下 Tab 鍵時插入 n 個空格。取得文字編輯器的選項時,此屬性永遠為布林值(已解析)。設定文字編輯器選項時,此屬性為選填,可以是布林值或 "auto"。
lineNumbers?: TextEditorLineNumbersStyle
渲染相對於目前行號的相對行號。取得文字編輯器的選項時,此屬性將永遠存在。設定文字編輯器選項時,此屬性為選填。
Tab 鍵佔用的空格大小。這有兩個用途:
- Tab 字元的渲染寬度;
- 當 insertSpaces 為 true 且
indentSize設為"tabSize"時,要插入的空格數量。
取得文字編輯器的選項時,此屬性永遠為一個數字(已解析)。設定文字編輯器選項時,此屬性為選填,可以是數字或 "auto"。
TextEditorOptionsChangeEvent
代表描述 文字編輯器選項 變更的事件。
屬性
options: TextEditorOptions
文字編輯器選項 的新值。
textEditor: TextEditor
選項已變更的 文字編輯器。
TextEditorRevealType
代表文字編輯器中不同的 顯示 (reveal) 策略。
列舉成員
該範圍將以盡可能少的捲動量顯示。
該範圍將始終顯示在視窗中心。
如果範圍在視窗之外,它將會顯示在視窗中心。否則,它將以盡可能少的捲動量顯示。
該範圍將始終顯示在視窗頂部。
TextEditorSelectionChangeEvent
代表描述 文字編輯器選取範圍 變更的事件。
屬性
kind: TextEditorSelectionChangeKind
觸發此事件的 變更類型。可能是 undefined。
selections: readonly Selection[]
文字編輯器選取範圍 的新值。
textEditor: TextEditor
選取範圍已變更的 文字編輯器。
TextEditorSelectionChangeKind
代表可能導致 選取範圍變更事件 的來源。
列舉成員
由於在編輯器中輸入而導致的選取範圍變更。
由於在編輯器中點擊而導致的選取範圍變更。
由於執行指令而導致的選取範圍變更。
TextEditorViewColumnChangeEvent
代表描述 文字編輯器檢視欄位 變更的事件。
屬性
textEditor: TextEditor
檢視欄位已變更的 文字編輯器。
viewColumn: ViewColumn
文字編輯器檢視欄位 的新值。
TextEditorVisibleRangesChangeEvent
代表描述 文字編輯器可見範圍 變更的事件。
屬性
textEditor: TextEditor
可見範圍已變更的 文字編輯器。
visibleRanges: readonly Range[]
文字編輯器可見範圍 的新值。
TextLine
代表一行文字,例如一行原始程式碼。
TextLine 物件是 不可變 (immutable) 的。當 文件 發生變更時,先前取得的行將不再代表最新的狀態。
屬性
firstNonWhitespaceCharacterIndex: number
第一個非空白字元(根據 /\s/ 定義)的位移量。註:如果該行全是空白字元,則會傳回該行的長度。
該行是否僅包含空白字元,為 TextLine.firstNonWhitespaceCharacterIndex === TextLine.text.length 的簡寫。
以零為基礎的行號。
range: Range
此行所覆蓋的範圍(不含行分隔字元)。
rangeIncludingLineBreak: Range
此行所覆蓋的範圍(含行分隔字元)。
此行的文字(不含行分隔字元)。
ThemableDecorationAttachmentRenderOptions
代表文字裝飾內容 之前 (before) 和 之後 (after) 的主題特定渲染樣式。
屬性
backgroundColor?: string | ThemeColor
將套用於裝飾附件的 CSS 樣式屬性。
將套用於裝飾附件的 CSS 樣式屬性。
borderColor?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。
color?: string | ThemeColor
將套用於裝飾附件的 CSS 樣式屬性。
contentIconPath?: string | Uri
要渲染在附件中的影像的 絕對路徑 或 URI。圖示或文字只能顯示其中一種,不能兩者皆顯示。
定義在附件中顯示的文字內容。圖示或文字只能顯示其中一種,不能兩者皆顯示。
將套用於裝飾附件的 CSS 樣式屬性。
將套用於裝飾附件的 CSS 樣式屬性。
將套用於裝飾附件的 CSS 樣式屬性。
將套用於裝飾附件的 CSS 樣式屬性。
將套用於裝飾附件的 CSS 樣式屬性。
將套用於裝飾附件的 CSS 樣式屬性。
ThemableDecorationInstanceRenderOptions
代表裝飾實例的主題渲染選項。
屬性
after?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之後的附件之轉譯選項。
before?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之前的附件之轉譯選項。
ThemableDecorationRenderOptions
代表 文字編輯器裝飾 的主題特定渲染樣式。
屬性
after?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之後的附件之轉譯選項。
backgroundColor?: string | ThemeColor
裝飾的背景顏色。請使用 rgba() 並定義透明背景色,以便與其他裝飾良好相容。或者,也可以 參考 顏色登錄檔中的顏色。
before?: ThemableDecorationAttachmentRenderOptions
定義插入於被裝飾文字之前的附件之轉譯選項。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
borderColor?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'border' 來設定一個或多個個別邊框屬性。
color?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
gutterIconPath?: string | Uri
要在裝訂線中轉譯之影像的 絕對路徑 或 URI。
指定裝訂線圖示的大小。可用值為 'auto'、'contain'、'cover' 及任何百分比值。更多資訊請參閱:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
outlineColor?: string | ThemeColor
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'outline' 來設定一個或多個個別輪廓屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'outline' 來設定一個或多個個別輪廓屬性。
將套用於裝飾圍繞文字的 CSS 樣式屬性。建議使用 'outline' 來設定一個或多個個別輪廓屬性。
overviewRulerColor?: string | ThemeColor
總覽尺規中裝飾的顏色。請使用 rgba() 並定義透明顏色,以便與其他裝飾良好相容。
將套用於裝飾圍繞文字的 CSS 樣式屬性。
ThemeColor
對工作台顏色之一的參照,定義於 https://vscode.com.tw/api/references/theme-color。使用主題顏色優於使用自訂顏色,因為它讓主題作者和使用者有機會更改顏色。
建構函式
new ThemeColor(id: string): ThemeColor
建立對主題顏色的參照。
| 參數 | 說明 |
|---|---|
| id: string | 顏色的 ID。可用顏色列於 https://vscode.com.tw/api/references/theme-color。 |
| 回傳值 | 說明 |
| ThemeColor |
屬性
此顏色的 ID。
ThemeIcon
對命名圖示的參照。目前支援 檔案 (File)、資料夾 (Folder) 以及 主題圖示 ID。使用主題圖示優於使用自訂圖示,因為它讓產品主題作者有機會更改圖示。
註:主題圖示也可以渲染在標籤和說明內。支援主題圖示的地方會明確標示,並且使用 $(<name>) 語法,例如 quickPick.label = "Hello World $(globe)"。
靜態
File: ThemeIcon
對代表檔案的圖示的參照。該圖示取自目前使用的檔案圖示主題,或使用預留位置圖示。
Folder: ThemeIcon
對代表資料夾的圖示的參照。該圖示取自目前使用的檔案圖示主題,或使用預留位置圖示。
建構函式
new ThemeIcon(id: string, color?: ThemeColor): ThemeIcon
建立對主題圖示的參照。
| 參數 | 說明 |
|---|---|
| id: string | |
| color?: ThemeColor | 圖示的選擇性 |
| 回傳值 | 說明 |
| ThemeIcon |
屬性
color?: ThemeColor
圖示的選擇性 ThemeColor。此顏色目前僅用於 TreeItem。
TreeCheckboxChangeEvent<T>
描述樹狀項目核取方塊狀態變更的事件。
屬性
items: ReadonlyArray<[T, TreeItemCheckboxState]>
已被勾選或取消勾選的項目。
TreeDataProvider<T>
提供樹狀資料的資料提供者。
活動
onDidChangeTreeData?: Event<void | T | T[]>
一個選擇性事件,用於發送元素或根節點已變更的訊號。這將觸發檢視以遞迴方式更新已變更的元素/根節點及其子項(若已顯示)。要發送根節點已變更的訊號,請不要傳遞任何參數,或傳遞 undefined 或 null。
方法
getChildren(element?: T): ProviderResult<T[]>
取得 element 的子項;若未傳入任何元素,則取得根節點的子項。
| 參數 | 說明 |
|---|---|
| element?: T | 提供者取得子項的元素。可以是 |
| 回傳值 | 說明 |
| ProviderResult<T[]> |
|
getParent(element: T): ProviderResult<T>
用於傳回 element 父節點的選擇性方法。若 element 是根節點的子項,請傳回 null 或 undefined。
註:為了使用 reveal API,必須實作此方法。
| 參數 | 說明 |
|---|---|
| element: T | 需要傳回其父項的元素。 |
| 回傳值 | 說明 |
| ProviderResult<T> |
|
getTreeItem(element: T): TreeItem | Thenable<TreeItem>
取得 element 的 TreeItem 表示形式。
resolveTreeItem(item: TreeItem, element: T, token: CancellationToken): ProviderResult<TreeItem>
在滑鼠懸停時呼叫,以解析未定義的 TreeItem 屬性。在點擊/開啟樹狀項目時呼叫,以解析未定義的 TreeItem 屬性。只有未定義的屬性才能在 resolveTreeItem 中解析。未來可能會擴充功能,使其在選取和/或開啟時,也被呼叫以解析其他遺失的屬性。
每個 TreeItem 只會被呼叫一次。
不應從 resolveTreeItem 內部觸發 onDidChangeTreeData。
注意:此函式是在樹狀項目已顯示於 UI 中時呼叫。因此,任何會改變外觀的屬性(標籤、描述等)都無法變更。
| 參數 | 說明 |
|---|---|
| item: TreeItem | 此處應設定 |
| element: T | 與 TreeItem 關聯的物件。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TreeItem> | 已解析的樹狀項目,或解析為此項目的 thenable。傳回給定的 |
TreeDragAndDropController<T>
為 TreeView 中的拖放 (drag and drop) 提供支援。
屬性
dragMimeTypes: readonly string[]
此 TreeDragAndDropController 的 handleDrag 方法可新增至樹狀資料傳輸中的 MIME 類型。這可以是定義明確的現有 MIME 類型,或是由擴充功能定義的 MIME 類型。
樹狀結構的建議 MIME 類型 (application/vnd.code.tree.<treeidlowercase>) 將會自動新增。
dropMimeTypes: readonly string[]
此 DragAndDropController 的 handleDrop 方法所支援的 MIME 類型。這可以是定義明確的現有 MIME 類型,或是由擴充功能定義的 MIME 類型。
若要支援來自樹狀結構的放置,您需要新增該樹狀結構的 MIME 類型。這包含來自同一個樹狀結構內部的放置。樹狀結構的 MIME 類型建議採用 application/vnd.code.tree.<treeidlowercase> 格式。
使用特殊的 files MIME 類型來支援所有類型的放置檔案 files,無論檔案實際的 MIME 類型為何。
若要了解拖曳項目的 MIME 類型
- 設定您的
DragAndDropController - 使用「開發人員: 設定記錄層級...」(Developer: Set Log Level...) 指令將層級設定為「Debug」
- 開啟開發人員工具,並將具有未知 MIME 類型的項目拖曳到您的樹狀結構上。MIME 類型將會記錄到開發人員主控台中
請注意,無法傳送至擴充功能的 MIME 類型將會被省略。
方法
handleDrag(source: readonly T[], dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
當使用者開始從此 DragAndDropController 拖曳項目時,將會呼叫 handleDrag。擴充功能可以使用 handleDrag 將其 DataTransferItem 項目新增至拖放操作中。
在 handleDrag 中新增的 MIME 類型在應用程式外部將無法使用。
當項目被放置在「同一個樹狀結構」中的「另一個樹狀項目」上時,您的 DataTransferItem 物件將會被保留。使用樹狀結構的建議 MIME 類型 (application/vnd.code.tree.<treeidlowercase>) 將樹狀物件新增至資料傳輸中。請參閱 DataTransferItem 的說明文件,了解如何妥善利用此功能。
若要新增可拖曳至編輯器的資料傳輸項目,請使用應用程式特定的 MIME 類型 "text/uri-list"。 "text/uri-list" 的資料應為一個字串,其中包含以 \r\n 分隔的 toString() 後的 Uri。若要指定檔案中的游標位置,請將 Uri 的片段設定為 L3,5,其中 3 為行號,5 為欄號。
| 參數 | 說明 |
|---|---|
| source: readonly T[] | 拖放操作的來源項目。 |
| dataTransfer: DataTransfer | 與此拖曳操作相關聯的資料傳輸。 |
| token: CancellationToken | 表示拖曳已取消的取消符記。 |
| 回傳值 | 說明 |
| void | Thenable<void> |
handleDrop(target: T, dataTransfer: DataTransfer, token: CancellationToken): void | Thenable<void>
當拖放操作導致放置在該 DragAndDropController 所屬的樹狀結構上時呼叫。
擴充功能應為任何需要重新整理的元素觸發 onDidChangeTreeData。
| 參數 | 說明 |
|---|---|
| target: T | 放置發生的目標樹狀元素。當為未定義時,目標為根節點。 |
| dataTransfer: DataTransfer | 拖曳來源的資料傳輸項目。 |
| token: CancellationToken | 表示放置已取消的取消符記。 |
| 回傳值 | 說明 |
| void | Thenable<void> |
TreeItem
樹狀項目是樹狀結構的 UI 元素。樹狀項目由 資料提供者 建立。
建構函式
new TreeItem(label: string | TreeItemLabel, collapsibleState?: TreeItemCollapsibleState): TreeItem
| 參數 | 說明 |
|---|---|
| label: string | TreeItemLabel | 描述此項目的可讀字串。 |
| collapsibleState?: TreeItemCollapsibleState | |
| 回傳值 | 說明 |
| TreeItem |
new TreeItem(resourceUri: Uri, collapsibleState?: TreeItemCollapsibleState): TreeItem
| 參數 | 說明 |
|---|---|
| resourceUri: Uri | 代表此項目的資源 Uri。 |
| collapsibleState?: TreeItemCollapsibleState | |
| 回傳值 | 說明 |
| TreeItem |
屬性
accessibilityInformation?: AccessibilityInformation
螢幕閱讀器與此樹狀項目互動時使用的協助工具資訊。通常情況下,TreeItem 不需要設定 accessibilityInformation 的 role;但在某些非以樹狀方式顯示的情況下,設定 role 可能是有意義的。
checkboxState?: TreeItemCheckboxState | {accessibilityInformation: AccessibilityInformation, state: TreeItemCheckboxState, tooltip: string}
樹狀項目的 TreeItemCheckboxState。當 checkboxState 變更時,應觸發 onDidChangeTreeData。
collapsibleState?: TreeItemCollapsibleState
樹狀項目的 TreeItemCollapsibleState。
command?: Command
選取樹狀項目時應執行的 Command。
當樹狀項目在編輯器中開啟某些內容時,請使用 vscode.open 或 vscode.diff 作為指令 ID。使用這些指令可確保產生的編輯器與其他內建樹狀結構開啟編輯器的方式保持一致。
樹狀項目的內容值。這可用於在樹狀結構中貢獻特定項目的動作。例如,某個樹狀項目被賦予 folder 的內容值。當使用 menus 擴充點對 view/item/context 貢獻動作時,您可以在 when 表達式中指定鍵 viewItem 的內容值,例如 viewItem == folder。
"contributes": {
"menus": {
"view/item/context": [
{
"command": "extension.deleteFolder",
"when": "viewItem == folder"
}
]
}
}
這將僅針對 contextValue 為 folder 的項目顯示動作 extension.deleteFolder。
description?: string | boolean
一個可讀的字串,呈現時較不突出。當設為 true 時,它會從 resourceUri 衍生;當為 falsy 時,則不會顯示。
iconPath?: string | IconPath
樹狀項目的圖示路徑或 ThemeIcon。當為 falsy 時,如果項目可摺疊,則會指派 資料夾主題圖示,否則指派 檔案主題圖示。當指定了檔案或資料夾 ThemeIcon 時,圖示會使用 resourceUri(若提供)從目前的檔案圖示主題中衍生。
樹狀項目的選用識別碼,在整棵樹中必須是唯一的。該識別碼用於保留樹狀項目的選取狀態和展開狀態。
若未提供,則會使用樹狀項目的標籤產生識別碼。注意:當標籤變更時,識別碼也會變更,因此選取和展開狀態將無法再保持穩定。
label?: string | TreeItemLabel
描述此項目的可讀字串。當為 falsy 時,它會從 resourceUri 衍生。
resourceUri?: Uri
一個代表與此項目關聯之資源的 Uri。
當設定時,若未明確提供,此屬性會被用來自動導出多個項目屬性
- 標籤:未提供 label 時,從資源的檔案名稱衍生。
- 描述:當 description 設定為
true時,從資源的路徑衍生。 - 圖示:當 iconPath 設定為 ThemeIcon.File 或 ThemeIcon.Folder 時,從目前的檔案圖示主題衍生。
tooltip?: string | MarkdownString
當您將滑鼠懸停在此項目上時的工具提示文字。
TreeItemCheckboxState
樹狀項目的核取方塊狀態
列舉成員
判斷項目為未選取
判斷項目為選取
TreeItemCollapsibleState
樹狀項目的可摺疊狀態
列舉成員
判斷項目既不能摺疊也不能展開。暗示它沒有子項目。
判定項目為摺疊狀態。
判定項目為展開狀態。
TreeItemLabel
描述 Tree item 的標籤
屬性
highlights?: Array<[number, number]>
標籤中要反白顯示的範圍。範圍定義為兩個數值的元組,第一個是包含的開始索引,第二個是不包含的結束索引
描述 Tree item 的可讀字串。
TreeView<T>
代表樹狀檢視
活動
onDidChangeCheckboxState: Event<TreeCheckboxChangeEvent<T>>
用於發出元素或根節點已被選取或取消選取的訊號的事件。
onDidChangeSelection: Event<TreeViewSelectionChangeEvent<T>>
當 選取項目 變更時觸發的事件
onDidChangeVisibility: Event<TreeViewVisibilityChangeEvent>
當 可見性 變更時觸發的事件
onDidCollapseElement: Event<TreeViewExpansionEvent<T>>
當元素摺疊時觸發的事件
onDidExpandElement: Event<TreeViewExpansionEvent<T>>
當元素展開時觸發的事件
屬性
badge?: ViewBadge
要顯示於此 TreeView 的徽章。若要移除徽章,請設為未定義。
選用的可讀描述,在檢視標題中呈現得較不突出。將標題描述設定為 null、未定義或空字串將會從檢視中移除該描述。
將在檢視中呈現的選用可讀訊息。將訊息設定為 null、未定義或空字串將會從檢視中移除該訊息。
目前選取的元素。
樹狀檢視標題最初取自擴充功能的 package.json。對標題屬性的變更將會在 UI 的檢視標題中適當地反映出來。
如果 樹狀檢視 可見,則為 true,否則為 false。
方法
處置此物件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| any |
reveal(element: T, options?: {expand: number | boolean, focus: boolean, select: boolean}): Thenable<void>
在樹狀檢視中顯示指定的元素。如果樹狀檢視不可見,則會顯示該樹狀檢視並顯示該元素。
預設情況下,顯示的元素會被選取。若不想選取,請將選項 select 設定為 false。若要取得焦點,請將選項 focus 設定為 true。若要展開顯示的元素,請將選項 expand 設定為 true。若要遞迴展開,請將 expand 設定為要展開的層級數。
- 注意:您最多只能展開 3 個層級。
- 注意:
TreeView所註冊的 TreeDataProvider 必須實作 getParent 方法才能存取此 API。
| 參數 | 說明 |
|---|---|
| element: T | |
| options?: {expand: number | boolean, focus: boolean, select: boolean} | |
| 回傳值 | 說明 |
| Thenable<void> |
TreeViewExpansionEvent<T>
當 TreeView 中的元素展開或摺疊時觸發的事件
屬性
已展開或摺疊的元素。
TreeViewOptions<T>
建立 TreeView 的選項
屬性
樹狀結構是否支援多重選取。當樹狀結構支援多重選取且從該樹狀結構執行指令時,指令的第一個引數是執行指令所在的樹狀項目,第二個引數是一個包含所有已選取樹狀項目的陣列。
dragAndDropController?: TreeDragAndDropController<T>
在樹狀檢視中實作拖放操作的選用介面。
manageCheckboxStateManually?: boolean
預設情況下,當已取得樹狀項目的子項目時,子項目的核取方塊會根據父項樹狀項目的選取狀態自動管理。如果樹狀項目預設為摺疊(表示尚未取得子項目),則不會更新子項目的核取方塊。若要覆寫此行為並在擴充功能中自行管理父子項核取方塊狀態,請將此項設定為 true。
TreeViewOptions.manageCheckboxStateManually 為 false(預設行為)的範例
勾選某個樹狀項目,隨後取得其子項目。這些子項目將會被勾選。
勾選某個樹狀項目的父項。該樹狀項目及其所有兄弟項目都將被勾選。
- 父項
- 子項 1
- 子項 2 當使用者勾選父項時,樹狀結構將會顯示如下
- 父項
- 子項 1
- 子項 2
- 勾選某個樹狀項目及其所有兄弟項目。父項將被勾選。
- 父項
- 子項 1
- 子項 2 當使用者勾選子項 1 和子項 2 時,樹狀結構將會顯示如下
- 父項
- 子項 1
- 子項 2
- 取消勾選某個樹狀項目。父項將被取消勾選。
- 父項
- 子項 1
- 子項 2 當使用者取消勾選子項 1 時,樹狀結構將會顯示如下
- 父項
- 子項 1
- 子項 2
是否顯示「全部摺疊」動作。
treeDataProvider: TreeDataProvider<T>
提供樹狀資料的資料提供者。
TreeViewSelectionChangeEvent<T>
當 樹狀檢視的選取項目 發生變更時觸發的事件
屬性
已選取的元素。
TreeViewVisibilityChangeEvent
當 樹狀檢視的可見性 發生變更時觸發的事件
屬性
如果 樹狀檢視 可見,則為 true,否則為 false。
TypeDefinitionProvider
型別定義提供者定義了擴充功能與「移至型別定義」(go to type definition) 功能之間的合約。
方法
provideTypeDefinition(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<Definition | LocationLink[]>
提供給定位置和文件中符號的型別定義。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<Definition | LocationLink[]> | 定義或解析為此類內容的 Thenable。若無結果,可透過回傳 |
TypeHierarchyItem
代表型別階層中的項目,例如類別或介面。
建構函式
new TypeHierarchyItem(kind: SymbolKind, name: string, detail: string, uri: Uri, range: Range, selectionRange: Range): TypeHierarchyItem
建立新的型別階層項目。
| 參數 | 說明 |
|---|---|
| kind: SymbolKind | 項目的類型。 |
| name: string | 項目的名稱。 |
| detail: string | 項目的詳細資料。 |
| uri: Uri | 項目的 Uri。 |
| range: Range | 項目的完整範圍。 |
| selectionRange: Range | 項目的選取範圍。 |
| 回傳值 | 說明 |
| TypeHierarchyItem |
屬性
此項目的更多詳細資訊,例如函式的簽章。
kind: SymbolKind
此項目的種類。
此項目的名稱。
range: Range
包含此符號的範圍,不包括前導/尾隨空白,但包含其他所有內容,例如註解和程式碼。
selectionRange: Range
選取該符號(例如類別名稱)時應被選取和顯示的範圍。必須包含在 range 屬性中。
tags?: readonly SymbolTag[]
此項目的標記。
uri: Uri
此項目的資源識別碼。
TypeHierarchyProvider
型別階層提供者介面描述了擴充功能與型別階層功能之間的合約。
方法
prepareTypeHierarchy(document: TextDocument, position: Position, token: CancellationToken): ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]>
透過傳回給定文件和位置所指出的項目,來啟動型別階層。此項目將用作型別圖的入口。當給定位置沒有項目時,提供者應傳回 undefined 或 null。
| 參數 | 說明 |
|---|---|
| document: TextDocument | 呼叫指令所在的文件。 |
| position: Position | 呼叫指令的位置。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]> | 一個或多個型別階層項目,或解析為此項目的 thenable。缺少結果可以透過傳回 |
provideTypeHierarchySubtypes(item: TypeHierarchyItem, token: CancellationToken): ProviderResult<TypeHierarchyItem[]>
提供項目的所有子型別,例如所有從給定項目衍生/繼承的型別。在圖論中,這描述了型別圖內部的有向與註記邊,例如給定項目是起始節點,結果是可以到達的節點。
| 參數 | 說明 |
|---|---|
| item: TypeHierarchyItem | 應計算其子型別的階層項目。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TypeHierarchyItem[]> | 一組直接子型別,或解析為此項目的 thenable。缺少結果可以透過傳回 |
provideTypeHierarchySupertypes(item: TypeHierarchyItem, token: CancellationToken): ProviderResult<TypeHierarchyItem[]>
提供項目的所有父型別,例如所有從中衍生/繼承型別的型別。在圖論中,這描述了型別圖內部的有向與註記邊,例如給定項目是起始節點,結果是可以到達的節點。
| 參數 | 說明 |
|---|---|
| item: TypeHierarchyItem | 應計算其父型別的階層項目。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<TypeHierarchyItem[]> | 一組直接父型別,或解析為此項目的 thenable。缺少結果可以透過傳回 |
UIKind
可以使用擴充功能的 UI 可能類型。
列舉成員
從桌面應用程式存取擴充功能。
從網頁瀏覽器存取擴充功能。
Uri
代表磁碟上的檔案或 untitled 資源等其他資源的統一資源識別元。
靜態
file(path: string): Uri
從檔案系統路徑建立 URI。配置 (scheme) 將為 file。
Uri.parse 與 Uri.file 之間的「區別」在於,後者將參數視為路徑,而非字串化的 uri。例如,Uri.file(path) 與 Uri.parse('file://' + path) 「不」相同,因為路徑可能包含會被解釋的字元 (#_ 和 ?)。請參閱以下範例
const good = URI.file('/coding/c#/project1');
good.scheme === 'file';
good.path === '/coding/c#/project1';
good.fragment === '';
const bad = URI.parse('file://' + '/coding/c#/project1');
bad.scheme === 'file';
bad.path === '/coding/c'; // path is now broken
bad.fragment === '/project1';
| 參數 | 說明 |
|---|---|
| path: string | 檔案系統或 UNC 路徑。 |
| 回傳值 | 說明 |
| Uri | 新的 Uri 執行個體。 |
from(components: {authority: string, fragment: string, path: string, query: string, scheme: string}): Uri
從其組成部分建立 URI
另請參閱 Uri.toString
| 參數 | 說明 |
|---|---|
| components: {authority: string, fragment: string, path: string, query: string, scheme: string} | Uri 的組成部分。 |
| 回傳值 | 說明 |
| Uri | 新的 Uri 執行個體。 |
joinPath(base: Uri, ...pathSegments: string[]): Uri
建立一個新的 uri,其路徑為基礎 uri 的路徑與所提供的路徑區段連接後的結果。
- 注意 1:
joinPath僅影響路徑元件,所有其他元件(配置、授權、查詢和片段)將保持原樣。 - 注意 2:基礎 uri 必須有路徑;否則會拋出錯誤。
路徑區段會以以下方式正規化
- 路徑分隔符號序列 (
/或\) 會替換為單一分隔符號 - 對於 Windows 上的
file-uris,反斜線字元 (``) 被視為路徑分隔符號 ..區段代表父層區段,.代表目前區段- 路徑具有一個永遠保留的根目錄,例如在 Windows 上,磁碟機代號即為根目錄,因此這成立:
joinPath(Uri.file('file:///c:/root'), '../../other').fsPath === 'c:/other'
parse(value: string, strict?: boolean): Uri
從字串建立 URI,例如 http://www.example.com/some/path、file:///usr/home 或 scheme:with/path。
注意:有一段時間,沒有 scheme 的 uris 也會被接受。這是不正確的,因為所有 uris 都應該有配置。為了避免現有程式碼損壞,已新增了選用的 strict 參數。我們強烈建議使用它,例如 Uri.parse('my:uri', true)
另請參閱 Uri.toString
| 參數 | 說明 |
|---|---|
| value: string | Uri 的字串值。 |
| strict?: boolean | 當 |
| 回傳值 | 說明 |
| Uri | 新的 Uri 執行個體。 |
建構函式
new Uri(scheme: string, authority: string, path: string, query: string, fragment: string): Uri
請使用 file 和 parse 工廠函式來建立新的 Uri 物件。
| 參數 | 說明 |
|---|---|
| scheme: string | |
| authority: string | |
| path: string | |
| query: string | |
| fragment: string | |
| 回傳值 | 說明 |
| Uri |
屬性
Authority 是 http://www.example.com/some/path?query#fragment 中的 www.example.com 部分。位於第一個雙斜線和下一個斜線之間的部分。
Fragment 是 http://www.example.com/some/path?query#fragment 中的 fragment 部分。
代表此 Uri 相應檔案系統路徑的字串。
將處理 UNC 路徑並將 Windows 磁碟機代號正規化為小寫。也會使用平台特定的路徑分隔符號。
- 將「不會」驗證路徑是否有無效字元和語意。
- 將「不會」查看此 Uri 的配置。
- 產生的字串「不」應用於顯示目的,而應用於磁碟操作,例如
readFile等。
與 path 屬性的「區別」在於使用了平台特定的路徑分隔符號以及對 UNC 路徑的處理。下方的範例概述了其中的差異
const u = URI.parse('file://server/c$/folder/file.txt');
u.authority === 'server';
u.path === '/c$/folder/file.txt';
u.fsPath === '\\serverc$\folder\file.txt';
Path 是 http://www.example.com/some/path?query#fragment 中的 /some/path 部分。
Query 是 http://www.example.com/some/path?query#fragment 中的 query 部分。
Scheme 是 http://www.example.com/some/path?query#fragment 中的 http 部分。位於第一個冒號之前的部分。
方法
傳回此 Uri 的 JSON 表示形式。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| any | 一個物件。 |
toString(skipEncoding?: boolean): string
傳回此 Uri 的字串表示形式。URI 的表示和正規化取決於其配置。
- 產生的字串可安全地與 Uri.parse 一起使用。
- 產生的字串「不」應用於顯示目的。
注意:實作會進行「激進」的編碼,這通常會導致意想不到但並非不正確的結果。例如,冒號會被編碼為 %3A,這在 file-uri 中可能出乎意料。此外,& 和 = 也會被編碼,這在 http-uris 中也可能出乎意料。基於穩定性原因,這已無法再進行變更。如果您受到過度激進編碼的困擾,應使用 skipEncoding 參數:uri.toString(true)。
| 參數 | 說明 |
|---|---|
| skipEncoding?: boolean | 不對結果進行百分比編碼,預設為 |
| 回傳值 | 說明 |
| string | 此 Uri 的字串表示形式。 |
with(change: {authority: string, fragment: string, path: string, query: string, scheme: string}): Uri
從此 Uri 衍生出一個新的 Uri。
let file = Uri.parse('before:some/file/path');
let other = file.with({ scheme: 'after' });
assert.ok(other.toString() === 'after:some/file/path');
| 參數 | 說明 |
|---|---|
| change: {authority: string, fragment: string, path: string, query: string, scheme: string} | 描述對此 Uri 進行變更的物件。若要取消設定元件,請使用 |
| 回傳值 | 說明 |
| Uri | 反映給定變更的新 Uri。如果變更沒有影響任何內容,則會傳回此 Uri。 |
UriHandler
Uri 處理常式負責處理系統層級的 uris。
方法
handleUri(uri: Uri): ProviderResult<void>
處理所提供的系統層級 Uri。
| 參數 | 說明 |
|---|---|
| uri: Uri | |
| 回傳值 | 說明 |
| ProviderResult<void> |
ViewBadge
為檢視呈現數值的徽章
屬性
徽章工具提示中要呈現的標籤。
徽章中要呈現的數值。
ViewColumn
表示視窗中編輯器的位置。編輯器可以排列成網格,且每一欄代表該網格中的一個編輯器位置,依據編輯器出現的順序計數。
列舉成員
表示作用中欄位旁邊的「符號」編輯器欄位。此值可用於開啟編輯器,但編輯器「解析後」的 viewColumn 值將永遠是 One、Two、Three、... 或 undefined,永遠不會是 Beside。
表示目前作用中欄位的「符號」編輯器欄位。此值可用於開啟編輯器,但編輯器「解析後」的 viewColumn 值將永遠是 One、Two、Three、... 或 undefined,永遠不會是 Active。
第一個編輯器欄位。
第二個編輯器欄位。
第三個編輯器欄位。
第四個編輯器欄位。
第五個編輯器欄位。
第六個編輯器欄位。
第七個編輯器欄位。
第八個編輯器欄位。
第九個編輯器欄位。
Webview
顯示 html 內容,類似 iframe。
活動
onDidReceiveMessage: Event<any>
當 webview 內容張貼訊息時觸發。
Webview 內容可以將字串或可 JSON 序列化的物件張貼回給擴充功能。它們無法張貼 Blob、File、ImageData 和其他 DOM 特定物件,因為接收訊息的擴充功能並非執行在瀏覽器環境中。
屬性
webview 資源的內容安全政策來源。
這是內容安全政策規則中應使用的來源。
`img-src https: ${webview.cspSource} ...;`;
webview 的 HTML 內容。
這應是一個完整且有效的 html 文件。變更此屬性會導致 webview 重新載入。
Webviews 與一般擴充功能處理序隔離,因此與 webview 的所有通訊都必須使用訊息傳遞。若要從擴充功能向 webview 發送訊息,請使用 postMessage。若要從 webview 向擴充功能發送訊息,請在 webview 內部使用 acquireVsCodeApi 函式取得編輯器 API 的控制代碼,然後呼叫 .postMessage()
<script>
const vscode = acquireVsCodeApi(); // acquireVsCodeApi can only be invoked once
vscode.postMessage({ message: 'hello!' });
</script>
若要從 webview 內部的工作區載入資源,請使用 asWebviewUri 方法,並確保資源的目錄列於 WebviewOptions.localResourceRoots 中。
請記住,即使 webviews 經過隔離,它們仍然允許執行指令碼和載入任意內容,因此在處理 webviews 時,擴充功能必須遵循所有標準的網路安全最佳實踐。這包括適當地清理所有不受信任的輸入(包括來自工作區的內容)並設定 內容安全政策。
options: WebviewOptions
webview 的內容設定。
方法
asWebviewUri(localResource: Uri): Uri
將本機檔案系統的 uri 轉換為可在 webviews 內部使用的 uri。
Webviews 無法使用 file: uris 直接從工作區或本機檔案系統載入資源。asWebviewUri 函式會取得本機 file: uri,並將其轉換為可在 webview 內部用來載入相同資源的 uri
webview.html = `<img src="${webview.asWebviewUri(
vscode.Uri.file('/Users/codey/workspace/cat.gif')
)}">`;
postMessage(message: any): Thenable<boolean>
向 webview 內容張貼訊息。
只有在 webview 為活動狀態(可見或在背景中且設定了 retainContextWhenHidden)時,才會傳遞訊息。
| 參數 | 說明 |
|---|---|
| message: any | 訊息主體。這必須是字串或其他可 JSON 序列化的物件。 對於舊版本的 vscode,如果 但是,如果您的擴充功能在 |
| 回傳值 | 說明 |
| Thenable<boolean> | 當訊息張貼至 webview,或因為無法傳遞而被捨棄時解析的 Promise。 如果訊息已張貼至 webview,則傳回 收到 如果您想確認訊息是否確實被接收,您可以嘗試讓您的 webview 向您的擴充功能張貼確認訊息。 |
WebviewOptions
webview 的內容設定。
屬性
enableCommandUris?: boolean | readonly string[]
控制是否在 webview 內容中啟用指令 uris。
預設為 false(指令 uris 已停用)。
如果您傳入陣列,則僅允許陣列中的指令。
控制是否在 webview 內容中啟用表單。
如果 已啟用指令碼,則預設為 true。否則預設為 false。明確將此屬性設定為 true 或 false 將會覆寫預設值。
控制是否在 webview 內容中啟用指令碼。
預設為 false(指令碼已停用)。
localResourceRoots?: readonly Uri[]
webview 可以使用 asWebviewUri 的 uris 從中載入本機(檔案系統)資源的根路徑
預設為目前工作區的根資料夾加上擴充功能的安裝目錄。
傳入空陣列以禁止存取任何本機資源。
portMapping?: readonly WebviewPortMapping[]
webview 內部使用的 localhost 連接埠對應。
連接埠對應允許 webviews 透明地定義 localhost 連接埠如何解析。這可用於允許在 webview 內部使用靜態 localhost 連接埠,該連接埠會解析為服務執行所在的隨機連接埠。
如果 webview 存取 localhost 內容,我們建議您指定連接埠對應,即使 webviewPort 和 extensionHostPort 連接埠相同也是如此。
注意:連接埠對應僅適用於 http 或 https urls。Websocket urls(例如 ws://:3000)無法對應至另一個連接埠。
WebviewPanel
包含 Webview 的面板。
活動
onDidChangeViewState: Event<WebviewPanelOnDidChangeViewStateEvent>
當面板的檢視狀態變更時觸發。
onDidDispose: Event<void>
屬性
面板是否為活動狀態(由使用者聚焦)。
iconPath?: IconPath
UI 中顯示的面板圖示。
options: WebviewPanelOptions
webview 面板的內容設定。
UI 中顯示的面板標題。
viewColumn: ViewColumn
面板的編輯器位置。只有在 Webview 位於其中一個編輯器檢視欄時,才會設定此屬性。
識別 Webview 面板的類型,例如 'markdown.preview'。
面板是否可見。
webview: Webview
屬於該面板的 Webview。
方法
處置(dispose)Webview 面板。
如果面板正在顯示,這將會關閉它並處置 Webview 所擁有的資源。當使用者關閉 Webview 面板時,也會處置這些面板。這兩種情況都會觸發 onDidDispose 事件。
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| any |
reveal(viewColumn?: ViewColumn, preserveFocus?: boolean): void
在指定的欄中顯示 Webview 面板。
Webview 面板一次只能顯示在單一欄位中。如果它已經在顯示中,此方法會將其移動到新的欄位。
| 參數 | 說明 |
|---|---|
| viewColumn?: ViewColumn | 要顯示面板的檢視欄。如果未定義,將顯示在目前的 WebviewPanel.viewColumn。 |
| preserveFocus?: boolean | 當設為 |
| 回傳值 | 說明 |
| void |
WebviewPanelOnDidChangeViewStateEvent
當 Webview 面板的檢視狀態變更時所觸發的事件。
屬性
webviewPanel: WebviewPanel
其檢視狀態已變更的 WebviewPanel。
WebviewPanelOptions
Webview 面板的內容設定。
屬性
控制面板中是否啟用搜尋小工具(find widget)。
預設為 false。
retainContextWhenHidden?: boolean
控制當面板不再可見時,是否保留 Webview 面板的內容 (iframe)。
通常 Webview 面板的 HTML 內容會在面板變得可見時建立,並在隱藏時銷毀。具有複雜狀態或 UI 的擴充功能可以將 retainContextWhenHidden 設為 true,讓編輯器即使在 Webview 移動到背景索引標籤時也能保留其內容。當使用 retainContextWhenHidden 的 Webview 變為隱藏時,其指令碼和其他動態內容會被暫停。當面板再次可見時,內容會自動還原為原本的狀態。即使啟用 retainContextWhenHidden,您也無法將訊息傳送給隱藏的 Webview。
retainContextWhenHidden 具有較高的記憶體開銷,應僅在面板內容無法快速儲存與還原的情況下使用。
WebviewPanelSerializer<T>
還原在 VS Code 關閉時已持久化的 Webview 面板。
有兩種類型的 Webview 持久化:
- 工作階段內的持久化。
- 跨工作階段的持久化(跨編輯器重新啟動)。
只有第二種情況需要 WebviewPanelSerializer:跨工作階段持久化 Webview。
工作階段內的持久化允許 Webview 在隱藏時儲存其狀態,並在再次可見時從此狀態還原其內容。這完全由 Webview 內容本身驅動。若要儲存持久化狀態,請呼叫 acquireVsCodeApi().setState() 並傳入任何可序列化的 JSON 物件。若要還原狀態,請呼叫 getState()。
// Within the webview
const vscode = acquireVsCodeApi();
// Get existing state
const oldState = vscode.getState() || { value: 0 };
// Update state
setState({ value: oldState.value + 1 });
WebviewPanelSerializer 將此持久化延伸至編輯器重新啟動。當編輯器關閉時,它會儲存所有具有序列化器(serializer)之 Webview 的 setState 狀態。當 Webview 在重新啟動後首次變為可見時,此狀態會傳遞至 deserializeWebviewPanel。隨後,擴充功能即可從此狀態還原舊的 WebviewPanel。
方法
deserializeWebviewPanel(webviewPanel: WebviewPanel, state: T): Thenable<void>
從序列化的 state 還原 Webview 面板。
當序列化的 Webview 首次變為可見時呼叫。
| 參數 | 說明 |
|---|---|
| webviewPanel: WebviewPanel | 要還原的 Webview 面板。序列化器應取得此面板的所有權。序列化器必須還原 Webview 的 |
| state: T | 來自 Webview 內容的持久化狀態。 |
| 回傳值 | 說明 |
| Thenable<void> | 指示 Webview 已完全還原的 Thenable。 |
WebviewPortMapping
定義 Webview 內部 localhost 使用的連接埠對應。
屬性
目標連接埠。webviewPort 會解析為此連接埠。
要在 Webview 內部重新對應的 localhost 連接埠。
WebviewView
基於 Webview 的檢視。
活動
onDidChangeVisibility: Event<void>
當檢視的可見性變更時觸發的事件。
觸發可見性變更的動作:
- 檢視被收合或展開。
- 使用者切換至側邊欄或面板中的不同檢視群組。
請注意,改用內容選單隱藏檢視會改為處置該檢視並觸發 onDidDispose。
onDidDispose: Event<void>
當檢視被處置時觸發的事件。
當使用者明確隱藏檢視時(例如當使用者在檢視中按右鍵並取消勾選 Webview 檢視),檢視會被處置。
在檢視被處置後嘗試使用它會拋出例外狀況。
屬性
badge?: ViewBadge
為此 Webview 檢視顯示的徽章。若要移除徽章,請設為 undefined。
人類可讀的字串,在標題中以較不顯眼的方式呈現。
在 UI 中顯示的檢視標題。
檢視標題最初取自擴充功能的 package.json 貢獻項目。
識別 Webview 檢視的類型,例如 'hexEditor.dataView'。
追蹤 Webview 目前是否可見。
當檢視位於螢幕上且已展開時即為可見。
webview: Webview
該檢視底層的 Webview。
方法
show(preserveFocus?: boolean): void
在 UI 中顯示該檢視。
如果檢視已收合,這將會展開它。
| 參數 | 說明 |
|---|---|
| preserveFocus?: boolean | 當設為 |
| 回傳值 | 說明 |
| void |
WebviewViewProvider
用於建立 WebviewView 元素的供應器(provider)。
方法
resolveWebviewView(webviewView: WebviewView, context: WebviewViewResolveContext<unknown>, token: CancellationToken): void | Thenable<void>
解析 Webview 檢視。
當檢視首次變為可見時會呼叫 resolveWebviewView。這可能發生在檢視首次載入時,或使用者隱藏後再次顯示該檢視時。
| 參數 | 說明 |
|---|---|
| webviewView: WebviewView | 要還原的 Webview 檢視。供應器應取得此檢視的所有權。供應器必須設定 Webview 的 |
| context: WebviewViewResolveContext<unknown> | 關於正在解析之檢視的其他詮釋資料。 |
| token: CancellationToken | 指示所提供的檢視已不再需要的取消權杖(cancellation token)。 |
| 回傳值 | 說明 |
| void | Thenable<void> | 指示檢視已完全解析的選擇性 Thenable。 |
WebviewViewResolveContext<T>
關於正在解析之 Webview 檢視的其他資訊。
屬性
來自 Webview 內容的持久化狀態。
為了節省資源,編輯器通常會解除配置不可見的 Webview 文件(iframe 內容)。例如,當使用者收合檢視或切換至側邊欄中另一個頂層活動時,WebviewView 本身會保持運作,但 Webview 的底層文件會被解除配置。當檢視再次變為可見時,它會被重新建立。
您可以透過在 WebviewOptions 中設定 [WebviewOptions.retainContextWhenHidden retainContextWhenHidden](#_WebviewOptions.retainContextWhenHidden retainContextWhenHidden) 來防止此行為。然而,這會增加資源使用量,應盡可能避免。相反地,您可以使用持久化狀態來儲存 Webview 的狀態,以便在需要時快速重新建立。
若要儲存持久化狀態,請在 Webview 內部呼叫 acquireVsCodeApi().setState() 並傳入任何可序列化的 JSON 物件。若要再次還原狀態,請呼叫 getState()。例如:
// Within the webview
const vscode = acquireVsCodeApi();
// Get existing state
const oldState = vscode.getState() || { value: 0 };
// Update state
setState({ value: oldState.value + 1 });
編輯器可確保在 Webview 隱藏時及跨編輯器重新啟動時,正確儲存持久化狀態。
WindowState
代表視窗的狀態。
屬性
視窗最近是否與使用者進行過互動。此狀態會因活動立即變更,或在使用者短時間無動作後變更。
目前的視窗是否為焦點視窗。
WorkspaceConfiguration
代表設定。它是以下內容合併後的檢視:
- 預設設定
- 全域(使用者)設定
- 工作區設定
- 工作區資料夾設定 - 來自所請求資源所屬的其中一個 工作區資料夾。
- 語言設定 - 在所請求語言下定義的設定。
有效值(由 get 傳回)是透過依下列順序覆寫或合併值所計算得出:
defaultValue(若在package.json中定義,否則從值的類型衍生)globalValue(若已定義)workspaceValue(若已定義)workspaceFolderValue(若已定義)defaultLanguageValue(若已定義)globalLanguageValue(若已定義)workspaceLanguageValue(若已定義)workspaceFolderLanguageValue(若已定義)
注意:只有 object 值類型會被合併,所有其他值類型均會被覆寫。
範例 1:覆寫
defaultValue = 'on';
globalValue = 'relative';
workspaceFolderValue = 'off';
value = 'off';
範例 2:語言值
defaultValue = 'on';
globalValue = 'relative';
workspaceFolderValue = 'off';
globalLanguageValue = 'on';
value = 'on';
範例 3:物件值
defaultValue = { a: 1, b: 2 };
globalValue = { b: 3, c: 4 };
value = { a: 1, b: 3, c: 4 };
注意:工作區和工作區資料夾設定包含 launch 和 tasks 設定。其基本名稱將會成為區段識別碼的一部分。下列程式碼片段顯示如何從 launch.json 擷取所有設定:
// launch.json configuration
const config = workspace.getConfiguration(
'launch',
vscode.workspace.workspaceFolders[0].uri
);
// retrieve values
const values = config.get('configurations');
請參閱 設定 (Settings) 以取得詳細資訊。
方法
從此設定中傳回一個值。
| 參數 | 說明 |
|---|---|
| section: string | 組態名稱,支援點號分隔名稱。 |
| 回傳值 | 說明 |
| T | 值 |
get<T>(section: string, defaultValue: T): T
從此設定中傳回一個值。
| 參數 | 說明 |
|---|---|
| section: string | 組態名稱,支援點號分隔名稱。 |
| defaultValue: T | 當找不到值或值為 |
| 回傳值 | 說明 |
| T | 值 |
檢查此設定是否具有特定值。
| 參數 | 說明 |
|---|---|
| section: string | 組態名稱,支援點號分隔名稱。 |
| 回傳值 | 說明 |
| boolean | 如果該區段解析結果不為 |
inspect<T>(section: string): {defaultLanguageValue: T, defaultValue: T, globalLanguageValue: T, globalValue: T, key: string, languageIds: string[], workspaceFolderLanguageValue: T, workspaceFolderValue: T, workspaceLanguageValue: T, workspaceValue: T}
擷取關於設定的所有資訊。設定值通常由預設值、全域或全系統範圍值、工作區特定值、資料夾特定值以及語言特定值(如果 WorkspaceConfiguration 範圍限定於某種語言)組成。
同時提供定義了該設定的所有語言 ID。
注意:設定名稱必須表示設定樹中的葉節點(如 editor.fontSize 而非 editor),否則不會傳回結果。
| 參數 | 說明 |
|---|---|
| section: string | 組態名稱,支援點號分隔名稱。 |
| 回傳值 | 說明 |
| {defaultLanguageValue: T, defaultValue: T, globalLanguageValue: T, globalValue: T, key: string, languageIds: string[], workspaceFolderLanguageValue: T, workspaceFolderValue: T, workspaceLanguageValue: T, workspaceValue: T} | 關於設定的資訊或 |
update(section: string, value: any, configurationTarget?: boolean | ConfigurationTarget, overrideInLanguage?: boolean): Thenable<void>
更新設定值。更新後的設定值會被持久化。
值可在以下範圍變更:
- 全域設定:變更編輯器所有執行個體的值。
- 工作區設定:變更目前工作區的值(若可用)。
- 工作區資料夾設定:變更來自所請求資源所屬的其中一個 工作區資料夾 的設定值。
- 語言設定:變更所請求 languageId 的值。
注意:若要移除設定值,請使用 undefined,例如:config.update('somekey', undefined)
- throws - 更新時發生錯誤
- 未註冊的設定。
- 將視窗設定更新至工作區資料夾
- 當未開啟工作區時,將設定更新至工作區或工作區資料夾。
- 當沒有工作區資料夾設定時,將設定更新至工作區資料夾。
- 當 WorkspaceConfiguration 未限定於資源範圍時,將設定更新至工作區資料夾。
| 參數 | 說明 |
|---|---|
| section: string | 組態名稱,支援點號分隔名稱。 |
| value: any | 新值。 |
| configurationTarget?: boolean | ConfigurationTarget | |
| overrideInLanguage?: boolean | 是否在所請求 languageId 的範圍內更新值。- 如果為 |
| 回傳值 | 說明 |
| Thenable<void> |
WorkspaceEdit
工作區編輯(Workspace edit)是針對多個資源和文件的文字與檔案變更集合。
請使用 applyEdit 函式來套用工作區編輯。
建構函式
new WorkspaceEdit(): WorkspaceEdit
| 參數 | 說明 |
|---|---|
| 回傳值 | 說明 |
| WorkspaceEdit |
屬性
受文字或資源變更影響的資源數量。
方法
createFile(uri: Uri, options?: {contents: Uint8Array | DataTransferFile, ignoreIfExists: boolean, overwrite: boolean}, metadata?: WorkspaceEditEntryMetadata): void
建立一般檔案。
| 參數 | 說明 |
|---|---|
| uri: Uri | 新檔案的 URI。 |
| options?: {contents: Uint8Array | DataTransferFile, ignoreIfExists: boolean, overwrite: boolean} | 定義是否應覆寫或忽略現有的檔案。當 |
| metadata?: WorkspaceEditEntryMetadata | 該項目的選擇性詮釋資料。 |
| 回傳值 | 說明 |
| void |
delete(uri: Uri, range: Range, metadata?: WorkspaceEditEntryMetadata): void
刪除指定範圍內的文字。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| range: Range | 範圍。 |
| metadata?: WorkspaceEditEntryMetadata | 該項目的選擇性詮釋資料。 |
| 回傳值 | 說明 |
| void |
deleteFile(uri: Uri, options?: {ignoreIfNotExists: boolean, recursive: boolean}, metadata?: WorkspaceEditEntryMetadata): void
刪除檔案或資料夾。
| 參數 | 說明 |
|---|---|
| uri: Uri | 要刪除的檔案 URI。 |
| options?: {ignoreIfNotExists: boolean, recursive: boolean} | |
| metadata?: WorkspaceEditEntryMetadata | 該項目的選擇性詮釋資料。 |
| 回傳值 | 說明 |
| void |
entries(): Array<[Uri, TextEdit[]]>
has(uri: Uri): boolean
檢查資源的文字編輯是否存在。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| 回傳值 | 說明 |
| boolean | 如果指定的資源會受到此編輯影響,則為 |
insert(uri: Uri, position: Position, newText: string, metadata?: WorkspaceEditEntryMetadata): void
在指定位置插入給定的文字。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| position: Position | 一個位置。 |
| newText: string | 一個字串。 |
| metadata?: WorkspaceEditEntryMetadata | 該項目的選擇性詮釋資料。 |
| 回傳值 | 說明 |
| void |
renameFile(oldUri: Uri, newUri: Uri, options?: {ignoreIfExists: boolean, overwrite: boolean}, metadata?: WorkspaceEditEntryMetadata): void
重新命名檔案或資料夾。
| 參數 | 說明 |
|---|---|
| oldUri: Uri | 現有檔案。 |
| newUri: Uri | 新位置。 |
| options?: {ignoreIfExists: boolean, overwrite: boolean} | 定義是否應覆寫或忽略現有的檔案。當 |
| metadata?: WorkspaceEditEntryMetadata | 該項目的選擇性詮釋資料。 |
| 回傳值 | 說明 |
| void |
replace(uri: Uri, range: Range, newText: string, metadata?: WorkspaceEditEntryMetadata): void
將資源指定範圍內的內容替換為給定文字。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| range: Range | 範圍。 |
| newText: string | 一個字串。 |
| metadata?: WorkspaceEditEntryMetadata | 該項目的選擇性詮釋資料。 |
| 回傳值 | 說明 |
| void |
set(uri: Uri, edits: ReadonlyArray<TextEdit | SnippetTextEdit>): void
設定(並取代)資源的文字編輯或片段編輯(snippet edits)。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| edits: ReadonlyArray<TextEdit | SnippetTextEdit> | 編輯陣列。 |
| 回傳值 | 說明 |
| void |
set(uri: Uri, edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]>): void
設定(並取代)帶有詮釋資料的資源文字編輯或片段編輯。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]> | 編輯陣列。 |
| 回傳值 | 說明 |
| void |
set(uri: Uri, edits: readonly NotebookEdit[]): void
設定(並取代)資源的筆記本編輯(notebook edits)。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| edits: readonly NotebookEdit[] | 編輯陣列。 |
| 回傳值 | 說明 |
| void |
set(uri: Uri, edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]>): void
設定(並取代)帶有詮釋資料的資源筆記本編輯。
| 參數 | 說明 |
|---|---|
| uri: Uri | 資源識別碼。 |
| edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]> | 編輯陣列。 |
| 回傳值 | 說明 |
| void |
WorkspaceEditEntryMetadata
工作區編輯項目的額外資料。支援為項目加上標籤,並標記項目為需要使用者確認。編輯器會將具有相同標籤的編輯項目分組為樹狀節點,例如所有標籤為「字串變更」的編輯項目將會歸於同一個樹狀節點。
屬性
人類可讀的字串,在同一行中以較不顯眼的方式呈現。
iconPath?: IconPath
該編輯的圖示路徑或 ThemeIcon。
人類可讀的字串,以顯眼方式呈現。
指示需要使用者確認的旗標。
WorkspaceEditMetadata
關於工作區編輯的額外資料。
屬性
向編輯器發出訊號,指示此編輯為重構(refactoring)作業。
WorkspaceFolder
工作區資料夾是編輯器所開啟的眾多根目錄之一。所有工作區資料夾皆地位平等,代表沒有「作用中」或「主要」工作區資料夾的概念。
屬性
此工作區資料夾的序數。
此工作區資料夾的名稱。預設為其 uri-path 的基本名稱。
uri: Uri
此工作區資料夾關聯的 URI。
注意:選用 Uri 類型是有意為之,以便未來版本的編輯器可以支援非儲存在本機磁碟上的工作區資料夾,例如 ftp://server/workspaces/foo。
WorkspaceFolderPickOptions
用來設定 工作區資料夾 選擇 UI 行為的選項。
屬性
設為 true 可在焦點移至編輯器的其他部分或另一個視窗時保持挑選器開啟。此設定在 iPad 上將被忽略,並且始終為 false。
在輸入框中顯示為預留位置的選用字串,用以指引使用者。
WorkspaceFoldersChangeEvent
描述 工作區資料夾 集合變更的事件。
屬性
added: readonly WorkspaceFolder[]
已加入的工作區資料夾。
removed: readonly WorkspaceFolder[]
已移除的工作區資料夾。
WorkspaceSymbolProvider<T>
工作區符號供應器介面定義了擴充功能與 符號搜尋 (symbol search) 功能之間的合約。
方法
provideWorkspaceSymbols(query: string, token: CancellationToken): ProviderResult<T[]>
針對符合給定查詢字串的符號進行專案範圍的搜尋。
query 參數應以寬鬆的方式進行解讀,因為編輯器會對結果套用其自己的反白顯示與評分。一個經驗法則是採用不區分大小寫的配對,並簡單檢查 query 中的字元是否依順序出現在候選符號中。不要使用字首、子字串或類似的嚴格配對。
為了提升效能,實作者可以實作 resolveWorkspaceSymbol,然後提供具有部分 location 物件的符號,而不定義 range。接著,編輯器只會針對選取的符號呼叫 resolveWorkspaceSymbol(例如開啟工作區符號時)。
| 參數 | 說明 |
|---|---|
| query: string | 查詢字串,可以是空字串,在此情況下應傳回所有符號。 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T[]> | 一組文件標示陣列或解析為此類陣列的 thenable。若無結果,可傳回 |
resolveWorkspaceSymbol(symbol: T, token: CancellationToken): ProviderResult<T>
針對給定的符號填入其 location。此方法會在 UI 中選取符號時呼叫。供應器可以實作此方法,並從 provideWorkspaceSymbols 傳回不完整的符號,這通常有助於提升效能。
| 參數 | 說明 |
|---|---|
| symbol: T | 要解析的符號。保證為先前 |
| token: CancellationToken | 取消權杖。 |
| 回傳值 | 說明 |
| ProviderResult<T> | 已解析的符號,或解析為該符號的 Thenable。當未傳回結果時,將使用給定的 |
API 模式
以下是我們在 VS Code API 中使用的一些常見模式。
Promises
VS Code API 使用 promises 來表示非同步作業。從擴充功能中,可以傳回任何類型的 promise,例如 ES6、WinJS、A+ 等。
不受特定 promise 程式庫限制,這是透過 API 中的 Thenable 類型所表達。Thenable 代表共同的基礎,也就是 then 方法。
在大多數情況下,promises 的使用是選擇性的;當 VS Code 呼叫擴充功能時,它可以處理結果類型以及結果類型的 Thenable。當 promise 的使用是選擇性時,API 會透過傳回 or 類型來指示。
provideNumber(): number | Thenable<number>
取消權杖 (Cancellation Tokens)
作業通常在不穩定的狀態下啟動,這些狀態可能會在作業完成前變更。例如,IntelliSense 計算開始了,但使用者繼續輸入,導致該作業的結果變得過時。
暴露於此類行為的 API 將會接收一個 CancellationToken,您可以在上面檢查取消狀態 (isCancellationRequested) 或在取消發生時收到通知 (onCancellationRequested)。取消權杖通常是函式呼叫的最後一個參數,且為選擇性的。
處置器 (Disposables)
VS Code API 針對從 VS Code 取得的資源使用了 dispose 模式。這適用於事件監聽、指令、與 UI 的互動以及各種語言貢獻。
例如,setStatusBarMessage(value: string) 函式會傳回一個 Disposable,呼叫其 dispose 即可移除訊息。
活動
VS Code API 中的事件會以函式形式暴露,您需要呼叫這些函式並傳入監聽器函式來進行訂閱。呼叫訂閱會傳回一個 Disposable,在處置時可移除該事件監聽器。
var listener = function(event) {
console.log('It happened', event);
};
// start listening
var subscription = fsWatcher.onDidDelete(listener);
// do more stuff
subscription.dispose(); // stop listening
事件名稱遵循 on[Will|Did]VerbNoun? 模式。該名稱標示了事件是即將發生 (onWill) 還是已經發生 (onDid)、發生了什麼 (verb),以及內容 (noun)(除非從語境中可明顯看出)。
VS Code API 的一個範例是 window.onDidChangeActiveTextEditor,這是一個當作用中的文字編輯器 (noun) 已經 (onDid) 變更 (verb) 時觸發的事件。
嚴格空值檢查 (Strict null)
VS Code API 在適當的地方使用 undefined 和 null TypeScript 類型,以支援 嚴格空值檢查。
用於驗證的命名空間。