VS Code API

VS Code API 是一組可在你的 Visual Studio Code 擴充功能中呼叫的 JavaScript API。本頁列出了所有供擴充功能作者使用的 VS Code API。

API 命名空間與類別

此清單是由 VS Code 儲存庫中的 vscode.d.ts 檔案編譯而成的。

authentication (驗證)

用於驗證的命名空間。

活動

當驗證提供者的驗證工作階段被新增、移除或變更時觸發的 Event

函式

取得使用者針對指定提供者已登入的所有帳戶。請將此與 getSession 搭配使用,以取得特定帳戶的驗證工作階段。

目前,編輯器的內建擴充功能僅提供兩個實作 GitHub 和 Microsoft 驗證的驗證提供者:其 providerId 分別為 'github' 和 'microsoft'。

注意:取得帳戶並不表示您的擴充功能可以存取該帳戶或其驗證工作階段。您可以透過呼叫 getSession 來驗證對該帳戶的存取權。

參數說明
providerId: string

要使用的提供者識別碼 (id)

傳回說明
Thenable<readonly AuthenticationSessionAccountInformation[]>

解析為唯讀驗證帳戶陣列的 thenable。

取得符合所需範圍或滿足 WWW-Authenticate 要求的驗證工作階段。如果未註冊具備該 providerId 的提供者,或者使用者不同意與擴充功能共用驗證資訊,將會拒絕 (reject)。如果有具有相同範圍的多個工作階段,將會向使用者顯示快速挑選 (quickpick) 以選擇他們想要使用的帳戶。

內建驗證提供者包含

  • '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

取得符合所需範圍或要求的驗證工作階段。如果未註冊具備該 providerId 的提供者,或者使用者不同意與擴充功能共用驗證資訊,將會拒絕 (reject)。如果有具有相同範圍的多個工作階段,將會向使用者顯示快速挑選 (quickpick) 以選擇他們想要使用的帳戶。

內建驗證提供者包含

  • '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

取得符合所需範圍或要求的驗證工作階段。如果未註冊具備該 providerId 的提供者,或者使用者不同意與擴充功能共用驗證資訊,將會拒絕 (reject)。如果有具有相同範圍的多個工作階段,將會向使用者顯示快速挑選 (quickpick) 以選擇他們想要使用的帳戶。

內建驗證提供者包含

  • '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,如果使用無訊息流程且未找到任何工作階段,則為 undefined

註冊驗證提供者。

每個識別碼 (id) 只能有一個提供者,當某個識別碼已被其他提供者使用時,將會擲回錯誤。識別碼會區分大小寫。

參數說明
id: string

提供者的唯一識別碼。

label: string

提供者的人類可讀名稱。

provider: AuthenticationProvider

驗證提供者。

options?: AuthenticationProviderOptions

提供者的其他選項。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

chat

用於聊天功能的命名空間。使用者透過在聊天檢視中傳送訊息來與聊天參與者互動。聊天參與者可以透過 ChatResponseStream 回應 Markdown 或其他類型的內容。

函式

建立新的 聊天參與者 實例。

參數說明
id: string

參與者的唯一識別碼。

handler: ChatRequestHandler

參與者的要求處理常式。

傳回說明
ChatParticipant

新的聊天參與者

命令 (commands)

用於處理命令的命名空間。簡而言之,命令是一個具有唯一識別碼的函式。該函式有時也被稱為命令處理常式 (command handler)

可以使用 registerCommandregisterTextEditorCommand 函式將命令新增至編輯器。命令可以手動執行或透過 UI 手勢執行。這些包括

擴充功能可以存取來自其他擴充功能以及編輯器本身的命令。然而,當叫用編輯器命令時並非支援所有引數類型。

這是一個註冊命令處理常式並將該命令的項目新增至選擇區的範例。首先,註冊識別碼為 extension.sayHello 的命令處理常式。

commands.registerCommand('extension.sayHello', () => {
  window.showInformationMessage('Hello World!');
});

其次,將命令識別碼繫結至它將在選擇區中顯示的標題(於 package.json 中)。

{
  "contributes": {
    "commands": [
      {
        "command": "extension.sayHello",
        "title": "Hello World"
      }
    ]
  }
}

函式

執行由給定命令識別碼所代表的命令。

  • 註解 1:當執行編輯器命令時,並非所有類型都可以作為引數傳遞。允許的類型包括基本類型 stringbooleannumberundefinednull,以及 PositionRangeUriLocation
  • 註解 2:執行由擴充功能所提供的命令時,沒有任何限制。
參數說明
command: string

要執行的命令識別碼。

...rest: any[]

傳遞給命令函式的參數。

傳回說明
Thenable<T>

解析為給定命令傳回值的 thenable。當命令處理常式函式未傳回任何內容時,傳回 undefined

擷取所有可用命令的清單。以底線開頭的命令會被視為內部命令。

參數說明
filterInternal?: boolean

設定為 true 以不顯示內部命令(以底線開頭者)

傳回說明
Thenable<string[]>

解析為命令識別碼清單的 Thenable。

註冊一個可以透過鍵盤快速鍵、功能表項目、動作或直接呼叫的命令。

使用現有的命令識別碼註冊命令兩次將會造成錯誤。

參數說明
command: string

命令的唯一識別碼。

callback: (args: any[]) => any

命令處理常式函式。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
Disposable

在處置時取消註冊此命令的 Disposable。

註冊一個可以透過鍵盤快速鍵、功能表項目、動作或直接呼叫的文字編輯器命令。

文字編輯器命令與一般 命令 不同,因為它們只有在呼叫命令時有作用中編輯器存在時才會執行。此外,編輯器命令的命令處理常式可以存取作用中編輯器以及 edit 建立器。請注意,edit 建立器僅在回呼執行期間有效。

參數說明
command: string

命令的唯一識別碼。

callback: (textEditor: TextEditor, edit: TextEditorEdit, args: any[]) => void

具有存取 editoredit 權限的命令處理常式函式。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
Disposable

在處置時取消註冊此命令的 Disposable。

comments

函式

建立新的 comment controller 實例。

參數說明
id: string

註解控制器的 id

label: string

註解控制器的人類可讀字串。

傳回說明
CommentController

comment controller 的實例。

debug

用於偵錯功能的命名空間。

變數

目前作用中的 debug console。如果沒有作用中的偵錯工作階段,傳送到偵錯主控台的輸出將不會顯示。

目前作用中的 debug sessionundefined。作用中的偵錯工作階段是由偵錯動作浮動視窗所代表的工作階段,或是目前顯示在偵錯動作浮動視窗下拉式功能表中的工作階段。如果沒有作用中的偵錯工作階段,其值為 undefined

目前取得焦點的執行緒或堆疊框架,如果沒有執行緒或堆疊取得焦點,則為 undefined。只要有作用中的偵錯工作階段,隨時都可以對執行緒取得焦點,而堆疊框架只有在工作階段暫停且已擷取呼叫堆疊時才能取得焦點。

中斷點清單。

活動

active debug session 變更時觸發的 Event注意,當作用中的偵錯工作階段變更為 undefined 時也會觸發此事件。

debug.activeStackItem 變更時觸發的事件。

當中斷點集合被新增、移除或變更時發出的 Event

debug session 接收到自訂 DAP 事件時觸發的 Event

當新的 debug session 啟動時觸發的 Event

debug session 終止時觸發的 Event

函式

新增中斷點。

參數說明
breakpoints: readonly Breakpoint[]

要新增的中斷點。

傳回說明
void

將透過偵錯介面卡通訊協定 (Debug Adapter Protocol) 接收到的 "Source" 描述元物件轉換為可用於載入其內容的 Uri。如果原始程式描述元是基於路徑,則會傳回檔案 Uri。如果原始程式描述元使用參照編號,則會建構一個需要對應的 ContentProvider 與執行中偵錯工作階段的特定偵錯 Uri(配置為 'debug')

如果 "Source" 描述元沒有足夠的資訊來建立 Uri,將會擲回錯誤。

參數說明
source: DebugProtocolSource

符合偵錯介面卡通訊協定中所定義之 Source 類型的物件。

session?: DebugSession

當原始程式描述元使用參照編號從作用中的偵錯工作階段載入內容時將會使用的選用偵錯工作階段。

傳回說明
Uri

可用於載入原始程式內容的 uri。

為特定的偵錯類型註冊 debug adapter descriptor factory。擴充功能僅被允許為該擴充功能所定義的偵錯類型註冊 DebugAdapterDescriptorFactory。否則將會擲回錯誤。為同一個偵錯類型註冊多個 DebugAdapterDescriptorFactory 會導致錯誤。

參數說明
debugType: string

註冊處理站的偵錯類型。

factory: DebugAdapterDescriptorFactory
傳回說明
Disposable

當被處置時會取消註冊此處理站的 Disposable

為給定的偵錯類型註冊偵錯介面卡追蹤器處理站 (debug adapter tracker factory)。

參數說明
debugType: string

註冊處理站的偵錯類型,或使用 '*' 來符合所有偵錯類型。

factory: DebugAdapterTrackerFactory
傳回說明
Disposable

當被處置時會取消註冊此處理站的 Disposable

為特定的偵錯類型註冊 debug configuration provider。可以透過選用的 triggerKind 來指定何時觸發提供者的 provideDebugConfigurations 方法。目前有兩種可能的觸發種類:當值為 Initial(或未提供觸發種類引數時),provideDebugConfigurations 方法可用於提供要複製到新建立的 launch.json 中的初始偵錯組態。若觸發種類為 Dynamic,則 provideDebugConfigurations 方法可用於動態決定要呈現給使用者的偵錯組態(除了來自 launch.json 的靜態組態之外)。請注意,triggerKind 引數僅適用於 provideDebugConfigurations 方法:因此 resolveDebugConfiguration 方法完全不受影響。為不同的觸發種類註冊帶有解析方法的單一提供者,會導致多次呼叫相同的解析方法。可以為同一個類型註冊多個提供者。

參數說明
debugType: string

註冊提供者的偵錯類型。

provider: DebugConfigurationProvider
triggerKind?: DebugConfigurationProviderTriggerKind

註冊提供者之 'provideDebugConfiguration' 方法所依據的 trigger。如果缺少 triggerKind,則預設值為 DebugConfigurationProviderTriggerKind.Initial

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

移除中斷點。

參數說明
breakpoints: readonly Breakpoint[]

要移除的中斷點。

傳回說明
void

使用具名啟動組態、具名複合組態,或直接傳遞 DebugConfiguration 來開始偵錯。具名組態會在給定資料夾中的 '.vscode/launch.json' 內進行尋找。在偵錯開始之前,所有未儲存的檔案都會被儲存,並且啟動組態會更新至最新狀態。組態中使用的資料夾特定變數(例如 '${workspaceFolder}')會針對給定的資料夾進行解析。

參數說明
folder: WorkspaceFolder

用於尋找具名組態與解析變數的 workspace folder,若為非資料夾設定則為 undefined

nameOrConfiguration: string | DebugConfiguration

偵錯或複合組態的名稱,或是 DebugConfiguration 物件。

parentSessionOrOptions?: DebugSession | DebugSessionOptions

偵錯工作階段選項。當傳入父系 debug session 時,假設選項僅包含此父系工作階段。

傳回說明
Thenable<boolean>

當偵錯成功啟動時解析的 thenable。

停止指定的偵錯工作階段,若省略 session 則停止所有偵錯工作階段。

參數說明
session?: DebugSession

要停止的 debug session;如果省略,則會停止所有工作階段。

傳回說明
Thenable<void>

當工作階段已停止時解析的 thenable。

環境變數

描述編輯器執行所在環境的命名空間。

變數

應用程式的主機託管位置。在桌面版上這是 'desktop'。在網頁版上這是指定的嵌入器 (embedder),即 'github.dev'、'codespaces',如果嵌入器未提供該資訊則為 'web'

編輯器的應用程式名稱,例如 'VS Code'。

編輯器執行所在的應用程式根資料夾。

注意,當在沒有應用程式根資料夾表示形式的環境中執行時,該值為空字串。

系統剪貼簿。

指出應用程式是否以可攜式模式執行。

當應用程式從包含 data 目錄的資料夾執行時,會啟用可攜式模式,從而允許獨立安裝。

深入了解 可攜式模式

指出這是應用程式的全新安裝。如果在安裝的第一天內則為 true,否則為 false

指出使用者是否啟用了遙測 (telemetry)。可以透過觀察它來決定擴充功能是否應該傳送遙測。

代表使用者偏好的語言,例如 de-CHfren-US

編輯器的目前記錄層級。

電腦的唯一識別碼。

遠端名稱。由擴充功能定義,常見的範例有用於 Linux Windows 子系統的 wsl,或用於使用安全殼層 (secure shell) 之遠端的 ssh-remote

注意,當沒有遠端擴充功能主機時,該值為 undefined,但如果存在遠端擴充功能主機,則該值會在所有擴充功能主機(本機和遠端)中定義。使用 Extension.extensionKind 來了解特定擴充功能是否在遠端執行。

目前工作階段的唯一識別碼。每次啟動編輯器時都會變更。

偵測到的擴充功能主機預設命令列殼層 (shell),這會被擴充功能主機平台的 terminal.integrated.defaultProfile 設定所覆寫。請注意,在不支援 shell 的環境中,該值為空字串。

UI 種類屬性指出擴充功能是從哪個 UI 存取的。例如,可以從桌面應用程式或網頁瀏覽器存取擴充功能。

編輯器在作業系統中註冊的自訂 uri 配置 (scheme)。

活動

當編輯器的記錄層級變更時觸發的 Event

當預設 shell 變更時觸發的 Event。這會帶著新的 shell 路徑一起觸發。

當使用者啟用或停用遙測時觸發的 Event。如果使用者已啟用遙測則為 true,如果使用者已停用遙測則為 false

函式

將 uri 解析為可在外部存取的格式。

http:https: 配置

將擴充功能執行所在位置的 外部 uri(例如 http: or https: 連結),解析為用戶端機器上相同資源的 uri。

如果擴充功能正在用戶端機器上執行,這是一個無動作 (no-op)。

如果擴充功能正在遠端執行,此函式會自動建立從本機到遠端 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 來處理。在這種情況下,該方法將傳回一個 URI,當處理該 URI 時,會使編輯器開啟該工作區。

參數說明
target: Uri
傳回說明
Thenable<Uri>

可以在用戶端機器上使用的 uri。

建立新的 telemetry logger

參數說明
sender: TelemetrySender

遙測記錄器所使用的遙測傳送者。

options?: TelemetryLoggerOptions

遙測記錄器的選項。

傳回說明
TelemetryLogger

新的遙測記錄器

使用預設應用程式在外部開啟連結。根據所使用的配置,這可以是

  • 瀏覽器 (http:, https:)
  • 電郵用戶端 (mailto:)
  • VS Code 本身 (來自 vscode.env.uriSchemevscode:)

注意,在編輯器內開啟文字文件的正確方法是 showTextDocument,而不是這個函式。

參數說明
target: Uri

應該被開啟的 uri。

傳回說明
Thenable<boolean>

指示開啟是否成功的 promise。

extensions

用於處理已安裝擴充功能的命名空間。擴充功能由 Extension 介面表示,該介面可對其進行反映 (reflection)。

擴充功能作者可以透過從 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));

變數

目前系統已知的所有擴充功能。

活動

extensions.all 變更時觸發的事件。當安裝、解除安裝、啟用或停用擴充功能時,可能會發生這種情況。

函式

透過其完整識別碼(格式為:publisher.name)取得擴充功能。

參數說明
extensionId: string

擴充功能識別碼。

傳回說明
Extension<T> | undefined

擴充功能或 undefined

l10n

擴充功能 API 中與在地化相關功能的命名空間。要正確使用此功能,您必須在擴充功能資訊清單 (manifest) 中定義 l10n 並擁有 bundle.l10n。.json 檔案。如需關於如何產生 bundle.l10n。.json 檔案的詳細資訊,請查看 vscode-l10n 儲存庫

注意:內建擴充功能(例如 Git、TypeScript Language Features、GitHub Authentication)不適用於 l10n 屬性要求。換句話說,它們不需要在擴充功能資訊清單中指定 l10n,因為它們的翻譯字串來自語言套件 (Language Packs)。

變數

已為擴充功能載入的在地化字串組合 (bundle)。如果尚未載入任何組合,則為 undefined。如果找不到組合或我們正在使用預設語言執行時,通常不會載入該組合。

已為擴充功能載入的在地化組合 URI。如果尚未載入任何組合,則為 undefined。如果找不到組合或我們正在使用預設語言執行時,通常不會載入該組合。

函式

將字串標記為需要在地化。如果 env.language 指定的語言有可用的在地化組合,且該組合具有此訊息的在地化值,則會傳回該在地化值(並為任何範本化值注入 args 值)。

範例

l10n.t('Hello {0}!', 'World');
參數說明
message: string

要在地化的訊息。支援索引範本化,其中像 {0}{1} 這樣的字串會被 args 陣列中該索引處的項目取代。

...args: Array<string | number | boolean>

要在在地化字串中使用的引數。引數的索引是用來對應在地化字串中的範本預留位置。

傳回說明
string

帶有注入引數的在地化字串。

將字串標記為需要在地化。如果 env.language 指定的語言有可用的在地化組合,且該組合具有此訊息的在地化值,則會傳回該在地化值(並為任何範本化值注入 args 值)。

範例

l10n.t('Hello {name}', { name: 'Erich' });
參數說明
message: string

要在地化的訊息。支援具名範本化,其中像 {foo}{bar} 這樣的字串會被 Record 中該鍵對應的值取代(foo、bar 等)。

args: Record<string, string | number | boolean>

要在在地化字串中使用的引數。record 中的鍵名稱是用來對應在地化字串中的範本預留位置。

傳回說明
string

帶有注入引數的在地化字串。

將字串標記為需要在地化。如果 env.language 指定的語言有可用的在地化組合,且該組合具有此訊息的在地化值,則會傳回該在地化值(並為任何範本化值注入 args 值)。

參數說明
options: {args: Array<string | number | boolean> | Record<string, string | number | boolean>, comment: string | string[], message: string}

在地化訊息時要使用的選項。

傳回說明
string

帶有注入引數的在地化字串。

語言 (languages)

用於參與語言特定編輯器 features(例如 IntelliSense、程式碼動作、診斷等)的命名空間。

存在許多程式語言,且其語法、語意和範型有極大的差異。儘管如此,自動單字完成、程式碼導覽或程式碼檢查等功能已在不同工具和不同程式語言中變得很普遍。

編輯器提供了一個 API,透過讓所有 UI 和動作都已就定位,並允許您僅提供資料來參與,從而簡化了提供此類常見功能的工作。例如,若要提供滑鼠停留提示 (hover),您只需提供一個可以使用 TextDocumentPosition 呼叫並傳回 hover 資訊的函式即可。其餘的工作,例如追蹤滑鼠、定位 hover、保持 hover 穩定等,都由編輯器處理。

languages.registerHoverProvider('javascript', {
  provideHover(document, position, token) {
    return new Hover('I am a hover!');
  }
});

註冊是透過使用 document selector 來完成的,它是一個語言識別碼(如 javascript),或者是更複雜的 filter(如 { language: 'typescript', scheme: 'file' })。將文件與此類選取器進行配對將會產生一個 score,用來決定是否以及如何使用提供者。當分數相同時,最後註冊的提供者獲勝。對於允許完整元數 (full arity) 的功能(例如 hover),僅會檢查分數是否為 >0;對於其他功能(例如 IntelliSense),分數則用於決定詢問提供者參與的順序。

活動

當全域診斷集合變更時觸發的 Event。這是指新新增和移除的診斷。

函式

建立診斷集合。

參數說明
name?: string

集合的 name

傳回說明
DiagnosticCollection

新的診斷集合。

建立新的 language status item

參數說明
id: string

項目的識別碼。

selector: DocumentSelector

定義項目顯示在哪些編輯器中的文件選取器。

傳回說明
LanguageStatusItem

新的語言狀態項目。

取得給定資源的所有診斷。

參數說明
resource: Uri

資源

傳回說明
Diagnostic[]

diagnostics 物件陣列或空陣列。

取得所有診斷。

參數說明
傳回說明
Array<[Uri, Diagnostic[]]>

uri-diagnostics 屬性值組 (tuples) 陣列或空陣列。

傳回所有已知語言的識別碼。

參數說明
傳回說明
Thenable<string[]>

解析為識別碼字串陣列的 Promise。

計算文件 selector 與文件之間的符合度。大於零的值表示選取器與文件相符。

符合度是根據以下規則計算的

  1. DocumentSelector 是陣列時,計算其中包含的每個 DocumentFilter 或語言識別碼的符合度,並取其最大值。
  2. 字串將被去糖化 (desugared) 成為 DocumentFilterlanguage 部分,因此 "fooLang" 就像 { language: "fooLang" } 一樣。
  3. DocumentFilter 將透過將其各部分與文件進行比較來與文件進行配對。適用以下規則
    1. DocumentFilter 為空 ({}) 時,結果為 0
    2. 當定義了 schemelanguagepatternnotebook 但其中有一個不相符時,結果為 0
    3. * 配對會得到 5 分,透過相等性或 glob 模式配對會得到 10
    4. 結果為每個符合項目的最大值

範例

// 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

當選取器相符時為大於 0 的數字,當選取器不相符時為 0

註冊呼叫階層提供者 (call hierarchy provider)。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: CallHierarchyProvider

呼叫階層提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊程式碼動作提供者 (code action provider)。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: CodeActionProvider<CodeAction>

程式碼動作提供者。

metadata?: CodeActionProviderMetadata

關於提供者所提供之程式碼動作類型的後設資料 (metadata)。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊程式碼透鏡提供者 (code lens provider)。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: CodeLensProvider<CodeLens>

程式碼透鏡提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊顏色提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentColorProvider

顏色提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊完成提供者 (completion provider)。

可以為某個語言註冊多個提供者。在這種情況下,提供者會根據其 score 進行排序,並依序向相同分數群組的提供者請求完成項目。當某個群組的一個或多個提供者傳回結果時,程序即會停止。失敗的提供者(拒絕的 promise 或例外狀況)不會使整個操作失敗。

完成項目提供者可以與一組 triggerCharacters 關聯。當輸入觸發字元時,會要求提供完成,但僅限於註冊了該輸入字元的提供者。因此,觸發字元應與 word characters 不同,常見的觸發字元是 .,用於觸發成員完成。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: CompletionItemProvider<CompletionItem>

完成提供者。

...triggerCharacters: string[]

當使用者輸入其中一個字元時觸發完成。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊宣告提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DeclarationProvider

宣告提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊定義提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DefinitionProvider

定義提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊新的 DocumentDropEditProvider

針對單一語言可以註冊多個放置提供者。當將內容拖放至編輯器時,將會根據其 DocumentDropEditProviderMetadata 所指定的處理 MIME 類型,來叫用編輯器語言的所有已註冊提供者。

每個提供者可以傳回一或多個 DocumentDropEdits。編輯會使用 DocumentDropEdit.yieldTo 屬性進行排序。依預設將會套用第一個編輯。若有任何額外編輯,這些編輯將在放置小工具中作為可選取的放置選項顯示給使用者。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentDropEditProvider<DocumentDropEdit>

放置提供者。

metadata?: DocumentDropEditProviderMetadata

關於提供者的其他中繼資料。

傳回說明
Disposable

一個會在處置時取消註冊此提供者的 Disposable

註冊文件的格式化提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並使用最佳符合的提供者。所選提供者失敗將導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentFormattingEditProvider

文件格式化編輯提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊文件醒目提示提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並依序詢問各群組以取得文件醒目提示。當某個提供者傳回 non-falsynon-failure 結果時,程序即會停止。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentHighlightProvider

文件醒目提示提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊文件連結提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentLinkProvider<DocumentLink>

文件連結提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊新的 DocumentPasteEditProvider

針對單一語言可以註冊多個提供者。針對複製與貼上操作,語言的所有已註冊提供者將根據 DocumentPasteProviderMetadata 所指定的其所處理的 MIME 類型來叫用。

對於 複製操作,各提供者對 DataTransfer 所做的變更將合併為單一的 DataTransfer,用於填入剪貼簿。

對於 [DocumentPasteEditProvider.providerDocumentPasteEdits 貼上操作](#DocumentPasteEditProvider.providerDocumentPasteEdits 貼上操作),將叫用每個提供者並可傳回一或多個 DocumentPasteEdits。編輯會使用 DocumentPasteEdit.yieldTo 屬性進行排序。依預設將會套用第一個編輯,其餘編輯將在貼上小工具中作為可選取的貼上選項顯示給使用者。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentPasteEditProvider<DocumentPasteEdit>

貼上編輯器提供者。

metadata: DocumentPasteProviderMetadata

關於提供者的其他中繼資料。

傳回說明
Disposable

一個會在處置時取消註冊此提供者的 Disposable

註冊文件範圍的格式化提供者。

注意:文件範圍提供者同時也是 文件格式化工具,這表示在註冊範圍提供者時,不需要另外 註冊 文件格式化工具。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並使用最佳符合的提供者。所選提供者失敗將導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentRangeFormattingEditProvider

文件範圍格式化編輯提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊文件範圍的語意標記提供者。

注意:如果文件同時具有 DocumentSemanticTokensProviderDocumentRangeSemanticTokensProvider,則範圍提供者僅會在最初叫用,即完整文件提供者解析第一個要求所需的時間內。一旦完整文件提供者解析了第一個要求,透過範圍提供者提供的語意標記將被捨棄,並且從該時間點開始,將僅使用文件提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並使用最佳符合的提供者。所選提供者失敗將導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentRangeSemanticTokensProvider

文件範圍語意標記提供者。

legend: SemanticTokensLegend
傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊整份文件的語意標記提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並使用最佳符合的提供者。所選提供者失敗將導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentSemanticTokensProvider

文件語意標記提供者。

legend: SemanticTokensLegend
傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊文件符號提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: DocumentSymbolProvider

文件符號提供者。

metaData?: DocumentSymbolProviderMetadata

關於提供者的中繼資料

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊一個可在文字文件中尋找可評估運算式的提供者。編輯器會在現用偵錯工作階段中評估該運算式,並在偵錯懸停提示中顯示結果。

如果針對某個語言註冊了多個提供者,將會任意使用其中一個提供者。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: EvaluatableExpressionProvider

可評估運算式提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊摺疊範圍提供者。

針對單一語言可以註冊多個提供者。在該情況下,會以平行方式詢問提供者並合併結果。如果多個摺疊範圍從相同位置開始,則僅使用第一個註冊提供者的範圍。如果某個摺疊範圍與具有較小位置的其他範圍重疊,也會被忽略。

失敗的提供者 (拒絕的 promise 或例外狀況) 不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: FoldingRangeProvider

摺疊範圍提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊懸停提示提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: HoverProvider

懸停提示提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊實作提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: ImplementationProvider

實作提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊內嵌提示提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: InlayHintsProvider<InlayHint>

內嵌提示提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊內嵌完成提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: InlineCompletionItemProvider

內嵌完成提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊一個傳回偵錯工具「內嵌值」功能資料的提供者。每當通用偵錯工具在原始程式檔中暫停時,就會呼叫針對該檔案語言註冊的提供者來傳回文字資料,該資料將顯示在編輯器行尾。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: InlineValuesProvider

內嵌值提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊連結編輯範圍提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並使用具有結果的最佳符合提供者。所選提供者失敗將導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: LinkedEditingRangeProvider

連結編輯範圍提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊在輸入時運作的格式化提供者。當使用者啟用設定 editor.formatOnType 時,此提供者會處於作用中狀態。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並使用最佳符合的提供者。所選提供者失敗將導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: OnTypeFormattingEditProvider

輸入時格式化編輯提供者。

firstTriggerCharacter: string

應觸發格式化的字元,例如 }

...moreTriggerCharacter: string[]

更多觸發字元。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊參考提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: ReferenceProvider

參考提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊重新命名提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序並依序詢問。產生結果的第一個提供者會定義整個操作的結果。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: RenameProvider

重新命名提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊選取範圍提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: SelectionRangeProvider

選取範圍提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊簽章說明提供者。

針對單一語言可以註冊多個提供者。在該情況下,提供者會根據其 評分 進行排序,並依序呼叫直到某個提供者傳回有效結果為止。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: SignatureHelpProvider

簽章說明提供者。

...triggerCharacters: string[]

當使用者輸入其中一個字元時觸發簽章說明,例如 ,(

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: SignatureHelpProvider

簽章說明提供者。

metadata: SignatureHelpProviderMetadata

關於提供者的資訊。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊型別定義提供者。

可以為某個語言註冊多個提供者。在這種情況下,會平行向各個提供者發出請求並將結果合併。失敗的提供者(拒絕的 promise 或例外狀況)不會導致整個操作失敗。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: TypeDefinitionProvider

型別定義提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊型別階層提供者。

參數說明
selector: DocumentSelector

定義此提供者適用於哪些文件的選取器。

provider: TypeHierarchyProvider

型別階層提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊工作區符號提供者。

可以註冊多個提供者。在該情況下,會以平行方式詢問提供者並合併結果。失敗的提供者 (拒絕的 promise 或例外狀況) 不會導致整個操作失敗。

參數說明
provider: WorkspaceSymbolProvider<SymbolInformation>

工作區符號提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

設定某個語言的 語言組態

參數說明
language: string

語言識別項,例如 typescript

configuration: LanguageConfiguration

語言組態。

傳回說明
Disposable

一個用來取消設定此組態的 Disposable

設定 (並變更) 與指定文件相關聯的 語言

請注意,呼叫此函式會觸發 onDidCloseTextDocument 事件,接著觸發 onDidOpenTextDocument 事件。

參數說明
document: TextDocument

要變更其語言的文件

languageId: string

新的語言識別項。

傳回說明
Thenable<TextDocument>

解析為已更新文件的 thenable。

lm

語言模型相關功能的命名空間。

變數

所有擴充功能透過 lm.registerTool 註冊的所有可用工具清單。可以使用 lm.invokeTool 呼叫它們,並傳入符合其宣告之 inputSchema 的輸入。

活動

當可用聊天模型的集合變更時引發的事件。

函式

透過名稱並使用指定的輸入,叫用列於 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>

工具叫用的結果。

註冊 LanguageModelChatProvider 注意:您也必須透過 package.json 中的 languageModelChatProviders 貢獻點定義語言模型聊天提供者

參數說明
vendor: string

此提供者的廠商。必須是全域唯一的。例如 copilotopenai

provider: LanguageModelChatProvider<LanguageModelChatInformation>

要註冊的提供者

傳回說明
Disposable

處置時會取消註冊此提供者的 disposable

註冊一個發布模型內容協定 (Model Context Protocol) 伺服器供編輯器使用的提供者。這允許動態提供 MCP 伺服器給編輯器,作為使用者在其組態檔中所建立伺服器的補充。

在呼叫此方法之前,擴充功能必須使用對應的 id 來註冊 contributes.mcpServerDefinitionProviders 擴充點,例如

    "contributes": {
        "mcpServerDefinitionProviders": [
            {
                "id": "cool-cloud-registry.mcp-servers",
                "label": "Cool Cloud Registry",
            }
        ]
    }

當新的 McpServerDefinitionProvider 可用時,當提交聊天訊息時,編輯器預設會自動叫用它來探索新的伺服器和工具。若要啟用此流程,擴充功能應在啟用期間呼叫 registerMcpServerDefinitionProvider

參數說明
id: string

提供者的 ID,對該擴充功能而言是唯一的。

provider: McpServerDefinitionProvider<McpServerDefinition>

要註冊的提供者

傳回說明
Disposable

處置時會取消註冊提供者的 disposable。

註冊 LanguageModelTool。該工具也必須在 package.json 的 languageModelTools 貢獻點中註冊。已註冊的工具可在 lm.tools 清單中供任何擴充功能檢視。但為了讓語言模型能夠看見它,必須將其傳入 LanguageModelChatRequestOptions.tools 中的可用工具清單內。

參數說明
name: string
tool: LanguageModelTool<T>
傳回說明
Disposable

一個會在處置時取消註冊此工具的 Disposable

透過 選取器 選取聊天模型。這可能會產生多個或沒有聊天模型,擴充功能必須妥善處理這些情況,特別是當沒有聊天模型存在時。

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

筆記本的命名空間。

筆記本功能由三個鬆散耦合的元件組成

  1. NotebookSerializer 使編輯器能夠開啟、顯示和儲存筆記本
  2. NotebookController 負責執行筆記本,例如它們從程式碼儲存格建立輸出。
  3. NotebookRenderer 在編輯器中呈現筆記本輸出。它們在獨立的內容中執行。

函式

建立新的筆記本控制器。

參數說明
id: string

控制器的識別項。每個擴充功能必須是唯一的。

notebookType: string

此控制器所屬的筆記本類型。

label: string

控制器的標籤。

handler?: (cells: NotebookCell[], notebook: NotebookDocument, controller: NotebookController) => void | Thenable<void>

控制器的執行處理常式。

傳回說明
NotebookController

新的筆記本控制器。

建立用於與特定轉譯器通訊的新訊息執行個體。

  • 注意 1:擴充功能只能建立在其 package.json 檔案中定義的轉譯器
  • 注意 2:唯有在其 notebookRenderer 貢獻中將 requiresMessaging 設定為 alwaysoptional 時,轉譯器才能存取訊息傳遞功能。
參數說明
rendererId: string

要通訊的轉譯器 ID

傳回說明
NotebookRendererMessaging

新的筆記本轉譯器訊息物件。

針對指定的筆記本類型註冊 儲存格狀態列項目提供者

參數說明
notebookType: string

要註冊的筆記本類型。

provider: NotebookCellStatusBarItemProvider

儲存格狀態列提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

scm

原始碼控制管理的命名空間。

變數

由擴充功能建立之最後一個原始碼控制的 輸入方塊

  • 已取代 - 請改用 SourceControl.inputBox

函式

建立新的 原始碼控制 執行個體。

參數說明
id: string

原始碼控制的 id。簡短的字串,例如:git

label: string

供人閱讀的原始碼控制字串。例如:Git

rootUri?: Uri

原始碼控制根目錄的選擇性 Uri。例如:Uri.parse(workspaceRoot)

傳回說明
SourceControl

原始碼控制 的執行個體。

tasks

工作功能的命名空間。

變數

目前作用中的工作執行或空陣列。

活動

當工作結束時引發。

當底層程序結束時引發。對於未執行底層程序的工作,不會引發此事件。

當工作開始時引發。

當底層程序啟動時引發。對於未執行底層程序的工作,不會引發此事件。

函式

執行由編輯器管理的工作。傳回的工作執行可用於終止該工作。

  • 擲回 - 當在無法啟動新程序的環境中執行 ShellExecution 或 ProcessExecution 工作時。在此類環境中,只能執行 CustomExecution 工作。
參數說明
task: Task

要執行的工作

傳回說明
Thenable<TaskExecution>

解析為工作執行的 thenable。

擷取系統中可用的所有工作。這包括來自 tasks.json 檔案的工作,以及透過擴充功能貢獻的工作提供者的工作。

參數說明
filter?: TaskFilter

用於選取特定類型或版本之工作的選擇性篩選條件。

傳回說明
Thenable<Task[]>

解析為工作陣列的 thenable。

註冊工作提供者。

參數說明
type: string

此提供者註冊的工作種類類型。

provider: TaskProvider<Task>

工作提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

tests

測試功能的命名空間。測試是透過註冊 TestController 執行個體並新增 TestItems 來發布的。控制器也可以透過建立一或多個 TestRunProfile 執行個體來描述如何執行測試。

函式

建立新的測試控制器。

參數說明
id: string

控制器的識別項,必須是全域唯一的。

label: string

供人閱讀的控制器標籤。

傳回說明
TestController

TestController 的執行個體。

window

用於處理編輯器目前視窗的命名空間。亦即可見與現用編輯器,以及顯示訊息、選取範圍與詢問使用者輸入的 UI 元素。

變數

依設定中所組態目前現用的色彩佈景主題。現用佈景主題可以透過 workbench.colorTheme 設定來變更。

目前現用的 筆記本編輯器undefined。現用編輯器是目前具有焦點的編輯器,或者當沒有任何編輯器具有焦點時,是最近變更輸入的編輯器。

目前現用的終端機或 undefined。現用終端機是目前具有焦點或最近擁有焦點的終端機。

目前現用的編輯器或 undefined。現用編輯器是目前具有焦點的編輯器,或者當沒有任何編輯器具有焦點時,是最近變更輸入的編輯器。

表示目前視窗的狀態。

表示主編輯器區域內的網格小工具

目前開啟的終端機或空陣列。

目前可見的 筆記本編輯器 或空陣列。

目前可見的編輯器或空陣列。

活動

當現用色彩佈景主題變更或有變更時引發的 事件

現用筆記本編輯器 變更時引發的 事件請注意,當現用編輯器變更為 undefined 時也會引發此事件。

現用終端機 變更時引發的 事件請注意,當現用終端機變更為 undefined 時也會引發此事件。

現用編輯器 變更時引發的 事件請注意,當現用編輯器變更為 undefined 時也會引發此事件。

筆記本編輯器選取範圍 變更時引發的 事件

筆記本編輯器可見範圍 變更時引發的 事件

當終端機中的 shell 整合啟動或其其中一個屬性變更時引發。

終端機狀態 變更時引發的 事件

當編輯器選項變更時引發的 事件

當編輯器中的選取範圍變更時引發的 事件

當編輯器的檢視欄位變更時引發的 事件

當編輯器的可見範圍變更時引發的 事件

可見筆記本編輯器 變更時引發的 事件

可見編輯器 陣列變更時引發的 事件

當目前視窗的焦點或活動狀態變更時引發的 事件。事件的值表示視窗是否具有焦點。

當終端機被處置時引發的 事件

當終端機命令結束時將會引發此事件。唯有針對該終端機啟動 shell 整合 時,才會引發此事件。

當透過 createTerminal API 或命令建立終端機時引發的 事件

當終端機命令啟動時將會引發此事件。唯有針對該終端機啟動 shell 整合 時,才會引發此事件。

函式

建立 InputBox 以讓使用者輸入一些文字。

請注意,在許多情況下,更方便的 window.showInputBox 會更容易使用。當 window.showInputBox 無法提供所需的彈性時,應使用 window.createInputBox

參數說明
傳回說明
InputBox

新的 InputBox

使用指定的名稱與語言識別項建立新的 輸出通道。如果未提供語言識別項,則會將 Log 用作預設語言識別項。

您可以從 可見編輯器現用編輯器 將可見或現用的輸出通道存取為 文字文件,並使用語言識別項來貢獻語言功能,例如語法著色、程式碼透鏡等。

參數說明
name: string

用於在 UI 中代表通道的供人閱讀字串。

languageId?: string

與通道相關聯的語言識別項。

傳回說明
OutputChannel

新的輸出通道。

使用指定的名稱建立新的 記錄輸出通道

參數說明
name: string

用於在 UI 中代表通道的供人閱讀字串。

options: {log: true}

記錄輸出通道的選項。

傳回說明
LogOutputChannel

新的記錄輸出通道。

建立 QuickPick 以讓使用者從 T 類型的一系列項目中挑選一個項目。

請注意,在許多情況下,更方便的 window.showQuickPick 會更容易使用。當 window.showQuickPick 無法提供所需的彈性時,應使用 window.createQuickPick

參數說明
傳回說明
QuickPick<T>

新的 QuickPick

建立狀態列 項目

參數說明
id: string

項目的識別項。在擴充功能內必須是唯一的。

alignment?: StatusBarAlignment

項目的對齊方式。

priority?: number

項目的優先順序。較高的值表示項目應更偏左顯示。

傳回說明
StatusBarItem

新的狀態列項目。

建立狀態列 項目

另請參閱 用於建立具有識別項之狀態列項目的 createStatusBarItem

參數說明
alignment?: StatusBarAlignment

項目的對齊方式。

priority?: number

項目的優先順序。較高的值表示項目應更偏左顯示。

傳回說明
StatusBarItem

新的狀態列項目。

建立具有後端 shell 程序的 Terminal。如果存在,終端機的 cwd 將是工作區目錄。

  • 擲回 - 當在無法啟動新程序的環境中執行時。
參數說明
name?: string

選擇性供人閱讀的字串,將用於在 UI 中代表終端機。

shellPath?: string

要在終端機中使用的自訂 shell 可執行檔之選擇性路徑。

shellArgs?: string | readonly string[]

自定義 shell 可執行檔的選用引數。字串僅能在 Windows 上使用,允許以 命令列格式 指定 shell 引數。

傳回說明
終端機

新的終端機。

建立一個帶有後端 shell 行程的 Terminal

  • 擲回 - 當在無法啟動新程序的環境中執行時。
參數說明
options: TerminalOptions

用於描述新終端機特性的 TerminalOptions 物件。

傳回說明
終端機

新的終端機。

建立一個由擴充功能控制其輸入與輸出的 Terminal

參數說明
options: ExtensionTerminalOptions

描述新終端機特性的 ExtensionTerminalOptions 物件。

傳回說明
終端機

新的終端機。

建立可用於將裝飾加入文字編輯器的 TextEditorDecorationType。

參數說明
options: DecorationRenderOptions

裝飾類型的轉譯選項。

傳回說明
TextEditorDecorationType

一個新的裝飾類型執行個體。

為使用 views 擴充點所貢獻的檢視建立一個 TreeView

參數說明
viewId: string

使用 views 擴充點所貢獻檢視的識別碼。

options: TreeViewOptions<T>

建立 TreeView 的選項

傳回說明
TreeView<T>

一個 TreeView

建立並顯示新的 webview 面板。

參數說明
viewType: string

識別 webview 面板的類型。

title: string

面板的標題。

showOptions: ViewColumn | {preserveFocus: boolean, viewColumn: ViewColumn}

在編輯器中顯示 webview 的位置。如果設定了 preserveFocus,則新的 webview 將不會取得焦點。

options?: WebviewPanelOptions & WebviewOptions

新面板的設定。

傳回說明
WebviewPanel

新的 webview 面板。

customEditors 擴充點所貢獻的 viewType 註冊自訂編輯器的提供者。

當開啟自訂編輯器時,會觸發 onCustomEditor:viewType 啟動事件。您的擴充功能必須作為啟動的一部分,為 viewType 註冊 CustomTextEditorProviderCustomReadonlyEditorProviderCustomEditorProvider

參數說明
viewType: string

自訂編輯器提供者的唯一識別碼。這應與 customEditors 貢獻點中的 viewType 相符。

provider: CustomTextEditorProvider | CustomReadonlyEditorProvider<CustomDocument> | CustomEditorProvider<CustomDocument>

解析自訂編輯器的提供者。

options?: {supportsMultipleEditorsPerDocument: boolean, webviewOptions: WebviewPanelOptions}

提供者的選項。

傳回說明
Disposable

用於取消註冊該提供者的 Disposable。

註冊檔案裝飾提供者。

參數說明
provider: FileDecorationProvider
傳回說明
Disposable

一個用於取消註冊該提供者的 Disposable

註冊可啟用終端機內連結偵測與處理的提供者。

參數說明
provider: TerminalLinkProvider<TerminalLink>

提供終端機連結的提供者。

傳回說明
Disposable

用於取消註冊該提供者的 Disposable。

為所貢獻的終端機設定檔註冊提供者。

參數說明
id: string

所貢獻終端機設定檔的 ID。

provider: TerminalProfileProvider

終端機設定檔提供者。

傳回說明
Disposable

一個用於取消註冊該提供者的 disposable

為使用 views 擴充點所貢獻的檢視註冊一個 TreeDataProvider。這可讓您將資料貢獻給 TreeView,並在資料變更時進行更新。

注意:若要存取 TreeView 並對其執行操作,請使用 createTreeView

參數說明
viewId: string

使用 views 擴充點所貢獻檢視的識別碼。

treeDataProvider: TreeDataProvider<T>

提供檢視樹狀資料的 TreeDataProvider

傳回說明
Disposable

一個用於取消註冊 TreeDataProviderdisposable

註冊能夠處理全系統 uriuri 處理常式。如果有開啟多個視窗,最上層的視窗將會處理該 uri。uri 處理常式的範圍限定於貢獻它的擴充功能;它只能處理針對擴充功能本身的 uri。uri 必須遵守下列規則

  • uri-scheme 必須是 vscode.env.uriScheme
  • uri-authority 必須是擴充功能識別碼 (例如 my.extension);
  • uri-path、-query 和 -fragment 部分是任意的。

例如,如果 my.extension 擴充功能註冊了 uri 處理常式,它將只能處理帶有前綴 product-name://my.extension 的 uri。

擴充功能在其整個啟動生命週期中只能註冊一個 uri 處理常式。

  • 注意:當即將處理針對目前擴充功能的 uri 時,會觸發 onUri 啟動事件。
參數說明
handler: UriHandler

要為此擴充功能註冊的 uri 處理常式。

傳回說明
Disposable

一個用於取消註冊該處理常式的 disposable

註冊 webview 面板序列化程式。

支援復原的擴充功能應具備 "onWebviewPanel:viewType" 啟動事件,並確保在啟動期間呼叫 registerWebviewPanelSerializer

針對特定的 viewType,一次只能註冊一個序列化程式。

參數說明
viewType: string

可序列化的 webview 面板類型。

serializer: WebviewPanelSerializer<unknown>

Webview 序列化程式。

傳回說明
Disposable

一個用於取消註冊該序列化程式的 disposable

為 webview 檢視註冊新的提供者。

參數說明
viewId: string

檢視的唯一 id。這應與 package.json 中 views 貢獻的 id 相符。

provider: WebviewViewProvider

webview 檢視的提供者。

options?: {webviewOptions: {retainContextWhenHidden: boolean}}
傳回說明
Disposable

用於取消註冊該提供者的 Disposable。

在狀態列中設定訊息。這是功能更強大的狀態列 項目的簡寫。

參數說明
text: string

要顯示的訊息,支援如同狀態列 項目中的圖示替代。

hideAfterTimeout: number

訊息將被處置的毫秒逾時時間。

傳回說明
Disposable

用於隱藏狀態列訊息的 disposable。

在狀態列中設定訊息。這是功能更強大的狀態列 項目的簡寫。

參數說明
text: string

要顯示的訊息,支援如同狀態列 項目中的圖示替代。

hideWhenDone: Thenable<any>

當其完成 (resolve 或 reject) 時會將訊息處置的 Thenable。

傳回說明
Disposable

用於隱藏狀態列訊息的 disposable。

在狀態列中設定訊息。這是功能更強大的狀態列 項目的簡寫。

注意狀態列訊息會堆疊,且當不再使用時必須予以處置。

參數說明
text: string

要顯示的訊息,支援如同狀態列 項目中的圖示替代。

傳回說明
Disposable

用於隱藏狀態列訊息的 disposable。

顯示錯誤訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示錯誤訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

options: MessageOptions

設定訊息的行為。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示錯誤訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示錯誤訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

options: MessageOptions

設定訊息的行為。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

向使用者顯示資訊訊息。可選擇性地提供一組將呈現為可點擊按鈕的項目陣列。

參數說明
message: string

要顯示的訊息。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

向使用者顯示資訊訊息。可選擇性地提供一組將呈現為可點擊按鈕的項目陣列。

參數說明
message: string

要顯示的訊息。

options: MessageOptions

設定訊息的行為。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示資訊訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示資訊訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

options: MessageOptions

設定訊息的行為。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

開啟輸入方塊以向使用者要求輸入。

如果取消輸入方塊 (例如按 ESC),傳回的值將會是 undefined。否則,傳回的值將會是使用者輸入的字串,或者如果使用者未輸入任何內容但透過 [確定] 關閉輸入方塊,則為空字串。

參數說明
options?: InputBoxOptions

設定輸入方塊的行為。

token?: CancellationToken

可用來發出取消訊號的 token。

傳回說明
Thenable<string | undefined>

解析為使用者提供的字串,或在關閉時解析為 undefined 的 thenable。

notebook 編輯器中顯示指定的 NotebookDocument

參數說明
document: NotebookDocument

要顯示的文字文件。

options?: NotebookDocumentShowOptions

用於設定顯示 notebook 編輯器行為的 編輯器選項

傳回說明
Thenable<NotebookEditor>

解析為 notebook 編輯器的 promise。

向使用者顯示檔案開啟對話方塊,允許選取要開啟的檔案。

參數說明
options?: OpenDialogOptions

控制對話方塊的選項。

傳回說明
Thenable<Uri[] | undefined>

解析為所選資源或 undefined 的 promise。

顯示允許多重選取的選取清單。

參數說明
items: readonly string[] | Thenable<readonly string[]>

字串陣列,或是解析為字串陣列的 promise。

options: QuickPickOptions & {canPickMany: true}

設定選取清單的行為。

token?: CancellationToken

可用來發出取消訊號的 token。

傳回說明
Thenable<string[] | undefined>

解析為所選項目或 undefined 的 thenable。

顯示選取清單。

參數說明
items: readonly string[] | Thenable<readonly string[]>

字串陣列,或是解析為字串陣列的 promise。

options?: QuickPickOptions

設定選取清單的行為。

token?: CancellationToken

可用來發出取消訊號的 token。

傳回說明
Thenable<string | undefined>

解析為所選字串或 undefined 的 thenable。

顯示允許多重選取的選取清單。

參數說明
items: readonly T[] | Thenable<readonly T[]>

項目陣列,或是解析為項目陣列的 promise。

options: QuickPickOptions & {canPickMany: true}

設定選取清單的行為。

token?: CancellationToken

可用來發出取消訊號的 token。

傳回說明
Thenable<T[] | undefined>

解析為所選項目或 undefined 的 thenable。

顯示選取清單。

參數說明
items: readonly T[] | Thenable<readonly T[]>

項目陣列,或是解析為項目陣列的 promise。

options?: QuickPickOptions

設定選取清單的行為。

token?: CancellationToken

可用來發出取消訊號的 token。

傳回說明
Thenable<T | undefined>

解析為所選項目或 undefined 的 thenable。

向使用者顯示檔案儲存對話方塊,允許選取要儲存的檔案。

參數說明
options?: SaveDialogOptions

控制對話方塊的選項。

傳回說明
Thenable<Uri | undefined>

解析為所選資源或 undefined 的 promise。

在文字編輯器中顯示指定的文件。可以提供 欄位 來控制編輯器的顯示位置。可能會變更現用編輯器

參數說明
document: TextDocument

要顯示的文字文件。

column?: ViewColumn

應顯示 編輯器的檢視欄位。預設為 現用。不存在的欄位會視需要建立,最多可達 ViewColumn.Nine。使用 ViewColumn.Beside 可在目前現用編輯器的旁邊開啟編輯器。

preserveFocus?: boolean

當為 true 時,編輯器將不會取得焦點。

傳回說明
Thenable<TextEditor>

解析為 編輯器的 promise。

在文字編輯器中顯示指定的文件。可以提供 選項 來控制正在顯示的編輯器選項。可能會變更現用編輯器

參數說明
document: TextDocument

要顯示的文字文件。

options?: TextDocumentShowOptions

用於設定顯示 編輯器行為的 編輯器選項

傳回說明
Thenable<TextEditor>

解析為 編輯器的 promise。

openTextDocument(uri).then(document => showTextDocument(document, options)) 的簡寫。

另請參閱 workspace.openTextDocument

參數說明
uri: Uri

資源識別碼。

options?: TextDocumentShowOptions

用於設定顯示 編輯器行為的 編輯器選項

傳回說明
Thenable<TextEditor>

解析為 編輯器的 promise。

顯示警告訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示警告訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

options: MessageOptions

設定訊息的行為。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示警告訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示警告訊息。

另請參閱 showInformationMessage

參數說明
message: string

要顯示的訊息。

options: MessageOptions

設定訊息的行為。

...items: T[]

將在訊息中轉譯為動作的一組項目。

傳回說明
Thenable<T | undefined>

解析為所選項目或在關閉時解析為 undefined 的 thenable。

顯示供挑選的 工作區資料夾選取清單。如果沒有開啟資料夾,則傳回 undefined

參數說明
options?: WorkspaceFolderPickOptions

設定工作區資料夾清單的行為。

傳回說明
Thenable<WorkspaceFolder | undefined>

解析為工作區資料夾或 undefined 的 promise。

在編輯器中顯示進度。當執行指定的回呼函式且其傳回的 promise 機構尚未 resolve 也未 reject 時,會顯示進度。應顯示進度的位置 (和其他詳細資料) 是透過傳入的 ProgressOptions 來定義。

參數說明
options: ProgressOptions

描述用於顯示進度之選項的 ProgressOptions 物件,例如其位置

task: (progress: Progress<{increment: number, message: string}>, token: CancellationToken) => Thenable<R>

傳回 promise 的回呼函式。可以使用提供的 Progress 物件回報進度狀態。

若要回報離散進度,請使用 increment 來指出已完成多少工作。每次帶有 increment 值的呼叫都會加總並反映為整體進度,直到達到 100% 為止 (例如值為 10 表示已完成 10% 的工作)。請注意,目前只有 ProgressLocation.Notification 能夠顯示離散進度。

若要監視作業是否已被使用者取消,請使用提供的 CancellationToken。請注意,目前只有 ProgressLocation.Notification 支援顯示取消按鈕來取消執行時間較長的作業。

傳回說明
Thenable<R>

工作回呼傳回的 thenable。

在執行指定的回呼函式且其傳回的 promise 尚未 resolve 或 reject 時,在原始檔控制檢視區塊中顯示進度。

  • 已取代 - 請改用 withProgress
參數說明
task: (progress: Progress<number>) => Thenable<R>

傳回 promise 的回呼函式。可以使用提供的 Progress 物件回報進度增量。

傳回說明
Thenable<R>

工作所傳回的 thenable。

workspace

用於處理目前工作區的命名空間。工作區是在編輯器視窗 (執行個體) 中開啟的一或多個資料夾的集合。

也可以在沒有工作區的情況下開啟編輯器。例如,當您從平台的 [檔案] 功能表選取檔案來開啟新的編輯器視窗時,您將不在工作區內。在此模式下,編輯器的某些功能會受限,但您仍可開啟文字檔案並進行編輯。

如需有關工作區概念的詳細資訊,請參閱 https://vscode.com.tw/docs/editor/workspaces

工作區支援接聽 fs 事件以及尋找檔案。兩者的效能都很好,且在編輯器行程外部執行,因此應一律使用它們來取代 nodejs 的對應項目。

變數

允許與本機和遠端檔案互動的 檔案系統 執行個體,例如 vscode.workspace.fs.readDirectory(someUri) 允許擷取目錄的所有項目,或者 vscode.workspace.fs.stat(anotherUri) 傳回檔案的中繼資料。

當 true 時,表示使用者已明確信任工作區的內容。

工作區的名稱。當未開啟任何工作區時為 undefined

如需有關工作區概念的詳細資訊,請參閱 https://vscode.com.tw/docs/editor/workspaces

目前編輯器已知的所有 notebook 文件。

workspaceFolders 第一個項目的 uri,以 string 表示。如果沒有第一個項目,則為 undefined

如需有關工作區的詳細資訊,請參閱 https://vscode.com.tw/docs/editor/workspaces

目前編輯器已知的所有文字文件。

工作區檔案的位置,例如

file:///Users/name/Development/myProject.code-workspace

untitled:1555503116870

針對尚未命名且尚未儲存的工作區。

視開啟的工作區而定,此值將會是

  • 當未開啟工作區時為 undefined
  • 否則為以 Uri 表示的工作區檔案路徑。如果工作區尚未命名,傳回的 URI 將會使用 untitled: 配置

例如,此位置可用於 vscode.openFolder 命令,以在關閉工作區後再次將其開啟。

範例

vscode.commands.executeCommand('vscode.openFolder', uriOfWorkspace);

如需有關工作區概念的詳細資訊,請參閱 https://vscode.com.tw/docs/editor/workspaces

注意:不建議使用 workspace.workspaceFile 將組態資料寫入檔案中。您可以為此目的使用 workspace.getConfiguration().update(),無論是開啟單一資料夾,或是未命名或已儲存的工作區,它都能運作。

在編輯器中開啟的工作區資料夾清單 (0-N)。當未開啟任何工作區時為 undefined

如需有關工作區的詳細資訊,請參閱 https://vscode.com.tw/docs/editor/workspaces

活動

組態 變更時發出的事件。

notebook 變更時發出的事件。

文字文件 變更時發出的事件。這通常發生在 內容 變更時,但也發生在諸如 dirty 狀態等其他事項變更時。

新增或移除工作區資料夾時發出的事件。

注意:如果新增、移除或變更第一個工作區資料夾,將不會觸發此事件,因為在該情況下,目前正在執行的擴充功能 (包括接聽此事件的擴充功能) 將會被終止並重新啟動,以便更新 (已取代的) rootPath 屬性以指向第一個工作區資料夾。

notebook 被處置時發出的事件。

注意 1:不保證在關閉編輯器標籤時會觸發此事件。

注意 2:notebook 可以是開啟但未顯示在編輯器中,這表示此事件可能會針對未顯示在編輯器中的 notebook 觸發。

文字文件 被處置或文字文件的語言識別碼已變更時發出的事件。

注意 1:不保證在關閉編輯器標籤時會觸發此事件,請使用 onDidChangeVisibleTextEditors 事件來得知編輯器何時變更。

注意 2:文件可以是開啟但未顯示在編輯器中,這表示此事件可能會針對未顯示在編輯器中的文件觸發。

建立檔案時發出的事件。

注意:此事件是由使用者操作觸發的,例如從總管建立檔案,或從 workspace.applyEdit API 觸發,但當磁碟上的檔案變更時 (例如由其他應用程式觸發,或使用 workspace.fs API 時),則不會觸發此事件。

刪除檔案時發出的事件。

注意 1:此事件是由使用者操作觸發的,例如從總管刪除檔案,或從 workspace.applyEdit API 觸發,但當磁碟上的檔案變更時 (例如由其他應用程式觸發,或使用 workspace.fs API 時),則不會觸發此事件。

注意 2:刪除包含子項目的資料夾時,只會觸發一個事件。

當目前的工作區受信任時觸發的事件。

開啟 notebook 時發出的事件。

開啟 文字文件 或文字文件的語言識別碼已變更時發出的事件。

若要在開啟可見文字文件時新增事件接聽程式,請使用 window 命名空間中的 TextEditor 事件。請注意

重新命名檔案時發出的事件。

注意 1:此事件是由使用者操作觸發的,例如從總管重新命名檔案,以及從 workspace.applyEdit API 觸發,但當磁碟上的檔案變更時 (例如由其他應用程式觸發,或使用 workspace.fs API 時),則不會觸發此事件。

注意 2:重新命名包含子項目的資料夾時,只會觸發一個事件。

儲存 notebook 時發出的事件。

文字文件 儲存到磁碟時發出的事件。

正在建立檔案時發出的事件。

注意 1:此事件是由使用者操作觸發的,例如從總管建立檔案,或從 workspace.applyEdit API 觸發。當磁碟上的檔案變更時 (例如由其他應用程式觸發,或使用 workspace.fs API 時),則不會觸發此事件。

注意 2:觸發此事件時,無法套用對正在建立之檔案的編輯。

正在刪除檔案時發出的事件。

注意 1:此事件是由使用者操作觸發的,例如從總管刪除檔案,或從 workspace.applyEdit API 觸發,但當磁碟上的檔案變更時 (例如由其他應用程式觸發,或使用 workspace.fs API 時),則不會觸發此事件。

注意 2:刪除包含子項目的資料夾時,只會觸發一個事件。

正在重新命名檔案時發出的事件。

注意 1:此事件是由使用者操作觸發的,例如從總管重新命名檔案,以及從 workspace.applyEdit API 觸發,但當磁碟上的檔案變更時 (例如由其他應用程式觸發,或使用 workspace.fs API 時),則不會觸發此事件。

注意 2:重新命名包含子項目的資料夾時,只會觸發一個事件。

即將將 notebook 文件儲存到磁碟時發出的事件。

注意 1:訂閱者可以透過註冊非同步工作來延遲儲存。為了資料完整性,編輯器可能會在未觸發此事件的情況下進行儲存。例如,在關閉且有未儲存的檔案時。

注意 2:訂閱者會依序呼叫,且他們可以透過註冊非同步工作來延遲儲存。針對行為異常的接聽程式,其實施了以下保護機制

  • 所有接聽程式共用一個整體時間預算,如果該預算耗盡,則不會再呼叫後續的接聽程式
  • 耗時過長或頻繁產生錯誤的接聽程式將不再被呼叫

目前的閾值為 1.5 秒的整體時間預算,且接聽程式在被忽略之前最多可以發生 3 次異常行為。

即將將 文字文件儲存到磁碟時發出的事件。

注意 1:訂閱者可以透過註冊非同步工作來延遲儲存。為了資料完整性,編輯器可能會在未觸發此事件的情況下進行儲存。例如,在關閉且有未儲存的檔案時。

注意 2:訂閱者會依序呼叫,且他們可以透過註冊非同步工作來延遲儲存。針對行為異常的接聽程式,其實施了以下保護機制

  • 所有接聽程式共用一個整體時間預算,如果該預算耗盡,則不會再呼叫後續的接聽程式
  • 耗時過長或頻繁產生錯誤的接聽程式將不再被呼叫

目前的閾值為 1.5 秒的整體時間預算,且接聽程式在被忽略之前最多可以發生 3 次異常行為。

函式

對一或多個資源進行變更,或依指定的 工作區編輯 所定義建立、刪除及重新命名資源。

工作區編輯的所有變更會按照其新增的相同順序進行套用。如果在相同位置進行多個文字插入,這些字串會按照進行「插入」的順序出現在產生的文字中,除非它們與資源編輯交錯。諸如「刪除檔案 a」->「在檔案 a 中插入文字」這類無效的順序會導致操作失敗。

套用僅包含文字編輯的工作區編輯時,會使用「全有或全無」的策略。具有資源建立或刪除的工作區編輯會中止操作,例如:當單一編輯失敗時,將不會嘗試後續的編輯。

參數說明
edit: WorkspaceEdit

工作區編輯。

metadata?: WorkspaceEditMetadata

編輯的選用 中繼資料

傳回說明
Thenable<boolean>

當編輯可被套用時解析的 thenable。

傳回相對於工作區資料夾的路徑。

當沒有 工作區資料夾 或路徑不包含在其中時,會傳回輸入。

參數說明
pathOrUri: string | Uri

路徑或 uri。當給定 uri 時,會使用其 fsPath

includeWorkspaceFolder?: boolean

當為 true 且給定的路徑包含在工作區資料夾內時,會在前方加上工作區的名稱。有多個工作區資料夾時預設為 true,否則為 false

傳回說明
string

相對於根目錄或輸入的路徑。

根據提供的參數建立會在檔案事件 (建立、變更、刪除) 發生時收到通知的檔案系統監視器。

根據預設,將會遞迴監視所有開啟的 工作區資料夾是否有檔案變更。

可以透過提供包含要監視之 base 路徑的 RelativePattern 來新增用於檔案監視的其他路徑。如果路徑是資料夾且 pattern 很複雜 (例如包含 ** 或路徑區段),則會進行遞迴監視,否則將進行非遞迴監視 (亦即僅會回報路徑第一層的變更)。

注意,檔案系統中不存在的路徑將會延遲監視,直到建立為止,然後再根據提供的參數進行監視。如果刪除了所監視的路徑,監視器將會暫停且不回報任何事件,直到再次建立該路徑為止。

如果可能的話,請將遞迴監視器的使用保持在最低限度,因為遞迴檔案監視相當耗費資源。

提供 string 作為 globPattern 可作為監視所有開啟之工作區資料夾中檔案事件的便利方法。它無法用於新增更多用於檔案監視的資料夾,也不會回報不屬於開啟之工作區資料夾之資料夾的任何檔案事件。

注意globPattern 參數的大小寫區分將取決於監視器執行所在的檔案系統:在 Windows 和 macOS 上,比對將不區分大小寫,而在 Linux 上則會區分大小寫。

您可以選擇性地提供用來忽略特定類型事件的旗標。

若要停止接聽事件,必須處置監視器。

注意,刪除資料夾所產生的檔案事件可能不包含所含檔案的事件。例如,當資料夾移至垃圾桶時,只會回報一個事件,因為從技術上講,這是一個重新命名/移動操作,而不是對其中每個檔案的刪除操作。除此之外,為了效能最佳化,會將屬於同一父系操作 (例如刪除資料夾) 的多個事件摺疊成該父系的一個事件。因此,如果您需要知道所有已刪除的檔案,您必須使用 ** 進行監視,並自行處理所有檔案事件。

注意,遞迴檔案監視器的檔案事件可能會根據使用者設定而被排除。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

一個新的檔案系統監視器執行個體。當不再需要時必須予以處置。

將內容從 Uint8Array 解碼為 string。您必須一次提供完整內容,以確保編碼能正確套用。請勿使用此方法分塊解碼內容,因為這可能會導致不正確的結果。

將根據設定和緩衝區內容 (例如位元組順序記號) 來挑選編碼。

注意,如果您解碼編碼所不支援的內容,則結果可能會包含適當的替代字元。

  • throws - 當內容為二進位時,此方法將會擲回錯誤。
參數說明
content: Uint8Array

要解碼為 Uint8Array 的文字內容。

傳回說明
Thenable<string>

解析為解碼後 string 的 thenable。

使用提供的編碼將內容從 Uint8Array 解碼為 string。您必須一次提供完整內容,以確保編碼能正確套用。請勿使用此方法分塊解碼內容,因為這可能會導致不正確的結果。

注意,如果您解碼編碼所不支援的內容,則結果可能會包含適當的替代字元。

  • throws - 當內容為二進位時,此方法將會擲回錯誤。
參數說明
content: Uint8Array

要解碼為 Uint8Array 的文字內容。

options: {encoding: string}

用於挑選編碼的其他內容。

傳回說明
Thenable<string>

解析為解碼後 string 的 thenable。

將內容從 Uint8Array 解碼為 string。您必須一次提供完整內容,以確保編碼能正確套用。請勿使用此方法分塊解碼內容,因為這可能會導致不正確的結果。

根據設定和緩衝區內容 (例如位元組順序記號) 來挑選編碼。

注意,如果您解碼編碼所不支援的內容,則結果可能會包含適當的替代字元。

  • throws - 當內容為二進位時,此方法將會擲回錯誤。
參數說明
content: Uint8Array

要解碼為 Uint8Array 的內容。

options: {uri: Uri}

用於挑選編碼的其他內容。

傳回說明
Thenable<string>

解析為解碼後 string 的 thenable。

string 的內容編碼為 Uint8Array

將根據設定挑選編碼。

參數說明
content: string

要解碼為 string 的內容。

傳回說明
Thenable<Uint8Array>

解析為已編碼 Uint8Array 的 thenable。

使用提供的編碼將 string 的內容編碼為 Uint8Array

參數說明
content: string

要解碼為 string 的內容。

options: {encoding: string}

用於挑選編碼的其他內容。

傳回說明
Thenable<Uint8Array>

解析為已編碼 Uint8Array 的 thenable。

string 的內容編碼為 Uint8Array

根據設定挑選編碼。

參數說明
content: string

要解碼為 string 的內容。

options: {uri: Uri}

用於挑選編碼的其他內容。

傳回說明
Thenable<Uint8Array>

解析為已編碼 Uint8Array 的 thenable。

尋找工作區中所有 工作區資料夾 內的檔案。

範例

findFiles('**/*.js', '**/node_modules/**', 10);
參數說明
include: GlobPattern

定義要搜尋之檔案的 glob 模式。將針對相對於其工作區之結果符合項目的檔案路徑進行 glob 模式比對。使用 相對模式 將搜尋結果限制在特定的 工作區資料夾 中。

exclude?: GlobPattern

定義要排除之檔案和資料夾的 glob 模式。將針對相對於其工作區之結果符合項目的檔案路徑進行 glob 模式比對。當為 undefined 時,將套用預設的檔案排除項目(例如 files.exclude 設定,但不包含 search.exclude)。當為 null 時,將不套用任何排除項目。

maxResults?: number

結果的上限。

token?: CancellationToken

可用來向底層搜尋引擎發出取消訊號的 token。

傳回說明
Thenable<Uri[]>

解析為資源識別碼陣列的 thenable。如果未開啟任何 工作區資料夾,將不會傳回任何結果。

取得工作區設定物件。

當提供區段識別碼時,只會傳回該部分的設定。區段識別碼中的點會被解釋為子系存取,例如 { myExt: { setting: { doIt: true }}}getConfiguration('myExt.setting').get('doIt') === true

當提供範圍時,會傳回侷限於該範圍的設定。範圍可以是資源、語言識別碼或兩者。

參數說明
section?: string

以點分隔的識別碼。

scope?: ConfigurationScope

正在查詢設定的範圍。

傳回說明
WorkspaceConfiguration

完整設定或子集。

傳回包含給定 uri 的 工作區資料夾

  • 當給定的 uri 不符合任何工作區資料夾時,傳回 undefined
  • 當給定的 uri 本身就是工作區資料夾時,傳回 input
參數說明
uri: Uri

一個 uri。

傳回說明
WorkspaceFolder | undefined

工作區資料夾或 undefined

開啟筆記本。如果此筆記本已經 載入,將會提早傳回。否則會載入筆記本並觸發 onDidOpenNotebookDocument 事件。

請注意,所傳回筆記本的生命週期是由編輯器擁有,而非由延伸模組擁有。這表示在此之後隨時可能會發生 onDidCloseNotebookDocument 事件。

請注意,開啟筆記本並不會顯示筆記本編輯器。此函式只會傳回可以在筆記本編輯器中顯示的筆記本文件,但它也可以用於其他用途。

參數說明
uri: Uri

要開啟的資源。

傳回說明
Thenable<NotebookDocument>

解析為 筆記本 的 promise

開啟未命名的筆記本。當要儲存文件時,編輯器會提示使用者輸入檔案路徑。

另請參閱 workspace.openNotebookDocument

參數說明
notebookType: string

應使用的筆記本類型。

content?: NotebookData

筆記本的初始內容。

傳回說明
Thenable<NotebookDocument>

解析為 筆記本 的 promise。

開啟文件。如果此文件已經開啟,將會提早傳回。否則會載入文件並觸發 didOpen 事件。

文件由 Uri 表示。根據 配置,適用以下規則:

  • file 配置:開啟磁碟上的檔案 (openTextDocument(Uri.file(path)))。如果檔案不存在或無法載入,將會遭到拒絕。
  • untitled 配置:開啟具有關聯路徑的空白未命名檔案 (openTextDocument(Uri.file(path).with({ scheme: 'untitled' })))。語言將衍生自檔案名稱。
  • 對於所有其他配置,將會查詢所貢獻的 文字文件內容提供者檔案系統提供者

請注意,所傳回文件的生命週期是由編輯器擁有,而非由延伸模組擁有。這表示在開啟之後隨時可能會發生 onDidClose 事件。

參數說明
uri: Uri

識別要開啟的資源。

options?: {encoding: string}
傳回說明
Thenable<TextDocument>

解析為 文件 的 promise。

openTextDocument(Uri.file(path)) 的簡寫。

另請參閱 workspace.openTextDocument

參數說明
path: string

磁碟上檔案的路徑。

options?: {encoding: string}
傳回說明
Thenable<TextDocument>

解析為 文件 的 promise。

開啟未命名的文字文件。當要儲存文件時,編輯器會提示使用者輸入檔案路徑。options 參數允許指定文件的 語言 和/或 內容

參數說明
options?: {content: string, encoding: string, language: string}

用於控制文件如何建立的選項。

傳回說明
Thenable<TextDocument>

解析為 文件 的 promise。

為給定的配置(例如 ftp)註冊檔案系統提供者。

每個配置只能有一個提供者,當某個配置已被其他提供者宣告或已被保留時,將會擲回錯誤。

參數說明
scheme: string

提供者所註冊的 uri-配置

provider: FileSystemProvider

檔案系統提供者。

options?: {isCaseSensitive: boolean, isReadonly: boolean | MarkdownString}

關於提供者的不可變中繼資料。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊 筆記本序列化器

筆記本序列化器必須透過 notebooks 延伸模組點來貢獻。當開啟筆記本檔案時,編輯器會傳送 onNotebook:<notebookType> 啟用事件,而延伸模組必須回應以註冊其序列化器。

參數說明
notebookType: string

一個筆記本。

serializer: NotebookSerializer

一個筆記本序列化器。

options?: NotebookDocumentContentOptions

定義應保存筆記本哪些部分的選用內容選項

傳回說明
Disposable

在處置時取消註冊此序列化器的 Disposable

註冊工作提供者。

  • 已棄用 - 請改用 tasks 命名空間上的對應函式
參數說明
type: string

此提供者註冊的工作種類類型。

provider: TaskProvider<Task>

工作提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

註冊文字文件內容提供者。

每個配置只能註冊一個提供者。

參數說明
scheme: string

要註冊的 uri 配置。

provider: TextDocumentContentProvider

一個內容提供者。

傳回說明
Disposable

當被處置時會取消註冊此提供者的 Disposable

儲存由給定資源識別的編輯器,並傳回產生的資源;如果儲存不成功,或是找不到具有給定資源的編輯器,則傳回 undefined

請注意,必須開啟帶有所提供資源的編輯器才能進行儲存。

參數說明
uri: Uri

要儲存之已開啟編輯器的關聯 uri。

傳回說明
Thenable<Uri | undefined>

在儲存作業完成時解析的 thenable。

儲存所有未儲存的檔案。

參數說明
includeUntitled?: boolean

同時儲存在此次工作階段期間建立的檔案。

傳回說明
Thenable<boolean>

在檔案儲存完畢時解析的 thenable。對於任何儲存失敗的檔案,將會傳回 false

將由給定資源識別的編輯器另存為使用者所提供的新檔案名稱,並傳回產生的資源;如果儲存不成功、已取消,或是找不到具有給定資源的編輯器,則傳回 undefined

請注意,必須開啟帶有所提供資源的編輯器才能進行另存新檔。

參數說明
uri: Uri

要另存新檔之已開啟編輯器的關聯 uri。

傳回說明
Thenable<Uri | undefined>

在另存新檔作業完成時解析的 thenable。

此方法會將 vscode.workspace.workspaceFolders 陣列中從索引 start 開始的 deleteCount工作區資料夾 取代為一組選用的 workspaceFoldersToAdd。這種「splice」行為可以用於在單一操作中新增、移除和變更工作區資料夾。

注意:在某些情況下,呼叫此方法可能會導致目前執行的延伸模組(包括呼叫此方法的延伸模組)遭到終止並重新啟動。例如,當新增、移除或變更第一個工作區資料夾時,(已棄用的) 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: ...});

移除現有的工作區資料夾,然後以不同的名稱重新新增它以重新命名該資料夾,這是合法的。

注意:在未等待 onDidChangeWorkspaceFolders() 觸發之前,多次呼叫 updateWorkspaceFolders() 是不合法的。

參數說明
start: number

從目前開啟的 工作區資料夾 清單中的哪個以 0 為起始的索引位置開始刪除工作區資料夾。

deleteCount: number

要移除的工作區資料夾的選用數量。

...workspaceFoldersToAdd: Array<{name: string, uri: Uri}>

要用來取代已刪除資料夾的選用變數工作區資料夾集。每個工作區都透過一個強制的 URI 和一個選用的名稱來識別。

傳回說明
boolean

如果操作成功啟動則為 true,否則如果使用的引數會導致無效的工作區資料夾狀態(例如具有相同 URI 的 2 個資料夾),則為 false。

AccessibilityInformation

控制螢幕閱讀器行為的無障礙資訊。

屬性

當項目取得焦點時,由螢幕閱讀器讀出的標籤。

定義螢幕閱讀器如何與其互動的小工具角色。在特殊情況下(例如樹狀結構元素表現得像核取方塊時),應該設定此角色。如果未指定角色,編輯器將自動挑選適當的角色。關於 aria 角色的詳細資訊,請參閱 https://w3c.github.io/aria/#widget_roles

AuthenticationForceNewSessionOptions

使用 forceNewSession 旗標呼叫 authentication.getSession 時要使用的選用選項。

AuthenticationGetSessionOptions

AuthenticationProvider 取得 AuthenticationSession 時要使用的選項。

屬性

您想要取得其工作階段的帳戶。這會傳遞給驗證提供者,用於建立正確的工作階段。

是否應清除現有的工作階段偏好設定。

對於支援同時登入多個帳戶的驗證提供者,當呼叫 getSession 時,系統會提示使用者選取要使用的帳戶。此偏好設定會被記住,直到使用此旗標呼叫 getSession 為止。

注意:此偏好設定是延伸模組專屬的。因此,如果某個延伸模組呼叫 getSession,它不會影響另一個呼叫 getSession 的延伸模組的工作階段偏好設定。此外,該偏好設定是針對目前工作區以及全域設定的。這意味著新工作區一開始會使用「全域」值,然後當提供此旗標時,可以為該工作區設定新值。這也意味著如果新工作區設定了此旗標,先前存在的工作區不會失去其偏好設定。

預設為 false。

如果沒有相符的工作階段,是否應執行登入。

若為 true,將會顯示強制回應對話方塊,要求使用者登入。若為 false,帳戶活動列圖示上將會顯示帶有數字的徽章。登入選單下方將會新增該延伸模組的項目。這允許安靜地提示使用者登入。

如果您提供選項,您也會看到對話方塊,但會帶有所提供的額外內容。

如果有相符的工作階段,但延伸模組尚未獲授權存取它,將此設定為 true 也會立即導致顯示強制回應對話方塊,而 false 則會在帳戶圖示上新增帶數字的徽章。

預設為 false。

注意:您無法將此選項與 silent 一起使用。

即使已經有可用工作階段,我們是否仍應嘗試重新驗證。

若為 true,將會顯示強制回應對話方塊,要求使用者再次登入。這主要用於權杖遺失某些授權而需要重新鑄造的情境。

如果您提供選項,您也會看到對話方塊,但會帶有所提供的額外內容。

如果沒有現有的工作階段且 forceNewSession 為 true,它的行為將與 createIfNone 完全相同。

這預設為 false。

我們是否應在「帳戶」選單中顯示登入指示。

若為 false,使用者的「帳戶」選單上將會顯示帶有該延伸模組登入選項的徽章。若為 true,則不會顯示任何指示。

預設為 false。

注意:您無法將此選項與任何其他會提示使用者的選項(例如 createIfNone)一起使用。

AuthenticationGetSessionPresentationOptions

搭配互動式選項 forceNewSessioncreateIfNone 呼叫 authentication.getSession 時要使用的選用選項。

屬性

當我們要求重新驗證時將顯示給使用者的選用訊息。提供關於為什麼要求使用者重新驗證的額外內容,有助於提高他們接受的機率。

AuthenticationProvider

用於對服務執行驗證的提供者。

活動

當工作階段陣列變更,或工作階段內的資料變更時觸發的 Event

方法

提示使用者登入。

如果登入成功,應觸發 onDidChangeSessions 事件。

如果登入失敗,應傳回已拒絕的 promise。

如果提供者已指定它不支援多個帳戶,則如果已經有符合這些範圍的現有工作階段,就不應呼叫此方法。

參數說明
scopes: readonly string[]

應使用的新工作階段所具備的範圍(權限)清單。

options: AuthenticationProviderSessionOptions

建立工作階段的額外選項。

傳回說明
Thenable<AuthenticationSession>

解析為驗證工作階段的 promise。

取得工作階段清單。

參數說明
scopes: readonly string[]

選用的範圍清單。如果提供,傳回的工作階段應符合這些權限,否則應傳回所有工作階段。

options: AuthenticationProviderSessionOptions

取得工作階段的額外選項。

傳回說明
Thenable<AuthenticationSession[]>

解析為驗證工作階段陣列的 promise。

移除對應至工作階段 ID 的工作階段。

如果移除成功,應觸發 onDidChangeSessions 事件。

如果無法移除工作階段,提供者應以錯誤訊息拒絕。

參數說明
sessionId: string

要移除的工作階段 ID。

傳回說明
Thenable<void>

AuthenticationProviderAuthenticationSessionsChangeEvent

當新增、移除或變更 AuthenticationSession 時觸發的 Event

屬性

已變更之 AuthenticationProviderAuthenticationSessions。當工作階段的資料(不含 id)更新時,工作階段即告變更。這的一個例子是工作階段重新整理,導致為該工作階段設定了新的存取權杖。

AuthenticationProviderInformation

關於 AuthenticationProvider 的基本資訊

屬性

驗證提供者的唯一識別碼。

驗證提供者的人類可讀名稱。

AuthenticationProviderOptions

建立 AuthenticationProvider 的選項。

屬性

是否可以使用此提供者同時登入多個帳戶。如果未指定,預設為 false。

AuthenticationProviderSessionOptions

屬性

正在查詢的帳戶。如果傳入此項,提供者應嘗試傳回僅與此帳戶相關的工作階段。

AuthenticationSession

表示目前已登入使用者的工作階段。

屬性

存取權杖。此權杖應用於對服務的請求進行驗證。由 OAuth 推廣。

與工作階段相關聯的帳戶。

驗證工作階段的識別碼。

ID 權杖。此權杖包含關於使用者的身分資訊。由 OpenID Connect 推廣。

工作階段的存取權杖所授予的權限。可用的範圍由 AuthenticationProvider 定義。

AuthenticationSessionAccountInformation

AuthenticationSession 相關聯之帳戶的資訊。

屬性

帳戶的唯一識別碼。

帳戶的人類可讀名稱。

AuthenticationSessionsChangeEvent

當新增、移除或變更 AuthenticationSession 時觸發的 Event

屬性

其工作階段已變更的 AuthenticationProvider

AuthenticationWwwAuthenticateRequest

表示根據 WWW-Authenticate 標頭值建立工作階段的參數。當 API 傳回帶有 WWW-Authenticate 標頭的 401,指出需要額外驗證時,會使用此參數。其詳細資訊將傳遞至驗證提供者以建立工作階段。

  • 注意 - 授權提供者必須支援處理挑戰,特別是此 WWW-Authenticate 值中的挑戰。

屬性

如果在 WWW-Authenticate 標頭中找不到任何範圍時要使用的後備範圍。

觸發此挑戰的原始 WWW-Authenticate 標頭值。這將由驗證提供者進行解析,以擷取必要的挑戰資訊。

AutoClosingPair

描述字串對,其中當輸入開啟字串時,將會自動插入關閉字串。

屬性

輸入開啟字串時將自動插入的關閉字串。

不應自動關閉此字串對的一組權杖。

將觸發自動插入關閉字串的字串。

BranchCoverage

包含 StatementCoverage 分支的涵蓋範圍資訊。

建構子

參數說明
executed: number | boolean

此分支執行的次數,或者如果確切次數未知則為指示是否執行過它的布林值。如果為零或 false,該分支將被標記為未涵蓋。

location?: Range | Position

分支位置。

label?: string
傳回說明
BranchCoverage

屬性

此分支執行的次數,或者如果確切次數未知則為指示是否執行過它的布林值。如果為零或 false,該分支將被標記為未涵蓋。

分支的標籤,例如用於「the ${label} branch was not taken」的情境中。

分支位置。

Breakpoint

所有中斷點類型的基底類別。

建構子

建立新的中斷點

參數說明
enabled?: boolean

中斷點是否已啟用。

condition?: string

條件中斷點的運算式

hitCondition?: string

控制忽略多少次中斷點命中的運算式

logMessage?: string

命中中斷點時要顯示的記錄訊息

傳回說明
Breakpoint

屬性

條件中斷點的選用運算式。

中斷點是否已啟用。

控制忽略多少次中斷點命中的選用運算式。

中斷點的唯一 ID。

命中此中斷點時記錄的選用訊息。{} 中的內嵌運算式會由偵錯介面卡進行內插。

BreakpointsChangeEvent

描述 中斷點 集合變更的事件。

屬性

已新增的中斷點。

已變更的中斷點。

已移除的中斷點。

CallHierarchyIncomingCall

表示連入呼叫,例如方法或建構子的呼叫者。

建構子

建立新的呼叫物件。

參數說明
item: CallHierarchyItem

發起呼叫的項目。

fromRanges: Range[]

出現呼叫的範圍。

傳回說明
CallHierarchyIncomingCall

屬性

發起呼叫的項目。

出現呼叫的範圍。這是相對於由 this.from 表示之呼叫者的範圍。

CallHierarchyItem

在呼叫階層的內容中,表示諸如函式或建構子之類的程式設計建構。

建構子

建立新的呼叫階層項目。

參數說明
kind: SymbolKind
name: string
detail: string
uri: Uri
range: Range
selectionRange: Range
傳回說明
CallHierarchyItem

屬性

此項目的更多詳細資料,例如函式的簽章。

此項目的種類。

此項目的名稱。

包圍此符號的範圍,不包含前導/尾端空白,但包含其他所有內容,例如註解和程式碼。

當挑選此符號時應選取並顯示的範圍,例如函式名稱。必須包含在 range 中。

此項目的標籤。

此項目的資源識別碼。

CallHierarchyOutgoingCall

表示連出呼叫,例如從方法呼叫 getter,或從建構子呼叫方法等。

建構子

建立新的呼叫物件。

參數說明
item: CallHierarchyItem

正在被呼叫的項目

fromRanges: Range[]

出現呼叫的範圍。

傳回說明
CallHierarchyOutgoingCall

屬性

呼叫此項目的範圍。這是相對於呼叫者的範圍,例如傳遞給 provideCallHierarchyOutgoingCalls 的項目,而不是 this.to

被呼叫的項目。

CallHierarchyProvider

呼叫階層提供者介面描述了延伸模組與呼叫階層功能之間的合約,該功能允許瀏覽函式、方法、建構子等的呼叫與呼叫者。

方法

透過傳回給定文件和位置所表示的項目來引導呼叫階層。此項目將作為進入呼叫圖表的進入點。當給定位置沒有項目時,提供者應傳回 undefinednull

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<CallHierarchyItem | CallHierarchyItem[]>

一個或多個呼叫階層項目,或是解析為此類項目的 thenable。若無結果,可以傳回 undefinednull 或空陣列來表示。

提供項目的所有連入呼叫,例如方法的所有呼叫者。在圖表術語中,這描述了呼叫圖表內部的有向且附註的邊,例如給定項目是起始節點,而結果是可以到達的節點。

參數說明
item: CallHierarchyItem

應計算其連入呼叫的階層項目。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<CallHierarchyIncomingCall[]>

一組連入呼叫或解析為此類呼叫的 thenable。若無結果,可以傳回 undefinednull 來表示。

提供項目的所有連出呼叫,例如從給定項目對函式、方法或建構子的呼叫。在圖表術語中,這描述了呼叫圖表內部的有向且附註的邊,例如給定項目是起始節點,而結果是可以到達的節點。

參數說明
item: CallHierarchyItem

應計算其連出呼叫的階層項目。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<CallHierarchyOutgoingCall[]>

一組連出呼叫或解析為此類呼叫的 thenable。若無結果,可以傳回 undefinednull 來表示。

CancellationError

應用於發出操作取消訊號的錯誤類型。

此類型可用於回應 取消 token 被取消,或是當操作正由該操作的執行者取消時。

建構子

建立新的取消錯誤。

參數說明
傳回說明
CancellationError

CancellationToken

取消 token 會傳遞給非同步或長時間執行的操作以要求取消,例如因為使用者繼續輸入而取消完成項目的請求。

若要取得 CancellationToken 的執行個體,請使用 CancellationTokenSource

屬性

當 token 已被取消時為 true,否則為 false

取消時觸發的 Event

CancellationTokenSource

取消來源會建立並控制 取消 token

建構子

參數說明
傳回說明
CancellationTokenSource

屬性

此來源的取消 token。

方法

發出對該 token 的取消訊號。

參數說明
傳回說明
void

處置物件並釋放資源。

參數說明
傳回說明
void

CharacterPair

兩個字元的元組,例如一對開頭和結尾括號。

ChatContext

傳遞給參與者的額外內容。

屬性

目前聊天工作階段中迄今為止的所有聊天訊息。目前僅包含目前參與者的聊天訊息。

ChatErrorDetails

表示來自聊天請求的錯誤結果。

屬性

顯示給使用者的錯誤訊息。

如果設定為 true,回應將會部分模糊化。

ChatFollowup

參與者建議的後續問題。

屬性

依預設,後續追蹤會前往相同的參與者/命令。但可以設定此屬性來叫用不同的命令。

要顯示給使用者的標題。當未指定此項時,將預設顯示提示。

依預設,後續追蹤會前往相同的參與者/命令。但可以設定此屬性透過 ID 叫用不同的參與者。後續追蹤只能叫用由相同延伸模組所貢獻的參與者。

要傳送至聊天的訊息。

ChatFollowupProvider

將在每個請求之後叫用一次,以取得建議的後續問題以顯示給使用者。使用者可以按一下後續追蹤將其傳送至聊天。

方法

為給定結果提供後續追蹤。

參數說明
result: ChatResult

此物件具有與從參與者回呼傳回的結果相同的屬性(包括 metadata),但不是相同的執行個體。

context: ChatContext

傳遞給參與者的額外內容。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<ChatFollowup[]>

ChatLanguageModelToolReference

使用者手動附加至其請求的工具參考,可以使用內嵌的 # 語法,或是透過迴紋針按鈕作為附件。

屬性

工具名稱。指 lm.tools 中列出的工具。

prompt 中參考的開始和結束索引。當為 undefined 時,該參考不屬於提示文字的一部分。

請注意,這些索引將前導 # 字元納入考慮,這意味著它們可以用來直接修改提示。

ChatParticipant

使用者可以在聊天工作階段中使用 字首來叫用聊天參與者。當被叫用時,它會處理聊天請求,並全權負責向使用者提供回應。ChatParticipant 是使用 chat.createChatParticipant 建立的。

活動

每當收到結果的意見反應時(例如當使用者對結果按讚或按負評時)觸發的事件。

傳入的 result 保證具有與先前從此聊天參與者的處理常式傳回的結果相同的屬性。

屬性

此提供者將在每個請求之後呼叫一次,以擷取建議的後續問題。

UI 中顯示的參與者圖示。

此參與者的唯一 ID。

此參與者請求的處理常式。

方法

處置此參與者並釋放資源。

參數說明
傳回說明
void

ChatParticipantToolToken

在處理聊天請求的內容中叫用工具時,可以傳遞給 lm.invokeTool 的 token。

ChatPromptReference

使用者新增至其聊天請求的值的參考。

屬性

此類參考的唯一識別碼。

可以在 LLM 提示中使用的此值的描述。

prompt 中參考的開始和結束索引。當為 undefined 時,該參考不屬於提示文字的一部分。

請注意,這些索引將前導 # 字元納入考慮,這意味著它們可以用來直接修改提示。

此參考的值。目前使用 string | Uri | Location 類型,但未來可能會擴充。

ChatRequest

對聊天參與者的請求。

屬性

為此請求選取的 [ChatCommand command](#ChatCommand command) 的名稱。

這是目前在 UI 中選取的模型。延伸模組可以使用此模型,或使用 lm.selectChatModels 來挑選其他模型。請勿在請求的生命週期結束後保留它。

使用者所輸入的提示。

有關此請求中使用的參考的資訊會儲存在 ChatRequest.references 中。

請注意,參與者的 [ChatParticipant.name name](#ChatParticipant.name name) 和 [ChatCommand.name command](#ChatCommand.name command) 不屬於提示的一部分。

提示中參照的參考及其值的清單。

請注意,提示包含編寫時的參考,參與者可以自行進一步修改提示,例如透過內嵌參考值或建立包含解析值的標題連結。參考會根據其在提示中的範圍以反向排序。這意味著提示中的最後一個參考在此清單中是第一個。這簡化了提示的字串操作。

在處理聊天請求的內容中叫用工具時,可以傳遞給 lm.invokeTool 的 token。這將工具叫用與聊天工作階段建立關聯。

使用者附加至其請求的工具清單。

當工具參考存在時,聊天參與者應使用 LanguageModelChatToolMode.Required 發出聊天請求,以強制語言模型為工具產生輸入。然後,參與者可以使用 lm.invokeTool 來使用工具,並將結果附加到其針對使用者提示詞的請求中。該工具可能會為使用者的請求提供有用的額外背景資訊。

ChatRequestHandler

ChatRequestTurn

表示聊天記錄中的使用者請求。

屬性

為此請求選取的 [ChatCommand command](#ChatCommand command) 的名稱。

此請求所針對的聊天參與者 ID。

使用者所輸入的提示。

有關此請求中使用的參考資訊,會儲存在 ChatRequestTurn.references 中。

請注意,參與者的 [ChatParticipant.name name](#ChatParticipant.name name) 和 [ChatCommand.name command](#ChatCommand.name command) 不屬於提示的一部分。

此訊息中所使用的參考。

附加至此請求的工具清單。

ChatResponseAnchorPart

表示聊天回應中作為錨點的一部分,該部分會呈現為指向目標的連結。

建構子

建立新的 ChatResponseAnchorPart。

參數說明
value: Uri | Location

URI 或位置。

title?: string

與數值一起呈現的選用標題。

傳回說明
ChatResponseAnchorPart

屬性

與數值一起呈現的選用標題。

此錨點的目標。

ChatResponseCommandButtonPart

表示聊天回應中作為執行命令之按鈕的一部分。

建構子

建立新的 ChatResponseCommandButtonPart。

參數說明
value: Command

按一下按鈕時將會執行的命令。

傳回說明
ChatResponseCommandButtonPart

屬性

按一下按鈕時將會執行的命令。

ChatResponseFileTree

表示聊天回應中的檔案樹狀結構。

屬性

子檔案樹的陣列(如果目前的檔案樹是一個目錄)。

檔案或目錄的名稱。

ChatResponseFileTreePart

表示聊天回應中作為檔案樹的一部分。

建構子

建立新的 ChatResponseFileTreePart。

參數說明
value: ChatResponseFileTree[]

檔案樹資料。

baseUri: Uri

此檔案樹所相對的基底 URI。

傳回說明
ChatResponseFileTreePart

屬性

此檔案樹所相對的基底 URI

檔案樹資料。

ChatResponseMarkdownPart

表示格式化為 Markdown 的聊天回應一部分。

建構子

建立新的 ChatResponseMarkdownPart。

參數說明
value: string | MarkdownString

Markdown 字串或應被解釋為 Markdown 的字串。不支援 MarkdownString.isTrusted 的布林值形式。

傳回說明
ChatResponseMarkdownPart

屬性

Markdown 字串或應被解釋為 Markdown 的字串。

ChatResponsePart

表示不同的聊天回應類型。

ChatResponseProgressPart

表示聊天回應中作為進度訊息的一部分。

建構子

建立新的 ChatResponseProgressPart。

參數說明
value: string

進度訊息

傳回說明
ChatResponseProgressPart

屬性

進度訊息

ChatResponseReferencePart

表示聊天回應中作為參考的一部分,該參考與內容分開呈現。

建構子

建立新的 ChatResponseReferencePart。

參數說明
value: Uri | Location

URI 或位置

iconPath?: IconPath

UI 中顯示之參考的圖示

傳回說明
ChatResponseReferencePart

屬性

參考的圖示。

參考目標。

ChatResponseStream

ChatResponseStream 是參與者將內容傳回聊天檢視的方式。它提供了多種方法來串流傳輸不同類型的內容,這些內容將以適當的方式在聊天檢視中呈現。參與者可以針對想要傳回的內容類型使用輔助方法,或者可以具現化 ChatResponsePart 並使用泛型 ChatResponseStream.push 方法將其傳回。

方法

將錨點部分推送到此串流。這是 push(new ChatResponseAnchorPart(value, title)) 的簡寫。錨點是指向某種資源的內嵌參考。

參數說明
value: Uri | Location

URI 或位置。

title?: string

與數值一起呈現的選用標題。

傳回說明
void

將命令按鈕部分推送到此串流。這是 push(new ChatResponseCommandButtonPart(value, title)) 的簡寫。

參數說明
command: Command

按一下按鈕時將會執行的命令。

傳回說明
void

將檔案樹部分推送到此串流。這是 push(new ChatResponseFileTreePart(value)) 的簡寫。

參數說明
value: ChatResponseFileTree[]

檔案樹資料。

baseUri: Uri

此檔案樹所相對的基底 URI。

傳回說明
void

將 markdown 部分推送到此串流。這是 push(new ChatResponseMarkdownPart(value)) 的簡寫。

另請參閱 ChatResponseStream.push

參數說明
value: string | MarkdownString

Markdown 字串或應被解釋為 Markdown 的字串。不支援 MarkdownString.isTrusted 的布林值形式。

傳回說明
void

將進度部分推送到此串流。這是 push(new ChatResponseProgressPart(value)) 的簡寫。

參數說明
value: string

進度訊息

傳回說明
void

將部分推送到此串流。

參數說明
part: ChatResponsePart

回應部分、已呈現的內容或後設資料

傳回說明
void

將參考推送到此串流。這是 push(new ChatResponseReferencePart(value)) 的簡寫。

請注意,此參考不會與回應內嵌呈現。

參數說明
value: Uri | Location

URI 或位置

iconPath?: IconPath

UI 中顯示之參考的圖示

傳回說明
void

ChatResponseTurn

表示聊天記錄中聊天參與者的回應。

屬性

此回應來源之命令的名稱。

此回應來源之聊天參與者的 ID。

從聊天參與者收到的內容。僅表示代表實際內容(而非後設資料)的串流部分。

從聊天參與者收到的結果。

ChatResult

聊天請求的結果。

屬性

如果請求產生錯誤,此屬性會定義錯誤詳細資料。

此結果的任意後設資料。可以是任何東西,但必須是可以進行 JSON 字串化的內容。

ChatResultFeedback

表示使用者對結果的回饋意見。

屬性

收到的回饋意見類型。

使用者正在提供回饋意見的 ChatResult。此物件具有與參與者回呼傳回之結果相同的屬性(包括 metadata),但並非相同的執行個體。

ChatResultFeedbackKind

表示收到的使用者回饋意見類型。

列舉成員

使用者將結果標記為無幫助。

使用者將結果標記為有幫助。

Clipboard

剪貼簿提供對系統剪貼簿的讀取和寫入存取權。

方法

以文字形式讀取目前的剪貼簿內容。

參數說明
傳回說明
Thenable<string>

會解析為字串的 thenable。

將文字寫入剪貼簿。

參數說明
value: string
傳回說明
Thenable<void>

在寫入完成時進行解析的 thenable。

CodeAction

程式碼動作表示可在程式碼中執行的變更,例如修正問題或重構程式碼。

CodeAction 必須設定 edit 和/或 command。如果兩者都提供,則會先套用 edit,然後再執行命令。

建構子

建立新的程式碼動作。

程式碼動作必須至少具有一個 title 以及 edits 和/或 command

參數說明
title: string

程式碼動作的標題。

kind?: CodeActionKind

程式碼動作的類型。

傳回說明
CodeAction

屬性

此程式碼動作執行的 Command

如果此命令擲回例外狀況,編輯器會在編輯器中的目前游標位置向使用者顯示例外狀況訊息。

此程式碼動作所解決的 Diagnostics(診斷)。

標記目前的程式碼動作無法套用。

  • 停用的程式碼動作不會顯示在自動 燈泡 程式碼動作功能表中。

  • 當使用者請求更特定的程式碼動作類型(例如重構)時,停用的動作在程式碼動作功能表中會以淡出方式顯示。

  • 如果使用者擁有會自動套用程式碼動作的 按鍵對應,且只傳回停用的程式碼動作,編輯器將會在編輯器中向使用者顯示包含 reason 的錯誤訊息。

參數說明
reason: string

關於目前停用該程式碼動作原因的人類可讀描述。

這會顯示在程式碼動作 UI 中。

此程式碼動作執行的 workspace edit(工作區編輯)。

將此標記為偏好動作。偏好動作由 auto fix 命令使用,並且可成為按鍵對應的目標。

如果快速修正能妥善解決根本錯誤,則應標記為偏好。如果重構是要採取的動作中最合理的選擇,則應標記為偏好。

程式碼動作的 類型

用於篩選程式碼動作。

此程式碼動作的簡短且人類可讀的標題。

CodeActionContext

包含有關執行 code action 之內容的額外診斷資訊。

屬性

診斷的陣列。

要求傳回的動作類型。

不屬於此類型的動作在由 燈泡 顯示之前會遭到篩選掉。

請求程式碼動作的原因。

CodeActionKind

程式碼動作的類型。

類型是由 . 分隔的階層式識別碼清單,例如 "refactor.extract.function"

編輯器將程式碼動作類型用於 UI 元素,例如重構內容功能表。使用者也可以使用 editor.action.codeAction 命令觸發特定類型的程式碼動作。

靜態

空類型。

適用於整個筆記本範圍之所有程式碼動作的基本類型。使用此類型的 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 (might move all imports to a new top cell)
  • notebook.source.normalizeVariableNames (might rename all variables to a standardized casing format)

快速修正動作的基本類型:quickfix

快速修正動作可解決程式碼中的問題,並會顯示在一般程式碼動作內容功能表中。

重構動作的基本類型:refactor

重構動作會顯示在重構內容功能表中。

重構擷取動作的基本類型:refactor.extract

範例擷取動作

  • 擷取方法
  • 擷取函式
  • 擷取變數
  • 從類別擷取介面
  • ...

重構內嵌動作的基本類型:refactor.inline

範例內嵌動作

  • 內嵌函式
  • 內嵌變數
  • 內嵌常數
  • ...

重構移動動作的基本類型:refactor.move

範例移動動作

  • 將函式移動至新檔案
  • 在類別之間移動屬性
  • 將方法移動至基底類別
  • ...

重構改寫動作的基本類型:refactor.rewrite

範例改寫動作

  • 將 JavaScript 函式轉換為類別
  • 新增或移除參數
  • 封裝欄位
  • 使方法成為靜態
  • ...

原始程式碼動作的基本類型:source

原始程式碼動作適用於整個檔案。必須明確請求這些動作,且它們不會顯示在一般 燈泡 功能表中。原始程式碼動作可以使用 editor.codeActionsOnSave 在儲存時執行,也會顯示在 source 內容功能表中。

自動修正原始程式碼動作的基本類型:source.fixAll

全部修正動作會自動修正具有明確修正方式且不需要使用者輸入的錯誤。它們不應隱抑錯誤或執行不安全的修正(例如產生新的型別或類別)。

整理匯入原始程式碼動作的基本類型:source.organizeImports

建構子

私用建構函式,請使用靜態 CodeActionKind.XYZ 從現有的程式碼動作類型衍生。

參數說明
value: string

該類型的數值,例如 refactor.extract.function

傳回說明
CodeActionKind

屬性

該類型的字串值,例如 "refactor.extract.function"

方法

透過將更特定的選取器附加至目前的類型來建立新類型。

不會修改目前的類型。

參數說明
parts: string
傳回說明
CodeActionKind

檢查 other 是否為此 CodeActionKind 的子類型。

例如,類型 "refactor.extract" 包含 "refactor.extract""refactor.extract.function",但不包含 "unicorn.refactor.extract""refactor.extractAll"refactor

參數說明
other: CodeActionKind

要檢查的類型。

傳回說明
boolean

檢查此程式碼動作類型是否與 other 相交。

例如,類型 "refactor.extract"refactor"refactor.extract""refactor.extract.function" 相交,但不與 "unicorn.refactor.extract""refactor.extractAll" 相交。

參數說明
other: CodeActionKind

要檢查的類型。

傳回說明
boolean

CodeActionProvider<T>

提供程式碼的內容動作。程式碼動作通常是用來修正問題或美化/重構程式碼。

程式碼動作會透過以下幾種不同方式呈現給使用者:

  • 燈泡 功能會在目前游標位置顯示程式碼動作清單。燈泡的動作清單同時包含快速修正與重構。
  • 作為使用者可以執行的命令,例如 Refactor。使用者可以從命令選擇區或透過按鍵對應來執行這些命令。
  • 作為原始程式碼動作,例如 Organize Imports
  • 快速修正 會顯示在「問題」檢視中。
  • 透過 editor.codeActionsOnSave 設定在儲存時套用的變更。

方法

取得文件中指定範圍的程式碼動作。

僅傳回與使用者針對所請求範圍相關的程式碼動作. 同時請記住傳回的程式碼動作在 UI 中呈現的方式。例如,燈泡元件和 Refactor 命令會以清單形式顯示傳回的程式碼動作,因此請勿傳回大量會讓使用者不知所措的程式碼動作。

參數說明
document: TextDocument

叫用命令的文件。

range: Range | Selection

叫用命令的選取器或範圍。如果在目前作用中的編輯器中請求動作,這一定會是 選取範圍

context: CodeActionContext

提供關於正在請求哪些程式碼動作的額外資訊。您可以使用此資訊來查看編輯器正在請求哪種特定類型的程式碼動作,以便傳回更相關的動作,並避免傳回會被編輯器捨棄的無關程式碼動作。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Array<Command | T>>

程式碼動作的陣列,例如快速修正或重構。若要表示沒有結果,可以傳回 undefinednull 或空陣列。

基於相容性考量,我們也支援傳回 Command,但所有新的延伸模組都應改為傳回 CodeAction 物件。

給定一個程式碼動作,填入其 edit 屬性。對所有其他屬性(如標題)的變更將會被忽略。具有 edit 的程式碼動作將不會被解析。

請注意,傳回命令而非程式碼動作的程式碼動作提供者無法成功實作此函式。傳回命令的做法已被取代,應改為傳回程式碼動作。

參數說明
codeAction: T

程式碼動作。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

已解析的程式碼動作或會解析為此結果的 thenable。傳回給定的 item 是可以的。若未傳回結果,將會使用給定的 item

CodeActionProviderMetadata

關於 CodeActionProvider 所提供之程式碼動作類型的後設資料。

屬性

某類程式碼動作的靜態說明文件。

如果符合下列任一條件,提供者的說明文件將會顯示在程式碼動作功能表中:

  • 編輯器請求 kind 的程式碼動作。在此情況下,編輯器會顯示最符合所請求程式碼動作類型的說明文件。例如,如果提供者同時具有 RefactorRefactorExtract 的說明文件,當使用者請求 RefactorExtract 的程式碼動作時,編輯器將會使用 RefactorExtract 的說明文件,而不是 Refactor 的說明文件。

  • 提供者傳回任何 kind 的程式碼動作。

每個提供者最多只會顯示一個說明文件項目。

CodeActionProvider 可能傳回的 CodeActionKinds 清單。

此清單是用來決定是否應該叫用指定的 CodeActionProvider。為了避免不必要的運算,每個 CodeActionProvider 都應該列出並使用 providedCodeActionKinds。類型清單可以是通用的(例如 [CodeActionKind.Refactor]),也可以列出所提供的每一個類型(例如 [CodeActionKind.Refactor.Extract.append('function'), CodeActionKind.Refactor.Extract.append('constant'), ...])。

CodeActionTriggerKind

請求程式碼動作的原因。

列舉成員

使用者或延伸模組明確請求了程式碼動作。

自動請求了程式碼動作。

這通常發生在檔案中的目前選取範圍變更時,但當檔案內容變更時也可能會觸發。

CodeLens

Code Lens 表示應與原始程式碼文字一起顯示的 Command,例如參考次數、執行測試的方法等。

當沒有與之關聯的命令時,Code Lens 是 未解析的。基於效能考量,Code Lens 的建立與解析應分為兩個階段進行。

參見

建構子

建立新的 Code Lens 物件。

參數說明
range: Range

此 Code Lens 套用的範圍。

command?: Command

與此 Code Lens 關聯的命令。

傳回說明
CodeLens

屬性

此 Code Lens 所表示的命令。

當有關聯的命令時為 true

此 Code Lens 有效的範圍。應只跨越單一行。

CodeLensProvider<T>

Code Lens 提供者會將 commands 新增至原始程式碼文字中。這些命令將會顯示為原始程式碼文字之間的專用水平線。

活動

用於發出此提供者的 Code Lens 已變更訊號的選用事件。

方法

計算 lenses 的清單。此呼叫應盡可能快速地傳回,如果計算命令的成本很高,實作者應只傳回已設定範圍的 Code Lens 物件,並實作 resolve

參數說明
document: TextDocument

叫用命令的文件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

Code Lens 的陣列或會解析為此結果的 thenable。若要表示沒有結果,可以傳回 undefinednull 或空陣列。

系統將會針對每個可見的 Code Lens 呼叫此函式,通常是在捲動時以及在呼叫 compute-lenses 之後。

參數說明
codeLens: T

必須解析的 Code Lens。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

給定的、已解析的 Code Lens 或會解析為此結果的 thenable。

Color

表示 RGBA 空間中的色彩。

建構子

建立新的色彩執行個體。

參數說明
red: number

紅色色頻。

green: number

綠色色頻。

blue: number

藍色色頻。

alpha: number

alpha 色頻。

傳回說明
Color

屬性

此色彩在 [0-1] 範圍內的 alpha 色頻。

此色彩在 [0-1] 範圍內的藍色色頻。

此色彩在 [0-1] 範圍內的綠色色頻。

此色彩在 [0-1] 範圍內的紅色色頻。

ColorInformation

表示來自文件的色彩範圍。

建構子

建立新的色彩範圍。

參數說明
range: Range

色彩出現的範圍。不得為空。

color: Color

色彩的值。

傳回說明
ColorInformation

屬性

此色彩範圍的實際色彩值。

文件中出現此色彩的範圍。

ColorPresentation

色彩呈現物件描述了如何將 Color 表示為文字,以及從原始程式碼參考它所需進行的編輯。

對於某些語言,一個色彩可以有多種呈現方式,例如 CSS 可以用常數 Red、十六進位值 #ff0000,或是 rgba 與 hsla 形式來表示紅色。在 C# 中則適用其他呈現方式,例如 System.Drawing.Color.Red

建構子

建立新的色彩呈現。

參數說明
label: string

此色彩呈現的標籤。

傳回說明
ColorPresentation

屬性

選用的額外 文字編輯 陣列,會在選取此色彩呈現時套用。編輯內容不得與主要的 edit 重疊,也不得與自身重疊。

此色彩呈現的標籤。它將會顯示在色彩選擇器標頭上。根據預設,這也是選取此色彩呈現時所插入的文字。

選取色彩的此呈現時套用至文件的 edit。當為 falsy 時,會使用 label

ColorTheme

表示色彩佈景主題。

屬性

此色彩佈景主題的類型:淺色、深色、高對比深色與高對比淺色。

ColorThemeKind

表示色彩佈景主題類型。

列舉成員

淺色色彩佈景主題。

深色色彩佈景主題。

深色高對比色彩佈景主題。

淺色高對比色彩佈景主題。

Command

表示對命令的參考。提供一個將在 UI 中用來表示命令的標題,以及選擇性地提供一個在叫用時將傳遞給命令處理常式函式的引數陣列。

屬性

叫用命令處理常式時應帶入的引數。

實際命令處理常式的識別碼。

另請參閱 commands.registerCommand

命令的標題,例如 save

命令在 UI 中呈現時的工具提示。

Comment

註解會根據其提供方式,顯示在編輯器內或「評論」面板中。

屬性

該註解的 作者資訊

人類可讀的註解內文

註解的內容值 (context value)。這可用於提供註解特定的動作。例如,為註解指定內容值為 editable。當使用 menus 延伸點將動作提供給 comments/comment/title 時,您可以在 when 運算式中為 comment 鍵指定內容值,例如 comment == editable

    "contributes": {
        "menus": {
            "comments/comment/title": [
                {
                    "command": "extension.deleteComment",
                    "when": "comment == editable"
                }
            ]
        }
    }

這只會針對 contextValueeditable 的註解顯示 extension.deleteComment 動作。

描述 Comment 的選用標籤。如果存在 authorName,標籤將會呈現在其旁邊。

註解的 Comment mode(註解模式)

Comment 的選用反應

將顯示在註解中的選用時間戳記。日期將根據使用者的地區設定與設定進行格式化。

CommentAuthorInformation

Comment 的作者資訊

屬性

作者的選用圖示路徑

註解作者的顯示名稱

CommentController

註解控制器能夠為編輯器提供 comments(評論討論串)支援,並為使用者提供各種與註解互動的方式。

屬性

選用的註解範圍提供者。提供支援對任何給定資源 URI 進行註解的 ranges 清單。

若未提供,使用者將無法留下任何註解。

此註解控制器的 ID。

此註解控制器的人類可讀標籤。

註解控制器選項

用於在 Comment 上建立和刪除反應的選用反應處理常式。

參數說明
comment: Comment
reaction: CommentReaction
傳回說明
Thenable<void>

方法

建立 comment thread(評論討論串)。建立後,評論討論串將會顯示在可見的文字編輯器中(如果資源相符)以及「評論」面板中。

參數說明
uri: Uri

建立討論串之文件的 URI。

range: Range

評論討論串位於文件中的範圍。

comments: readonly Comment[]

討論串中依序排列的註解。

傳回說明
CommentThread

處置此註解控制器。

一旦處置,由此註解控制器建立的所有 comment threads 也將從編輯器和「評論」面板中移除。

參數說明
傳回說明
void

CommentingRangeProvider

comment controller 的註解範圍提供者。

方法

提供允許建立新評論討論串的範圍清單,或針對給定文件傳回 null

參數說明
document: TextDocument
token: CancellationToken
傳回說明
ProviderResult<Range[] | CommentingRanges>

CommentingRanges

CommentingRangeProvider 啟用註解功能的範圍。

屬性

允許將註解新增至沒有特定範圍的檔案中。

允許建立新評論討論串的範圍。

CommentMode

Comment 的註解模式

列舉成員

顯示註解編輯器

顯示註解的預覽

CommentOptions

屬性

當註解輸入方塊取得焦點時,要顯示為預留位置的選用字串。

當註解輸入方塊折疊時要顯示的選用字串。

CommentReaction

Comment 的反應

屬性

註解的 作者 是否已對此反應做出回應

對此反應做出回應的使用者人數

UI 中顯示的回應圖示。

該回應的人類可讀標籤

CommentReply

註冊於 comments/commentThread/context 中之動作的命令引數。

屬性

註解編輯器中的值

目前作用中的 註解執行緒

CommentRule

描述某個語言的註解運作方式。

屬性

區塊註解字元對,例如 /* block comment *&#47;

行註解符號,例如 // this is a comment

CommentThread

代表文件中特定範圍內對話的一組 註解集合。

屬性

該執行緒是否支援回覆。預設為 true。

開啟文件時,該執行緒應當折疊還是展開。預設為 Collapsed。

討論串中依序排列的註解。

註解執行緒的內容值。這可用於提供執行緒特定的動作。例如,某個註解執行緒的內容值被給定為 editable. 當使用 menus 擴充功能點提供動作至 comments/commentThread/title 時,您可以在 when 運算式中為 commentThread 鍵指定內容值,例如 commentThread == editable

"contributes": {
  "menus": {
    "comments/commentThread/title": [
      {
        "command": "extension.deleteCommentThread",
        "when": "commentThread == editable"
      }
    ]
  }
}

這將只對 contextValueeditable 的註解執行緒顯示 extension.deleteCommentThread 動作。

描述 註解執行緒 的選用人類可讀標籤

註解執行緒位於文件中的範圍。執行緒圖示將顯示在該範圍的最後一行。當設為 undefined 時,註解將與檔案建立關聯,而非特定的範圍。

註解執行緒的選用狀態,這可能會影響註解的顯示方式。

建立討論串之文件的 URI。

方法

處置此註解執行緒。

一旦處置,此註解執行緒將在適當的時候從可見編輯器與註解面板中移除。

參數說明
傳回說明
void

CommentThreadCollapsibleState

註解執行緒的折疊狀態

列舉成員

判定某個項目已折疊

判定某個項目已展開

CommentThreadState

註解執行緒的狀態。

列舉成員

未解決的執行緒狀態

已解決的執行緒狀態

CompletionContext

包含觸發 完成提供者 之內容相關的額外資訊。

屬性

觸發完成項目提供者的字元。

如果提供者不是由字元觸發的,則為 undefined

當觸發完成提供者時,觸發字元已經在文件中。

完成是如何被觸發的。

CompletionItem

完成項目代表建議用來完成正在輸入之文字的文字片段。

僅從 label 建立完成項目就足夠了。在這種情況下,完成項目將使用給定的 label 或 insertText 取代游標前的 word。否則,將使用給定的 edit

在編輯器中選取完成項目時,其定義或合成的文字編輯將套用至所有游標/選取範圍,而 additionalTextEdits 則會按原樣套用。

參見

建構子

建立新的完成項目。

完成項目必須至少有一個 label,該 label 隨後將用作插入文字以及用於排序和篩選。

參數說明
label: string | CompletionItemLabel

完成項目的標籤。

kind?: CompletionItemKind

完成項目的 種類

傳回說明
CompletionItem

屬性

選擇此完成時套用的額外 文字編輯 的選用陣列。編輯不得與主要的 edit 或彼此重疊。

在插入此完成之後執行的選用 Command請注意,對當前文件的其他修改應使用 additionalTextEdits 屬性來描述。

一組選用的字元,當此完成處於作用中時按下這些字元,將先接受該完成,然後再輸入該字元。請注意,所有提交字元都應具有 length=1,且多餘的字元將被忽略。

包含此項目額外資訊(如類型或符號資訊)的人類可讀字串。

代表文件註解的人類可讀字串。

篩選一組完成項目時應使用的字串。若為 falsy,則使用 label

請注意,篩選文字會與由 range 屬性定義的前導字詞(前綴)進行比對。

選擇此完成時應插入文件中的字串或片段。若為 falsy,則使用 label

保持 insertText 的空白字元原樣。根據預設,編輯器會調整新行的前導空白,使其與接受該項目的行縮排相符 - 將此設定為 true 將可防止這種情況。

此完成項目的種類。編輯器會根據種類選擇圖示。

此完成項目的標籤。根據預設,這也是選取此完成時要插入的文字。

顯示時選取此項目。請注意,只能選取一個完成項目,且由編輯器決定是哪一個項目。規則是選取最符合之項目中的第一個項目。

選取應被此完成項目取代之文字的範圍或插入與取代範圍。

省略時,當前字詞的範圍將用作取代範圍,而從當前字詞的開頭到當前位置則用作插入範圍。

註 1:範圍必須是 單行,且必須 包含 請求 完成的位置。註 2:插入範圍必須是取代範圍的前綴,這意味著它必須包含在其中並從相同位置開始。

將此項目與其他項目進行比較時應使用的字串。若為 falsy,則使用 label

請注意,sortText 僅用於完成項目的初始排序。當有前導字詞(前綴)時,排序取決於完成項目與該前綴的符合程度,而初始排序僅在完成項目的符合程度相同時使用。前綴由 range 屬性定義,因此每個完成項目可能會有所不同。

此完成項目的標籤。

  • 已取代 (deprecated) - 請改用 CompletionItem.insertTextCompletionItem.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 函式來延遲計算 detaildocumentation 屬性。但是,初始排序與篩選所需的屬性(如 sortTextfilterTextinsertTextrange)在解析期間不得更改。

提供者會透過使用者動作明確地被請求完成,或—根據組態—在輸入字詞或觸發字元時隱式地被請求。

方法

為給定位置和文件提供完成項目。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

context: CompletionContext

完成是如何被觸發的。

傳回說明
ProviderResult<CompletionList<T> | T[]>

一組完成項目、完成清單,或是解析為其中之一的 thenable。若要表示沒有結果,可以傳回 undefinednull 或空陣列。

給定一個完成項目,填入更多資料,例如 文件註解詳細資料

編輯器只會解析完成項目一次。

請注意,當完成項目已經在 UI 中顯示或當某個項目被選取以供插入時,會呼叫此函式。因此,任何會改變外觀(標籤、排序、篩選等)或(主要)插入行為(insertText)的屬性都不得更改。

此函式可能會填入 additionalTextEdits。然而,這意味著項目可能會在解析完成之前被插入,在此情況下,編輯器將盡最大努力仍舊套用這些額外的文字編輯。

參數說明
item: T

目前在 UI 中作用中的完成項目。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

已解析的完成項目或解析為此類項目的 thenable。傳回給定的 item 是可以的。當未傳回結果時,將使用給定的 item

CompletionItemTag

完成項目標籤是用來微調完成項目呈現方式的額外註解。

列舉成員

將完成項目呈現為過時,通常使用刪除線。

CompletionList<T>

代表要在編輯器中呈現的一組 完成項目

建構子

建立新的完成清單。

參數說明
items?: T[]

完成項目。

isIncomplete?: boolean

該清單尚未完成。

傳回說明
CompletionList<T>

屬性

此清單尚未完成。繼續輸入應會導致重新計算此清單。

完成項目。

CompletionTriggerKind

完成提供者 是如何被觸發的

列舉成員

完成是正常觸發的。

完成是由觸發字元觸發的。

由於目前的完成清單不完整,因此重新觸發了完成

ConfigurationChangeEvent

描述組態變更的事件

方法

檢查給定的區段是否已變更。如果提供了範圍,則檢查給定範圍下的資源的區段是否已變更。

參數說明
section: string

組態名稱,支援 點號分隔 的名稱。

scope?: ConfigurationScope

要檢查的範圍。

傳回說明
boolean

如果給定的區段已變更,則為 true

ConfigurationScope

組態範圍,可以是

  • 代表資源的 Uri
  • 代表開啟文字文件的 TextDocument
  • 代表工作區資料夾的 WorkspaceFolder
  • 包含以下內容的物件:
    • uri:文字文件的選用 Uri
    • languageId:文字文件的語言識別項

ConfigurationTarget

組態目標

列舉成員

全域組態

工作區組態

工作區資料夾組態

CustomDocument

代表由 CustomEditorProvider 使用的自訂文件。

自訂文件僅在指定的 CustomEditorProvider 內使用。CustomDocument 的生命週期由編輯器管理。當不再有指向 CustomDocument 的參考時,它就會被處置。

屬性

此文件的相關聯 uri。

方法

處置自訂文件。

當對特定 CustomDocument 不再有任何參考時(例如當與該文件相關聯的所有編輯器都已關閉時),編輯器會呼叫此方法。

參數說明
傳回說明
void

CustomDocumentBackup

CustomDocument 的備份。

屬性

備份的唯一識別碼。

從備份開啟自訂編輯器時,此 id 會傳回給您在 openCustomDocument 中的擴充功能。

方法

刪除目前的備份。

當明確表示不再需要目前備份時(例如建立新備份或儲存檔案時),編輯器會呼叫此方法。

參數說明
傳回說明
void

CustomDocumentBackupContext

用來實作 CustomDocumentBackup 的額外資訊。

屬性

建議用來寫入新備份的檔案位置。

請注意,您的擴充功能可以自由忽略此項並使用其自己的備份策略。

如果編輯器是用於來自目前工作區的資源,則 destination 將指向 ExtensionContext.storagePath 內的檔案。destination 的父資料夾可能不存在,因此請確保在將備份寫入此位置之前建立它。

CustomDocumentContentChangeEvent<T>

由擴充功能觸發的事件,用於向編輯器發出信號,表示 CustomDocument 的內容已變更。

另請參閱 CustomEditorProvider.onDidChangeCustomDocument

屬性

此變更所針對的文件。

CustomDocumentEditEvent<T>

由擴充功能觸發的事件,用於向編輯器發出信號,表示 CustomDocument 上發生了編輯。

另請參閱 CustomEditorProvider.onDidChangeCustomDocument

屬性

此編輯所針對的文件。

描述此編輯的顯示名稱。

這將在 UI 中顯示給使用者,用於復原/重做操作。

方法

重做編輯操作。

當使用者重做此編輯時,編輯器會呼叫此方法。為了實作 redo,您的擴充功能應將文件和編輯器恢復到透過 CustomEditorProvider.onDidChangeCustomDocument 將此編輯加入編輯器的內部編輯堆疊後立即的狀態。

參數說明
傳回說明
void | Thenable<void>

復原編輯操作。

當使用者復原此編輯時,編輯器會呼叫此方法。為了實作 undo,您的擴充功能應將文件和編輯器恢復到透過 CustomEditorProvider.onDidChangeCustomDocument 將此編輯加入編輯器的內部編輯堆疊後立即的狀態。

參數說明
傳回說明
void | Thenable<void>

CustomDocumentOpenContext

有關正在開啟之自訂文件的額外資訊。

屬性

要從其還原文件的備份 id,若無備份則為 undefined

如果提供了此項,您的擴充功能應該從備份還原編輯器,而不是從使用者的工作區讀取檔案。

如果 URI 是未命名的檔案,這將填入該檔案的位元組資料

如果提供了此項,您的擴充功能應利用此位元組資料,而不是對傳入的 URI 執行 fs API

CustomEditorProvider<T>

使用自訂文件模型的可編輯自訂編輯器的提供者。

自訂編輯器使用 CustomDocument 作為其文件模型,而不是 TextDocument。這賦予擴充功能對編輯、儲存和備份等動作的完全控制權。

當處理二進位檔案或更複雜的案例時,您應該使用這種類型的自訂編輯器。對於簡單的文字型文件,請改用 CustomTextEditorProvider

活動

發出信號表示自訂編輯器內發生了編輯。

每當自訂編輯器中發生編輯時,您的擴充功能都必須觸發此事件。編輯可以是任何事情,從變更某些文字、裁剪影像到重新排序清單。您的擴充功能可以自由定義什麼是編輯以及在每個編輯上儲存什麼資料。

觸發 onDidChangeCustomDocument 會使編輯器被標記為未儲存。當使用者儲存或還原檔案時,這會被清除。

支援重做/復原的編輯器每當發生編輯時,必須觸發 CustomDocumentEditEvent。這允許使用者使用編輯器的標準鍵盤快速鍵來復原和重做編輯。如果使用者將所有編輯復原到上次儲存的狀態,編輯器也會將編輯器標記為不再是未儲存狀態。

支援編輯但無法使用編輯器標準復原/重做機制的編輯器必須觸發 CustomDocumentContentChangeEvent。使用者清除不支援復原/重做的編輯器之未儲存狀態的唯一方法是 saverevert 檔案。

編輯器應該只觸發 CustomDocumentEditEvent 事件,或者只觸發 CustomDocumentContentChangeEvent 事件。

方法

備份未儲存的自訂文件。

備份用於熱退出和防止資料遺失。您的 backupCustomDocument 方法應以其當前狀態(即套用了編輯)持續保存資源。最常見的做法是將資源儲存到磁碟上的 ExtensionContext.storagePath 中。當編輯器重新載入且為某個資源開啟您的自訂編輯器時,您的擴充功能應先檢查該資源是否存在任何備份。如果存在備份,您的擴充功能應從該處載入檔案內容,而不是從工作區中的資源載入。

在使用者停止編輯文件大約一秒後,會觸發 backupCustomDocument。如果使用者快速編輯文件,則在編輯停止之前不會呼叫 backupCustomDocument

啟用 auto save 時不會呼叫 backupCustomDocument(因為自動儲存已經持續保存了資源)。

參數說明
document: T

要備份的文件。

context: CustomDocumentBackupContext

可用於備份文件的資訊。

cancellation: CancellationToken

由於有新備份進來而發出目前備份取消信號的 Token。由您的擴充功能決定如何回應取消。例如,如果您的擴充功能正在備份需要花時間完成的大型檔案,您的擴充功能可能會決定完成正在進行的備份,而不是取消它,以確保編輯器擁有某些有效的備份。

傳回說明
Thenable<CustomDocumentBackup>

表示備份已完成的 Thenable

為給定資源建立新文件。

第一次為給定資源開啟編輯器時,會呼叫 openCustomDocument。然後,開啟的文件會傳遞給 resolveCustomEditor,以便將編輯器顯示給使用者。

如果使用者開啟額外的編輯器,則會重複使用已經開啟的 CustomDocuments。當給定資源的所有編輯器都關閉時,CustomDocuments 將被處置。此時開啟編輯器將觸發對 openCustomDocument 的另一次呼叫。

參數說明
uri: Uri

要開啟的文件的 Uri。

openContext: CustomDocumentOpenContext

有關正在開啟之自訂文件的額外資訊。

token: CancellationToken

表示不再需要結果的取消 token。

傳回說明
T | Thenable<T>

自訂文件。

解析給定資源的自訂編輯器。

每當使用者為此 CustomEditorProvider 開啟新編輯器時,就會呼叫此方法。

參數說明
document: T

正在解析之資源的文件。

webviewPanel: WebviewPanel

用於顯示此資源的編輯器 UI 的網頁檢視面板。

在解析期間,提供者必須填入內容網頁檢視面板的初始 html,並在其上掛接所有感興趣的事件接聽程式。提供者也可以保留 WebviewPanel 以便稍後在命令中使用。如需詳細資料,請參閱 WebviewPanel

token: CancellationToken

表示不再需要結果的取消 token。

傳回說明
void | Thenable<void>

表示自訂編輯器已解析的選用 thenable。

將自訂文件還原至其上次儲存的狀態。

當使用者在自訂編輯器中觸發 File: Revert File 時,編輯器會呼叫此方法。(請注意,這僅透過編輯器的 File: Revert File 命令使用,而非對檔案進行 git revert)。

實作者必須確保 document 的所有編輯器執行個體(網頁檢視)都以儲存時的相同狀態顯示文件。這通常意味著從工作區重新載入檔案。

參數說明
document: T

要還原的文件。

cancellation: CancellationToken

表示不再需要還原的 token。

傳回說明
Thenable<void>

表示還原已完成的 Thenable

儲存自訂文件。

當使用者儲存自訂編輯器時,編輯器會呼叫此方法。這可能發生在當自訂編輯器處於作用中時使用者觸發儲存、透過 save all 等命令,或透過啟用的自動儲存。

實作者必須持續保存自訂編輯器。這通常意味著將自訂文件的檔案資料寫入磁碟。在 saveCustomDocument 完成後,任何相關聯的編輯器執行個體將不再被標記為未儲存。

參數說明
document: T

要儲存的文件。

cancellation: CancellationToken

表示不再需要儲存的 token(例如,如果觸發了另一個儲存)。

傳回說明
Thenable<void>

表示儲存已完成的 Thenable

將自訂文件儲存到不同的位置。

當使用者在自訂編輯器上觸發「另存新檔」時,編輯器會呼叫此方法。實作者必須將自訂編輯器持續保存至 destination

當使用者接受另存新檔時,目前的編輯器將被新儲存檔案的未修改編輯器所取代。

參數說明
document: T

要儲存的文件。

destination: Uri

要儲存到的位置。

cancellation: CancellationToken

表示不再需要儲存的 token。

傳回說明
Thenable<void>

表示儲存已完成的 Thenable

CustomExecution

用於將擴充功能回呼當作工作執行的類別。

建構子

建構 CustomExecution 工作物件。當執行工作時將執行回呼,此時擴充功能應傳回它將在其中「執行」的 Pseudoterminal。工作應等待直到呼叫 Pseudoterminal.open 之後才進行進一步執行。工作取消應使用 Pseudoterminal.close 來處理。工作完成時,觸發 Pseudoterminal.onDidClose

參數說明
callback: (resolvedDefinition: TaskDefinition) => Thenable<Pseudoterminal>

當使用者啟動工作時將呼叫的回呼。工作定義中的任何 ${} 風格變數都將被解析並作為 resolvedDefinition 傳入回呼中。

傳回說明
CustomExecution

CustomReadonlyEditorProvider<T>

使用自訂文件模型的唯讀自訂編輯器的提供者。

自訂編輯器使用 CustomDocument 作為其文件模型,而不是 TextDocument

當處理二進位檔案或更複雜的案例時,您應該使用這種類型的自訂編輯器。對於簡單的文字型文件,請改用 CustomTextEditorProvider

方法

為給定資源建立新文件。

第一次為給定資源開啟編輯器時,會呼叫 openCustomDocument。然後,開啟的文件會傳遞給 resolveCustomEditor,以便將編輯器顯示給使用者。

如果使用者開啟額外的編輯器,則會重複使用已經開啟的 CustomDocuments。當給定資源的所有編輯器都關閉時,CustomDocuments 將被處置。此時開啟編輯器將觸發對 openCustomDocument 的另一次呼叫。

參數說明
uri: Uri

要開啟的文件的 Uri。

openContext: CustomDocumentOpenContext

有關正在開啟之自訂文件的額外資訊。

token: CancellationToken

表示不再需要結果的取消 token。

傳回說明
T | Thenable<T>

自訂文件。

解析給定資源的自訂編輯器。

每當使用者為此 CustomEditorProvider 開啟新編輯器時,就會呼叫此方法。

參數說明
document: T

正在解析之資源的文件。

webviewPanel: WebviewPanel

用於顯示此資源的編輯器 UI 的網頁檢視面板。

在解析期間,提供者必須填入內容網頁檢視面板的初始 html,並在其上掛接所有感興趣的事件接聽程式。提供者也可以保留 WebviewPanel 以便稍後在命令中使用。如需詳細資料,請參閱 WebviewPanel

token: CancellationToken

表示不再需要結果的取消 token。

傳回說明
void | Thenable<void>

表示自訂編輯器已解析的選用 thenable。

CustomTextEditorProvider

文字型自訂編輯器的提供者。

文字型自訂編輯器使用 TextDocument 作為其資料模型。這大大簡化了自訂編輯器的實作,因為它允許編輯器處理許多常見的操作,例如復原和備份。提供者負責在網頁檢視與 TextDocument 之間同步文字變更。

方法

解析給定文字資源的自訂編輯器。

當使用者首次為 CustomTextEditorProvider 開啟資源時,或者如果他們使用此 CustomTextEditorProvider 重新開啟現有編輯器,就會呼叫此方法。

參數說明
document: TextDocument

要解析的資源之文件。

webviewPanel: WebviewPanel

用於顯示此資源的編輯器 UI 的網頁檢視面板。

在解析期間,提供者必須填入內容網頁檢視面板的初始 html,並在其上掛接所有感興趣的事件接聽程式。提供者也可以保留 WebviewPanel 以便稍後在命令中使用。如需詳細資料,請參閱 WebviewPanel

token: CancellationToken

表示不再需要結果的取消 token。

傳回說明
void | Thenable<void>

表示自訂編輯器已解析的 Thenable。

DataTransfer

包含對應傳輸資料之 MIME 類型對應的對應表。

實作 handleDrag 的拖放控制器可以將額外的 MIME 類型新增至資料傳輸中。只有當拖曳是由來自同一個拖放控制器中的元素發起時,這些額外的 MIME 類型才會包含在 handleDrop 中。

建構子

參數說明
傳回說明
DataTransfer

方法

取得具有此資料傳輸中每個元素的 [mime, item] 對的新迭代器。

參數說明
傳回說明
IterableIterator<[mimeType: string, item: DataTransferItem]>

允許迭代資料傳輸項目。

參數說明
callbackfn: (item: DataTransferItem, mimeType: string, dataTransfer: DataTransfer) => void

用於迭代資料傳輸項目的回呼。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
void

取得指定 MIME 類型的資料傳輸項目。

參數說明
mimeType: string

要取得資料傳輸項目的 MIME 類型,例如 text/plainimage/png。MIME 類型查詢不區分大小寫。

特殊 MIME 類型

  • text/uri-list — 包含以 \r\n 分隔且經過 toString() 處理之 Uri 的字串。若要指定檔案中的游標位置,請將 Uri 的片段設為 L3,5,其中 3 為行號,5 為欄號。
傳回說明
DataTransferItem

設定 MIME 類型與資料傳輸項目的對應關係。

參數說明
mimeType: string

要設定資料的 MIME 類型。MIME 類型會以小寫儲存,並支援不區分大小寫的查詢。

value: DataTransferItem

給定 MIME 類型的資料傳輸項目。

傳回說明
void

DataTransferFile

DataTransferItem 相關聯的檔案。

此類型的實例只能由編輯器建立,而不能由擴充功能建立。

屬性

檔案的名稱。

檔案的完整檔案路徑。

在網頁版上可能是 undefined

方法

檔案的完整檔案內容。

參數說明
傳回說明
Thenable<Uint8Array>

DataTransferItem

封裝在拖放作業期間傳輸的資料。

建構子

參數說明
value: any

儲存在此項目上的自訂資料。可以使用 DataTransferItem.value 來取得。

傳回說明
DataTransferItem

屬性

儲存在此項目上的自訂資料。

您可以使用 value 在多個作業之間共用資料。只要建立 DataTransferItem 的擴充功能執行於相同的擴充功能主機中,就可以取得原始物件。

方法

嘗試取得與此資料傳輸項目相關聯的 檔案

請注意,檔案物件僅在拖放作業的範圍內有效。

參數說明
傳回說明
DataTransferFile

用於資料傳輸的檔案;如果該項目不是檔案,或者無法存取檔案資料,則為 undefined

取得此項目的字串表示法。

如果 DataTransferItem.value 是一個物件,這會傳回將 DataTransferItem.value 進行 JSON 字串化的結果。

參數說明
傳回說明
Thenable<string>

DebugAdapter

實作「偵錯介面卡通訊協定」的偵錯介面卡,若其實作了 DebugAdapter 介面,即可向編輯器註冊。

活動

在偵錯介面卡向編輯器傳送「偵錯介面卡通訊協定」訊息之後觸發的事件。訊息可以是要求、回應或事件。

方法

釋放此物件。

參數說明
傳回說明
any

處理「偵錯介面卡通訊協定」訊息。訊息可以是要求、回應或事件。結果或錯誤會透過 onSendMessage 事件傳回。

參數說明
message: DebugProtocolMessage

「偵錯介面卡通訊協定」訊息

傳回說明
void

DebugAdapterDescriptor

代表不同類型的偵錯介面卡

DebugAdapterDescriptorFactory

建立 偵錯介面卡描述項的偵錯介面卡處理站。

方法

在偵錯工作階段開始時會呼叫 '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

代表偵錯介面卡可執行檔,以及傳遞給它的選擇性引數與執行階段選項。

建構子

根據可執行程式建立偵錯介面卡的描述。

參數說明
command: string

實作偵錯介面卡的命令或可執行檔路徑。

args?: string[]

要傳遞給命令或可執行檔的選擇性引數。

options?: DebugAdapterExecutableOptions

啟動命令或可執行檔時要使用的選擇性選項。

傳回說明
DebugAdapterExecutable

屬性

傳遞給偵錯介面卡可執行檔的引數。預設為空陣列。

偵錯介面卡可執行檔的命令或路徑。命令必須是可執行檔的絕對路徑,或是透過 PATH 環境變數查詢的命令名稱。特殊值 'node' 將會對應至編輯器的內建 Node.js 執行階段。

啟動偵錯介面卡時要使用的選擇性選項。預設為 undefined。

DebugAdapterExecutableOptions

偵錯介面卡可執行檔的選項。

屬性

已執行之偵錯介面卡的目前工作目錄。

已執行程式或 Shell 的其他環境變數。如果省略,將使用父行程的環境變數。如果提供,將與父行程的環境變數合併。

DebugAdapterInlineImplementation

內嵌實作的偵錯介面卡描述項。

建構子

為偵錯介面卡的內嵌實作建立描述項。

參數說明
implementation: DebugAdapter
傳回說明
DebugAdapterInlineImplementation

DebugAdapterNamedPipeServer

代表以具名管道 (在 Windows 上) / UNIX 網域通訊端 (在非 Windows 上) 為基礎的伺服器執行的偵錯介面卡。

建構子

為以具名管道 (在 Windows 上) / UNIX 網域通訊端 (在非 Windows 上) 為基礎的伺服器執行的偵錯介面卡建立描述。

參數說明
path: string
傳回說明
DebugAdapterNamedPipeServer

屬性

具名管道 / UNIX 網域通訊端的路徑。

DebugAdapterServer

代表以通訊端為基礎的伺服器執行的偵錯介面卡。

建構子

為以通訊端為基礎的伺服器執行的偵錯介面卡建立描述。

參數說明
port: number
host?: string
傳回說明
DebugAdapterServer

屬性

主機。

連接埠。

DebugAdapterTracker

偵錯介面卡追蹤器是用來追蹤編輯器與偵錯介面卡之間通訊的一種方式。

活動

偵錯介面卡已向編輯器傳送「偵錯介面卡通訊協定」訊息。

參數說明
message: any
傳回說明
void

偵錯介面卡即將從編輯器接收「偵錯介面卡通訊協定」訊息。

參數說明
message: any
傳回說明
void

與偵錯介面卡的工作階段即將啟動。

參數說明
傳回說明
void

偵錯介面卡工作階段即將停止。

參數說明
傳回說明
void

方法

偵錯介面卡發生錯誤。

參數說明
error: Error
傳回說明
void

偵錯介面卡已以指定的結束代碼或訊號結束。

參數說明
code: number
signal: string
傳回說明
void

DebugAdapterTrackerFactory

建立 偵錯介面卡追蹤器的偵錯介面卡處理站。

方法

在偵錯工作階段開始時會呼叫 'createDebugAdapterTracker' 方法,以傳回一個追蹤器物件,該物件提供對編輯器與偵錯介面卡之間通訊的讀取存取權。

參數說明
session: DebugSession

將會使用此偵錯介面卡追蹤器的 偵錯工作階段

傳回說明
ProviderResult<DebugAdapterTracker>

偵錯介面卡追蹤器或 undefined。

DebugConfiguration

偵錯工作階段的組態。

屬性

偵錯工作階段的名稱。

偵錯工作階段的要求類型。

偵錯工作階段的類型。

DebugConfigurationProvider

偵錯組態提供者允許將偵錯組態新增至偵錯服務,並在用來啟動偵錯工作階段之前解析啟動組態。偵錯組態提供者是透過 debug.registerDebugConfigurationProvider 進行註冊。

方法

提供 偵錯組態給偵錯服務。如果針對同一類型註冊了多個偵錯組態提供者,則偵錯組態會以任意順序串接在一起。

參數說明
folder: WorkspaceFolder

要使用這些組態的工作區資料夾,若為無資料夾設定則為 undefined

token?: CancellationToken

取消 token。

傳回說明
ProviderResult<DebugConfiguration[]>

偵錯組態的陣列。

透過填入遺漏的值或新增/變更/移除屬性來解析 偵錯組態。如果針對同一類型註冊了多個偵錯組態提供者,則 resolveDebugConfiguration 呼叫會以任意順序鏈結,且初始偵錯組態會透過此鏈結傳遞。傳回值 'undefined' 會防止偵錯工作階段啟動。傳回值 'null' 會防止偵錯工作階段啟動,並改為開啟底層的偵錯組態。

參數說明
folder: WorkspaceFolder

該組態來源的工作區資料夾,若為無資料夾設定則為 undefined

debugConfiguration: DebugConfiguration

要解析的 偵錯組態

token?: CancellationToken

取消 token。

傳回說明
ProviderResult<DebugConfiguration>

已解析的偵錯組態、undefined 或 null。

此勾點會在 'resolveDebugConfiguration' 之後直接呼叫,但所有變數都已進行替代。可用於透過填入遺漏的值或新增/變更/移除屬性來解析或驗證 偵錯組態。如果針對同一類型註冊了多個偵錯組態提供者,則 'resolveDebugConfigurationWithSubstitutedVariables' 呼叫會以任意順序鏈結,且初始偵錯組態會透過此鏈結傳遞。傳回值 'undefined' 會防止偵錯工作階段啟動。傳回值 'null' 會防止偵錯工作階段啟動,並改為開啟底層的偵錯組態。

參數說明
folder: WorkspaceFolder

該組態來源的工作區資料夾,若為無資料夾設定則為 undefined

debugConfiguration: DebugConfiguration

要解析的 偵錯組態

token?: CancellationToken

取消 token。

傳回說明
ProviderResult<DebugConfiguration>

已解析的偵錯組態、undefined 或 null。

DebugConfigurationProviderTriggerKind

DebugConfigurationProviderTriggerKind 指定何時觸發 DebugConfigurationProviderprovideDebugConfigurations 方法。目前有兩種情況:為新建立的 launch.json 提供初始偵錯組態,或是當使用者透過 UI 要求時 (例如透過「選取並開始偵錯」命令) 提供動態產生的偵錯組態。在透過 debug.registerDebugConfigurationProvider 註冊 DebugConfigurationProvider 時會使用觸發種類。

列舉成員

呼叫 DebugConfigurationProvider.provideDebugConfigurations 以為新建立的 launch.json 提供初始偵錯組態。

當使用者透過 UI 要求時 (例如透過「選取並開始偵錯」命令),呼叫 DebugConfigurationProvider.provideDebugConfigurations 以提供動態產生的偵錯組態。

DebugConsole

代表偵錯主控台。

方法

將指定的值附加至偵錯主控台。

參數說明
value: string

字串,為 falsy 的值將不會被列印。

傳回說明
void

將指定的值和換行字元附加至偵錯主控台。

參數說明
value: string

字串,為 falsy 的值將會被列印。

傳回說明
void

DebugConsoleMode

偵錯工作階段所使用的偵錯主控台模式,請參閱 選項

列舉成員

偵錯工作階段應有獨立的偵錯主控台。

偵錯工作階段應與其父工作階段共用偵錯主控台。對於沒有父工作階段的工作階段,此值沒有作用。

DebugProtocolBreakpoint

DebugProtocolBreakpoint 是「偵錯介面卡通訊協定」中所定義之 Breakpoint 類型的不透明替代類型。

DebugProtocolMessage

DebugProtocolMessage 是「偵錯介面卡通訊協定」中所定義之 ProtocolMessage 類型的不透明替代類型。

DebugProtocolSource

DebugProtocolSource 是「偵錯介面卡通訊協定」中所定義之 Source 類型的不透明替代類型。

DebugSession

偵錯工作階段。

屬性

此工作階段的「已解析」偵錯組態。「已解析」代表

  • 所有變數都已進行替代,且
  • 平台特定屬性區段已針對相符的平台進行扁平化,並已為不相符的平台移除。

此偵錯工作階段的唯一 ID。

偵錯工作階段的名稱最初取自 偵錯組態。任何變更都會正確反映在 UI 中。

此偵錯工作階段的父工作階段 (如果它是作為子系建立的)。

另請參閱 DebugSessionOptions.parentSession

來自 偵錯組態的偵錯工作階段類型。

此工作階段的工作區資料夾,若為無資料夾設定則為 undefined

方法

傳送自訂要求至偵錯介面卡。

參數說明
command: string
args?: any
傳回說明
Thenable<any>

將編輯器中的中斷點對應至由偵錯工作階段之偵錯介面卡所管理的對應「偵錯介面卡通訊協定」(DAP) 中斷點。如果沒有任何 DAP 中斷點存在 (可能是因為編輯器中斷點尚未註冊,或是因為偵錯介面卡對該中斷點不感興趣),就會傳回 undefined 值。

參數說明
breakpoint: Breakpoint

編輯器中的 Breakpoint

傳回說明
Thenable<DebugProtocolBreakpoint>

解析為「偵錯介面卡通訊協定」中斷點或 undefined 的 Promise。

DebugSessionCustomEvent

偵錯工作階段接收到的自訂「偵錯介面卡通訊協定」事件。

屬性

事件特有的資訊。

事件類型。

接收到自訂事件的 偵錯工作階段

DebugSessionOptions

屬性

控制即使偵錯工作階段的父工作階段只有單一子系,是否要在「呼叫堆疊」檢視中顯示該父工作階段。根據預設,偵錯工作階段絕不會隱藏其父系。如果 compact 為 true,則具有單一子系的偵錯工作階段會在「呼叫堆疊」檢視中隱藏,以讓樹狀結構更為精簡。

控制此工作階段應有獨立的偵錯主控台,還是與父工作階段共用。對於沒有父工作階段的工作階段沒有作用。預設為 Separate。

控制生命週期要求 (例如 'restart') 是傳送至新建立的工作階段,還是其父工作階段。根據預設 (如果屬性為 false 或遺漏),生命週期要求會傳送至新工作階段。如果工作階段沒有父工作階段,則會忽略此屬性。

控制此工作階段是否應在沒有偵錯的情況下執行,因而忽略中斷點。未指定此屬性時,會使用來自父工作階段的值 (若有的話)。

指定時,新建立的偵錯工作階段會註冊為此「父」偵錯工作階段的「子」工作階段。

當為 true 時,不會為此工作階段變更視窗狀態列色彩。

當為 true 時,不會顯示此工作階段的偵錯工具列。

當為 true 時,不會自動顯示此工作階段的偵錯檢視區段。

當為 true 時,啟動偵錯工作階段不會觸發開啟中編輯器的儲存動作,無論 debug.saveBeforeStart 設定的值為何。

向編輯器發出信號,表示偵錯工作階段是從測試執行要求啟動的。這可用於在 UI 動作中將偵錯工作階段和測試執行的生命週期連結起來。

DebugStackFrame

代表偵錯工作階段中的堆疊框架。

屬性

偵錯通訊協定中堆疊框架的 ID。

執行緒的偵錯工作階段。

偵錯通訊協定中相關聯執行緒的 ID。

DebugThread

代表偵錯工作階段中的執行緒。

屬性

執行緒的偵錯工作階段。

偵錯通訊協定中相關聯執行緒的 ID。

Declaration

符號宣告的表示法,形式為一個或多個 位置位置連結

DeclarationCoverage

包含宣告的涵蓋率資訊。根據回報器和語言而定,這可能是諸如函式、方法或命名空間等類型。

建構子

參數說明
name: string
executed: number | boolean

此宣告被執行的次數,或者如果確切次數未知,則為表示是否執行過的布林值。如果為零或 false,該宣告將被標記為未涵蓋。

location: Range | Position

宣告位置。

傳回說明
DeclarationCoverage

屬性

此宣告被執行的次數,或者如果確切次數未知,則為表示是否執行過的布林值。如果為零或 false,該宣告將被標記為未涵蓋。

宣告位置。

宣告的名稱。

DeclarationProvider

宣告提供者介面定義了擴充功能與「移至宣告」功能之間的合約。

方法

提供給定位置和文件中符號的宣告。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Declaration>

宣告或解析為該宣告的 thenable。若無結果,可透過傳回 undefinednull 來表示。

DecorationInstanceRenderOptions

代表裝飾實例的轉譯選項。請參閱 DecorationOptions.renderOptions

屬性

定義插入於裝飾文字之後的附件之轉譯選項。

定義插入於裝飾文字之前的附件之轉譯選項。

覆寫深色佈景主題的選項。

覆寫淺色佈景主題的選項。

DecorationOptions

代表 裝飾集中特定裝飾的選項。

屬性

將游標停留在裝飾上方時應轉譯的訊息。

套用此裝飾的範圍。該範圍不得為空。

套用到目前裝飾的轉譯選項。基於效能考量,請保持裝飾特定選項的數量越少越好,並盡可能使用裝飾類型。

DecorationRangeBehavior

描述當在其邊緣進行鍵入/編輯時裝飾的行為。

列舉成員

當在開頭或結尾進行編輯時,裝飾的範圍將會擴寬。

當在開頭或結尾進行編輯時,裝飾的範圍不會擴寬。

當在開頭進行編輯時,裝飾的範圍將會擴寬,但在結尾則否。

當在結尾進行編輯時,裝飾的範圍將會擴寬,但在開頭則否。

DecorationRenderOptions

代表 文字編輯器裝飾的轉譯樣式。

屬性

定義插入於裝飾文字之後的附件之轉譯選項。

裝飾的背景色彩。請使用 rgba() 並定義透明背景色彩,以便與其他裝飾良好搭配。或者,也可以 參照 色彩登錄中的色彩。

定義插入於裝飾文字之前的附件之轉譯選項。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

覆寫深色佈景主題的選項。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

要在裝訂邊中轉譯之影像的絕對路徑或 URI。

指定裝訂邊圖示的大小。可用值為 'auto'、'contain'、'cover' 以及任何百分比值。如需詳細資訊:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx

是否也應在行文字之後的空白字元上轉譯裝飾。預設為 false

將套用至裝飾所包含文字的 CSS 樣式屬性。

覆寫淺色佈景主題的選項。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'outline' 來設定一或多個個別的外框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'outline' 來設定一或多個個別的外框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'outline' 來設定一或多個個別的外框屬性。

概觀尺規中裝飾的色彩。請使用 rgba() 並定義透明色彩,以便與其他裝飾良好搭配。

概觀尺規中應轉譯裝飾的位置。

自訂當裝飾範圍邊緣發生編輯時,裝飾的擴展行為。預設為 DecorationRangeBehavior.OpenOpen

將套用至裝飾所包含文字的 CSS 樣式屬性。

Definition

符號定義的表示法,形式為一個或多個 位置。對大多數程式語言而言,定義符號的位置只有一個。

關於符號定義位置的資訊。

提供相較於一般 Location 定義更多的後設資料,包括定義符號的範圍

DefinitionProvider

定義提供者介面定義了擴充功能與 移至定義 和預覽定義功能之間的合約。

方法

提供給定位置和文件中符號的定義。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Definition | LocationLink[]>

定義或解析為該定義的 thenable。若無結果,可透過傳回 undefinednull 來表示。

Diagnostic

代表診斷,例如編譯器錯誤或警告。診斷物件僅在檔案範圍內有效。

建構子

建立新的診斷物件。

參數說明
range: Range

套用此診斷的範圍。

message: string

人類可讀的訊息。

severity?: DiagnosticSeverity

嚴重性,預設為 error

傳回說明
Diagnostic

屬性

此診斷的代碼或識別項。應用於後續處理,例如在提供 程式碼動作 時。

人類可讀的訊息。

套用此診斷的範圍。

相關診斷資訊的陣列,例如當範圍內的符號名稱發生衝突時,可以透過此屬性標記所有定義。

嚴重性,預設為 error

描述此診斷來源的人類可讀字串,例如 'typescript' 或 'super lint'。

關於診斷的其他後設資料。

DiagnosticChangeEvent

當診斷變更時觸發的事件。

屬性

診斷已變更的資源陣列。

DiagnosticCollection

診斷集合是一個管理一組 診斷的容器。診斷一律會限定範圍至診斷集合與資源。

若要取得 DiagnosticCollection 的實例,請使用 createDiagnosticCollection

屬性

此診斷集合的名稱,例如 typescript。此集合中的每個診斷都將與此名稱相關聯。此外,工作架構在定義 問題比對器 時也會使用此名稱。

方法

從此集合中移除所有診斷。與呼叫 #set(undefined) 相同;

參數說明
傳回說明
void

從此集合中移除屬於所提供 uri 的所有診斷。與 #set(uri, undefined) 相同。

參數說明
uri: Uri

資源識別碼。

傳回說明
void

釋放並回收相關聯的資源。會呼叫 clear

參數說明
傳回說明
void

迭代此集合中的每個項目。

參數說明
callback: (uri: Uri, diagnostics: readonly Diagnostic[], collection: DiagnosticCollection) => any

要針對每個項目執行的函式。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
void

取得給定資源的診斷。請注意,您無法修改從此呼叫傳回的診斷陣列。

參數說明
uri: Uri

資源識別碼。

傳回說明
readonly Diagnostic[]

不可變的 診斷陣列或 undefined

檢查此集合是否包含給定資源的診斷。

參數說明
uri: Uri

資源識別碼。

傳回說明
boolean

如果此集合擁有給定資源的診斷,則為 true

指派給定資源的診斷。會取代該資源的現有診斷。

參數說明
uri: Uri

資源識別碼。

diagnostics: readonly Diagnostic[]

診斷陣列或 undefined

傳回說明
void

取代此集合中多個資源的診斷。

請注意,相同 uri 的多個元組將會合併,例如 [[file1, [d1]], [file1, [d2]]] 等同於 [[file1, [d1, d2]]]。如果診斷項目為 undefined (例如 [file1, undefined]),則會移除所有先前的診斷,但不會移除後續的診斷。

參數說明
entries: ReadonlyArray<[Uri, readonly Diagnostic[]]>

元組的陣列,例如 [[file1, [d1, d2]], [file2, [d3, d4, d5]]],或 undefined

傳回說明
void

DiagnosticRelatedInformation

代表診斷的相關訊息和原始程式碼位置。這應用於指向導致診斷或與診斷相關的程式碼位置,例如當在範圍中複製符號時。

建構子

建立新的相關診斷資訊物件。

參數說明
location: Location

位置。

message: string

訊息。

傳回說明
DiagnosticRelatedInformation

屬性

此相關診斷資訊的位置。

此相關診斷資訊的訊息。

DiagnosticSeverity

代表診斷的嚴重性。

列舉成員

語言規則或其他方式所不允許的事項。

可疑但允許的事項。

要告知但非問題的事項。

提示更好做法的事項,例如建議重構。

DiagnosticTag

關於診斷類型的額外後設資料。

列舉成員

未使用或不需要的程式碼。

具有此標記的診斷會以淡出效果呈現。淡出的程度由 "editorUnnecessaryCode.opacity" 主題色彩所控制。例如,"editorUnnecessaryCode.opacity": "#000000c0" 會以 75% 的不透明度呈現程式碼。對於高對比主題,請使用 "editorUnnecessaryCode.border" 主題色彩來替不需要的程式碼加上底線,而不是將其淡出。

已棄用或過時的程式碼。

具有此標記的診斷會以刪除線呈現。

Disposable

代表可以釋放資源的類型,例如事件聆聽或計時器。

靜態

將多個類似 disposable 的物件結合成一個。當您擁有具有 dispose 函式但不是 Disposable 實例的物件時,可以使用此方法。

參數說明
...disposableLikes: Array<{dispose: () => any}>

至少具有一個 dispose 函式成員的物件。請注意,非同步的 dispose 函式不會被 await。

傳回說明
Disposable

傳回一個新的 disposable,該物件在處置 (dispose) 時會處置所有提供的 disposables。

建構子

建立一個新的 disposable,該物件會在處置時呼叫提供的函式。

請注意非同步函式不會被 await。

參數說明
callOnDispose: () => any

用於處置物件的函式。

傳回說明
Disposable

方法

釋放此物件。

參數說明
傳回說明
any

DocumentColorProvider

文件色彩提供者定義了擴充功能與編輯器中挑選及修改色彩功能之間的合約。

方法

為色彩提供 表示法

參數說明
color: Color

要顯示和插入的色彩。

context: {document: TextDocument, range: Range}

包含額外資訊的內容物件

token: CancellationToken

取消 token。

傳回說明
ProviderResult<ColorPresentation[]>

色彩表示法的陣列,或是解析為此類陣列的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

為指定的文件提供色彩。

參數說明
document: TextDocument

叫用命令的文件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<ColorInformation[]>

色彩資訊的陣列,或是解析為此類陣列的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

DocumentDropEdit

套用至放置 (drop) 的編輯作業。

建構子

參數說明
insertText: string | SnippetString

要在放置位置插入的文字或程式碼片段。

title?: string

描述此編輯的人類可讀標籤。

kind?: DocumentDropOrPasteEditKind

編輯的種類 (Kind)

傳回說明
DocumentDropEdit

屬性

套用放置時要套用的選擇性額外編輯。

要在放置位置插入的文字或程式碼片段。

編輯的種類 (Kind)

描述此編輯的人類可讀標籤。

控制多個編輯的順序。如果此提供者讓步於其他編輯,它將會顯示在清單的較下方。

DocumentDropEditProvider<T>

處理將資源放置到文字編輯器中的提供者。

這允許使用者將資源 (包括來自外部應用程式的資源) 拖放至編輯器中。在拖放檔案時,使用者可以按住 shift 鍵將檔案拖放至編輯器中,而不是將其開啟。需要啟用 editor.dropIntoEditor.enabled

方法

提供將拖放的內容插入文件中的編輯。

參數說明
document: TextDocument

發生放置動作的文件。

position: Position

文件中發生放置動作的位置。

dataTransfer: DataTransfer

包含正在拖放內容相關資料的 DataTransfer 物件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T | T[]>

DocumentDropEdit 或解析為此類物件的 thenable。若無結果,可透過傳回 undefinednull 來表示。

在套用編輯之前填入 DocumentDropEdit.additionalEdit 的選擇性方法。

每個編輯會呼叫一次,如果產生完整的編輯可能需要很長時間,則應使用此方法。解析 (Resolve) 只能用於變更 DocumentDropEdit.additionalEdit

參數說明
edit: T

要解析的 DocumentDropEdit

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

解析後的編輯或解析為此類編輯的 thenable。傳回指定的 edit 是可以的。如果未傳回任何結果,將會使用指定的 edit

DocumentDropEditProviderMetadata

提供關於 DocumentDropEditProvider 如何運作的額外後設資料。

屬性

提供者可以處理的 DataTransfer MIME 類型清單。

這可以是確切的 MIME 類型 (例如 image/png),或是萬用字元模式 (例如 image/*)。

針對從工作台中的總管或其他樹狀檢視放置的資源,請使用 text/uri-list

請使用 files 來表示:如果 DataTransfer 中存在任何檔案,則應叫用提供者。請注意,DataTransferFile 項目只有在從編輯器外部 (例如從作業系統) 放置內容時才會建立。

提供者可能在 provideDocumentDropEdits 中傳回的種類清單。

當要求特定種類的編輯時,這可用來篩選掉提供者。

DocumentDropOrPasteEditKind

靜態

基本文字編輯的根種類。

此種類應用於將基本文字插入文件的編輯。一個很好的例子是貼上剪貼簿文字,同時根據貼上的文字更新檔案中匯入的編輯。為此,我們可以使用類似 text.updateImports.someLanguageId 的種類。

儘管大多數放置/貼上編輯最終都會插入文字,但不應將 Text 用作每個編輯的基本種類,因為這是多餘的。相反地,應使用描述所插入內容類型的更特定種類。例如,如果編輯新增了 Markdown 連結,請使用 markdown.link,因為儘管插入的內容是文字,但更重要的是知道該編輯插入了 Markdown 語法。

除了插入文字之外,還能更新文件中匯入的編輯之根種類。

建構子

參數說明
value: string
傳回說明
DocumentDropOrPasteEditKind

屬性

該種類的原始字串值。

方法

透過將額外範圍附加到目前種類來建立新種類。

不會修改目前的類型。

參數說明
...parts: string[]
傳回說明
DocumentDropOrPasteEditKind

檢查 other 是否為此 DocumentDropOrPasteEditKind 的子種類。

例如,種類 "text.plain" 包含 "text.plain""text.plain.list",但不包含 "text""unicorn.text.plain"

參數說明
other: DocumentDropOrPasteEditKind

要檢查的類型。

傳回說明
boolean

檢查此種類是否與 other 相交。

例如,種類 "text.plain"text"text.plain""text.plain.list" 相交,但不與 "unicorn""textUnicorn.plain" 相交。

參數說明
other: DocumentDropOrPasteEditKind

要檢查的類型。

傳回說明
boolean

DocumentFilter

文件篩選條件透過不同的屬性 (例如語言、其資源的配置 (scheme),或是套用至路徑的 glob 模式) 來表示文件。

範例 套用至磁碟上 typescript 檔案的語言篩選條件

{ language: 'typescript', scheme: 'file' }

範例 套用至所有 package.json 路徑的語言篩選條件

{ language: 'json', pattern: '**/package.json' }

屬性

語言識別碼,例如 typescript

筆記本的類型,例如 jupyter-notebook。這可讓您縮小儲存格文件所屬的筆記本類型範圍。

請注意,設定 notebookType 屬性會改變 schemepattern 的解譯方式。設定後,它們將會針對筆記本 uri進行評估,而不是針對文件 uri。

範例 比對尚未儲存的 jupyter 筆記本內的 python 文件 (untitled)

{ language: 'python', notebookType: 'jupyter-notebook', scheme: 'untitled' }

與文件絕對路徑進行比對的 glob 模式。使用相對模式將文件篩選至工作區資料夾

Uri 配置,例如 fileuntitled

DocumentFormattingEditProvider

文件格式化提供者介面定義了擴充功能與格式化功能之間的合約。

方法

為整份文件提供格式化編輯。

參數說明
document: TextDocument

叫用命令的文件。

options: FormattingOptions

控制格式化的選項。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TextEdit[]>

一組文字編輯,或是解析為此類編輯的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

DocumentHighlight

文件反白是文字文件中值得特別注意的範圍。通常文件反白是透過變更其範圍的背景色彩來視覺化呈現。

建構子

建立新的文件反白物件。

參數說明
range: Range

反白套用的範圍。

kind?: DocumentHighlightKind

反白種類,預設為 text

傳回說明
DocumentHighlight

屬性

反白種類,預設為 text

此反白套用的範圍。

DocumentHighlightKind

文件反白種類。

列舉成員

文字上的出現。

符號的讀取存取,例如讀取變數。

符號的寫入存取,例如寫入變數。

DocumentHighlightProvider

文件反白提供者介面定義了擴充功能與文字反白功能之間的合約。

方法

提供一組文件反白,例如變數的所有出現位置或函式的所有離開點。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<DocumentHighlight[]>

文件反白的陣列,或是解析為此類陣列的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

文件連結是文字文件中的一個範圍,會連結至內部或外部資源,例如另一個文字文件或網站。

建構子

建立新的文件連結。

參數說明
range: Range

文件連結套用的範圍。不得為空。

target?: Uri

文件連結指向的 uri。

傳回說明
DocumentLink

屬性

此連結套用的範圍。

此連結指向的 uri。

將滑鼠停留在這個連結上時顯示的工具提示文字。

如果提供了工具提示,它將會顯示在包含如何觸發連結之指示的字串中,例如 {0} (ctrl + click)。特定指示會因作業系統、使用者設定和語系而異。

DocumentLinkProvider<T>

文件連結提供者定義了擴充功能與在編輯器中顯示連結功能之間的合約。

方法

為指定的文件提供連結。請注意,編輯器內建了一個預設提供者,可用來偵測 http(s)file 連結。

參數說明
document: TextDocument

叫用命令的文件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

文件連結的陣列,或是解析為此類陣列的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

給定一個連結,填入其目標。當在 UI 中選取不完整的連結時,會呼叫此方法。提供者可以實作此方法,並從 provideDocumentLinks 方法傳回不完整的連結 (沒有目標),這通常有助於提升效能。

參數說明
link: T

要解析的連結。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

DocumentPasteEdit

套用貼上操作的編輯。

建構子

建立新的貼上編輯。

參數說明
insertText: string | SnippetString

要在貼上位置插入的文字或程式碼片段。

title: string

描述此編輯的人類可讀標籤。

kind: DocumentDropOrPasteEditKind

編輯的種類 (Kind)

傳回說明
DocumentPasteEdit

屬性

套用貼上時要套用的選擇性額外編輯。

要在貼上位置插入的文字或程式碼片段。

如果您的編輯需要更進階的插入邏輯,請將此設定為空字串,並改為提供額外編輯

編輯的種類 (Kind)

描述此編輯的人類可讀標籤。

當可能有多個貼上編輯可套用時,控制排序。

如果此編輯讓步於另一個編輯,它將會顯示在顯示給使用者的可能貼上編輯清單的較下方。

DocumentPasteEditContext

關於貼上操作的額外資訊。

屬性

要傳回的要求貼上編輯種類。

PasteAs 要求明確的種類時,建議提供者在產生所要求種類的編輯時更具彈性。

要求貼上編輯的原因。

DocumentPasteEditProvider<T>

當使用者在 TextDocument 中複製或貼上時叫用的提供者。

方法

在使用者從文字編輯器複製後叫用的選擇性方法。

這允許提供者將關於複製文字的後設資料附加至 DataTransfer。然後,此資料傳輸會在 provideDocumentPasteEdits 中傳回給提供者。

請注意,目前對 DataTransfer 的任何變更都與目前的編輯器視窗隔離。這表示其他編輯器視窗或其他應用程式無法看到任何新增的後設資料。

參數說明
document: TextDocument

進行複製的文字文件。

ranges: readonly Range[]

正在 document 中複製的範圍。

dataTransfer: DataTransfer

與複製相關聯的資料傳輸。您可以在此儲存其他值,以便稍後在 provideDocumentPasteEdits 中使用。此物件僅在此方法執行期間有效。

token: CancellationToken

取消 token。

傳回說明
void | Thenable<void>

當對 dataTransfer 的所有變更完成時解析的選擇性 thenable。

在使用者貼上到文字編輯器之前叫用。

傳回的編輯可以取代標準的貼上行為。

參數說明
document: TextDocument

正在貼入的文件

ranges: readonly Range[]

要貼入之 document 中的範圍。

dataTransfer: DataTransfer

與貼上相關聯的資料傳輸。此物件僅在貼上操作期間有效。

context: DocumentPasteEditContext

貼上的額外內容。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

可以套用貼上的潛在編輯集。一次只能套用一個傳回的 DocumentPasteEdit。如果所有提供者都傳回多個編輯,則會自動套用第一個編輯,並顯示一個讓使用者切換到其他編輯的小工具 (widget)。

在套用編輯之前填入 DocumentPasteEdit.additionalEdit 的選擇性方法。

每個編輯會呼叫一次,如果產生完整的編輯可能需要很長時間,則應使用此方法。解析 (Resolve) 只能用於變更 DocumentPasteEdit.insertTextDocumentPasteEdit.additionalEdit

參數說明
pasteEdit: T

要解析的 DocumentPasteEdit

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

解析後的貼上編輯或解析為此類編輯的 thenable。傳回指定的 pasteEdit 是可以的。如果未傳回任何結果,將會使用指定的 pasteEdit

DocumentPasteProviderMetadata

提供關於 DocumentPasteEditProvider 如何運作的額外後設資料。

屬性

prepareDocumentPaste 可能會在複製時新增的 MIME 類型。

應針對其叫用 provideDocumentPasteEdits 的 MIME 類型。

這可以是確切的 MIME 類型 (例如 image/png),或是萬用字元模式 (例如 image/*)。

針對從工作台中的總管或其他樹狀檢視放置的資源,請使用 text/uri-list

請使用 files 來表示:如果 DataTransfer 中存在任何檔案,則應叫用提供者。請注意,DataTransferFile 項目只有在從編輯器外部 (例如從作業系統) 貼上內容時才會建立。

提供者可能在 provideDocumentPasteEdits 中傳回的種類清單。

當要求特定種類的編輯時,這可用來篩選掉提供者。

DocumentPasteTriggerKind

要求貼上編輯的原因。

列舉成員

作為一般貼上操作的一部分要求貼上。

使用者透過 paste as (貼上為) 命令要求貼上。

DocumentRangeFormattingEditProvider

文件格式化提供者介面定義了擴充功能與格式化功能之間的合約。

方法

為文件中的範圍提供格式化編輯。

給定的範圍只是一個提示,提供者可以決定格式化較小或較大的範圍。通常這是透過將範圍的起點和終點調整為完整的語法節點來完成的。

參數說明
document: TextDocument

叫用命令的文件。

range: Range

應進行格式化的範圍。

options: FormattingOptions

控制格式化的選項。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TextEdit[]>

一組文字編輯,或是解析為此類編輯的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

為文件中的多個範圍提供格式化編輯。

此函式是選擇性的,但允許格式化工具在僅格式化修改過的範圍或格式化大量選取範圍時執行得更快。

給定的範圍只是提示,提供者可以決定格式化較小或較大的範圍。通常這是透過將範圍的起點和終點調整為完整的語法節點來完成的。

參數說明
document: TextDocument

叫用命令的文件。

ranges: Range[]

應進行格式化的範圍。

options: FormattingOptions

控制格式化的選項。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TextEdit[]>

一組文字編輯,或是解析為此類編輯的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

DocumentRangeSemanticTokensProvider

文件範圍語意標記提供者介面定義了擴充功能與語意標記之間的合約。

活動

用於發出訊號表示此提供者的語意標記已變更的選擇性事件。

方法

參數說明
document: TextDocument
range: Range
token: CancellationToken
傳回說明
ProviderResult<SemanticTokens>

DocumentSelector

語言選取器是一個或多個語言識別碼與語言篩選條件的組合。

請注意,僅為語言識別碼的文件選取器會選取所有文件,甚至是那些未儲存在磁碟上的文件。只有在功能不需要進一步內容即可運作時 (例如不需要解析相關的「檔案」),才使用此類選取器。

範例

let sel: DocumentSelector = { scheme: 'file', language: 'typescript' };

DocumentSemanticTokensProvider

文件語意標記提供者介面定義了擴充功能與語意標記之間的合約。

活動

用於發出訊號表示此提供者的語意標記已變更的選擇性事件。

方法

檔案中的標記表示為整數陣列。每個標記的位置是相對於其前一個標記來表示的,因為當在檔案中進行編輯時,大多數標記相對於彼此保持穩定。


簡而言之,每個標記需要 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: [] }
  1. 首先,必須設計一個圖例 (legend)。此圖例必須事先提供並涵蓋所有可能的標記類型。對於此範例,我們將選擇下列圖例,該圖例必須在註冊提供者時傳入
   tokenTypes: ['property', 'type', 'class'],
   tokenModifiers: ['private', 'static']
  1. 第一個轉換步驟是使用圖例將 tokenTypetokenModifiers 編碼為整數。標記類型是透過索引查閱的,因此 tokenType1 意味著 tokenTypes[1]。可以使用位元旗標 (bit flags) 設定多個標記修飾詞,因此 tokenModifier3 首先被視為二進位 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 }
  1. 下一個步驟是以相對於檔案中前一個標記的方式來表示每個標記。在此情況下,第二個標記與第一個標記在同一行,因此第二個標記的 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 }
  1. 最後一個步驟是將標記的 5 個欄位內嵌 (inline) 在單一陣列中,這是一種記憶體友善的表示法
   // 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>

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

代表出現在文件中的程式設計建構,例如變數, 類別, 介面等。文件符號可以是階層式的,且它們具有兩個範圍:一個涵蓋其定義,另一個指向其最有趣的範圍,例如識別碼的範圍。

建構子

建立新的文件符號。

參數說明
name: string

符號的名稱。

detail: string

符號的詳細資料。

kind: SymbolKind

符號的種類。

range: Range

符號的完整範圍。

selectionRange: Range

應顯示 (reveal) 的範圍。

傳回說明
DocumentSymbol

屬性

此符號的子項,例如類別的屬性。

此符號的更多詳細資料,例如函式的簽章。

此符號的種類。

此符號的名稱。

包圍此符號的範圍,不包含前導/尾端空白,但包含其他所有內容,例如註解和程式碼。

選取此符號時應選取並顯示的範圍,例如函式的名稱。必須包含在 range 中。

此符號的標記。

DocumentSymbolProvider

文件符號提供者介面定義了擴充功能與前往符號 (go to symbol) 功能之間的合約。

方法

為指定的文件提供符號資訊。

參數說明
document: TextDocument

叫用命令的文件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<DocumentSymbol[] | SymbolInformation[]>

文件反白的陣列,或是解析為此類陣列的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

DocumentSymbolProviderMetadata

關於文件符號提供者的後設資料。

屬性

當一份文件顯示多個大綱樹狀結構時所顯示的人類可讀字串。

EndOfLine

代表文件中的行尾字元序列。

列舉成員

換行 \n 字元。

歸位換行 \r\n 序列。

EnterAction

描述按下 Enter 鍵時要執行的動作。

屬性

描述要附加在新行之後與縮排之後的文字。

描述如何處理縮排。

描述要從新行縮排中移除的字元數。

EnvironmentVariableCollection

擴充功能可以套用至處理程序環境的變更集合。

屬性

環境變數集合的描述,這將用於在 UI 中描述變更。

集合是否應針對工作區進行快取,並在視窗重新載入時套用至終端機。當為 true 時,集合將立即生效,例如當視窗重新載入時。此外,如果快取版本存在,此 API 將會傳回快取版本。當解除安裝擴充功能或清除集合時,集合將會失效。預設為 true。

方法

將值附加到環境變數。

請注意,擴充功能對任何單一變數只能進行一次變更,因此這將會覆寫先前對 replace、append 或 prepend 的任何呼叫。

參數說明
variable: string

要附加值的變數。

value: string

要附加到變數的值。

options?: EnvironmentVariableMutatorOptions

套用到變更器的選項,未提供選項時,預設會是 { applyAtProcessCreation: true }

傳回說明
void

從此集合清除所有變更器。

參數說明
傳回說明
void

刪除此集合中針對某個變數的變更器。

參數說明
variable: string

要刪除其變更器的變數。

傳回說明
void

迭代此集合中的每個變更器。

參數說明
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any

要針對每個項目執行的函式。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
void

取得此集合套用至變數的變更器 (如果有的話)。

參數說明
variable: string

要取得其變更器的變數。

傳回說明
EnvironmentVariableMutator

將值前置到環境變數。

請注意,擴充功能對任何單一變數只能進行一次變更,因此這將會覆寫先前對 replace、append 或 prepend 的任何呼叫。

參數說明
variable: string

要前置值的變數。

value: string

要前置到變數的值。

options?: EnvironmentVariableMutatorOptions

套用到變更器的選項,未提供選項時,預設會是 { applyAtProcessCreation: true }

傳回說明
void

用值取代環境變數。

請注意,擴充功能對任何單一變數只能進行一次變更,因此這將會覆寫先前對 replace、append 或 prepend 的任何呼叫。

參數說明
variable: string

要取代的變數。

value: string

用來取代變數的值。

options?: EnvironmentVariableMutatorOptions

套用到變更器的選項,未提供選項時,預設會是 { applyAtProcessCreation: true }

傳回說明
void

EnvironmentVariableMutator

要套用至環境變數的變更類型及其值。

屬性

套用到變更器的選項。

將對變數發生的變更類型。

要用於變數的值。

EnvironmentVariableMutatorOptions

套用到變更器的選項。

屬性

剛好在建立處理程序之前套用到環境。預設為 false。

在命令殼層整合指令碼中套用到環境。請注意,如果停用命令殼層整合或因故無法運作,這將不會套用變更器。預設為 false。

EnvironmentVariableMutatorType

可以套用至環境變數的變更類型。

列舉成員

取代變數的現有值。

附加到變數現有值的結尾。

前置到變數現有值的開頭。

EnvironmentVariableScope

環境變數集合所套用的範圍物件。

屬性

用來取得集合的任何特定工作區資料夾。

EvaluatableExpression

EvaluatableExpression 代表文件中可由現用偵錯工具或執行階段評估的運算式。此評估的結果會顯示在類似工具提示的小工具中。如果僅指定範圍,則會從基礎文件中擷取運算式。選擇性運算式可用來覆寫擷取的運算式。在這種情況下,範圍仍用於反白顯示文件中的範圍。

建構子

建立新的可評估運算式物件。

參數說明
range: Range

基礎文件中從中擷取可評估運算式的範圍。

expression?: string

如果指定,將會覆寫擷取的運算式。

傳回說明
EvaluatableExpression

屬性

如果指定,該運算式將會覆寫擷取的運算式。

該範圍用於從基礎文件中擷取可評估運算式並加以反白顯示。

EvaluatableExpressionProvider

可評估運算式提供者介面定義了擴充功能與偵錯滑鼠停留 (debug hover) 之間的合約。在此合約中,提供者針對文件中給定的位置傳回可評估運算式,且編輯器會在現用偵錯工作階段中評估此運算式,並在偵錯滑鼠停留中顯示結果。

方法

為給定的文件和位置提供可評估運算式。編輯器將在現用偵錯工作階段中評估此運算式,並在偵錯滑鼠停留中顯示結果。運算式可以由基礎文件中的範圍隱式指定,或透過明確傳回運算式來指定。

參數說明
document: TextDocument

即將出現偵錯滑鼠停留的文件。

position: Position

文件中即將出現偵錯滑鼠停留的行與字元位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<EvaluatableExpression>

EvaluatableExpression 或解析為此類運算式的 thenable。若無結果,可透過傳回 undefinednull 來表示。

Event<T>

代表具型別的事件。

代表事件的函式,您透過將監聽器函式作為引數呼叫它來訂閱該事件。

範例

item.onDidChange(function(event) {
  console.log('Event happened: ' + event);
});

代表事件的函式,您透過將監聽器函式作為引數呼叫它來訂閱該事件。

參數說明
listener: (e: T) => any

當事件發生時,將會呼叫監聽器函式。

thisArgs?: any

呼叫事件監聽器時將使用的 this 引數。

disposables?: Disposable[]

將會新增 Disposable 的陣列。

傳回說明
Disposable

用於取消訂閱事件接聽程式的 disposable。

EventEmitter<T>

事件發射器可以用來建立和管理供其他人訂閱的 Event。一個發射器永遠擁有一個事件。

如果您想要從擴充功能內部提供事件(例如在 TextDocumentContentProvider 內部或向其他擴充功能提供 API 時),請使用此類別。

建構子

參數說明
傳回說明
EventEmitter<T>

屬性

事件接聽程式可訂閱的內容。

方法

處置此物件並釋放資源。

參數說明
傳回說明
void

通知 event 的所有訂閱者。一個或多個接聽程式失敗並不會導致此函式呼叫失敗。

參數說明
data: T

事件物件。

傳回說明
void

Extension<T>

表示擴充功能。

若要取得 Extension 的執行個體,請使用 getExtension

屬性

此擴充功能匯出的公開 API (activate 的傳回值)。在此擴充功能啟用之前存取此欄位是無效的操作。

擴充功能種類描述了擴充功能是在 UI 執行的地方執行,還是在遠端擴充功能主機執行的地方執行。擴充功能種類定義在擴充功能的 package.json 檔案中,但也可以透過 remote.extensionKind 設定來精進。當不存在遠端擴充功能主機時,其值為 ExtensionKind.UI

包含此擴充功能的目錄之絕對檔案路徑。Extension.extensionUri.fsPath 的簡寫標記法 (與 uri 配置無關)。

包含擴充功能的目錄之 uri。

格式為 publisher.name 的標準擴充功能識別碼。

如果擴充功能已啟用,則為 true

擴充功能 package.json 的已剖析內容。

方法

啟用此擴充功能並傳回其公開 API。

參數說明
傳回說明
Thenable<T>

當此擴充功能啟用時將會解析的 promise。

ExtensionContext

擴充功能內容是擴充功能私有的公用程式集合。

ExtensionContext 的執行個體會作為擴充功能之 activate 呼叫的第一個參數提供。

屬性

取得此工作區的擴充功能全域環境變數集合,允許將變更套用至終端機環境變數。

目前的 Extension 執行個體。

擴充功能執行所在的模式。可能的數值與情境請參閱 ExtensionMode

包含擴充功能的目錄之絕對檔案路徑。ExtensionContext.extensionUri.fsPath 的簡寫標記法 (與 uri 配置無關)。

包含擴充功能的目錄之 uri。

儲存與目前開啟的 workspace 無關之狀態的 memento 物件。

擴充功能可以用來儲存全域狀態的絕對檔案路徑。該目錄可能不存在於磁碟上,且建立工作由擴充功能決定。不過,保證父目錄是存在的。

使用 globalState 來儲存鍵值資料。

擴充功能可以用來儲存全域狀態的目錄之 uri。該目錄可能不存在於磁碟上,且建立工作由擴充功能決定。不過,保證父目錄是存在的。

使用 globalState 來儲存鍵值資料。

如何從 uri 讀取和寫入檔案與資料夾,請參閱 workspace.fs

保留關於此擴充功能如何使用語言模型之資訊的物件。

另請參閱 LanguageModelChat.sendRequest

擴充功能可以在其中建立記錄檔之目錄的絕對檔案路徑。該目錄可能不存在於磁碟上,且建立工作由擴充功能決定。不過,保證父目錄是存在的。

  • 已取代 - 請改用 logUri

擴充功能可以在其中建立記錄檔之目錄的 uri。該目錄可能不存在於磁碟上,且建立工作由擴充功能決定。不過,保證父目錄是存在的。

如何從 uri 讀取和寫入檔案與資料夾,請參閱 workspace.fs

儲存與目前開啟的 workspace 無關之狀態的密碼儲存區物件。

擴充功能可以在其中儲存私密狀態的工作區特有目錄之絕對檔案路徑。該目錄可能不存在於磁碟上,且建立工作由擴充功能決定。不過,保證父目錄是存在的。

使用 workspaceStateglobalState 來儲存鍵值資料。

擴充功能可以在其中儲存私密狀態的工作區特有目錄之 uri。該目錄可能不存在,且建立工作由擴充功能決定。不過,保證父目錄是存在的。當尚未開啟任何工作區或資料夾時,其值為 undefined

使用 workspaceStateglobalState 來儲存鍵值資料。

如何從 uri 讀取和寫入檔案與資料夾,請參閱 workspace.fs

可以新增可處置物件的陣列。當此擴充功能停用時,這些可處置物件將會被處置。

請注意,非同步的 dispose 函式不會被等待 (awaited)。

在目前開啟的 workspace 內容中儲存狀態的 memento 物件。

方法

取得包含在擴充功能中的資源之絕對路徑。

請注意,可以透過 Uri.joinPathextensionUri 來建構絕對 uri,例如 vscode.Uri.joinPath(context.extensionUri, relativePath);

參數說明
relativePath: string

包含在擴充功能中的資源之相對路徑。

傳回說明
string

資源的絕對路徑。

ExtensionKind

在遠端視窗中,擴充功能種類描述了擴充功能是在 UI (視窗) 執行的地方執行,還是在遠端執行。

列舉成員

擴充功能在 UI 執行的地方執行。

擴充功能在遠端擴充功能主機執行的地方執行。

ExtensionMode

ExtensionContext 上提供了 ExtensionMode,並指出特定擴充功能執行所在的模式。

列舉成員

此擴充功能是以正常方式 (例如從市集或 VSIX) 安裝在編輯器中。

擴充功能是從啟動編輯器時所提供的 --extensionDevelopmentPath 執行。

擴充功能是從 --extensionTestsPath 執行,且擴充功能主機正在執行單元測試。

ExtensionTerminalOptions

描述虛擬處理程序終端機應該使用哪些選項的值物件。

屬性

終端機的圖示 ThemeColor。為了在各佈景主題中達到最佳對比度和一致性,建議使用標準的 terminal.ansi* 佈景主題金鑰。

終端機的圖示路徑或 ThemeIcon

選擇退出重新啟動和重新載入時的預設終端機持續性。這只有在啟用 terminal.integrated.enablePersistentSessions 時才會生效。

將用於在 UI 中表示終端機的人類可讀字串。

允許擴充功能控制終端機的 Pseudoterminal 實作。

用於驗證 Shell 整合序列是否來自受信任來源的 nonce。這對使用者體驗 (UX) 的影響範例是,如果命令列回報時帶有 nonce,則透過 shell 整合命令裝飾重新執行命令列之前,不需要向使用者驗證命令列是否正確。

如果終端機包含 自訂 shell 整合支援,則應使用此項。它應該設定為隨機 GUID。在 Pseudoterminal 實作中,這個值可以在相關序列中傳遞,以使其受到信任。

FileChangeEvent

檔案系統提供者必須用來發出檔案變更訊號的事件。

屬性

變更的類型。

已變更檔案的 uri。

FileChangeType

檔案變更類型的列舉。

列舉成員

檔案的內容或中繼資料已變更。

已建立檔案。

已刪除檔案。

FileCoverage

包含檔案的涵蓋率中繼資料。

靜態

建立一個 FileCoverage 執行個體,其中填入了來自涵蓋率詳細資料的計數。

參數說明
uri: Uri

已涵蓋的檔案 URI

details: readonly FileCoverageDetail[]

詳細的涵蓋率資訊

傳回說明
FileCoverage

建構子

參數說明
uri: Uri

已涵蓋的檔案 URI

statementCoverage: TestCoverageCount

陳述式涵蓋率資訊。如果回報者未提供陳述式涵蓋率資訊,則可改用此項來表示行涵蓋率。

branchCoverage?: TestCoverageCount

分支涵蓋率資訊

declarationCoverage?: TestCoverageCount

宣告涵蓋率資訊

includesTests?: TestItem[]

此涵蓋率報告中包含的測試案例,請參閱 FileCoverage.includesTests

傳回說明
FileCoverage

屬性

分支涵蓋率資訊。

宣告涵蓋率資訊。根據回報者和語言而定,這可能是諸如函式、方法或命名空間等類型。

在此檔案中產生涵蓋率的 測試案例清單。如果已設定,則也必須定義 TestRunProfile.loadDetailedCoverageForTest 才能擷取詳細的涵蓋率資訊。

陳述式涵蓋率資訊。如果回報者未提供陳述式涵蓋率資訊,則可改用此項來表示行涵蓋率。

檔案 URI。

FileCoverageDetail

TestRunProfile.loadDetailedCoverage 傳回的涵蓋率詳細資料。

FileCreateEvent

建立檔案之後觸發的事件。

屬性

已建立的檔案。

FileDecoration

檔案裝飾 (file decoration) 表示可以與檔案一起呈現的中繼資料。

建構子

建立新的裝飾。

參數說明
badge?: string

代表此裝飾的字母。

tooltip?: string

裝飾的工具提示。

color?: ThemeColor

裝飾的顏色。

傳回說明
FileDecoration

屬性

代表此裝飾的極短字串。

此裝飾的顏色。

表示此裝飾應傳播至其父代的旗標。

此裝飾的人類可讀工具提示。

FileDecorationProvider

裝飾提供者介面定義了擴充功能與檔案裝飾之間的合約。

活動

用於發出一個或多個檔案的裝飾已變更訊號的選擇性事件。

請注意,此事件應該用於傳播關於子代資訊。

另請參閱 EventEmitter

方法

為指定的 uri 提供裝飾。

請注意,此函式僅在檔案於 UI 中呈現時呼叫。這表示從子代向上傳播的裝飾必須透過 onDidChangeFileDecorations 事件向編輯器發出訊號。

參數說明
uri: Uri

要為其提供裝飾的檔案 uri。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<FileDecoration>

裝飾或解析為該裝飾的 thenable。

FileDeleteEvent

刪除檔案之後觸發的事件。

屬性

已刪除的檔案。

FilePermission

檔案的權限。

列舉成員

檔案為唯讀。

注意:所有來自以 isReadonly: true 選項註冊之 FileSystemProviderFileStat 都會被隱含地處理為好像已設定 FilePermission.Readonly。因此,無法註冊某些 FileStat 不是唯讀的唯讀檔案系統提供者。

FileRenameEvent

重新命名檔案之後觸發的事件。

屬性

已重新命名的檔案。

FileStat

FileStat 類型代表關於檔案的中繼資料

屬性

自 1970 年 1 月 1 日 00:00:00 UTC 以來經過的建立時間戳記 (毫秒)。

自 1970 年 1 月 1 日 00:00:00 UTC 以來經過的修改時間戳記 (毫秒)。

注意:如果檔案已變更,提供一個比先前值更新的 mtime 非常重要。否則,可能會有一些最佳化機制導致編輯器中未顯示更新後的檔案內容。

檔案的權限,例如檔案是否為唯讀。

注意:此值可能是位元遮罩 (bitmask),例如 FilePermission.Readonly | FilePermission.Other

大小 (以位元組為單位)。

注意:如果檔案已變更,提供更新的 size 非常重要。否則,可能會有一些最佳化機制導致編輯器中未顯示更新後的檔案內容。

檔案的類型,例如是一般檔案、目錄或指向檔案的符號連結。

注意:此值可能是位元遮罩,例如 FileType.File | FileType.SymbolicLink

FileSystem

檔案系統介面公開了編輯器的內建和外部貢獻的 檔案系統提供者。它允許擴充功能處理來自本機磁碟的檔案,以及來自遠端位置 (例如遠端擴充功能主機或 ftp 伺服器) 的檔案。

請注意,此介面的執行個體可作為 workspace.fs 使用。

方法

複製檔案或資料夾。

參數說明
source: Uri

現有的檔案。

target: Uri

目標位置。

options?: {overwrite: boolean}

定義是否應覆寫現有檔案。

傳回說明
Thenable<void>

建立新目錄 (注意,新檔案是透過 write 呼叫建立的)。

請注意,遺失的目錄會自動建立,例如此呼叫具有 mkdirp 語意。

參數說明
uri: Uri

新資料夾的 uri。

傳回說明
Thenable<void>

刪除檔案。

參數說明
uri: Uri

要刪除的資源。

options?: {recursive: boolean, useTrash: boolean}

定義是否應使用資源回收筒以及資料夾刪除是否為遞迴的

傳回說明
Thenable<void>

檢查指定的檔案系統是否支援寫入檔案。

請記住,檔案系統支援寫入並不代表寫入一定會成功。可能會有權限問題或其他錯誤阻止寫入檔案。

參數說明
scheme: string

檔案系統的配置 (scheme),例如 filegit

傳回說明
boolean

如果檔案系統支援寫入則為 true,如果不支援寫入 (也就是唯讀) 則為 false,如果編輯器不了解該檔案系統則為 undefined

擷取 directory 的所有項目。

參數說明
uri: Uri

資料夾的 uri。

傳回說明
Thenable<Array<[string, FileType]>>

名稱/類型元組的陣列或解析為此類陣列的 thenable。

讀取檔案的完整內容。

參數說明
uri: Uri

檔案的 uri。

傳回說明
Thenable<Uint8Array>

位元組陣列或解析為此類陣列的 thenable。

重新命名檔案或資料夾。

參數說明
source: Uri

現有的檔案。

target: Uri

新的位置。

options?: {overwrite: boolean}

定義是否應覆寫現有檔案。

傳回說明
Thenable<void>

擷取關於檔案的中繼資料。

參數說明
uri: Uri

要擷取其中繼資料的檔案 uri。

傳回說明
Thenable<FileStat>

關於檔案的檔案中繼資料。

將資料寫入檔案,並取代其整個內容。

參數說明
uri: Uri

檔案的 uri。

content: Uint8Array

檔案的新內容。

傳回說明
Thenable<void>

FileSystemError

檔案系統提供者應用於發出錯誤訊號的類型。

此類別針對常見的錯誤情況提供原廠方法 (factory methods),例如當檔案或資料夾不存在時的 FileNotFound,使用方式如下:throw vscode.FileSystemError.FileNotFound(someUri);

靜態

建立錯誤以發出檔案或資料夾已存在的訊號,例如在建立但未覆寫檔案時。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

建立錯誤以發出檔案為資料夾的訊號。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

建立錯誤以發出檔案不是資料夾的訊號。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

建立錯誤以發出找不到檔案或資料夾的訊號。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

建立錯誤以發出操作缺乏所需權限的訊號。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

建立錯誤以發出檔案系統無法使用或過於忙碌而無法完成要求的訊號。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

建構子

建立新的檔案系統錯誤。

參數說明
messageOrUri?: string | Uri

訊息或 uri。

傳回說明
FileSystemError

屬性

識別此錯誤的代碼。

可能的值為錯誤名稱,例如 FileNotFound,或是針對未指定錯誤的 Unknown

FileSystemProvider

檔案系統提供者定義了編輯器讀取、寫入、發現及管理檔案和資料夾所需的項目。它允許擴充功能從遠端位置 (例如 ftp 伺服器) 提供檔案,並將其無縫整合到編輯器中。

  • 注意 1:檔案系統提供者 API 與 uris 搭配運作,並假設為階層式路徑,例如 foo:/my/pathfoo:/my/ 的子系,且是 foo:/my/path/deeper 的父系。
  • 注意 2:有一個啟動事件 onFileSystem:<scheme>,會在存取檔案或資料夾時觸發。
  • 注意 3:「檔案」一詞常被用來表示所有種類的檔案,例如資料夾、符號連結和一般檔案。

活動

用於發出資源已建立、變更或刪除訊號的事件。此事件應該針對正由此提供者的用戶端監視的資源進行觸發。

注意:變更的檔案中繼資料必須提供一個比 stat 中先前的更新值更進一步的 mtime 以及正確的 size 值,這點非常重要。否則,可能會有一些最佳化機制導致編輯器中未顯示該變更。

方法

複製檔案或資料夾。實作此函式是選用的,但它會加速複製操作。

  • 擲回 - 當 destination 的父代不存在時擲回 FileNotFound,例如不需要 mkdirp 邏輯。
  • 擲回 - 當 destination 存在且 overwrite 選項不是 true 時擲回 FileExists
參數說明
source: Uri

現有的檔案。

destination: Uri

目標位置。

options: {overwrite: boolean}

定義是否應覆寫現有檔案。

傳回說明
void | Thenable<void>

建立新目錄 (注意,新檔案是透過 write 呼叫建立的)。

  • 擲回 - 當 uri 的父代不存在時擲回 FileNotFound,例如不需要 mkdirp 邏輯。
  • 擲回 - 當 uri 已經存在時擲回 FileExists
參數說明
uri: Uri

新資料夾的 uri。

傳回說明
void | Thenable<void>

刪除檔案。

參數說明
uri: Uri

要刪除的資源。

options: {recursive: boolean}

定義資料夾刪除是否為遞迴的。

傳回說明
void | Thenable<void>

擷取 directory 的所有項目。

參數說明
uri: Uri

資料夾的 uri。

傳回說明
Array<[string, FileType]> | Thenable<Array<[string, FileType]>>

名稱/類型元組的陣列或解析為此類陣列的 thenable。

讀取檔案的完整內容。

參數說明
uri: Uri

檔案的 uri。

傳回說明
Uint8Array | Thenable<Uint8Array>

位元組陣列或解析為此類陣列的 thenable。

重新命名檔案或資料夾。

  • 擲回 - 當 newUri 的父代不存在時擲回 FileNotFound,例如不需要 mkdirp 邏輯。
  • 擲回 - 當 newUri 存在且 overwrite 選項不是 true 時擲回 FileExists
參數說明
oldUri: Uri

現有的檔案。

newUri: Uri

新的位置。

options: {overwrite: boolean}

定義是否應覆寫現有檔案。

傳回說明
void | Thenable<void>

擷取關於檔案的中繼資料。

請注意,符號連結的中繼資料應該是它們所參照之檔案的中繼資料。不過,除了實際類型之外,還必須使用 SymbolicLink 類型,例如 FileType.SymbolicLink | FileType.Directory

參數說明
uri: Uri

要擷取其中繼資料的檔案 uri。

傳回說明
FileStat | Thenable<FileStat>

關於檔案的檔案中繼資料。

訂閱 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

告訴提供者停止監視 uri 的可處置物件 (disposable)。

將資料寫入檔案,並取代其整個內容。

  • 擲回 - 當 uri 不存在且未設定 create 時擲回 FileNotFound
  • 擲回 - 當 uri 的父代不存在且已設定 create 時擲回 FileNotFound,例如不需要 mkdirp 邏輯。
  • 擲回 - 當 uri 已經存在、已設定 create 但未設定 overwrite 時擲回 FileExists
參數說明
uri: Uri

檔案的 uri。

content: Uint8Array

檔案的新內容。

options: {create: boolean, overwrite: boolean}

定義是否應該或必須建立遺失的檔案。

傳回說明
void | Thenable<void>

FileSystemWatcher

檔案系統監視器會發出關於磁碟上或來自其他 FileSystemProviders 之檔案和資料夾變更的通知。

若要取得 FileSystemWatcher 的執行個體,請使用 createFileSystemWatcher

活動

在檔案/資料夾變更時觸發的事件。

在檔案/資料夾建立時觸發的事件。

在檔案/資料夾刪除時觸發的事件。

屬性

如果此檔案系統監視器的建立方式是忽略變更檔案系統事件,則為 true。

如果此檔案系統監視器的建立方式是忽略建立檔案系統事件,則為 true。

如果此檔案系統監視器的建立方式是忽略刪除檔案系統事件,則為 true。

方法

釋放此物件。

參數說明
傳回說明
any

FileType

檔案類型的列舉。FileDirectory 類型也可以是符號連結,在該情況下請使用 FileType.File | FileType.SymbolicLinkFileType.Directory | FileType.SymbolicLink

列舉成員

檔案類型不明。

一般檔案。

目錄。

指向檔案的符號連結。

FileWillCreateEvent

即將建立檔案時觸發的事件。

若要在建立檔案之前對工作區進行修改,請呼叫帶有解析為 workspace edit 之 thenable 的 waitUntil 函式。

屬性

即將建立的檔案。

取消 token。

方法

允許暫停事件並套用 workspace edit

注意:此函式只能在事件分派期間呼叫,不能以非同步方式呼叫

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
參數說明
thenable: Thenable<WorkspaceEdit>

延遲儲存的 thenable。

傳回說明
void

允許暫停事件,直到提供的 thenable 解析為止。

注意:此函式只能在事件分派期間呼叫。

參數說明
thenable: Thenable<any>

延遲儲存的 thenable。

傳回說明
void

FileWillDeleteEvent

即將刪除檔案時觸發的事件。

若要在刪除檔案之前對工作區進行修改,請呼叫帶有解析為 workspace edit 之 thenable 的 waitUntil 函式。

屬性

即將刪除的檔案。

取消 token。

方法

允許暫停事件並套用 workspace edit

注意:此函式只能在事件分派期間呼叫,不能以非同步方式呼叫

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
參數說明
thenable: Thenable<WorkspaceEdit>

延遲儲存的 thenable。

傳回說明
void

允許暫停事件,直到提供的 thenable 解析為止。

注意:此函式只能在事件分派期間呼叫。

參數說明
thenable: Thenable<any>

延遲儲存的 thenable。

傳回說明
void

FileWillRenameEvent

即將重新命名檔案時觸發的事件。

若要在重新命名檔案之前對工作區進行修改,請呼叫帶有解析為 workspace edit 之 thenable 的 waitUntil 函式。

屬性

即將重新命名的檔案。

取消 token。

方法

允許暫停事件並套用 workspace edit

注意:此函式只能在事件分派期間呼叫,不能以非同步方式呼叫

workspace.onWillCreateFiles(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
參數說明
thenable: Thenable<WorkspaceEdit>

延遲儲存的 thenable。

傳回說明
void

允許暫停事件,直到提供的 thenable 解析為止。

注意:此函式只能在事件分派期間呼叫。

參數說明
thenable: Thenable<any>

延遲儲存的 thenable。

傳回說明
void

FoldingContext

摺疊內容 (供未來使用)

FoldingRange

以行為基礎的摺疊範圍。若要有效,起始行和結束行必須大於零且小於文件中的行數。無效的範圍將會被忽略。

建構子

建立新的摺疊範圍。

參數說明
start: number

摺疊範圍的起始行。

end: number

摺疊範圍的結束行。

kind?: FoldingRangeKind

摺疊範圍的類型。

傳回說明
FoldingRange

屬性

要摺疊之範圍以 0 為起始的結束行。摺疊區域在該行的最後一個字元結束。若要有效,結束值必須大於或等於零且小於文件中的行數。

描述摺疊範圍的 類型,例如 CommentRegion。此類型用於將摺疊範圍分類,並供「摺疊所有註解」等命令使用。所有類型的列舉請參閱 FoldingRangeKind。如果未設定,該範圍則源自語法元素。

要摺疊之範圍以 0 為起始的起始行。摺疊區域在該行的最後一個字元之後開始。若要有效,結束值必須大於或等於零且小於文件中的行數。

FoldingRangeKind

特定摺疊範圍類型的列舉。此類型是 FoldingRange 的選用欄位,用於區分特定的摺疊範圍,例如源自註解的範圍。此類型用於諸如 Fold all commentsFold all regions 的命令。如果未在範圍上設定此類型,則該範圍源自註解、匯入或區域標記以外的語法元素。

列舉成員

代表註解的摺疊範圍類型。

代表匯入的摺疊範圍類型。

代表源自像是 #region#endregion 等摺疊標記之區域的摺疊範圍類型。

FoldingRangeProvider

摺疊範圍提供者介面定義了擴充功能與編輯器中 摺疊 之間的合約。

活動

用於發出此提供者的摺疊範圍已變更訊號的選用事件。

方法

傳回摺疊範圍的清單,若提供者不想參與或已被取消,則傳回 null 與 undefined。

參數說明
document: TextDocument

叫用命令的文件。

context: FoldingContext

額外的內容資訊 (供未來使用)

token: CancellationToken

取消 token。

傳回說明
ProviderResult<FoldingRange[]>

FormattingOptions

描述格式化應使用哪些選項的數值物件。

屬性

偏好使用空格而非 Tab。

每個 Tab 的空格大小。

FunctionBreakpoint

由函式名稱指定的中斷點。

建構子

建立新的函式中斷點。

參數說明
functionName: string
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
傳回說明
FunctionBreakpoint

屬性

條件中斷點的選用運算式。

中斷點是否已啟用。

此中斷點所附加的函式名稱。

控制忽略多少次中斷點命中的選用運算式。

中斷點的唯一 ID。

命中此中斷點時記錄的選用訊息。{} 中的內嵌運算式會由偵錯介面卡進行內插。

GlobalEnvironmentVariableCollection

擴充功能可套用至處理程序環境的突變集合。適用於所有範圍。

屬性

環境變數集合的描述,這將用於在 UI 中描述變更。

集合是否應針對工作區進行快取,並在視窗重新載入時套用至終端機。當為 true 時,集合將立即生效,例如當視窗重新載入時。此外,如果快取版本存在,此 API 將會傳回快取版本。當解除安裝擴充功能或清除集合時,集合將會失效。預設為 true。

方法

將值附加到環境變數。

請注意,擴充功能對任何單一變數只能進行一次變更,因此這將會覆寫先前對 replace、append 或 prepend 的任何呼叫。

參數說明
variable: string

要附加值的變數。

value: string

要附加到變數的值。

options?: EnvironmentVariableMutatorOptions

套用到變更器的選項,未提供選項時,預設會是 { applyAtProcessCreation: true }

傳回說明
void

從此集合清除所有變更器。

參數說明
傳回說明
void

刪除此集合中針對某個變數的變更器。

參數說明
variable: string

要刪除其變更器的變數。

傳回說明
void

迭代此集合中的每個變更器。

參數說明
callback: (variable: string, mutator: EnvironmentVariableMutator, collection: EnvironmentVariableCollection) => any

要針對每個項目執行的函式。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
void

取得此集合套用至變數的變更器 (如果有的話)。

參數說明
variable: string

要取得其變更器的變數。

傳回說明
EnvironmentVariableMutator

取得擴充功能的範圍特有環境變數集合。這允許僅在指定範圍內變更終端機環境變數,並且會與全域集合一起套用 (且在全域集合之後套用)。

透過此方法取得的每個物件都是隔離的,不會影響其他範圍的物件,包括全域集合。

參數說明
scope: EnvironmentVariableScope

環境變數集合所套用的範圍。

如果省略 scope 參數,則會傳回適用於該參數所有相關範圍的集合。例如,如果未指定 'workspaceFolder' 參數,將會傳回套用至所有工作區資料夾的集合。

傳回說明
EnvironmentVariableCollection

傳入範圍的環境變數集合。

將值前置到環境變數。

請注意,擴充功能對任何單一變數只能進行一次變更,因此這將會覆寫先前對 replace、append 或 prepend 的任何呼叫。

參數說明
variable: string

要前置值的變數。

value: string

要前置到變數的值。

options?: EnvironmentVariableMutatorOptions

套用到變更器的選項,未提供選項時,預設會是 { applyAtProcessCreation: true }

傳回說明
void

用值取代環境變數。

請注意,擴充功能對任何單一變數只能進行一次變更,因此這將會覆寫先前對 replace、append 或 prepend 的任何呼叫。

參數說明
variable: string

要取代的變數。

value: string

用來取代變數的值。

options?: EnvironmentVariableMutatorOptions

套用到變更器的選項,未提供選項時,預設會是 { applyAtProcessCreation: true }

傳回說明
void

GlobPattern

用於比對檔案路徑的檔案 glob 模式。這可以是 glob 模式字串 (例如 **/*.{ts,js}*.{ts,js}) 或 相對模式

Glob 模式可具有下列語法

  • *:符合路徑片段中零個或多個字元
  • ?:符合路徑片段中一個字元
  • **:符合任意數量的路徑片段,包括沒有
  • {} 用於群組條件 (例如 **/*.{ts,js} 會比對所有 TypeScript 與 JavaScript 檔案)
  • [] 用於宣告要在路徑區段中比對的一系列字元 (例如,example.[0-9] 用於比對 example.0example.1、…)
  • [!...] 用於否定要在路徑區段中比對的一系列字元 (例如,example.[!0-9] 用於比對 example.aexample.b,但不比對 example.0)

注意:反斜線 (``) 在 glob 模式中是無效的。如果您有要比對的現有檔案路徑,請考慮使用 相對模式 支援,它會負責將任何反斜線轉換為斜線。否則,請確保在建立 glob 模式時將任何反斜線轉換為斜線。

Hover

懸停代表符號或單字的額外資訊。懸停會以類似工具提示的小工具呈現。

建構子

建立新的懸停物件。

參數說明
contents: MarkdownString | MarkedString | Array<MarkdownString | MarkedString>

懸停的內容。

range?: Range

此懸停所套用的範圍。

傳回說明
懸停

屬性

此懸停的內容。

此懸停所套用的範圍。當遺漏時,編輯器將使用目前位置的範圍或目前位置本身。

HoverProvider

懸停提供者介面定義了擴充功能與 懸停 功能之間的合約。

方法

為給定的位置與文件提供懸停。相同位置的多個懸停將由編輯器合併。懸停可以有一個範圍,當省略時,預設為該位置的單字範圍。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Hover>

懸停或解析為此類的 thenable。無結果可用透過傳回 undefinednull 來表示。

IconPath

代表使用者介面中的圖示。這可以是一個 URI、分別適用於淺色與深色佈景主題的獨立 URI,或者是 佈景主題圖示

ImplementationProvider

實作提供者介面定義了擴充功能與前往實作功能之間的合約。

方法

提供給定位置與文件中符號的實作。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Definition | LocationLink[]>

定義或解析為該定義的 thenable。若無結果,可透過傳回 undefinednull 來表示。

IndentAction

描述按下 Enter 時如何處理縮排。

列舉成員

插入新行並複製上一行的縮排。

插入新行並縮排一次 (相對於上一行的縮排)。

插入兩個新行

  • 第一個會縮排並包含游標
  • 第二個維持相同的縮排層級

插入新行並取消縮排一次 (相對於上一行的縮排)。

IndentationRule

描述語言的縮排規則。

屬性

如果某行符合此模式,則其後的所有行都應該取消縮排一次 (直到符合另一個規則)。

如果某行符合此模式,則其後的所有行都應該縮排一次 (直到符合另一個規則)。

如果某行符合此模式,則僅其後的下一行應該縮排一次。

如果某行符合此模式,則不應變更其縮排,且不應對其評估其他規則。

InlayHint

內嵌提示資訊。

建構子

建立新的內嵌提示。

參數說明
position: Position

提示的位置。

label: string | InlayHintLabelPart[]

提示的標籤。

kind?: InlayHintKind

提示的 類型

傳回說明
InlayHint

屬性

此提示的類型。內嵌提示類型定義了此內嵌提示的外觀。

此提示的標籤。人類可讀的字串或 標籤部分 的陣列。

注意,字串與標籤部分都不能是空的。

在提示之前轉譯內距。內距將使用編輯器的背景色彩,而不是提示本身的背景色彩。這表示內距可用於在視覺上對齊或區隔內嵌提示。

在提示之後轉譯內距。內距將使用編輯器的背景色彩,而不是提示本身的背景色彩。這表示內距可用於在視覺上對齊或區隔內嵌提示。

此提示的位置。

接受此內嵌提示時執行的選用 文字編輯。接受內嵌提示的預設動作是雙擊。

注意,編輯預期會變更文件,使內嵌提示 (或其最接近的變體) 現在成為文件的一部分,且內嵌提示本身現在已過時。

注意,此屬性可以在內嵌提示的 解析 過程中稍後設定。

當您將滑鼠停留在這個項目上時顯示的工具提示文字。

注意,此屬性可以在內嵌提示的 解析 過程中稍後設定。

InlayHintKind

內嵌提示類型。

內嵌提示的類型定義了其外觀,例如會使用對應的前景與背景色彩。

列舉成員

用於型別標註的內嵌提示。

用於參數的內嵌提示。

InlayHintLabelPart

內嵌提示標籤部分允許互動式與複合式的內嵌提示標籤。

建構子

建立新的內嵌提示標籤部分。

參數說明
value: string

該部分的值。

傳回說明
InlayHintLabelPart

屬性

此標籤部分的選用命令。

編輯器將帶有命令的部分轉譯為可按下的連結。當標籤部分定義了 locationcommand 時,該命令會被新增至內容功能表中。

注意,此屬性可以在內嵌提示的 解析 過程中稍後設定。

代表此標籤部分的選用 原始程式碼位置

編輯器會將此位置用於懸停與程式碼導覽功能:此部分將變成一個可按下的連結,該連結會解析為給定位置處符號的定義 (不一定就是該位置本身),它會顯示在該位置顯示的懸停,並顯示包含進一步程式碼導覽命令的內容功能表。

注意,此屬性可以在內嵌提示的 解析 過程中稍後設定。

當您將滑鼠停留在這個標籤部分上時的工具提示文字。

注意,此屬性可以在內嵌提示的 解析 過程中稍後設定。

此標籤部分的值。

InlayHintsProvider<T>

內嵌提示提供者介面定義了擴充功能與內嵌提示功能之間的合約。

活動

用於發出此提供者的內嵌提示已變更訊號的選用事件。

方法

為給定的範圍與文件提供內嵌提示。

注意,未被給定範圍 包含 的內嵌提示將會被忽略。

參數說明
document: TextDocument

叫用命令的文件。

range: Range

應計算其內嵌提示的範圍。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

內嵌提示的陣列,或解析為此類陣列的 thenable。

給定一個內嵌提示,填入 tooltiptext edits 或完整的標籤 parts

注意,編輯器最多只會解析一個內嵌提示一次。

參數說明
hint: T

一個內嵌提示。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

解析後的內嵌提示或解析為此類的 thenable。傳回給定的 item 是可以的。當未傳回結果時,將使用給定的 item

InlineCompletionContext

提供要求行內自動完成時所在的內容資訊。

屬性

如果自動完成小工具可見,則提供關於目前選取項目的資訊。

若有設定,提供的行內自動完成必須擴充所選項目的文字並使用相同的範圍,否則它們不會以預覽形式顯示。舉例來說,如果文件文字為 console. 且選取的項目為 .log (取代文件中的 .),則行內自動完成也必須取代 . 並以 .log 開頭,例如 .log()

每當選取的項目變更時,就會再次向行內自動完成提供者提出要求。

描述行內自動完成是如何被觸發的。

InlineCompletionItem

行內自動完成項目代表建議以行內方式完成正在輸入之文字的程式碼片段。

另請參閱 InlineCompletionItemProvider.provideInlineCompletionItems

建構子

建立新的行內自動完成項目。

參數說明
insertText: string | SnippetString

要用來取代範圍的文字。

range?: Range

要取代的範圍。如果未設定,將使用要求位置處的單字。

command?: Command

插入此自動完成項目之後執行的選用 Command

傳回說明
InlineCompletionItem

屬性

插入此自動完成項目之後執行的選用 Command

用於決定是否應顯示此行內自動完成的文字。當為 falsy 時,會使用 InlineCompletionItem.insertText

如果要取代的文字是篩選文字的前綴,則會顯示行內自動完成。

要用來取代範圍的文字。必須設定。同時用於預覽與接受作業。

要取代的範圍。必須在同一行開始與結束。

偏好使用取代而非插入,以便在使用者刪除已輸入的文字時提供更好的體驗。

InlineCompletionItemProvider

行內自動完成項目提供者介面定義了擴充功能與行內自動完成功能之間的合約。

提供者會在使用者明確發出動作時,或在打字時隱式地被要求提供自動完成。

方法

為給定的位置與文件提供行內自動完成項目。如果啟用了行內自動完成,則每當使用者停止打字時就會呼叫此方法。當使用者明確觸發行內自動完成或明確要求下一個或上一個行內自動完成時,也會呼叫它。在這種情況下,應該傳回所有可用的行內自動完成。context.triggerKind 可用於區分這些情境。

參數說明
document: TextDocument

要求行內自動完成的文件。

position: Position

要求行內自動完成的位置。

context: InlineCompletionContext

包含額外資訊的內容物件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<InlineCompletionList | InlineCompletionItem[]>

自動完成項目的陣列,或解析為自動完成項目陣列的 thenable。

InlineCompletionList

代表要在編輯器中呈現的 行內自動完成項目 集合。

建構子

建立新的行內自動完成項目清單。

參數說明
items: InlineCompletionItem[]
傳回說明
InlineCompletionList

屬性

行內自動完成項目。

InlineCompletionTriggerKind

描述 行內自動完成提供者 是如何被觸發的。

列舉成員

自動完成是由使用者動作明確觸發的。傳回多個自動完成項目以支援在其中循環切換。

自動完成是在編輯時自動觸發的。在此情況下,傳回單一自動完成項目即足夠。

InlineValue

行內數值資訊可以用不同的方式提供:

  • 直接作為文字值 (類別 InlineValueText)。
  • 作為用於變數查閱的名稱 (類別 InlineValueVariableLookup)
  • 作為可評估運算式 (類別 InlineValueEvaluatableExpression)。InlineValue 類型將所有行內數值類型結合成一個類型。

InlineValueContext

包含從 InlineValuesProvider 要求行內數值時的內容資訊的數值物件。

屬性

執行已停止的堆疊框架 (作為 DAP ID)。

執行已停止的文件範圍。通常該範圍的結束位置表示顯示行內數值的行。

InlineValueEvaluatableExpression

透過運算式評估提供行內數值。如果僅指定範圍,則會從底層文件中擷取運算式。可以使用選用的運算式來覆寫擷取到的運算式。

建構子

建立新的 InlineValueEvaluatableExpression 物件。

參數說明
range: Range

基礎文件中從中擷取可評估運算式的範圍。

expression?: string

如果指定,將會覆寫擷取的運算式。

傳回說明
InlineValueEvaluatableExpression

屬性

如果指定,該運算式將會覆寫擷取的運算式。

行內數值所套用的文件範圍。此範圍用於從底層文件中擷取可評估的運算式。

InlineValuesProvider

行內數值提供者介面定義了擴充功能與編輯器偵錯工具行內數值功能之間的合約。在此合約中,提供者會針對給定的文件範圍傳回行內數值資訊,而編輯器會在行末的編輯器中顯示此資訊。

活動

用於發出行內數值已變更訊號的選用事件。

另請參閱 EventEmitter

方法

為給定的文件與範圍提供「行內數值」資訊。每當在給定文件中停止偵錯時,編輯器就會呼叫此方法。傳回的行內數值資訊會轉譯在編輯器中的行末。

參數說明
document: TextDocument

需要行內數值資訊的文件。

viewPort: Range

應計算其行內數值的可見文件範圍。

context: InlineValueContext

包含諸如目前位置等內容資訊的容器。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<InlineValue[]>

InlineValueDescriptors 的陣列,或解析為此類的 thenable。無結果可用透過傳回 undefinednull 來表示。

InlineValueText

以文字形式提供行內數值。

建構子

建立新的 InlineValueText 物件。

參數說明
range: Range

要顯示行內數值的文件行。

text: string

該行要顯示的值。

傳回說明
InlineValueText

屬性

行內數值所套用的文件範圍。

行內數值的文字。

InlineValueVariableLookup

透過變數查閱提供行內數值。如果僅指定範圍,則會從底層文件中擷取變數名稱。可以使用選用的變數名稱來覆寫擷取到的名稱。

建構子

建立新的 InlineValueVariableLookup 物件。

參數說明
range: Range

要顯示行內數值的文件行。

variableName?: string

要查閱的變數名稱。

caseSensitiveLookup?: boolean

如何執行查閱。若遺漏,則查閱會區分大小寫。

傳回說明
InlineValueVariableLookup

屬性

如何執行查閱。

行內數值所套用的文件範圍。此範圍用於從底層文件中擷取變數名稱。

若有指定,則為要查閱的變數名稱。

InputBox

具體的 QuickInput,讓使用者輸入文字值。

請注意,在許多情況下,更方便的 window.showInputBox 會更容易使用。當 window.showInputBox 無法提供所需的彈性時,應使用 window.createInputBox

活動

發出使用者表示接受輸入值訊號的事件。

發出數值已變更訊號的事件。

發出此輸入使用者介面何時隱藏訊號的事件。

此使用者介面可能必須隱藏的原因有好幾個,且擴充功能將透過 onDidHide 收到通知。範例包含:明確呼叫 hide、使用者按下 Esc、其他輸入使用者介面開啟等。

發出按鈕何時被觸發訊號的事件。

屬性

決定使用者介面是否應顯示進度指示器。預設為 false

將此變更為 true,例如在載入更多資料或驗證使用者輸入時。

用於使用者介面中動作的按鈕。

決定使用者介面是否應允許使用者輸入。預設為 true

將此變更為 false,例如在驗證使用者輸入或為使用者輸入的下一步載入資料時。

決定即使失去使用者介面焦點,使用者介面是否應保持開啟。預設為 false。此設定在 iPad 上會被忽略且一律為 false

決定是否應隱藏輸入值。預設為 false

當尚未輸入任何值時顯示的選用預留位置文字。

提供給使用者一些要求或解釋的選用提示文字。

多步驟輸入流程的選用目前步驟計數。

輸入使用者介面的選用標題。

多步驟輸入流程的選用總步驟計數。

指出目前輸入值有問題的選用驗證訊息。

透過設定字串,InputBox 將會使用預設的錯誤 InputBoxValidationSeverity。傳回 undefined 會清除驗證訊息。

目前的輸入值。

輸入值中的選取範圍。

定義為兩個數字的元組,其中第一個是包含性起始索引,第二個是不包含性結束索引。當為 undefined 時,將會選取整個預填入的值;當為空 (起始等於結束) 時,只會設定游標;否則將會選取定義的範圍。

當使用者打字或進行選取時,此屬性不會自動更新,但它可以由擴充功能進行更新。

方法

釋放此輸入使用者介面以及任何關聯的資源。

如果它仍然可見,則會先隱藏它。在此呼叫之後,輸入使用者介面將不再具備功能,且不應存取其上的任何額外方法或屬性。取而代之的是應該建立新的輸入使用者介面。

參數說明
傳回說明
void

隱藏此輸入使用者介面。

這也會觸發 onDidHide 事件。

參數說明
傳回說明
void

使輸入使用者介面在其目前的組態下可見。

任何其他輸入使用者介面都會先觸發 onDidHide 事件。

參數說明
傳回說明
void

InputBoxOptions

用於組態輸入方塊使用者介面行為的選項。

屬性

設定為 true 以在焦點移至編輯器的其他部分或其他視窗時保持輸入方塊開啟。此設定在 iPad 上會被忽略且一律為 false。

控制是否顯示密碼輸入。密碼輸入會隱藏已輸入的文字。

要作為預留位置顯示在輸入方塊中以引導使用者輸入內容的選用字串。

要顯示在輸入方塊下方的文字。

代表輸入方塊標題的選用字串。

要預先填入輸入方塊中的值。

預先填入之 value 的選取範圍。定義為兩個數字的元組,其中第一個是包含性起始索引,第二個是不包含性結束索引。當為 undefined 時,將會選取整個預填入的值;當為空 (起始等於結束) 時,只會設定游標;否則將會選取定義的範圍。

方法

將被呼叫以驗證輸入並給予使用者提示的選用函式。

參數說明
value: string

輸入方塊目前的值。

傳回說明
string | InputBoxValidationMessage | Thenable<string | InputBoxValidationMessage>

呈現為錯誤訊息的人類可讀字串,或是可以提供特定訊息嚴重性的 InputBoxValidationMessage。當 'value' 有效時,傳回 undefinednull 或空字串。

InputBoxValidationMessage

代表 InputBox 的驗證訊息。

屬性

要顯示給使用者的驗證訊息。

驗證訊息的嚴重性層級。

注意:當使用 InputBoxValidationSeverity.Error 時,使用者將無法接受輸入 (例如按下 Enter)。InfoWarning 嚴重性仍然允許接受輸入。

InputBoxValidationSeverity

輸入方塊驗證訊息的嚴重性層級。

列舉成員

指出不會阻止接受輸入的資訊性訊息。

指出不會阻止接受輸入的警告訊息。

指出會阻止使用者接受輸入的錯誤訊息。

LanguageConfiguration

語言組態介面定義了擴充功能與各種編輯器功能 (如自動括號插入、自動縮排等) 之間的合約。

屬性

已取代 (Deprecated) 請勿使用。

  • 已取代 - * 請改用語言組態檔中的 autoClosingPairs 屬性。
參數說明
autoClosingPairs: Array<{close: string, notIn: string[], open: string}>
  • 已取代

已取代 (Deprecated) 請勿使用。

  • 已取代 - 將很快被更好的 API 取代。
參數說明
brackets: any

此屬性已取代,且將會被編輯器忽略

  • 已取代
docComment: {close: string, lineStart: string, open: string, scope: string}

此屬性已取代,且編輯器不再完全支援它 (會忽略 scope 與 lineStart)。請改用語言組態檔中的 autoClosingPairs 屬性。

  • 已取代

語言的自動關閉對。

語言的括號。此組態會隱含地影響在這些括號周圍按下 Enter。

語言的註解設定。

語言的縮排設定。

按下 Enter 時要評估的語言規則。

語言的單字定義。如果語言支援 Unicode 識別碼 (例如 JavaScript),則最好提供使用排除已知分隔符號的單字定義。例如:符合除已知分隔符號之外任何內容的正則運算式 (且允許小數點出現在浮點數中)

/(-?\d*\.\d\w*)|([^\`\~\!\\#\%\^\&\*\(\)\-\=\+\[\{\]\}\\\|\;\:\'\"\,\.\<\>/\?\s]+)/g

LanguageModelAccessInformation

代表關於存取語言模型的擴充功能特定資訊。

活動

當存取資訊變更時引發的事件。

方法

檢查是否可以對語言模型提出要求。

注意,呼叫此函式不會觸發同意使用者介面,而只是檢查持續保存的狀態。

參數說明
chat: LanguageModelChat

語言模型聊天物件。

傳回說明
boolean

若可以提出要求則為 true,若否則為 false,若語言模型不存在或尚未要求同意則為 undefined

LanguageModelChat

代表用於提出聊天要求的語言模型。

另請參閱 lm.selectChatModels

屬性

語言模型的不透明系列名稱。值可能是 gpt-3.5-turbogpt4phi2llama,但它們是由提供語言的擴充功能所定義且可能會變更。

語言模型的不透明識別碼。

單一要求中可以傳送給模型 Token 的最大數量。

語言模型的人類可讀名稱。

語言模型供應商的知名識別碼。一個範例是 copilot,但值是由提供聊天模型的擴充功能所定義,且需要向它們查詢。

模型的不透明版本字串。這是由提供語言模型的擴充功能所定義且可能會變更。

方法

使用模型特定的分詞器邏輯計算訊息中的 Token 數量。

參數說明
text: string | LanguageModelChatMessage

字串或訊息執行個體。

token?: CancellationToken

選用的取消權杖。請參閱 CancellationTokenSource 了解如何建立。

傳回說明
Thenable<number>

解析為 Token 數量的 thenable。

使用語言模型提出聊天要求。

注意,語言模型的使用可能會受到存取限制與使用者同意的約束。(對於擴充功能而言) 首次呼叫此函式將會向使用者顯示同意對話方塊,因此此函式只能在回應使用者動作時呼叫!擴充功能可以使用 LanguageModelAccessInformation.canSendRequest 來檢查它們是否具有提出要求所需的權限。

如果無法向語言模型提出要求,此函式將會傳回拒絕的 Promise。原因可能包含:

  • 未給予使用者同意,請參閱 NoPermissions
  • 模型不再存在,請參閱 NotFound
  • 超過配額限制,請參閱 Blocked
  • 其他問題,在此情況下擴充功能必須檢查 [LanguageModelError.cause LanguageModelError.cause](#LanguageModelError.cause LanguageModelError.cause)

擴充功能可以透過將一組工具傳遞至 LanguageModelChatRequestOptions.tools 來使用語言模型工具呼叫。語言模型將會傳回 LanguageModelToolCallPart,而擴充功能可以叫用該工具並使用其結果提出另一個要求。

參數說明
messages: LanguageModelChatMessage[]

訊息執行個體的陣列。

options?: LanguageModelChatRequestOptions

控制要求的選項。

token?: CancellationToken

控制要求的取消權杖。請參閱 CancellationTokenSource 了解如何建立。

傳回說明
Thenable<LanguageModelChatResponse>

解析為 LanguageModelChatResponse 的 thenable。當無法提出要求時,Promise 將會拒絕。

LanguageModelChatCapabilities

LanguageModelChatInformation 支援的各種功能,例如工具呼叫或影像輸入。

屬性

模型是否支援影像輸入。常見支援的影像格式為 jpg 和 png,但每個模型支援的 MIME 類型會有所不同。

模型是否支援工具呼叫。如果提供了數字,這就是可以在對模型的請求中提供的最大工具數量。

LanguageModelChatInformation

代表由 LanguageModelChatProvider 所提供的語言模型。

屬性

模型支援的各種功能,例如工具呼叫或影像輸入。

一個選用、可讀性高的字串,將與模型一起呈現。可用於在 UI 中區分同名模型。

語言模型的隱含(opaque)系列名稱。值可能是 gpt-3.5-turbogpt4phi2llama

語言模型的唯一識別碼。在每個提供者中必須是唯一的,但不要求全域唯一。

模型可以接受作為輸入的最大 Token 數量。

模型能夠產生的最大 Token 數量。

語言模型的人類可讀名稱。

將游標懸停在模型上時要顯示的提示工具(tooltip)。用於提供有關模型的更多資訊。

模型的隱含版本字串。這在 LanguageModelChatSelector.version 中用作查詢值。例如,GPT 4o 有多個版本,如 2024-11-20 和 2024-08-06

LanguageModelChatMessage

表示聊天中的訊息。可以擔任不同的角色,例如使用者或助理。

靜態

用於建立新助理訊息的公用程式。

參數說明
content: string | Array<LanguageModelTextPart | LanguageModelDataPart | LanguageModelToolCallPart>

訊息的內容。

name?: string

訊息使用者的選用名稱。

傳回說明
LanguageModelChatMessage

用於建立新使用者訊息的公用程式。

參數說明
content: string | Array<LanguageModelTextPart | LanguageModelToolResultPart | LanguageModelDataPart>

訊息的內容。

name?: string

訊息使用者的選用名稱。

傳回說明
LanguageModelChatMessage

建構子

建立一個新的語言模型聊天訊息。

參數說明
role: LanguageModelChatMessageRole

訊息的角色。

content: string | LanguageModelInputPart[]

訊息的內容。

name?: string

訊息使用者的選用名稱。

傳回說明
LanguageModelChatMessage

屬性

字串,或訊息可作為內容包含的各種不同項目的陣列。某些部分對於某些模型可能是訊息類型專屬的。

此訊息的使用者選用名稱。

此訊息的角色。

LanguageModelChatMessageRole

表示聊天訊息的角色。這可以是使用者或助理。

列舉成員

使用者角色,例如與語言模型互動的人類。

助理角色,例如產生回應的語言模型。

LanguageModelChatProvider<T>

LanguageModelChatProvider 實作了對語言模型的存取,使用者隨後可以透過聊天檢視區,或透過擴充功能 API 取得 LanguageModelChat 來使用這些模型。這方面的例子如 OpenAI 提供者,它提供像是 gpt-5、o3 等模型。

活動

當可用的語言模型集合變更時所觸發的選用事件。

方法

取得此提供者所提供的可用語言模型清單

參數說明
options: PrepareLanguageModelChatModelOptions

指定此函式呼叫內容的選項

token: CancellationToken

取消權杖(cancellation token)

傳回說明
ProviderResult<T[]>

可用語言模型的清單

傳回聊天要求的回應,並將結果傳遞給進度回呼函式。LanguageModelChatProvider 必須在從語言模型接收到回應部分時,將其發送至進度回呼函式。

參數說明
model: T

要使用的語言模型

messages: readonly LanguageModelChatRequestMessage[]

要包含在要求中的訊息

options: ProvideLanguageModelChatResponseOptions

要求的選項

progress: Progress<LanguageModelResponsePart>

要將串流回應片段發送過去的進度

token: CancellationToken

取消權杖(cancellation token)

傳回說明
Thenable<void>

當回應完成時會解析的 Promise。結果實際上會傳遞給進度回呼函式。

使用模型專屬的詞元分析器(tokenizer)邏輯,傳回給定文字的 Token 數量

參數說明
model: T

要使用的語言模型

text: string | LanguageModelChatRequestMessage

要計算 Token 的文字

token: CancellationToken

取消權杖(cancellation token)

傳回說明
Thenable<number>

Token 數量

LanguageModelChatRequestMessage

LanguageModelChatMessage 的提供者版本。

屬性

訊息可作為內容包含的各種不同項目的陣列。某些部分對於某些模型可能是訊息類型專屬的。

此訊息的使用者選用名稱。

此訊息的角色。

LanguageModelChatRequestOptions

使用語言模型發出聊天要求的選項。

另請參閱 LanguageModelChat.sendRequest

屬性

一則易讀的訊息,解釋為什麼需要存取語言模型以及它啟用了什麼功能。

一組控制語言模型行為的選項。這些選項是該語言模型專屬的,需要在各自的說明文件中查詢。

要使用的工具選擇模式。預設為 LanguageModelChatToolMode.Auto

語言模型可用的選用工具清單。這些可以是透過 lm.tools 取得的已註冊工具,或是僅在呼叫端擴充功能內部實作的私有工具。

如果 LLM 要求呼叫這些工具之一,它將在 LanguageModelChatResponse.stream 中傳回 LanguageModelToolCallPart。呼叫端負責叫用該工具。如果它是註冊在 lm.tools 中的工具,這意味著要呼叫 lm.invokeTool

接著,可以透過建立一個包含 LanguageModelToolCallPart 的助理類型 LanguageModelChatMessage,後面接著一個包含 LanguageModelToolResultPart 的使用者類型訊息,來將工具結果提供給 LLM。

LanguageModelChatResponse

表示語言模型的回應。

另請參閱 ChatRequest

屬性

一個非同步可迭代物件,它是構成整體回應的文字與工具呼叫部分的串流。LanguageModelTextPart 是助理要顯示給使用者的回應部分。LanguageModelToolCallPart 是語言模型要求呼叫工具的要求。後者只有在透過 LanguageModelChatRequestOptions.tools 在要求中傳遞工具時才會傳回。unknown 類型被用作未來部分的佔位符,例如影像資料部分。

請注意,當在接收資料期間發生錯誤時,此串流將會出錯。串流的消費者應相應地處理這些錯誤。

若要取消串流,消費者可以 取消 用於發出要求的權杖,或從 for 迴圈中跳出。

範例

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 中過濾掉除了文字部分以外的所有內容。

另請參閱 LanguageModelChatResponse.stream

LanguageModelChatSelector

描述如何為聊天要求選擇語言模型。

另請參閱 lm.selectChatModels

屬性

語言模型的系列。

另請參閱 LanguageModelChat.family

語言模型的識別碼。

另請參閱 LanguageModelChat.id

語言模型的供應商。

另請參閱 LanguageModelChat.vendor

語言模型的版本。

另請參閱 LanguageModelChat.version

LanguageModelChatTool

透過 LanguageModelChatRequestOptions 提供給語言模型的工具。語言模型會使用此介面的所有屬性來決定要呼叫哪個工具以及如何呼叫它。

屬性

工具的描述。

此工具接受之輸入的 JSON Schema。

工具的名稱。

LanguageModelChatToolMode

供語言模型使用的工具呼叫模式。

列舉成員

語言模型可以選擇呼叫工具或產生訊息。這是預設值。

語言模型必須呼叫其中一個提供的工具。注意:某些模型在使用此模式時僅支援單一工具。

LanguageModelDataPart

包含任意資料的語言模型回應部分。可用於 回應聊天訊息工具結果 以及其他語言模型互動中。

靜態

為影像建立新的 LanguageModelDataPart

參數說明
data: Uint8Array

二進位影像資料

mime: string

影像的 MIME 類型。常見的值為 image/pngimage/jpeg

傳回說明
LanguageModelDataPart

為 JSON 建立新的 LanguageModelDataPart

請注意,此函式預期的不是「字串化的 JSON (stringified JSON)」,而是可以被字串化的物件。當傳入的值無法進行 JSON 字串化時,此函式將會擲回錯誤。

參數說明
value: any

可進行 JSON 字串化的值。

mime?: string

選用的 MIME 類型,預設為 application/json

傳回說明
LanguageModelDataPart

為文字建立新的 LanguageModelDataPart

請注意,系統會使用 UTF-8 編碼器為字串建立位元組。

參數說明
value: string

文字資料

mime?: string

MIME 類型(如果有的話)。常見的值為 text/plaintext/markdown

傳回說明
LanguageModelDataPart

建構子

使用給定內容建構泛用資料部分。

參數說明
data: Uint8Array

此部分的位元組資料。

mimeType: string

資料的 MIME 類型。

傳回說明
LanguageModelDataPart

屬性

此部分的位元組資料。

決定如何解讀 data 屬性的 MIME 類型。

LanguageModelError

用於語言模型專屬錯誤的錯誤類型。

語言模型的消費者應檢查 code 屬性以判斷特定的失敗原因,例如針對參照未知語言模型的情況使用 if(someError.code === vscode.LanguageModelError.NotFound.name) {...}。對於未指定的錯誤,cause 屬性將包含實際的錯誤。

靜態

要求者被封鎖,無法使用此語言模型。

參數說明
message?: string
傳回說明
LanguageModelError

要求者沒有使用此語言模型的權限

參數說明
message?: string
傳回說明
LanguageModelError

語言模型不存在。

參數說明
message?: string
傳回說明
LanguageModelError

建構子

參數說明
message?: string
傳回說明
LanguageModelError

屬性

識別此錯誤的代碼。

可能的值為錯誤名稱,例如 NotFound,或是針對來自語言模型本身的未指定錯誤使用 Unknown。在後者情況下,cause 屬性將包含實際的錯誤。

LanguageModelInputPart

可以透過 LanguageModelChat.sendRequest 傳送並由 LanguageModelChatProvider 處理的各種訊息類型

LanguageModelPromptTsxPart

包含來自 vscode/prompt-tsx 的 PromptElementJSON 的語言模型回應部分。

另請參閱 LanguageModelToolResult

建構子

使用給定的內容建構 prompt-tsx 部分。

參數說明
value: unknown

部分的值,即來自 vscode/prompt-tsxrenderElementJSON 結果。

傳回說明
LanguageModelPromptTsxPart

屬性

該部分的值。

LanguageModelResponsePart

LanguageModelChatProvider 可以在聊天回應串流中發出的各種訊息類型

LanguageModelTextPart

包含一小段文字的語言模型回應部分,由 LanguageModelChatResponse 傳回。

建構子

使用給定的內容建構文字部分。

參數說明
value: string

此部分的文字內容。

傳回說明
LanguageModelTextPart

屬性

此部分的文字內容。

LanguageModelTool<T>

可以透過呼叫 LanguageModelChat 來叫用的工具。

方法

使用給定的輸入叫用工具並傳回結果。

提供的 LanguageModelToolInvocationOptions.input 已經過宣告的 Schema 驗證。

在叫用工具之前呼叫一次。建議實作此方法以自訂工具執行時出現的進度訊息,並提供帶有來自叫用輸入內容的更有用訊息。如果適當的話,也可以發出工具在執行前需要使用者確認的訊號。

  • 注意 1: 必須無副作用。
  • 注意 2:prepareInvocation 的呼叫不一定會接著呼叫 invoke

LanguageModelToolCallPart

表示工具呼叫的語言模型回應部分,由 LanguageModelChatResponse 傳回,也可以包含在 LanguageModelChatMessage 的內容部分中,以表示聊天要求中的先前工具呼叫。

建構子

建立一個新的 LanguageModelToolCallPart。

參數說明
callId: string

工具呼叫的 ID。

name: string

要呼叫的工具名稱。

input: object

用來呼叫工具的輸入。

傳回說明
LanguageModelToolCallPart

屬性

工具呼叫的 ID。這是聊天要求中該工具呼叫的唯一識別碼。

用來呼叫工具的輸入。

要呼叫的工具名稱。

LanguageModelToolConfirmationMessages

當在 PreparedToolInvocation 中傳回此項時,將會要求使用者在執行工具前進行確認。這些訊息將會與標有「繼續」和「取消」的按鈕一起顯示。

屬性

確認訊息的主體。

確認訊息的標題。

LanguageModelToolInformation

關於 lm.tools 中可用之已註冊工具的資訊。

屬性

可能會傳遞給語言模型的此工具描述。

此工具接受之輸入的 JSON Schema。

工具的唯一名稱。

由工具宣告的一組標籤,大致描述了工具的功能。工具使用者可以使用這些標籤來過濾工具集,只留下與當前任務相關的工具。

LanguageModelToolInvocationOptions<T>

為工具叫用所提供的選項。

屬性

用來叫用工具的輸入。輸入必須符合 LanguageModelToolInformation.inputSchema 中定義的 Schema

用於提示工具在其回應中應傳回多少 Token,並使工具能夠準確計算 Token 的選項。

將工具叫用與來自 聊天參與者 (chat participant) 的聊天要求連結起來的隱含物件。

取得有效工具叫用權杖的唯一方法是使用聊天要求中提供的 toolInvocationToken。在這種情況下,聊天回應檢視區中將會自動為工具叫用顯示進度條,如果工具需要使用者確認,它將會直接顯示在聊天檢視區中。

如果工具是在聊天要求之外被叫用,則應改傳入 undefined,並且除了確認介面外,不會顯示任何特殊的 UI。

請注意,在叫用期間叫用另一個工具的工具,可以傳遞它所接收到的 toolInvocationToken

LanguageModelToolInvocationPrepareOptions<T>

屬性

叫用工具時所使用的輸入。

LanguageModelToolResult

從工具叫用傳回的結果。如果使用 vscode/prompt-tsx,此結果可以使用 ToolResult 來呈現。

建構子

建立 LanguageModelToolResult

參數說明
content: unknown[]

工具結果內容部分的清單

傳回說明
LanguageModelToolResult

屬性

工具結果內容部分的清單。包含 unknown,因為此清單未來可能會擴充新的內容類型。

另請參閱 lm.invokeTool

LanguageModelToolResultPart

工具呼叫的結果。這是 工具呼叫 的對應部分,且它只能包含在使用者訊息的內容中

建構子

參數說明
callId: string

工具呼叫的 ID。

content: unknown[]

工具結果的內容。

傳回說明
LanguageModelToolResultPart

屬性

工具呼叫的 ID。

請注意,這應該與工具呼叫部分的 callId 相符。

工具結果的值。

LanguageModelToolTokenizationOptions

與工具叫用之 Token 化相關的選項。

屬性

如果已知,則是工具在其結果中應發出的最大 Token 數量。

方法

使用模型特定的分詞器邏輯計算訊息中的 Token 數量。

參數說明
text: string

一個字串。

token?: CancellationToken

選用的取消權杖。請參閱 CancellationTokenSource 了解如何建立。

傳回說明
Thenable<number>

解析為 Token 數量的 thenable。

LanguageStatusItem

語言狀態項目是呈現使用中文字編輯器語言狀態報告的首選方式,例如選取的 linter 或通知設定問題。

屬性

當螢幕助讀程式與此項目互動時所使用的無障礙資訊

控制是否將此項目顯示為「忙碌 (busy)」。預設為 false

此項目的 命令

此項目的選用、易讀詳細資料。

此項目的識別碼。

此項目的簡短名稱,例如 'Java Language Status' 等。

定義此項目顯示於哪些編輯器的 選擇器

此項目的嚴重性。

預設為 information。您可以使用此屬性向使用者發出訊號,表明有需要注意的問題,例如缺少執行檔或設定無效。

要顯示在該項目中的文字。您可以利用以下語法在文字中嵌入圖示

我的文字 $(icon-name) 包含像 $(icon-name) 這樣的圖示。

其中 icon-name 取自 ThemeIcon 圖示集,例如 light-bulbthumbsupzap 等。

方法

處置(Dispose)並釋放相關資源。

參數說明
傳回說明
void

LanguageStatusSeverity

表示語言狀態的嚴重性層級。

列舉成員

資訊嚴重性層級。

警告嚴重性層級。

錯誤嚴重性層級。

LineCommentRule

行註解的設定。

屬性

行註解符號,例如 //

註解符號是否不應縮排並放置在第一欄。預設為 false。

LinkedEditingRangeProvider

連結編輯範圍提供者介面定義了擴充功能與連結編輯功能之間的合約。

方法

對於文件中的給定位置,傳回該位置上符號的範圍以及所有具有相同內容的範圍。如果新內容有效,對其中一個範圍的變更可以套用到所有其他範圍。結果可以傳回一個選用的單字模式(word pattern)來描述有效的內容。如果未提供結果專屬的單字模式,則會使用語言設定中的單字模式。

參數說明
document: TextDocument

叫用提供者的文件。

position: Position

叫用提供者的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<LinkedEditingRanges>

可以一起編輯的範圍清單

LinkedEditingRanges

表示可以一起編輯的範圍清單,以及用於描述有效範圍內容的單字模式。

建構子

建立一個新的連結編輯範圍物件。

參數說明
ranges: Range[]

可以一起編輯的範圍清單

wordPattern?: RegExp

描述給定範圍有效內容的選用單字模式

傳回說明
LinkedEditingRanges

屬性

可以一起編輯的範圍清單。這些範圍必須具有相同的長度和文字內容。範圍不能重疊。

描述給定範圍有效內容的選用單字模式。如果未提供模式,將會使用語言設定的單字模式。

Location

表示資源內的位置,例如文字檔案內的一行。

建構子

建立新的位置物件。

參數說明
uri: Uri

資源識別碼。

rangeOrPosition: Range | Position

範圍或位置。位置將被轉換為空範圍。

傳回說明
位置

屬性

此位置的文件範圍。

此位置的資源識別碼。

表示兩個位置的連接。相較於一般 位置,它提供了額外的詮釋資料(metadata),包含起點範圍。

屬性

此連結起點的跨度。

用作滑鼠懸停檢視定義時底線標示的跨度。預設為定義位置處的單字範圍。

此連結的完整目標範圍。

此連結的目標跨度。

此連結的目標資源識別碼。

LogLevel

記錄層級

列舉成員

此層級不會記錄任何訊息。

會記錄此層級的所有訊息。

記錄層級為 debug 及更高的訊息會以此層級記錄。

記錄層級為 info 及更高的訊息會以此層級記錄。

記錄層級為 warning 及更高的訊息會以此層級記錄。

此層級僅記錄錯誤訊息。

LogOutputChannel

用於包含記錄輸出的通道。

若要取得 LogOutputChannel 的實例,請使用 createOutputChannel

活動

當通道的記錄層級變更時觸發的 事件

屬性

通道的目前記錄層級。預設為 編輯器記錄層級

此輸出通道的易讀名稱。

方法

將給定的值附加到通道。

參數說明
value: string

字串,為 falsy 的值將不會被列印。

傳回說明
void

將給定的值和換行字元附加到通道。

參數說明
value: string

字串,為 falsy 的值將會被列印。

傳回說明
void

移除通道中的所有輸出。

參數說明
傳回說明
void

將給定的偵錯訊息輸出到通道。

只有在通道設定為顯示 debug 或更低記錄層級時,才會記錄該訊息。

參數說明
message: string

要記錄的偵錯訊息

...args: any[]
傳回說明
void

處置(Dispose)並釋放相關資源。

參數說明
傳回說明
void

將給定的錯誤或錯誤訊息輸出到通道。

只有在通道設定為顯示 error 或更低記錄層級時,才會記錄該訊息。

參數說明
error: string | Error

要記錄的錯誤或錯誤訊息

...args: any[]
傳回說明
void

從 UI 中隱藏此通道。

參數說明
傳回說明
void

將給定的資訊訊息輸出到通道。

只有在通道設定為顯示 info 或更低記錄層級時,才會記錄該訊息。

參數說明
message: string

要記錄的資訊訊息

...args: any[]
傳回說明
void

用給定的值取代通道中的所有輸出。

參數說明
value: string

字串,為 falsy 的值將不會被列印。

傳回說明
void

在 UI 中顯示此通道。

參數說明
preserveFocus?: boolean

當為 true 時,通道不會取得焦點。

傳回說明
void

在 UI 中顯示此通道。

  • 已過時 - 請使用僅包含一個參數的多載(show(preserveFocus?: boolean): void)。
參數說明
column?: ViewColumn

此引數已過時且將被忽略。

preserveFocus?: boolean

當為 true 時,通道不會取得焦點。

傳回說明
void

將給定的追蹤訊息輸出到通道。請使用此方法來記錄詳細資訊(verbose information)。

只有在通道設定為顯示 trace 記錄層級時,才會記錄該訊息。

參數說明
message: string

要記錄的追蹤訊息

...args: any[]
傳回說明
void

將給定的警告訊息輸出到通道。

只有在通道設定為顯示 warning 或更低記錄層級時,才會記錄該訊息。

參數說明
message: string

要記錄的警告訊息

...args: any[]
傳回說明
void

MarkdownString

支援透過 markdown 語法進行格式化的易讀文字。

supportThemeIcons 設定為 true 時,支援透過 $(<name>) 語法來呈現 佈景主題圖示 (theme icons)

supportHtml 設定為 true 時,支援呈現內嵌 html。

建構子

使用給定值建立新的 markdown 字串。

參數說明
value?: string

選用的初始值。

supportThemeIcons?: boolean

選用,指定 MarkdownString 內是否支援 ThemeIcons

傳回說明
MarkdownString

屬性

相對路徑所要解析依據的基底 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'

表示此 markdown 字串來自受信任的來源。只有受信任的 markdown 支援執行命令的連結,例如 [執行它](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 字串。

方法

使用提供的語言將給定字串附加為程式碼區塊。

參數說明
value: string

程式碼片段。

language?: string

選用的 語言識別碼

傳回說明
MarkdownString

將給定的字串「原封不動地」附加到此 markdown 字串。當 supportThemeIconstrue 時,value 中的 ThemeIcons 將會被圖示化。

參數說明
value: string

markdown 字串。

傳回說明
MarkdownString

將給定字串附加到此 markdown 字串並進行跳脫(escape)。

參數說明
value: string

純文字。

傳回說明
MarkdownString

MarkedString

MarkedString 可用於呈現易讀的文字。它要么是 markdown 字串,要么是提供語言和程式碼片段的程式碼區塊。請注意,markdown 字串將會被清理(sanitized)——這意味著 html 將會被跳脫。

McpHttpServerDefinition

McpHttpServerDefinition 表示可透過可串流 HTTP 傳輸(Streamable HTTP transport)使用的 MCP 伺服器。

建構子

參數說明
label: string

伺服器的易讀名稱。

uri: Uri

伺服器的 URI。

headers?: Record<string, string>

隨每次對伺服器的要求所包含的選用額外標頭(headers)。

version?: string
傳回說明
McpHttpServerDefinition

屬性

隨每次對伺服器的要求所包含的選用額外標頭(headers)。

伺服器的易讀名稱。

伺服器的 URI。編輯器將會對此 URI 發出 POST 要求以開始每個工作階段。

伺服器的選用版本識別。如果這發生變更,編輯器將會指出工具已變更並提示重新整理它們。

McpServerDefinition

描述不同類型 Model Context Protocol 伺服器的定義,可由 McpServerDefinitionProvider 傳回。

McpServerDefinitionProvider<T>

可以提供 Model Context Protocol 伺服器定義的類型。這應該在擴充功能啟用期間使用 lm.registerMcpServerDefinitionProvider 進行註冊。

活動

觸發選用的事件,以發出可用伺服器集已變更的訊號。

方法

提供可用的 MCP 伺服器。編輯器將會積極地呼叫此方法,以確保語言模型所需的伺服器可用性,因此擴充功能不應採取需要使用者互動的操作(例如驗證)。

參數說明
token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

可用的 MCP 伺服器陣列

當編輯器需要啟動 MCP 伺服器時,將會呼叫此函式。此時,擴充功能可以採取任何可能需要使用者互動的操作,例如驗證。伺服器的任何非 readonly 屬性都可以修改,且擴充功能應傳回已解析的伺服器。

擴充功能可以傳回 undefined 以表示不應啟動伺服器,或擲回錯誤。如果有擱置中的工具呼叫,編輯器將會取消它並將錯誤訊息傳回給語言模型。

參數說明
server: T

要解析的 MCP 伺服器

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

已解析的伺服器或解析為該伺服器的 thenable。這可以是填入非唯讀屬性的給定 server 定義。

McpStdioServerDefinition

McpStdioServerDefinition 代表透過執行本機處理程序並在其 stdin 和 stdout 資料流上運作而可用的 MCP 伺服器。該處理程序將作為擴充功能主機的子處理程序繁衍,且依預設不會在殼層環境中執行。

建構子

參數說明
label: string

伺服器的易讀名稱。

command: string

用來啟動伺服器的命令。

args?: string[]

傳遞給伺服器的其他命令列引數。

env?: Record<string, string | number>

伺服器的選用其他環境資訊。

version?: string

伺服器的選用版本識別。

傳回說明
McpStdioServerDefinition

屬性

傳遞給伺服器的其他命令列引數。

用來啟動伺服器的命令。以 Node.js 為基礎的伺服器可以使用 process.execPath 來使用編輯器的 Node.js 版本執行指令碼。

用來啟動伺服器的工作目錄。

伺服器的選用其他環境資訊。此環境中的變數將會覆寫或移除(如果為 null)編輯器擴充功能主機的預設環境變數。

伺服器的易讀名稱。

伺服器的選用版本識別。如果這發生變更,編輯器將會指出工具已變更並提示重新整理它們。

Memento

Memento 代表儲存公用程式。它可以儲存並擷取值。

方法

傳回值。

參數說明
key: string

一個字串。

傳回說明
T

儲存的值或 undefined

傳回值。

參數說明
key: string

一個字串。

defaultValue: T

當給定金鑰沒有值 (undefined) 時應傳回的值。

傳回說明
T

儲存的值或 defaultValue。

傳回儲存的金鑰。

參數說明
傳回說明
readonly string[]

儲存的金鑰。

儲存值。該值必須可進行 JSON 字串化。

請注意,使用 undefined 作為值會從底層儲存體中移除該金鑰。

參數說明
key: string

一個字串。

value: any

值。絕對不能包含循環參考。

傳回說明
Thenable<void>

MessageItem

代表隨資訊、警告或錯誤訊息一起顯示的動作。

參見

屬性

針對強制回應對話方塊的提示,指出當使用者取消對話方塊時(例如按下 ESC 鍵),應觸發此項目。

注意:非強制回應的訊息會忽略此選項。

簡短標題,例如 'Retry'、'Open Log' 等。

MessageOptions

用來設定訊息行為的選項。

參見

屬性

呈現較不顯眼的人類可讀詳細訊息。請注意,詳細資料僅會針對強制回應訊息顯示。

指出此訊息應為強制回應。

NotebookCell

代表筆記本中的儲存格,可以是程式碼儲存格或標記儲存格。

NotebookCell 執行個體是不可變的,且只要它們屬於其筆記本的一部分,就會保持同步。

屬性

此儲存格的文字,表示為文字文件。

此儲存格最近的執行摘要

此儲存格在其包含筆記本中的索引。當儲存格在筆記本內移動時,索引會更新。當儲存格已從其筆記本中移除時,索引為 -1

此儲存格的種類。

此儲存格的中繼資料。可以是任何內容,但必須可進行 JSON 字串化。

包含此儲存格的筆記本

此儲存格的輸出。

NotebookCellData

NotebookCellData 是筆記本儲存格的原始表示法。它是 NotebookData 的一部分。

建構子

建立新的儲存格資料。最小的儲存格資料會指定其種類、來源值及其來源的語言識別項。

參數說明
kind: NotebookCellKind

種類。

value: string

來源值。

languageId: string

來源值的語言識別項。

傳回說明
NotebookCellData

屬性

此儲存格資料的執行摘要。

此儲存格資料的種類

此儲存格資料來源值的語言識別項。可以是來自 getLanguages 的任何值。

此儲存格資料的任意中繼資料。可以是任何內容,但必須可進行 JSON 字串化。

此儲存格資料的輸出。

此儲存格資料的來源值 - 原始程式碼或格式化文字。

NotebookCellExecution

NotebookCellExecution 是筆記本控制器在執行筆記本儲存格時修改它的方式。

當建立儲存格執行物件時,儲存格會進入 [NotebookCellExecutionState.Pending Pending](#NotebookCellExecutionState.Pending Pending) 狀態。當在執行工作上呼叫 start(...) 時,它會進入 [NotebookCellExecutionState.Executing Executing](#NotebookCellExecutionState.Executing Executing) 狀態。當呼叫 end(...) 時,它會進入 [NotebookCellExecutionState.Idle Idle](#NotebookCellExecutionState.Idle Idle) 狀態。

屬性

建立此執行的儲存格

設定和取消設定此儲存格執行的順序。

當從 UI 取消儲存格執行時將會被觸發的取消權杖。

請注意,當建立此執行的控制器使用中斷處理常式時,將不會觸發取消權杖。

方法

附加至正在執行的儲存格輸出,或附加至受此執行影響的另一個儲存格輸出。

參數說明
out: NotebookCellOutput | readonly NotebookCellOutput[]

附加至目前輸出的輸出。

cell?: NotebookCell

清除其輸出的儲存格。預設為此執行的儲存格

傳回說明
Thenable<void>

當作業完成時計時解析的 thenable。

將輸出項目附加至現有的儲存格輸出。

參數說明
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[]

附加至現有輸出的輸出項目。

output: NotebookCellOutput

已存在的輸出物件。

傳回說明
Thenable<void>

當作業完成時計時解析的 thenable。

清除正在執行的儲存格輸出,或受此執行影響的另一個儲存格輸出。

參數說明
cell?: NotebookCell

清除其輸出的儲存格。預設為此執行的儲存格

傳回說明
Thenable<void>

當作業完成時計時解析的 thenable。

發出執行已結束的訊號。

參數說明
success: boolean

如果為 true,則會在儲存格狀態列上顯示綠色勾號。如果為 false,則會顯示紅色 X。如果為 undefined,則不會顯示勾號或 X 圖示。

endTime?: number

執行完成的時間,以 Unix 紀元毫秒數表示。

傳回說明
void

取代正在執行的儲存格輸出,或受此執行影響的另一個儲存格輸出。

參數說明
out: NotebookCellOutput | readonly NotebookCellOutput[]

取代目前輸出的輸出。

cell?: NotebookCell

清除其輸出的儲存格。預設為此執行的儲存格

傳回說明
Thenable<void>

當作業完成時計時解析的 thenable。

取代現有儲存格輸出的所有輸出項目。

參數說明
items: NotebookCellOutputItem | readonly NotebookCellOutputItem[]

取代現有輸出項目的輸出項目。

output: NotebookCellOutput

已存在的輸出物件。

傳回說明
Thenable<void>

當作業完成時計時解析的 thenable。

發出執行已開始的訊號。

參數說明
startTime?: number

執行開始的時間,以 Unix 紀元毫秒數表示。用來驅動顯示儲存格執行時間的時鐘。如果未給定,將不會顯示時鐘。

傳回說明
void

NotebookCellExecutionSummary

筆記本儲存格執行的摘要。

屬性

執行發生的順序。

執行是否成功完成。

執行開始與結束的時間,以 unix 時間戳記表示

參數說明
endTime: number

執行結束時間。

startTime: number

執行開始時間。

NotebookCellKind

筆記本儲存格種類。

列舉成員

標記儲存格是用於顯示的格式化來源。

程式碼儲存格是可以被執行並產生輸出的來源。

NotebookCellOutput

筆記本儲存格輸出代表執行儲存格的結果。它是多個輸出項目的容器型別,其中包含的項目代表相同的結果,但使用不同的 MIME 型別。

建構子

建立新的筆記本輸出。

參數說明
items: NotebookCellOutputItem[]

筆記本輸出項目。

metadata?:

選用的中繼資料。

傳回說明
NotebookCellOutput

屬性

此輸出的輸出項目。每個項目必須代表相同的結果。請注意,每個輸出的重複 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 型別和資料定義。

靜態

用來建立使用 application/vnd.code.notebook.error mime 型別之 NotebookCellOutputItem 的處理站函式。

參數說明
value: Error

錯誤物件。

傳回說明
NotebookCellOutputItem

新的輸出項目物件。

用來從 JSON 物件建立 NotebookCellOutputItem 的處理站函式。

請注意,此函式預期的不是「字串化的 JSON (stringified JSON)」,而是可以被字串化的物件。當傳入的值無法進行 JSON 字串化時,此函式將會擲回錯誤。

參數說明
value: any

可進行 JSON 字串化的值。

mime?: string

選用的 MIME 類型,預設為 application/json

傳回說明
NotebookCellOutputItem

新的輸出項目物件。

用來建立使用 application/vnd.code.notebook.stderr mime 型別之 NotebookCellOutputItem 的處理站函式。

參數說明
value: string

一個字串。

傳回說明
NotebookCellOutputItem

新的輸出項目物件。

用來建立使用 application/vnd.code.notebook.stdout mime 型別之 NotebookCellOutputItem 的處理站函式。

參數說明
value: string

一個字串。

傳回說明
NotebookCellOutputItem

新的輸出項目物件。

用來從字串建立 NotebookCellOutputItem 的處理站函式。

請注意,系統會使用 UTF-8 編碼器為字串建立位元組。

參數說明
value: string

一個字串。

mime?: string

選用的 MIME 型別,預設為 text/plain

傳回說明
NotebookCellOutputItem

新的輸出項目物件。

建構子

建立新的筆記本儲存格輸出項目。

參數說明
data: Uint8Array

輸出項目的值。

mime: string

輸出項目的 mime 型別。

傳回說明
NotebookCellOutputItem

屬性

此輸出項目的資料。必須永遠是不帶正負號 8 位元整數的陣列。

決定如何解譯 data 屬性的 mime 型別。

筆記本內建支援特定的 mime 型別,擴充功能可以新增對新型別的支援並覆寫現有型別。

NotebookCellStatusBarAlignment

代表狀態列項目的對齊方式。

列舉成員

對齊左側。

對齊右側。

NotebookCellStatusBarItem

對儲存格狀態列的貢獻

建構子

建立新的 NotebookCellStatusBarItem。

參數說明
text: string

項目要顯示的文字。

alignment: NotebookCellStatusBarAlignment

項目是對齊左側還是右側。

傳回說明
NotebookCellStatusBarItem

屬性

當螢幕助讀程式與此項目互動時所使用的協助工具資訊。

項目是對齊左側還是右側。

按一下時要執行的選用 Command 或命令識別項。

該命令必須是已知的。

請注意,如果這是 Command 物件,則編輯器只會使用 commandarguments

項目的優先順序。值較高的項目會更靠左顯示。

項目要顯示的文字。

當滑鼠停留在項目上方時顯示的工具提示。

NotebookCellStatusBarItemProvider

可以將項目貢獻至出現在儲存格編輯器下方的狀態列的提供者。

活動

用來發出狀態列項目已變更訊號的選用事件。將會再次呼叫 provide 方法。

方法

當儲存格捲動到檢視畫面中、其內容、輸出、語言或中繼資料變更時,以及當其執行狀態變更時,將會呼叫此提供者。

參數說明
cell: NotebookCell

要傳回其項目的儲存格。

token: CancellationToken

如果應取消此要求時會被觸發的權杖。

傳回說明
ProviderResult<NotebookCellStatusBarItem | NotebookCellStatusBarItem[]>

NotebookController

筆記本控制器代表可以執行筆記本儲存格的實體。這通常稱為核心。

可以有多個控制器,且編輯器會讓使用者選擇要用於特定筆記本的控制器。notebookType 屬性定義了控制器適用於哪種筆記本,而 updateNotebookAffinity 函式則允許控制器為特定的筆記本文件設定偏好設定。當選取控制器時,會觸發其 onDidChangeSelectedNotebooks 事件。

當執行儲存格時,編輯器會叫用 executeHandler,且預期控制器會建立並完成筆記本儲存格執行。不過,控制器也可以自行自由建立執行。

活動

每當針對筆記本文件選取或取消選取控制器時就會觸發的事件。

筆記本可以有多個控制器,在此情況下需要選取控制器。這是使用者動作,會在與已建議控制器的筆記本互動時以明確或隱含的方式發生。可能的話,編輯器會建議最有可能被選取的控制器。

請注意,控制器選取項目會被保存 (透過控制器的 id),並且會在重新建立控制器或開啟筆記本時立即還原。

屬性

呈現較不顯眼的人類可讀描述。

呈現較不顯眼的人類可讀詳細資料。

當在 UI 中選取執行動作(例如「執行儲存格」、「全部執行」、「執行選取範圍」等)時,會叫用執行處理常式。執行處理常式負責建立和管理 execution 物件。

參數說明
cells: NotebookCell[]
notebook: NotebookDocument
controller: NotebookController
傳回說明
void | Thenable<void>

此筆記本控制器的識別項。

請注意,控制器是透過其識別項來記住的,且擴充功能應該在不同工作階段之間使用穩定的識別項。

選用的中斷處理常式。

依預設,儲存格執行是透過權杖來取消的。取消權杖要求控制器能夠追蹤其執行,以便在稍後的時間點取消特定的執行。並非所有情境都允許這樣做,例如 REPL 風格的控制器通常透過中斷目前正在執行的任何作業來運作。針對這些情況,中斷處理常式便應運而生 - 它可以被視為終端機中 SIGINTControl+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

此控制器是否支援執行順序,以便編輯器能為它們轉譯預留位置。

方法

建立儲存格執行工作。

請注意,每個儲存格一次只能有一個執行,如果在另一個儲存格執行仍在作用中時建立儲存格執行,將會擲回錯誤。

應在回應呼叫執行處理常式時使用,或在儲存格執行已從其他地方啟動時使用(例如當儲存格已經在執行時,或是當儲存格執行是從其他來源觸發時)。

參數說明
cell: NotebookCell

要為其建立執行的筆記本儲存格。

傳回說明
NotebookCellExecution

筆記本儲存格執行。

處置(Dispose)並釋放相關資源。

參數說明
傳回說明
void

控制器可以為特定的筆記本文件設定親和性。這允許控制器針對某些筆記本顯得更為突出。

參數說明
notebook: NotebookDocument

設定優先順序的筆記本。

affinity: NotebookControllerAffinity

控制器親和性

傳回說明
void

NotebookControllerAffinity

針對筆記本文件的筆記本控制器親和性。

另請參閱 NotebookController.updateNotebookAffinity

列舉成員

預設親和性。

針對筆記本偏好的控制器。

NotebookData

筆記本的原始表示法。

擴充功能負責建立 NotebookData,以便編輯器能建立 NotebookDocument

另請參閱 NotebookSerializer

建構子

建立新的筆記本資料。

參數說明
cells: NotebookCellData[]

儲存格資料陣列。

傳回說明
NotebookData

屬性

此筆記本資料的儲存格資料。

筆記本資料的任意中繼資料。

NotebookDocument

代表一個筆記本,其本身是程式碼或標記儲存格的序列。筆記本文件是由筆記本資料建立的。

屬性

筆記本中的儲存格數量。

如果筆記本已關閉,則為 true。已關閉的筆記本不再進行同步,且當再次開啟相同的資源時將不會重複使用。

如果有未保存的變更,則為 true

此筆記本是否代表尚未儲存的未命名檔案。

此筆記本的任意中繼資料。可以是任何內容,但必須可進行 JSON 字串化。

筆記本的型別。

此筆記本的關聯 uri。

請注意,大多數筆記本都使用 file 配置,這表示它們是磁碟上的檔案。不過,並非所有筆記本都儲存在磁碟上,因此在嘗試存取磁碟上的底層檔案或兄弟檔案之前,必須先檢查 scheme

另請參閱 FileSystemProvider

此筆記本的版本號碼 (在每次變更後會嚴格遞增,包含復原/重做)。

方法

傳回指定索引處的儲存格。索引將會調整為符合筆記本。

參數說明
index: number

要擷取的儲存格索引。

傳回說明
NotebookCell

取得此筆記本的儲存格。可以透過提供範圍來擷取子集。範圍將會調整為符合筆記本。

參數說明
range?: NotebookRange

筆記本範圍。

傳回說明
NotebookCell[]

範圍包含的儲存格或所有儲存格。

儲存文件。儲存動作將由對應的序列化程式處理。

參數說明
傳回說明
Thenable<boolean>

當文件已儲存時將解析為 true 的 promise。如果檔案未變更或儲存失敗,則會傳回 false。

NotebookDocumentCellChange

描述對筆記本儲存格的變更。

另請參閱 NotebookDocumentChangeEvent

屬性

受影響的儲存格。

儲存格的文件,若未變更則為 undefined

請注意,您應該使用 onDidChangeTextDocument 事件來取得詳細的變更資訊,例如執行了哪些編輯。

儲存格的新執行摘要,若未變更則為 undefined

儲存格的新中繼資料,若未變更則為 undefined

儲存格的新輸出,若未變更則為 undefined

NotebookDocumentChangeEvent

描述交易式筆記本變更的事件。

屬性

儲存格變更陣列。

描述新增或移除儲存格之內容變更的陣列。

筆記本的新中繼資料,若未變更則為 undefined

受影響的筆記本。

NotebookDocumentContentChange

描述筆記本文件的結構變更,例如新新增和移除的儲存格。

另請參閱 NotebookDocumentChangeEvent

屬性

已新增至文件的儲存格。

已新增或移除儲存格的範圍。

請注意,當此範圍為時,表示沒有移除任何儲存格。

已從文件中移除的儲存格。

NotebookDocumentContentOptions

筆記本內容選項定義要保存筆記本的哪些部分。注意

例如,筆記本序列化程式可以選擇不儲存輸出,在此情況下,當其輸出變更時,編輯器不會將筆記本作為未儲存標記。

屬性

控制儲存格中繼資料屬性變更事件是否會觸發筆記本文件內容變更事件,以及是否會在 diff 編輯器中使用,預設為 false。如果內容提供者未將中繼資料屬性保存在檔案文件中,則應將其設為 true。

控制文件中繼資料屬性變更事件是否會觸發筆記本文件內容變更事件,以及是否會在 diff 編輯器中使用,預設為 false。如果內容提供者未將中繼資料屬性保存在檔案文件中,則應將其設為 true。

控制輸出變更事件是否會觸發筆記本文件內容變更事件,以及是否會在 diff 編輯器中使用,預設為 false。如果內容提供者未將輸出保存在檔案文件中,則應將其設為 true。

NotebookDocumentShowOptions

代表用來設定在筆記本編輯器中顯示筆記本文件之行為的選項。

屬性

選用的旗標,當為 true 時會阻止筆記本編輯器取得焦點。

控制筆記本編輯器索引標籤是否顯示為預覽的選用旗標。預覽索引標籤將會被取代並重複使用,直到設定為固定(明確設定或透過編輯)。預設行為取決於 workbench.editor.enablePreview 設定。

要套用於筆記本編輯器中文件的選用選取範圍。

應該顯示筆記本編輯器的選用檢視欄位。預設為主動。不存在的欄位將視需要建立,最多到 ViewColumn.Nine。使用 ViewColumn.Beside 可在目前主動編輯器的側邊開啟編輯器。

NotebookDocumentWillSaveEvent

筆記本文件即將儲存時觸發的事件。

若要在儲存文件之前對其進行修改,請呼叫帶有解析為 workspace edit 之 thenable 的 waitUntil 函式。

屬性

即將儲存的筆記本文件

觸發儲存的原因。

取消 token。

方法

允許暫停事件迴圈並套用 workspace edit。後續呼叫此函式的編輯將會依序套用。如果發生筆記本文件的並行修改,這些編輯將會被忽略

注意:此函式只能在事件分派期間呼叫,不能以非同步方式呼叫

workspace.onWillSaveNotebookDocument(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
參數說明
thenable: Thenable<WorkspaceEdit>

解析為 workspace edit 的 thenable。

傳回說明
void

允許暫停事件迴圈,直到提供的 thenable 解析完成。

注意:此函式只能在事件分派期間呼叫。

參數說明
thenable: Thenable<any>

延遲儲存的 thenable。

傳回說明
void

NotebookEdit

筆記本編輯代表應該套用至筆記本內容的編輯。

靜態

用來建立刪除筆記本中儲存格之編輯的公用程式。

參數說明
range: NotebookRange

要刪除的儲存格範圍。

傳回說明
NotebookEdit

用來建立取代筆記本中儲存格之編輯的公用程式。

參數說明
index: number

要在其處插入儲存格的索引。

newCells: NotebookCellData[]

新的筆記本儲存格。

傳回說明
NotebookEdit

用來建立取代筆記本中儲存格之編輯的公用程式。

參數說明
range: NotebookRange

要取代的儲存格範圍

newCells: NotebookCellData[]

新的筆記本儲存格。

傳回說明
NotebookEdit

用來建立更新儲存格中繼資料之編輯的公用程式。

參數說明
index: number

要更新的儲存格索引。

newCellMetadata:

儲存格的新中繼資料。

傳回說明
NotebookEdit

用來建立更新筆記本中繼資料之編輯的公用程式。

參數說明
newNotebookMetadata:

筆記本的新中繼資料。

傳回說明
NotebookEdit

建構子

建立新的筆記本編輯。

參數說明
range: NotebookRange

筆記本範圍。

newCells: NotebookCellData[]

新儲存格資料的陣列。

傳回說明
NotebookEdit

屬性

儲存格的選擇性新中繼資料。

正在插入的新儲存格。可能為空。

筆記本的選擇性新中繼資料。

正在編輯的儲存格範圍。可能為空。

NotebookEditor

代表附加至 筆記本 的筆記本編輯器。NotebookEditor 的其他屬性可在擬議的 API 中使用,這些屬性稍後將會定案。

屬性

與此筆記本編輯器相關聯的 筆記本文件

此筆記本編輯器中的主要選取範圍。

此筆記本編輯器中的所有選取範圍。

主要選取範圍 (或焦點範圍) 為 selections[0]。當文件沒有儲存格時,主要選取範圍為空 { start: 0, end: 0 }

此編輯器顯示的欄。

編輯器中目前的可見範圍 (垂直)。

方法

依照 revealType 指示捲動,以顯示指定的範圍。

參數說明
range: NotebookRange

範圍。

revealType?: NotebookEditorRevealType

用於顯示 range 的捲動策略。

傳回說明
void

NotebookEditorRevealType

代表附加至 筆記本 的筆記本編輯器。

列舉成員

將會以盡可能少捲動的方式顯示範圍。

範圍將一律顯示在檢視區的中央。

如果範圍在檢視區之外,將會顯示在檢視區的中央。否則,將會以盡可能少捲動的方式顯示。

範圍將一律顯示在檢視區的頂端。

NotebookEditorSelectionChangeEvent

代表描述 筆記本編輯器選取範圍 變更的事件。

屬性

其選取範圍已變更的 筆記本編輯器

NotebookEditorVisibleRangesChangeEvent

代表描述 筆記本編輯器可見範圍 變更的事件。

屬性

其可見範圍已變更的 筆記本編輯器

NotebookRange

筆記本範圍代表兩個儲存格索引的有序對。保證 start 小於或等於 end。

建構子

建立新的筆記本範圍。如果 start 不在 end 之前或等於 end,則會交換這些值。

參數說明
start: number

起始索引

end: number

結束索引。

傳回說明
NotebookRange

屬性

此範圍的結束索引 (不包含,以零為基底)。

startend 相等,則為 true

此範圍的起始索引 (以零為基底)。

方法

衍生此範圍的新範圍。

參數說明
change: {end: number, start: number}

描述此範圍變更的物件。

傳回說明
NotebookRange

反映給定變更的範圍。如果變更未改變任何內容,將會傳回 this 範圍。

NotebookRendererMessaging

轉譯器訊息處理用於與單一轉譯器通訊。它是從 notebooks.createRendererMessaging 傳回的。

活動

從轉譯器接收到訊息時觸發的事件。

方法

向其中一個或所有轉譯器傳送訊息。

參數說明
message: any

要傳送的訊息

editor?: NotebookEditor

訊息的目標編輯器。如果未提供,訊息將會傳送至所有轉譯器。

傳回說明
Thenable<boolean>

一個布林值,表示訊息是否成功傳遞給任何轉譯器。

NotebookSerializer

筆記本序列化程式可讓編輯器開啟筆記本檔案。

在其核心中,編輯器只知道 筆記本資料結構,但不知道該資料結構如何寫入檔案,也不知道如何從檔案讀取。筆記本序列化程式透過將位元組還原序列化為筆記本資料 (反之亦然) 來彌補這項差距。

方法

將筆記本檔案的內容還原序列化為筆記本資料結構。

參數說明
content: Uint8Array

筆記本檔案的內容。

token: CancellationToken

取消 token。

傳回說明
NotebookData | Thenable<NotebookData>

筆記本資料或解析為該資料的 thenable。

將筆記本資料序列化為檔案內容。

參數說明
data: NotebookData

筆記本資料結構。

token: CancellationToken

取消 token。

傳回說明
Uint8Array | Thenable<Uint8Array>

位元組陣列或解析為此類陣列的 thenable。

OnEnterRule

描述按下 Enter 時要評估的規則。

屬性

要執行的動作。

只有在游標後方的文字符合此正規表示式時,此規則才會執行。

只有在游標前方的文字符合此正規表示式時,此規則才會執行。

只有在目前行上方的文字符合此正規表示式時,此規則才會執行。

OnTypeFormattingEditProvider

文件格式化提供者介面定義了擴充功能與格式化功能之間的合約。

方法

在輸入字元後提供格式化編輯。

給定的位置和字元應該提示提供者要將位置擴充到哪個範圍,例如在輸入 } 時尋找相符的 {

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

ch: string

已輸入的字元。

options: FormattingOptions

控制格式化的選項。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TextEdit[]>

一組文字編輯,或是解析為此類編輯的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

OpenDialogOptions

用於設定檔案開啟對話方塊行為的選項。

  • 備註 1:在 Windows 和 Linux 上,檔案對話方塊無法同時為檔案選取器和資料夾選取器,因此如果您在這些平臺上將 canSelectFilescanSelectFolders 都設定為 true,將會顯示資料夾選取器。
  • 備註 2:明確將 canSelectFilescanSelectFolders 設定為 false 是無效的,編輯器會接著自動將選項調整為選取檔案。

屬性

允許選取檔案,預設為 true

允許選取資料夾,預設為 false

允許選取多個檔案或資料夾。

對話方塊開啟時顯示的資源。

對話方塊所使用的一組檔案篩選器。每個項目都是人類可讀的標籤 (例如 "TypeScript") 與副檔名陣列,例如

{
    'Images': ['png', 'jpg'],
    'TypeScript': ['ts', 'tsx']
}

開啟按鈕的人類可讀字串。

對話方塊標題。

此參數可能會被忽略,因為並非所有作業系統都會在開啟對話方塊上顯示標題 (例如 macOS)。

OutputChannel

輸出通道是唯讀文字資訊的容器。

若要取得 OutputChannel 的執行個體,請使用 createOutputChannel

屬性

此輸出通道的易讀名稱。

方法

將給定的值附加到通道。

參數說明
value: string

字串,為 falsy 的值將不會被列印。

傳回說明
void

將給定的值和換行字元附加到通道。

參數說明
value: string

字串,為 falsy 的值將會被列印。

傳回說明
void

移除通道中的所有輸出。

參數說明
傳回說明
void

處置(Dispose)並釋放相關資源。

參數說明
傳回說明
void

從 UI 中隱藏此通道。

參數說明
傳回說明
void

用給定的值取代通道中的所有輸出。

參數說明
value: string

字串,為 falsy 的值將不會被列印。

傳回說明
void

在 UI 中顯示此通道。

參數說明
preserveFocus?: boolean

當為 true 時,通道不會取得焦點。

傳回說明
void

在 UI 中顯示此通道。

  • 已過時 - 請使用僅包含一個參數的多載(show(preserveFocus?: boolean): void)。
參數說明
column?: ViewColumn

此引數已過時且將被忽略。

preserveFocus?: boolean

當為 true 時,通道不會取得焦點。

傳回說明
void

OverviewRulerLane

代表在 概觀尺規 中轉譯裝飾的不同位置。概觀尺規支援三個欄位。

列舉成員

概觀尺規的左欄。

概觀尺規的中欄。

概觀尺規的右欄。

概觀尺規的所有欄。

ParameterInformation

代表可呼叫簽章的參數。參數可以有標籤和說明文件註解。

建構子

建立新的參數資訊物件。

參數說明
label: string | [number, number]

包含其簽章標籤內的標籤字串,或包含起始且不包含結束的位移。

documentation?: string | MarkdownString

說明文件字串。

傳回說明
ParameterInformation

屬性

此簽章的人類可讀說明文件註解。將會顯示在 UI 中,但可以省略。

此簽章的標籤。

字串,或是其包含 簽章標籤 內的包含起始與不包含結束位移。備註:字串類型的標籤必須是其包含的簽章資訊 標籤 的子字串。

Position

代表行與字元位置,例如游標的位置。

Position 物件是不可變的 (immutable)。請使用 withtranslate 方法從現有位置衍生新位置。

建構子

參數說明
line: number

以零為基底的行值。

character: number

以零為基底的字元值。

傳回說明
Position

屬性

以零為基底的字元值。

字元位移是使用 UTF-16 程式碼單位來表示。

以零為基底的行值。

方法

將此與 other 進行比較。

參數說明
other: Position

位置。

傳回說明
number

如果此位置在給定位置之前,則為小於零的數字;如果此位置在給定位置之後,則為大於零的數字;如果此位置與給定位置相等,則為零。

檢查此位置是否在 other 之後。

參數說明
other: Position

位置。

傳回說明
boolean

如果位置在較大的行上,或者在同一行的較大字元上,則為 true

檢查此位置是否在 other 之後或等於 other

參數說明
other: Position

位置。

傳回說明
boolean

如果位置在較大的行上,或者在同一行的較大或相等字元上,則為 true

檢查此位置是否在 other 之前。

參數說明
other: Position

位置。

傳回說明
boolean

如果位置在較小的行上,或者在同一行的較小字元上,則為 true

檢查此位置是否在 other 之前或等於 other

參數說明
other: Position

位置。

傳回說明
boolean

如果位置在較小的行上,或者在同一行的較小或相等字元上,則為 true

檢查此位置是否等於 other

參數說明
other: Position

位置。

傳回說明
boolean

如果給定位置的行和字元等於此位置的行和字元,則為 true

建立相對於此位置的新位置。

參數說明
lineDelta?: number

行值的差異值,預設為 0

characterDelta?: number

字元值的差異值,預設為 0

傳回說明
Position

其行和字元為目前行和字元加上對應差異值總和的位置。

衍生相對於此位置的新位置。

參數說明
change: {characterDelta: number, lineDelta: number}

描述此位置差異值的物件。

傳回說明
Position

反映給定差異值的位置。如果變更未改變任何內容,將會傳回 this 位置。

建立衍生自此位置的新位置。

參數說明
line?: number

應用作行值的數值,預設為 現有值

character?: number

應用作字元值的數值,預設為 現有值

傳回說明
Position

其行和字元已被給定值取代的位置。

衍生自此位置的新位置。

參數說明
change: {character: number, line: number}

描述此位置變更的物件。

傳回說明
Position

反映給定變更的位置。如果變更未改變任何內容,將會傳回 this 位置。

PreparedToolInvocation

屬性

此屬性的存在表示應該在執行工具之前要求使用者確認。對於任何具有副作用或可能具潛在危險的工具,都應該要求使用者確認。

工具執行時要顯示的自訂進度訊息。

PrepareLanguageModelChatModelOptions

屬性

是否應該透過某些 UI 流程提示使用者,或者是否應該嘗試以無訊息方式解析模型。如果 silent 為 true,則由於缺少 API 金鑰等資訊,可能無法解析所有模型。

ProcessExecution

工作的執行是作為沒有 Shell 互動的外部處理序發生。

建構子

建立處理序執行。

參數說明
process: string

要啟動的處理序。

options?: ProcessExecutionOptions

已啟動處理序的選擇性選項。

傳回說明
ProcessExecution

建立處理序執行。

參數說明
process: string

要啟動的處理序。

args: string[]

要傳遞給處理序的引數。

options?: ProcessExecutionOptions

已啟動處理序的選擇性選項。

傳回說明
ProcessExecution

屬性

傳遞給處理序的引數。預設為空陣列。

執行處理序時使用的處理序選項。預設為 undefined。

要執行的處理序。

ProcessExecutionOptions

處理序執行的選項

屬性

已執行程式或 Shell 的目前工作目錄。如果省略,則使用工具目前的工作區根目錄。

已執行程式或 Shell 的其他環境變數。如果省略,將使用父行程的環境變數。如果提供,將與父行程的環境變數合併。

Progress<T>

定義回報進度更新的通用方式。

方法

回報進度更新。

參數說明
value: T

進度項目,例如訊息和/或關於已完成多少工作的報告

傳回說明
void

ProgressLocation

編輯器中可以顯示進度資訊的位置。進度的視覺呈現方式取決於該位置。

列舉成員

顯示原始檔控制檢視區塊的進度,作為圖示的覆疊以及檢視區塊內的進度列 (可見時)。兩者皆不支援取消、離散進度或用於描述操作的標籤。

在編輯器的狀態列中顯示進度。兩者皆不支援取消或離散進度。支援透過進度標籤中的 $(<name>) 語法來轉譯 佈景主題圖示

以通知形式顯示進度,並附帶選擇性的取消按鈕。支援顯示無限和離散進度,但不支援轉譯圖示。

ProgressOptions

描述進度應顯示於何處及如何顯示的值物件。

屬性

控制是否應顯示取消按鈕,以允許使用者取消執行時間長的作業。請注意,目前只有 ProgressLocation.Notification 支援顯示取消按鈕。

進度應顯示的位置。

將用於描述操作的人類可讀字串。

ProvideLanguageModelChatResponseOptions

屬性

一組控制語言模型行為的選項。這些選項是語言模型專屬的。

要使用的工具選取模式。提供者必須實作以遵守此設定。

語言模型可用的選用工具清單。這些可以是透過 lm.tools 取得的已註冊工具,或是僅在呼叫端擴充功能內部實作的私有工具。

如果 LLM 要求呼叫這些工具之一,它將在 LanguageModelChatResponse.stream 中傳回 LanguageModelToolCallPart。呼叫端負責叫用該工具。如果它是註冊在 lm.tools 中的工具,這意味著要呼叫 lm.invokeTool

接著,可以透過建立一個包含 LanguageModelToolCallPart 的助理類型 LanguageModelChatMessage,後面接著一個包含 LanguageModelToolResultPart 的使用者類型訊息,來將工具結果提供給 LLM。

ProviderResult<T>

提供者結果代表提供者 (例如 HoverProvider) 可能傳回的值。一方面,這是實際的結果類型 T (例如 Hover),或是解析為該類型 T 的 thenable。此外,也可以傳回 nullundefined (直接傳回或從 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
  }
};

Pseudoterminal

定義終端機 pty 的介面,允許擴充功能控制終端機。

活動

觸發時允許變更終端機名稱的事件。

在呼叫 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 });

觸發時會發出 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);

觸發時允許覆寫終端機 尺寸 的事件。請注意,設定後,覆寫的尺寸只有在低於終端機實際尺寸時才會生效 (即永遠不會出現捲軸)。設定為 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 });

觸發時會將資料寫入終端機的事件。不同於將文字傳送至底層子偽裝置 (子代) 的 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

實作以處理終端機中的輸入按鍵,或是當擴充功能呼叫 Terminal.sendText 時的情況。data 包含序列化為其對應 VT 序列表示法的按鍵/文字。

參數說明
data: string

連入的資料。

範例:在終端機中回音輸入。Enter 的序列 (\r) 會轉譯為 CRLF,以移至新行並將游標移至該行開頭。

const writeEmitter = new vscode.EventEmitter<string>();
const pty: vscode.Pseudoterminal = {
  onDidWrite: writeEmitter.event,
  open: () => {},
  close: () => {},
  handleInput: data => writeEmitter.fire(data === '\r' ? '\r\n' : data)
};
vscode.window.createTerminal({ name: 'Local echo', pty });
傳回說明
void

實作以處理 pty 開啟並準備好開始觸發事件時的情況。

參數說明
initialDimensions: TerminalDimensions

終端機的尺寸,如果在呼叫此項目之前未開啟終端機面板,這將會是 undefined。

傳回說明
void

實作以處理適合終端機面板的列數和欄數變更時的情況,例如當字型大小變更或面板大小調整時。在觸發此項目之前,終端機尺寸的初始狀態應視為 undefined,因為在終端機出現在使用者介面之前,其大小是未知的。

當尺寸被 onDidOverrideDimensions 覆寫時,將會繼續使用一般面板尺寸呼叫 setDimensions,允許擴充功能繼續對尺寸變更做出反應。

參數說明
dimensions: TerminalDimensions

新尺寸。

傳回說明
void

QuickDiffProvider

快速 diff 提供者提供修改後資源原始狀態的 uri。編輯器將使用此資訊在文字中轉譯即時 diff。

方法

為任何給定的資源 uri 提供原始資源的 Uri

參數說明
uri: Uri

在文字編輯器中開啟之資源的 uri。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Uri>

解析為相符原始資源 uri 的 thenable。

QuickInput

所有快速輸入類型的基底介面。

快速輸入為擴充功能提供透過簡單 UI 元素與使用者互動的統一方式。快速輸入 UI 最初是不可見的。透過其屬性進行設定後,擴充功能可以透過呼叫 show 來使其可見。

此使用者介面可能必須隱藏的原因有好幾個,且擴充功能將透過 onDidHide 收到通知。範例包含:明確呼叫 hide、使用者按下 Esc、其他輸入使用者介面開啟等。

使用者按下 Enter 或暗示接受目前狀態的其他手勢,不會自動隱藏此 UI 元件。擴充功能可自行決定是否接受使用者的輸入,以及是否確實應該透過呼叫 hide 來隱藏 UI。

當擴充功能不再需要此輸入 UI 時,應該將其 處置 以釋放與其相關聯的任何資源。

具體 UI 請參閱 QuickPickInputBox

活動

發出此輸入使用者介面何時隱藏訊號的事件。

此使用者介面可能必須隱藏的原因有好幾個,且擴充功能將透過 onDidHide 收到通知。範例包含:明確呼叫 hide、使用者按下 Esc、其他輸入使用者介面開啟等。

屬性

決定使用者介面是否應顯示進度指示器。預設為 false

將此變更為 true,例如在載入更多資料或驗證使用者輸入時。

決定使用者介面是否應允許使用者輸入。預設為 true

將此變更為 false,例如在驗證使用者輸入或為使用者輸入的下一步載入資料時。

決定即使失去使用者介面焦點,使用者介面是否應保持開啟。預設為 false。此設定在 iPad 上會被忽略且一律為 false

多步驟輸入流程的選用目前步驟計數。

輸入使用者介面的選用標題。

多步驟輸入流程的選用總步驟計數。

方法

釋放此輸入使用者介面以及任何關聯的資源。

如果它仍然可見,則會先隱藏它。在此呼叫之後,輸入使用者介面將不再具備功能,且不應存取其上的任何額外方法或屬性。取而代之的是應該建立新的輸入使用者介面。

參數說明
傳回說明
void

隱藏此輸入使用者介面。

這也會觸發 onDidHide 事件。

參數說明
傳回說明
void

使輸入使用者介面在其目前的組態下可見。

任何其他輸入使用者介面都會先觸發 onDidHide 事件。

參數說明
傳回說明
void

QuickInputButton

QuickPickInputBox 中動作的按鈕。

屬性

按鈕的圖示。

應轉譯按鈕的位置。

預設為 QuickInputButtonLocation.Title

備註:如果按鈕已新增至 QuickPickItem,則會忽略此屬性。

存在時,表示按鈕是可以勾選或取消勾選的切換按鈕。

參數說明
checked: boolean

指出目前是否已勾選切換按鈕。切換按鈕時,將會更新此屬性。

將滑鼠停留在按鈕上方時所顯示的選擇性工具提示。

QuickInputButtonLocation

指定應轉譯 QuickInputButton 的位置。

列舉成員

按鈕會轉譯在標題列中。

按鈕會以內嵌方式轉譯在輸入方塊的右側。

按鈕會轉譯在輸入方塊內的最遠端。

QuickInputButtons

QuickPickInputBox 的預先定義按鈕。

靜態

QuickPickInputBox 的預先定義返回按鈕。

需要導覽返回按鈕時,應使用此按鈕以保持一致性。它隨附預先定義的圖示、工具提示和位置。

QuickPick<T>

具體的 QuickInput,可讓使用者從 T 類型項目清單中挑選項目。

可以透過篩選文字欄位來篩選項目,並且有 canSelectMany 選項可允許選取多個項目。

請注意,在許多情況下,更方便的 window.showQuickPick 會更容易使用。當 window.showQuickPick 無法提供所需的彈性時,應使用 window.createQuickPick

活動

當使用者表示接受所選項目時發出訊號的事件。

當使用中的項目變更時發出訊號的事件。

當所選項目變更時發出訊號的事件。

當篩選文字的值變更時發出訊號的事件。

發出此輸入使用者介面何時隱藏訊號的事件。

此使用者介面可能必須隱藏的原因有好幾個,且擴充功能將透過 onDidHide 收到通知。範例包含:明確呼叫 hide、使用者按下 Esc、其他輸入使用者介面開啟等。

發出按鈕何時被觸發訊號的事件。

此事件會針對儲存在 buttons 陣列中的按鈕觸發。此事件不會針對 QuickPickItem 上的按鈕觸發。

當觸發特定 QuickPickItem 中的按鈕時發出訊號的事件。

此事件不會針對作為 buttons 一部分之標題列中的按鈕觸發。

屬性

使用中的項目。這可由擴充功能讀取和更新。

決定使用者介面是否應顯示進度指示器。預設為 false

將此變更為 true,例如在載入更多資料或驗證使用者輸入時。

用於使用者介面中動作的按鈕。

決定是否可以同時選取多個項目。預設為 false

決定使用者介面是否應允許使用者輸入。預設為 true

將此變更為 false,例如在驗證使用者輸入或為使用者輸入的下一步載入資料時。

決定即使失去使用者介面焦點,使用者介面是否應保持開啟。預設為 false。此設定在 iPad 上會被忽略且一律為 false

要從中挑選的項目。這可由擴充功能讀取和更新。

決定更新快速挑選項目時是否維持捲動位置。預設為 false

決定是否也應將篩選文字與項目的 description 進行比對。預設為 false

決定是否也應將篩選文字與項目的 detail 進行比對。預設為 false

未輸入任何值時,顯示在篩選文字方塊中的選擇性預留位置文字。

向使用者提供指示或內容的選擇性文字。

提示會顯示在輸入方塊下方和項目清單上方。

已選取的項目。這可由擴充功能讀取和更新。

多步驟輸入流程的選用目前步驟計數。

輸入使用者介面的選用標題。

多步驟輸入流程的選用總步驟計數。

篩選文字的目前值。

方法

釋放此輸入使用者介面以及任何關聯的資源。

如果它仍然可見,則會先隱藏它。在此呼叫之後,輸入使用者介面將不再具備功能,且不應存取其上的任何額外方法或屬性。取而代之的是應該建立新的輸入使用者介面。

參數說明
傳回說明
void

隱藏此輸入使用者介面。

這也會觸發 onDidHide 事件。

參數說明
傳回說明
void

使輸入使用者介面在其目前的組態下可見。

任何其他輸入使用者介面都會先觸發 onDidHide 事件。

參數說明
傳回說明
void

QuickPickItem

表示可以從項目清單中選取的項目。

屬性

決定是否一律顯示此項目,即使它被使用者的輸入篩選掉也一樣。

注意:kind 設定為 QuickPickItemKind.Separator 時,會忽略此屬性。

將在此特定項目上呈現的選擇性按鈕。

這些按鈕按下時會觸發 QuickPickItemButtonEvent。只有在使用透過 createQuickPick API 建立的快速選擇時才會呈現按鈕。使用 showQuickPick API 時不會呈現按鈕。

注意:kind 設定為 QuickPickItemKind.Separator 時,會忽略此屬性。

一個人類可讀的字串,在同一行中以較不顯眼的方式呈現。

支援透過 $(<name>) 語法來呈現 佈景主題圖示

注意:kind 設定為 QuickPickItemKind.Separator 時,會忽略此屬性。

一個人類可讀的字串,在單獨的行中以較不顯眼的方式呈現。

支援透過 $(<name>) 語法來呈現 佈景主題圖示

注意:kind 設定為 QuickPickItemKind.Separator 時,會忽略此屬性。

此項目的圖示。

此項目的類型,決定了它在快速選擇中的呈現方式。

若未指定,預設值為 QuickPickItemKind.Default

以顯眼方式呈現的人類可讀字串。

支援透過 $(<name>) 語法來呈現 佈景主題圖示

注意:kind 設定為 QuickPickItemKind.Default 時(即一般項目而非分隔線),支援透過 $(<name>) 語法來呈現 佈景主題圖示

指示此項目是否最初就被選取的選擇性旗標。

這僅在使用 showQuickPick API 時有效。若要透過 createQuickPick API 達成相同目的,只需將 selectedItems 設定為您最初想要選取的項目即可。

注意:這僅在選擇器允許多重選取時有效。

另請參閱 QuickPickOptions.canPickMany

注意:kind 設定為 QuickPickItemKind.Separator 時,會忽略此屬性。

代表與此項目相關聯之資源的 Uri

設定後,如果未明確提供,此屬性可用來自動衍生數個項目屬性

  • 標籤:當未提供 label 或其為空時,從資源的檔名衍生。
  • 描述:當未提供 description 或其為空時,從資源的路徑衍生。
  • 圖示:當 iconPath 設定為 ThemeIcon.FileThemeIcon.Folder 時,從目前的檔案圖示佈景主題衍生。

QuickPickItemButtonEvent<T>

描述在 QuickPickItem 上按下按鈕的事件。

屬性

被按下的按鈕。

按鈕所屬的項目。

QuickPickItemKind

定義 快速選擇項目 的類型。

列舉成員

提供視覺群組的分隔線項目。

QuickPickItem 的類型為 Separator 時,該項目僅為視覺分隔線,不代表可選取的項目。唯一適用的屬性是 labelQuickPickItem 上的所有其他屬性都將被忽略且無效。

可以在快速選擇中選取之項目的預設類型。

QuickPickOptions

用來設定快速選擇 UI 行為的選項。

活動

每當選取項目時就會叫用的選擇性函式。

參數說明
item: string | QuickPickItem
傳回說明
any

屬性

決定選擇器是否允許多重選取。當為 true 時,結果會是所選項目組成的陣列。

設定為 true 可在焦點移至編輯器的其他部分或其他視窗時保持選擇器開啟。此設定在 iPad 上會被忽略且永遠為 false

決定在篩選項目時是否應包含 description。預設為 false

決定在篩選項目時是否應包含 detail。預設為 false

要在輸入方塊中顯示為預留位置以引導使用者的選擇性字串。

向使用者提供指示或內容的選擇性文字。

提示會顯示在輸入方塊下方和項目清單上方。

快速選擇的選擇性標題。

Range

範圍代表兩個位置的有序對。保證 start.isBeforeOrEqual(end) 成立

範圍物件是不可變的。請使用 withintersectionunion 方法從現有範圍衍生新範圍。

建構子

從兩個位置建立新範圍。如果 start 不在 end 之前或等於 end,則會交換這些值。

參數說明
start: Position

位置。

end: Position

位置。

傳回說明
Range

從數字座標建立新範圍。這相當於使用 new Range(new Position(startLine, startCharacter), new Position(endLine, endCharacter)) 的簡寫形式

參數說明
startLine: number

以零為基底的行值。

startCharacter: number

以零為基底的字元值。

endLine: number

以零為基底的行值。

endCharacter: number

以零為基底的字元值。

傳回說明
Range

屬性

結束位置。它位於 start 之後或等於它。

startend 相等,則為 true

start.lineend.line 相等,則為 true

起始位置。它位於 end 之前或等於它。

方法

檢查某個位置或範圍是否包含在此範圍中。

參數說明
positionOrRange: Range | Position

位置或範圍。

傳回說明
boolean

若該位置或範圍在此範圍內部或等於此範圍,則為 true

range 與此範圍相交,並傳回新範圍;如果範圍沒有重疊,則傳回 undefined

參數說明
range: Range

範圍。

傳回說明
Range

具有較大起始位置和較小結束位置的範圍。當沒有重疊時將傳回 undefined。

檢查 other 是否等於此範圍。

參數說明
other: Range

範圍。

傳回說明
boolean

當起點和終點與此範圍的起點和終點 相等 時,則為 true

計算 other 與此範圍的聯集。

參數說明
other: Range

範圍。

傳回說明
Range

具有較小起始位置和較大結束位置的範圍。

從此範圍衍生新範圍。

參數說明
start?: Position

應用作起點的位置。預設值為 目前起點

end?: Position

應用作終點的位置。預設值為 目前終點

傳回說明
Range

使用給定的起點和終點位置從此範圍衍生的範圍。如果起點和終點沒有不同,將傳回 this 範圍。

從此範圍衍生新範圍。

參數說明
change: {end: Position, start: Position}

描述此範圍變更的物件。

傳回說明
Range

反映給定變更的範圍。如果變更未改變任何內容,將會傳回 this 範圍。

ReferenceContext

包含要求參考時之其他資訊的值物件。

屬性

包含目前符號的宣告。

ReferenceProvider

參考提供者介面定義了擴充功能與 尋找參考 功能之間的合約。

方法

為給定的位置和文件提供一組專案範圍的參考。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

context: ReferenceContext

關於參考要求的其他資訊。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Location[]>

位置陣列或解析為此類陣列的 thenable。若無結果,可以傳回 undefinednull 或空陣列來表示。

RelativePattern

相對模式是協助建構相對於基底檔案路徑進行比對之 glob 模式的輔助工具。基底路徑可以是作為字串或 uri 的絕對檔案路徑,或是 工作區資料夾(這是建立相對模式的偏好方式)。

建構子

使用基底檔案路徑和要比對的模式建立新的相對模式物件。此模式將會針對相對於基底的檔案路徑進行比對。

範例

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

*.{ts,js} 這樣將與相對於基底的路徑進行比對的檔案 glob 模式。

傳回說明
RelativePattern

屬性

此模式將與其進行相對比對的基底檔案路徑。

這會比對 RelativePattern.baseUrifsPath 值。

注意:更新此值將會把 RelativePattern.baseUri 更新為帶有 file 配置的 uri。

此模式將與其進行相對比對的基底檔案路徑。該檔案路徑必須是絕對路徑,不應包含任何結尾路徑分隔符號,且不得包含任何相對片段(...)。

*.{ts,js} 這樣將與相對於基底路徑之檔案路徑進行比對的檔案 glob 模式。

範例:給定基底為 /home/work/folder 且檔案路徑為 /home/work/folder/index.js,該檔案 glob 模式將會比對 index.js

RenameProvider

重新命名提供者介面定義了擴充功能與 重新命名 功能之間的合約。

方法

用於在執行重新命名之前解析並驗證位置的選擇性函式。結果可以是一個範圍,或者是範圍與預留位置文字。預留位置文字應為正要重新命名之符號的識別碼 - 若省略,則使用所傳回範圍中的文字。

注意:當提供的位置不允許重新命名時,此函式應擲回錯誤或傳回拒絕的 thenable。

參數說明
document: TextDocument

將在其中叫用重新命名的文件。

position: Position

將在其中叫用重新命名的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Range | {placeholder: string, range: Range}>

要重新命名之識別碼的範圍,或是範圍與預留位置文字。若無結果,可以透過傳回 undefinednull 來表示。

提供一個編輯,描述為了將符號重新命名為不同的名稱而必須對一個或多個資源進行的變更。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

newName: string

符號的新名稱。如果給定的名稱無效,提供者必須傳回拒絕的 promise。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<WorkspaceEdit>

工作區編輯或解析為此的工作區編輯的 thenable。若無結果,可以透過傳回 undefinednull 來表示。

RunOptions

工作的執行選項。

屬性

控制重新執行時是否重新評估工作變數。

SaveDialogOptions

用來設定檔案儲存對話方塊行為的選項。

屬性

對話方塊開啟時顯示的資源。

對話方塊所使用的一組檔案篩選器。每個項目都是人類可讀的標籤 (例如 "TypeScript") 與副檔名陣列,例如

{
    'Images': ['png', 'jpg'],
    'TypeScript': ['ts', 'tsx']
}

儲存按鈕的人類可讀字串。

對話方塊標題。

此參數可能會被忽略,因為並非所有作業系統都會在儲存對話方塊上顯示標題(例如 macOS)。

SecretStorage

表示以加密方式儲存的密碼(或任何敏感資訊)儲存公用程式。密碼儲存的實作在每個平臺上會有所不同,且密碼不會跨機器同步。

活動

儲存或刪除密碼時觸發。

方法

從儲存體中移除密碼。

參數說明
key: string

儲存密碼時所使用的金鑰。

傳回說明
Thenable<void>

擷取使用金鑰儲存的密碼。如果沒有與該金鑰相符的密碼,則傳回 undefined。

參數說明
key: string

儲存密碼時所使用的金鑰。

傳回說明
Thenable<string>

儲存的值或 undefined

擷取此擴充功能所儲存之所有密碼的金鑰。

參數說明
傳回說明
Thenable<string[]>

在給定的金鑰下儲存密碼。

參數說明
key: string

要用來儲存密碼的金鑰。

value: string

密碼。

傳回說明
Thenable<void>

SecretStorageChangeEvent

新增或移除密碼時觸發的事件資料。

屬性

已變更之密碼的金鑰。

SelectedCompletionInfo

描述目前選取的完成項目。

屬性

如果接受此完成項目將被取代的範圍。

如果接受此完成,該範圍將被取代成的文字。

Selection

表示編輯器中的文字選取範圍。

建構子

從兩個位置建立選取範圍。

參數說明
anchor: Position

位置。

active: Position

位置。

傳回說明
Selection

從四個座標建立選取範圍。

參數說明
anchorLine: number

以零為基底的行值。

anchorCharacter: number

以零為基底的字元值。

activeLine: number

以零為基底的行值。

activeCharacter: number

以零為基底的字元值。

傳回說明
Selection

屬性

游標的位置。此位置可能在 anchor 之前或之後。

選取範圍開始的位置。此位置可能在 active 之前或之後。

結束位置。它位於 start 之後或等於它。

startend 相等,則為 true

如果選取範圍的 anchorend 位置,則該選取範圍是反向的。

start.lineend.line 相等,則為 true

起始位置。它位於 end 之前或等於它。

方法

檢查某個位置或範圍是否包含在此範圍中。

參數說明
positionOrRange: Range | Position

位置或範圍。

傳回說明
boolean

若該位置或範圍在此範圍內部或等於此範圍,則為 true

range 與此範圍相交,並傳回新範圍;如果範圍沒有重疊,則傳回 undefined

參數說明
range: Range

範圍。

傳回說明
Range

具有較大起始位置和較小結束位置的範圍。當沒有重疊時將傳回 undefined。

檢查 other 是否等於此範圍。

參數說明
other: Range

範圍。

傳回說明
boolean

當起點和終點與此範圍的起點和終點 相等 時,則為 true

計算 other 與此範圍的聯集。

參數說明
other: Range

範圍。

傳回說明
Range

具有較小起始位置和較大結束位置的範圍。

從此範圍衍生新範圍。

參數說明
start?: Position

應用作起點的位置。預設值為 目前起點

end?: Position

應用作終點的位置。預設值為 目前終點

傳回說明
Range

使用給定的起點和終點位置從此範圍衍生的範圍。如果起點和終點沒有不同,將傳回 this 範圍。

從此範圍衍生新範圍。

參數說明
change: {end: Position, start: Position}

描述此範圍變更的物件。

傳回說明
Range

反映給定變更的範圍。如果變更未改變任何內容,將會傳回 this 範圍。

SelectionRange

選取範圍代表選取階層的一部分。選取範圍可以有包含它的父選取範圍。

建構子

建立新的選取範圍。

參數說明
range: Range

選取範圍的範圍。

parent?: SelectionRange

選取範圍的父項。

傳回說明
SelectionRange

屬性

包含此範圍的父選取範圍。

此選取範圍的 Range

SelectionRangeProvider

選取範圍提供者介面定義了擴充功能與「擴充與縮小選取範圍」功能之間的合約。

方法

為給定的位置提供選取範圍。

應為每個位置個別且獨立地計算選取範圍。編輯器會合併並對範圍進行去重複,但提供者必須傳回選取範圍的階層,以便讓某個範圍被其父項 包含

參數說明
document: TextDocument

叫用命令的文件。

positions: readonly Position[]

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<SelectionRange[]>

選取範圍或解析為此的 thenable。若無結果,可以透過傳回 undefinednull 來表示。

SemanticTokens

表示語意語彙基元,可以是範圍內或整個文件。

參見

建構子

建立新的語意語彙基元。

參數說明
data: Uint32Array

語彙基元資料。

resultId?: string

結果識別碼。

傳回說明
SemanticTokens

屬性

實際的語彙基元資料。

另請參閱 provideDocumentSemanticTokens 以取得格式說明。

語彙基元的結果識別碼。

這是將會傳遞至 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(若有實作)的識別碼。

SemanticTokensBuilder

語意語彙基元建構器可協助建立包含差異編碼語意語彙基元的 SemanticTokens 實例。

建構子

建立語意語彙基元建構器。

參數說明
legend?: SemanticTokensLegend

語意語彙基元圖例。

傳回說明
SemanticTokensBuilder

方法

完成並建立 SemanticTokens 實例。

參數說明
resultId?: string
傳回說明
SemanticTokens

新增另一個語彙基元。

參數說明
line: number

語彙基元起始行號(絕對值)。

char: number

語彙基元起始字元(絕對值)。

length: number

語彙基元的字元長度。

tokenType: number

編碼後的語彙基元類型。

tokenModifiers?: number

編碼後的語彙基元修飾詞。

傳回說明
void

新增另一個語彙基元。僅在提供圖例時使用。

參數說明
range: Range

語彙基元的範圍。必須是單行。

tokenType: string

語彙基元類型。

tokenModifiers?: readonly string[]

語彙基元修飾詞。

傳回說明
void

SemanticTokensEdit

表示對語意語彙基元的編輯。

另請參閱 provideDocumentSemanticTokensEdits 以取得格式說明。

建構子

建立語意語彙基元編輯。

參數說明
start: number

起始偏移量

deleteCount: number

要移除的元素數量。

data?: Uint32Array

要插入的元素

傳回說明
SemanticTokensEdit

屬性

要插入的元素。

要移除的元素計數。

編輯的起始偏移量。

SemanticTokensEdits

表示對語意語彙基元的編輯。

另請參閱 provideDocumentSemanticTokensEdits 以取得格式說明。

建構子

建立新的語意語彙基元編輯。

參數說明
edits: SemanticTokensEdit[]

語意語彙基元編輯的陣列

resultId?: string

結果識別碼。

傳回說明
SemanticTokensEdits

屬性

對語彙基元資料的編輯。所有編輯都參考初始資料狀態。

語彙基元的結果識別碼。

這是將會傳遞至 DocumentSemanticTokensProvider.provideDocumentSemanticTokensEdits(若有實作)的識別碼。

SemanticTokensLegend

語意語彙基元圖例包含解讀整數編碼表示之語意語彙基元所需的資訊。

建構子

建立語意語彙基元圖例。

參數說明
tokenTypes: string[]

語彙基元類型的陣列。

tokenModifiers?: string[]

語彙基元修飾詞的陣列。

傳回說明
SemanticTokensLegend

屬性

可能的語彙基元修飾詞。

可能的語彙基元類型。

ShellExecution

表示在命令稿殼層 (shell) 內發生的工作執行。

建構子

使用完整命令列建立 shell 執行。

參數說明
commandLine: string

要執行的命令列。

options?: ShellExecutionOptions

啟動 shell 的選擇性選項。

傳回說明
ShellExecution

使用命令和引數建立 shell 執行。對於實際執行,編輯器將從命令和引數建構命令列。這可能會有所解釋,特別是在引號處理方面。如果需要對命令列進行完整控制,請使用透過完整命令列建立 ShellExecution 的建構函式。

參數說明
command: string | ShellQuotedString

要執行的命令。

args: Array<string | ShellQuotedString>

命令引數。

options?: ShellExecutionOptions

啟動 shell 的選擇性選項。

傳回說明
ShellExecution

屬性

shell 引數。如果透過完整命令列建立,則為 undefined

shell 命令。如果透過完整命令列建立,則為 undefined

shell 命令列。如果透過命令和引數建立,則為 undefined

在 shell 中執行命令列時所使用的 shell 選項。預設為 undefined。

ShellExecutionOptions

shell 執行的選項

屬性

已執行 shell 的目前工作目錄。如果省略,則使用工具目前的工作區根目錄。

已執行 shell 的其他環境變數。如果省略,則使用父處理程序的環境。如果提供,則會與父處理程序的環境合併。

shell 可執行檔。

要傳遞給用來執行該工作的 shell 可執行檔的引數。大多數 shell 都需要特殊的引數來執行命令。例如,bash 需要 -c 引數來執行命令,PowerShell 需要 -Command,而 cmd 同時需要 /d/c

此 shell 支援的 shell 引號。

ShellQuotedString

將根據所使用的 shell 加上引號的字串。

屬性

要使用的引號樣式。

實際的字串值。

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 引號選項。

屬性

用來進行字元逸出的字元。如果提供字串,則僅逸出空格。如果提供 { escapeChar, charsToEscape } 常值,則使用 escapeChar 逸出 charsToEscape 中的所有字元。

用於強引號的字元。字串長度必須為 1。

用於弱引號的字元。字串長度必須為 1。

SignatureHelp

簽章說明代表可呼叫項目的簽章。可以有多個簽章,但只能有一個作用中簽章且只能有一個作用中參數。

建構子

參數說明
傳回說明
SignatureHelp

屬性

作用中簽章的作用中參數。

作用中簽章。

一或多個簽章。

SignatureHelpContext

關於叫用 SignatureHelpProvider 之內容的其他資訊。

屬性

目前作用中的 SignatureHelp

activeSignatureHelp 會根據使用者透過方向鍵瀏覽可用簽章來更新其 activeSignature 欄位。

如果觸發簽章說明時它已經在顯示,則為 true

重新觸發發生在簽章說明已經處於作用中時,可能由輸入觸發字元、游標移動或文件內容變更等動作引起。

導致觸發簽章說明的字元。

當簽章說明不是透過輸入觸發(例如手動叫用簽章說明或移動游標時)時,這是 undefined

導致觸發簽章說明的動作。

SignatureHelpProvider

簽章說明提供者介面定義了擴充功能與 參數提示 功能之間的合約。

方法

為給定位置和文件的簽章提供說明。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

context: SignatureHelpContext

關於如何觸發簽章說明的資訊。

傳回說明
ProviderResult<SignatureHelp>

簽章說明或解析為此的 thenable。若無結果,可以透過傳回 undefinednull 來表示。

SignatureHelpProviderMetadata

關於已註冊之 SignatureHelpProvider 的中繼資料。

屬性

會重新觸發簽章說明的字元清單。

這些觸發字元僅在簽章說明已經顯示時才有效。所有觸發字元同時也被視為重新觸發字元。

觸發簽章說明的字元清單。

SignatureHelpTriggerKind

SignatureHelpProvider 是如何被觸發的。

列舉成員

簽章說明是由使用者手動叫用,或是由命令叫用。

簽章說明是由觸發字元所觸發。

簽章說明是由游標移動或文件內容變更所觸發。

SignatureInformation

表示可呼叫項目的簽章。簽章可以具有標籤(例如函式名稱)、文件註解以及一組參數。

建構子

建立新的簽章資訊物件。

參數說明
label: string

標籤字串。

documentation?: string | MarkdownString

說明文件字串。

傳回說明
SignatureInformation

屬性

作用中參數的索引。

如果有提供,將用來取代 SignatureHelp.activeParameter

此簽章的人類可讀說明文件註解。將會顯示在 UI 中,但可以省略。

此簽章的標籤。將會顯示在 UI 中。

此簽章的參數。

SnippetString

程式碼片段字串是一個範本,允許在插入文字時插入文字並控制編輯器游標。

程式碼片段可以使用 $1$2${3:foo} 來定義定位點與預留位置。$0 定義了最後的定位點,預設為程式碼片段的結尾。變數則使用 $name${name:default value} 來定義。另請參閱 完整的程式碼片段語法

建構子

建立新的程式碼片段字串。

參數說明
value?: string

程式碼片段字串。

傳回說明
SnippetString

屬性

該程式碼片段字串。

方法

將選擇 (${1|a,b,c|}) 附加至此程式碼片段字串之 value 的建構函式。

參數說明
values: readonly string[]

選擇的值 - 字串陣列

number?: number

此定位點的編號,預設為從 1 開始的自動遞增值。

傳回說明
SnippetString

此程式碼片段字串。

將預留位置 (${1:value}) 附加至此程式碼片段字串之 value 的建構函式。

參數說明
value: string | (snippet: SnippetString) => any

此預留位置的值 - 可以是字串,或是可用於建立巢狀程式碼片段的函式。

number?: number

此定位點的編號,預設為從 1 開始的自動遞增值。

傳回說明
SnippetString

此程式碼片段字串。

將定位點 ($1$2 等) 附加至此程式碼片段字串之 value 的建構函式。

參數說明
number?: number

此定位點的編號,預設為從 1 開始的自動遞增值。

傳回說明
SnippetString

此程式碼片段字串。

將指定的字串附加至此程式碼片段字串之 value 的建構函式。

參數說明
string: string

要「如實」附加的值。該字串將會被跳脫。

傳回說明
SnippetString

此程式碼片段字串。

將變數 (${VAR}) 附加至此程式碼片段字串之 value 的建構函式。

參數說明
name: string

變數名稱 - 不包含 $

defaultValue: string | (snippet: SnippetString) => any

當無法解析變數名稱時所使用的預設值 - 可以是字串,或是可用於建立巢狀程式碼片段的函式。

傳回說明
SnippetString

此程式碼片段字串。

SnippetTextEdit

程式碼片段編輯表示由編輯器執行的互動式編輯。

請注意,程式碼片段編輯隨時可以作為一般的 文字編輯 來執行。當沒有開啟相符的編輯器,或者 工作區編輯 包含多個檔案的程式碼片段編輯時,就會發生這種情況。在該情況下,只有與現用編輯器相符的編輯會作為程式碼片段編輯執行,其餘則作為一般的文字編輯執行。

靜態

用於建立插入程式碼片段編輯的公用程式。

參數說明
position: Position

一個位置,將成為空的範圍。

snippet: SnippetString

程式碼片段字串。

傳回說明
SnippetTextEdit

新的程式碼片段編輯物件。

用於建立取代程式碼片段編輯的公用程式。

參數說明
range: Range

範圍。

snippet: SnippetString

程式碼片段字串。

傳回說明
SnippetTextEdit

新的程式碼片段編輯物件。

建構子

建立新的程式碼片段編輯。

參數說明
range: Range

範圍。

snippet: SnippetString

程式碼片段字串。

傳回說明
SnippetTextEdit

屬性

是否要在套用程式碼片段編輯時保留現有的空白字元。

此編輯所套用的範圍。

此編輯將執行的 程式碼片段

SourceBreakpoint

由原始程式碼位置指定的中斷點。

建構子

為原始程式碼位置建立新的中斷點。

參數說明
location: Location
enabled?: boolean
condition?: string
hitCondition?: string
logMessage?: string
傳回說明
SourceBreakpoint

屬性

條件中斷點的選用運算式。

中斷點是否已啟用。

控制忽略多少次中斷點命中的選用運算式。

中斷點的唯一 ID。

此中斷點的原始程式碼與行號位置。

命中此中斷點時記錄的選用訊息。{} 中的內嵌運算式會由偵錯介面卡進行內插。

SourceControl

原始碼控制能夠向編輯器提供 資源狀態,並以多種與原始碼控制相關的方式與編輯器互動。

屬性

選用的接受輸入命令。

當使用者接受原始碼控制輸入中的值時,將會叫用此命令。

選用的提交範本字串。

當適當時,原始碼控制檢視區會將此值填入原始碼控制輸入框中。

此原始碼控制中 UI 可見的 資源狀態 計數。

如果未定義,此原始碼控制將會

  • 將其 UI 可見的計數顯示為零,並
  • 將其 資源狀態 的計數貢獻給所有原始碼控制的 UI 可見彙總計數

此原始碼控制的識別碼。

此原始碼控制的 輸入框

此原始碼控制的人類可讀標籤。

選用的 快速差異提供者

此原始碼控制根目錄的 (選用) Uri。

選用的狀態列命令。

這些命令將會顯示在編輯器的狀態列中。

方法

建立新的 資源群組

參數說明
id: string
label: string
傳回說明
SourceControlResourceGroup

處置此原始碼控制。

參數說明
傳回說明
void

SourceControlInputBox

表示原始碼控制檢視區中的輸入框。

屬性

控制是否啟用輸入框 (預設為 true)。

要顯示在輸入框中作為預留位置以引導使用者的字串。

輸入框內容的設定子與取得子。

控制輸入框是否為可見 (預設為 true)。

SourceControlResourceDecorations

原始碼控制資源狀態 的裝飾。可以針對淺色與深色佈景主題分別指定。

屬性

深色佈景主題裝飾。

原始碼控制資源狀態 是否應在 UI 中呈現淡化。

特定 原始碼控制資源狀態 的圖示路徑。

淺色佈景主題裝飾。

原始碼控制資源狀態 是否應在 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 動作。

當此原始碼控制資源群組不包含任何 原始碼控制資源狀態 時,是否將其隱藏。

此原始碼控制資源群組的識別碼。

此原始碼控制資源群組的標籤。

此群組的 原始碼控制資源狀態 集合。

方法

處置此原始碼控制資源群組。

參數說明
傳回說明
void

SourceControlResourceState

原始碼控制資源狀態表示特定 原始碼控制群組 內基礎工作區資源的狀態。

屬性

當資源狀態在原始碼控制檢視區中開啟時應執行的 命令

資源狀態的內容值。這可用於提供資源特定的動作。例如,如果為資源指定內容值為 diffable。當使用 menus 擴充功能點將動作貢獻至 scm/resourceState/context 時,您可以在 when 運算式中為 scmResourceState 鍵指定內容值,例如 scmResourceState == diffable

"contributes": {
  "menus": {
    "scm/resourceState/context": [
      {
        "command": "extension.diff",
        "when": "scmResourceState == diffable"
      }
    ]
  }
}

這將只會針對 contextValuediffable 的資源顯示 extension.diff 動作。

此原始碼控制資源狀態的 裝飾

工作區內基礎資源的 Uri

SourceControlResourceThemableDecorations

原始碼控制資源狀態 的感知佈景主題裝飾。

屬性

特定 原始碼控制資源狀態 的圖示路徑。

StatementCoverage

包含單一陳述式或行的涵蓋率資訊。

建構子

參數說明
executed: number | boolean

此陳述式被執行的次數,或者如果確切計數未知,則為表示是否執行過它的布林值。如果為零或 false,該陳述式將被標記為未涵蓋。

location: Range | Position

陳述式位置。

branches?: BranchCoverage[]

此行分支的涵蓋率。如果不是條件式,則應省略此項。

傳回說明
StatementCoverage

屬性

此行或陳述式分支的涵蓋率。如果不是條件式,這將會是空的。

此陳述式被執行的次數,或者如果確切計數未知,則為表示是否執行過它的布林值。如果為零或 false,該陳述式將被標記為未涵蓋。

陳述式位置。

StatusBarAlignment

代表狀態列項目的對齊方式。

列舉成員

對齊左側。

對齊右側。

StatusBarItem

狀態列項目是一種狀態列貢獻,可以顯示文字與圖示,並能在點擊時執行命令。

屬性

當螢幕助讀程式與此 StatusBar 項目互動時所使用的無障礙資訊

此項目的對齊方式。

此項目背景顏色。

注意:僅支援下列顏色

  • new ThemeColor('statusBarItem.errorBackground')
  • new ThemeColor('statusBarItem.warningBackground')

未來可能會支援更多背景顏色。

注意:當設定背景顏色時,狀態列可能會覆寫 color 選擇,以確保項目在所有佈景主題中都具備可讀性。

此項目的前景顏色。

點擊時要執行的 命令 或命令識別碼。

該命令必須是已知的。

請注意,如果這是 Command 物件,則編輯器只會使用 commandarguments

此項目的識別碼。

注意:如果 window.createStatusBarItem 方法未提供識別碼,該識別碼將會符合 擴充功能識別碼

項目的名稱,例如 'Python Language Indicator'、'Git Status' 等。請盡量保持名稱簡短,但具備足夠的描述性,以便使用者能理解此狀態列項目的用途。

此項目的優先權。數值越高表示項目應越偏左顯示。

要顯示在該項目中的文字。您可以利用以下語法在文字中嵌入圖示

我的文字 $(icon-name) 包含像 $(icon-name) 這樣的圖示。

其中 icon-name 取自 ThemeIcon 圖示集,例如 light-bulbthumbsupzap 等。

當您將滑鼠游標懸停在此項目上時顯示的提示文字。

方法

處置並釋放相關資源。呼叫 hide

參數說明
傳回說明
void

隱藏狀態列中的項目。

參數說明
傳回說明
void

顯示狀態列中的項目。

參數說明
傳回說明
void

SymbolInformation

表示關於程式設計結構的資訊,例如變數、類別、介面等。

建構子

建立新的符號資訊物件。

參數說明
name: string

符號的名稱。

kind: SymbolKind

符號的種類。

containerName: string

包含該符號的符號名稱。

location: Location

符號的位置。

傳回說明
SymbolInformation

建立新的符號資訊物件。

  • 已過時 (deprecated) - 請改用接受 Location 物件的建構函式。
參數說明
name: string

符號的名稱。

kind: SymbolKind

符號的種類。

range: Range

符號位置的範圍。

uri?: Uri

符號位置的資源,預設為目前的文件。

containerName?: string

包含該符號的符號名稱。

傳回說明
SymbolInformation

屬性

包含此符號的符號名稱。

此符號的種類。

此符號的位置。

此符號的名稱。

此符號的標記。

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

常見語法 Token 類型的列舉。

列舉成員

除了屬於註解、字串實值與正規表示式的 Token 以外的一切內容。

註解。

字串實值。

正規表示式。

Tab

表示 標籤頁群組 中的標籤頁。標籤頁僅為編輯器區域內的圖形表示形式,不保證一定有對應的底層編輯器。

屬性

標籤頁所屬的群組。

定義標籤頁的結構,例如文字、筆記本、自訂等。資源與其他有用的屬性定義在標籤頁種類上。

標籤頁目前是否為現用。這由其是否為群組中選定的標籤頁來決定。

標籤頁上是否存在變更指示器。

標籤頁是否已釘選 (存在釘選圖示)。

標籤頁是否處於預覽模式。

標籤頁上顯示的文字。

TabChangeEvent

描述標籤頁變更的事件。

屬性

已變更的標籤頁,例如已變更其 active 狀態。

已關閉的標籤頁。

已開啟的標籤頁。

TabGroup

表示一組標籤頁群組。標籤頁群組本身由多個標籤頁組成。

屬性

群組中的現用 標籤頁。這是其內容目前正在算繪的標籤頁。

請注意,每個群組可以有一個現用標籤頁,但只能有一個 現用群組

群組目前是否為現用。

請注意,一次只能有一個標籤頁群組為現用,但多個標籤頁群組可以各自擁有 現用標籤頁

另請參閱 Tab.isActive

群組中包含的標籤頁清單。如果群組沒有開啟任何標籤頁,這可以是空的。

群組的檢視欄位。

TabGroupChangeEvent

描述標籤頁群組變更的事件。

屬性

已變更的標籤頁群組,例如已變更其 active 狀態。

已關閉的標籤頁群組。

已開啟的標籤頁群組。

TabGroups

表示包含多個含有標籤頁之群組的主要編輯器區域。

活動

標籤頁群組 變更時觸發的 事件

標籤頁 變更時觸發的 事件

屬性

目前現用的群組。

群組容器內的所有群組。

方法

關閉標籤頁。這會使標籤頁物件無效,且不應再將該標籤頁用於後續動作。注意:若為有未儲存變更的標籤頁,將會顯示確認對話方塊,使用者可能會予以取消。若取消則標籤頁仍然有效

參數說明
tab: Tab | readonly Tab[]

要關閉的標籤頁。

preserveFocus?: boolean

當為 true 時,焦點將維持在目前的位置。若為 false,將會跳至下一個標籤頁。

傳回說明
Thenable<boolean>

當所有標籤頁都已關閉時會解析為 true 的 Promise。

關閉標籤頁群組。這會使標籤頁群組物件無效,且不應再將該標籤頁群組用於後續動作。

參數說明
tabGroup: TabGroup | readonly TabGroup[]

要關閉的標籤頁群組。

preserveFocus?: boolean

當為 true 時,焦點將維持在目前的位置。

傳回說明
Thenable<boolean>

當所有標籤頁群組都已關閉時會解析為 true 的 Promise。

TabInputCustom

該標籤頁代表自訂編輯器。

建構子

建構自訂編輯器標籤頁輸入。

參數說明
uri: Uri

標籤頁的 uri。

viewType: string

自訂編輯器的檢視類型。

傳回說明
TabInputCustom

屬性

標籤頁所代表的 uri。

自訂編輯器的類型。

TabInputNotebook

該標籤頁代表筆記本。

建構子

為筆記本建構新的標籤頁輸入。

參數說明
uri: Uri

筆記本的 uri。

notebookType: string

筆記本的類型。對應至 NotebookDocument 的 notebookType

傳回說明
TabInputNotebook

屬性

筆記本的類型。對應至 NotebookDocument 的 notebookType

標籤頁所代表的 uri。

TabInputNotebookDiff

該標籤頁代表處於差異設定中的兩個筆記本。

建構子

建構筆記本差異標籤頁輸入。

參數說明
original: Uri

原始未修改筆記本的 uri。

modified: Uri

已修改筆記本的 uri。

notebookType: string

筆記本的類型。對應至 NotebookDocument 的 notebookType

傳回說明
TabInputNotebookDiff

屬性

已修改筆記本的 uri。

筆記本的類型。對應至 NotebookDocument 的 notebookType

原始筆記本的 uri。

TabInputTerminal

該標籤頁代表編輯器區域中的終端機。

建構子

建構終端機標籤頁輸入。

參數說明
傳回說明
TabInputTerminal

TabInputText

該標籤頁代表單一文字型資源。

建構子

使用指定的 URI 建構文字標籤頁輸入。

參數說明
uri: Uri

標籤頁的 URI。

傳回說明
TabInputText

屬性

標籤頁所代表的 uri。

TabInputTextDiff

該標籤頁代表作為差異算繪的兩個文字型資源。

建構子

使用指定的 URI 建構新的文字差異標籤頁輸入。

參數說明
original: Uri

原始文字資源的 uri。

modified: Uri

已修改文字資源的 uri。

傳回說明
TabInputTextDiff

屬性

已修改文字資源的 uri。

原始文字資源的 uri。

TabInputWebview

該標籤頁代表 webview。

建構子

使用指定的檢視類型建構 webview 標籤頁輸入。

參數說明
viewType: string

webview 的類型。對應至 WebviewPanel 的 viewType

傳回說明
TabInputWebview

屬性

webview 的類型。對應至 WebviewPanel 的 viewType

Task

要執行的工作

建構子

建立新的工作。

參數說明
taskDefinition: TaskDefinition

如同在 taskDefinitions 擴充功能點中所定義的工作定義。

scope: WorkspaceFolder | Global | Workspace

指定工作的範圍。它可以是全域工作、工作區工作,或是特定工作區資料夾的工作。目前不支援全域工作。

name: string

工作的名稱。會顯示在使用者介面中。

source: string

工作的來源 (例如 'gulp'、'npm' 等)。會顯示在使用者介面中。

execution?: ProcessExecution | ShellExecution | CustomExecution

程序或 shell 執行。

problemMatchers?: string | string[]

要使用的問題比對器名稱,例如 '$tsc' 或 '$eslint'。問題比對器可由擴充功能使用 problemMatchers 擴充功能點來提供。

傳回說明
Task

建立新的工作。

  • 已過時 (deprecated) - 請使用允許為工作指定範圍的新建構函式。
參數說明
taskDefinition: TaskDefinition

如同在 taskDefinitions 擴充功能點中所定義的工作定義。

name: string

工作的名稱。會顯示在使用者介面中。

source: string

工作的來源 (例如 'gulp'、'npm' 等)。會顯示在使用者介面中。

execution?: ProcessExecution | ShellExecution

程序或 shell 執行。

problemMatchers?: string | string[]

要使用的問題比對器名稱,例如 '$tsc' 或 '$eslint'。問題比對器可由擴充功能使用 problemMatchers 擴充功能點來提供。

傳回說明
Task

屬性

工作定義。

個人類可讀的字串,在顯示工作名稱的地方,它會以較不突顯的方式呈現在單獨的行上。支援透過 $(<name>) 語法來算繪 佈景主題圖示

工作的執行引擎

此工作所屬的工作群組。請參閱 TaskGroup 以取得預先定義的可用群組集合。預設為 undefined,表示該工作不屬於任何特殊群組。

工作是否為背景工作。

工作的名稱

呈現選項。預設為空實值。

附加至工作的問題比對器。預設為空陣列。

工作的執行選項

工作的範圍。

描述此 shell 工作來源的人類可讀字串,例如 'gulp' 或 'npm'。支援透過 $(<name>) 語法來算繪 佈景主題圖示

TaskDefinition

定義系統中工作種類的結構。該值必須是可以進行 JSON 字串化的。

屬性

描述由擴充功能所提供之工作的任務定義。通常工作提供者會定義更多屬性來識別工作。這些屬性需要在擴充功能的 package.json 中、於 'taskDefinitions' 擴充功能點下進行定義。例如,npm 工作定義看起來像這樣

interface NpmTaskDefinition extends TaskDefinition {
  script: string;
}

請注意,以 '$' 開頭的類型識別碼保留供內部使用,不應由擴充功能使用。

TaskEndEvent

標誌已執行工作結束的事件。

此介面並非旨在被實作。

屬性

表示已完成工作的專案。

TaskExecution

表示已執行工作的物件。它可用於終止工作。

此介面並非旨在被實作。

屬性

已啟動的工作。

方法

終止工作執行。

參數說明
傳回說明
void

TaskFilter

工作篩選器透過其版本與類型來識別工作

屬性

要傳回的工作類型;

tasks.json 檔案中所使用的工作版本。該字串支援 package.json 的 semver 標記法。

TaskGroup

工作的群組化。編輯器預設支援 'Clean'、'Build'、'RebuildAll' 與 'Test' 群組。

靜態

建置工作群組;

清除工作群組;

重新重建全部工作群組;

測試全部工作群組;

建構子

私有建構子

參數說明
id: string

任務群組的識別碼。

label: string

任務群組的人類可讀名稱。

傳回說明
TaskGroup

屬性

任務群組的 ID。為 TaskGroup.Clean.id、TaskGroup.Build.id、TaskGroup.Rebuild.id 或 TaskGroup.Test.id 其中之一。

此群組中的任務是否為該群組的預設任務。此屬性無法透過 API 設定,而是由使用者的任務設定來控制。

TaskPanelKind

控制任務之間如何使用任務通道

列舉成員

與其他任務共用面板。這是預設值。

為此任務使用專用面板。該面板不會與其他任務共用。

每次執行此任務時建立一個新面板。

TaskPresentationOptions

控制任務如何在 UI 中呈現。

屬性

控制在執行任務之前是否清除終端機。

控制在執行任務之後是否關閉終端機。

控制與任務相關聯的命令是否在使用者介面中回顯。

控制顯示任務輸出的面板是否取得焦點。

控制任務面板是僅用於此任務(專用)、在任務之間共用(共用),還是在每次執行任務時建立新面板(新)。預設值為 TaskInstanceKind.Shared

控制是否在使用者介面中顯示任務輸出。預設值為 RevealKind.Always

控制是否顯示「終端機將被任務重複使用,請按任意鍵關閉它」的訊息。

TaskProcessEndEvent

表示透過任務觸發的行程執行結束的事件

屬性

啟動該行程的任務執行。

行程的結束代碼。當任務終止時將為 undefined

TaskProcessStartEvent

表示透過任務觸發的行程執行開始的事件

屬性

啟動該行程的任務執行。

底層行程 ID。

TaskProvider<T>

任務提供者允許將任務新增至任務服務。任務透過 tasks.registerTaskProvider 進行註冊。

方法

提供任務。

參數說明
token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

任務陣列

解析未設定 execution 的任務。任務通常是根據 tasks.json 檔案中的資訊建立的。此類任務缺少如何執行它們的資訊,因此任務提供者必須在 resolveTask 方法中填入缺少的資訊。對於從上述 provideTasks 方法傳回的任務,不會呼叫此方法,因為這些任務始終已完全解析。resolveTask 方法的一個有效預設實作是傳回 undefined

請注意,在填入 task 的屬性時,您必須確保使用完全相同的 TaskDefinition,而不要建立新的。其他屬性則可以變更。

參數說明
task: T

要解析的任務。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

已解析的任務

TaskRevealKind

控制終端機可見性的行為。

列舉成員

如果執行任務,始終將終端機帶到最前面。

僅在執行任務時偵測到問題時才將終端機帶到最前面(例如,任務無法啟動,因為...)。

執行任務時,終端機絕不會被帶到最前面。

TaskScope

任務的範圍。

列舉成員

該任務是全域任務。目前不支援全域任務。

該任務是工作區任務

TaskStartEvent

表示任務執行開始的事件。

此介面並非旨在被實作。

屬性

代表已啟動任務的任務項目。

TelemetryLogger

擴充功能可用於記錄使用情況與錯誤遙測資料的遙測記錄器。

記錄器封裝了 傳送者,但它保證

  • 會尊重停用或調整遙測的使用者設定,且
  • 會移除潛在的敏感資料

它還啟用了「回顯 UI」,可以列印傳送的任何資料,並允許編輯器將未處理的錯誤轉寄給各自的擴充功能。

若要取得 TelemetryLogger 的執行個體,請使用 createTelemetryLogger

活動

當使用情況或錯誤遙測的啟用狀態變更時觸發的 事件

屬性

是否為此記錄器啟用錯誤遙測。

是否為此記錄器啟用使用情況遙測。

方法

處置此物件並釋放資源。

參數說明
傳回說明
void

記錄錯誤事件。

完成清除、遙測設定檢查與資料混合後,呼叫 TelemetrySender.sendEventData 來記錄事件。與 logUsage 的不同之處在於,如果遙測設定為「錯誤+ (Error+)」,它將記錄該事件。自動支援回顯至擴充功能遙測輸出通道。

參數說明
eventName: string

要記錄的事件名稱

data?: Record<string, any>

要記錄的資料

傳回說明
void

記錄錯誤事件。

呼叫 TelemetrySender.sendErrorData。進行清除、遙測檢查與資料混合。自動支援回顯至擴充功能遙測輸出通道。也將自動記錄在擴充功能主機行程內擲回的任何例外狀況。

參數說明
error: Error

包含已清除 PII 之堆疊追蹤的錯誤物件

data?: Record<string, any>

與堆疊追蹤一起記錄的額外資料

傳回說明
void

記錄使用情況事件。

完成清除、遙測設定檢查與資料混合後,呼叫 TelemetrySender.sendEventData 來記錄事件。自動支援回顯至擴充功能遙測輸出通道。

參數說明
eventName: string

要記錄的事件名稱

data?: Record<string, any>

要記錄的資料

傳回說明
void

TelemetryLoggerOptions

建立 TelemetryLogger 的選項

屬性

應注入資料物件中的任何額外通用屬性。

是否要避免將內建通用屬性(例如作業系統、擴充功能名稱等)注入資料物件中。如果未定義,則預設為 false

擴充功能主機上由您的擴充功能所引起的未處理錯誤,是否應記錄到您的傳送者。如果未定義,則預設為 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 函式,當其 TelemetryLogger 正在被處置時,可讓此傳送者有機會傳送任何剩餘的事件

參數說明
傳回說明
void | Thenable<void>

傳送錯誤的函式。在 TelemetryLogger 內使用

參數說明
error: Error

正在記錄的錯誤

data?: Record<string, any>

與例外狀況一起收集的任何額外資料

傳回說明
void

傳送不含堆疊追蹤之事件資料的函式。在 TelemetryLogger 內使用

參數說明
eventName: string

您正在記錄的事件名稱

data?: Record<string, any>

正在記錄的可序列化鍵值對

傳回說明
void

TelemetryTrustedValue<T>

一個特殊的數值包裝函式,表示可以安全不予清除的數值。當您能保證數值中不包含可識別資訊,且清除機制不適當地將其修訂時,應使用此功能。

建構子

建立新的遙測信任數值。

參數說明
value: T

要信任的數值

傳回說明
TelemetryTrustedValue<T>

屬性

經信任不包含 PII 的數值。

Terminal

整合終端機內的個別終端機執行個體。

屬性

用於初始化終端機的物件,這對於例如偵測當終端機不是由此擴充功能啟動時的 shell 類型,或偵測 shell 是在哪個資料夾中啟動的,非常有用。

終端機的結束狀態,當終端機處於活動狀態時,這將是 undefined。

範例: 當終端機以非零結束代碼結束時,顯示包含結束代碼的通知。

window.onDidCloseTerminal(t => {
  if (t.exitStatus && t.exitStatus.code) {
    vscode.window.showInformationMessage(`Exit code: ${t.exitStatus.code}`);
  }
});

終端機的名稱。

shell 行程的行程 ID。

包含由 shell 整合驅動之終端機功能的物件。在建立終端機後立即始終為 undefined。請聆聽 window.onDidChangeTerminalShellIntegration 以在終端機啟用 shell 整合時接收通知。

請注意,如果 shell 整合從未啟用,此物件可能會保持 undefined。例如,命令提示字元 (Command Prompt) 不支援 shell 整合,且使用者的 shell 設定可能會與自動 shell 整合啟用發生衝突。

Terminal 的目前狀態。

方法

處置(Dispose)並釋放相關資源。

參數說明
傳回說明
void

如果此終端機目前正在顯示,則隱藏終端機面板。

參數說明
傳回說明
void

將文字傳送至終端機。文字會寫入終端機底層 pty 行程 (shell) 的 stdin。

參數說明
text: string

要傳送的文字。

shouldExecute?: boolean

指示要傳送的文字應該被執行,而不只是插入終端機中。新增的字元為 \n\r\n,視平台而定。預設值為 true

傳回說明
void

顯示終端機面板並在 UI 中顯示此終端機。

參數說明
preserveFocus?: boolean

當為 true 時,終端機將不會取得焦點。

傳回說明
void

TerminalDimensions

表示終端機的尺寸。

屬性

終端機中的欄數。

終端機中的列數。

TerminalEditorLocationOptions

假設編輯器的 TerminalLocation 並允許指定 ViewColumnpreserveFocus 屬性

屬性

一個選用旗標,當為 true 時會阻止 Terminal 取得焦點。

應該在編輯器區域中顯示 terminal 的檢視行。預設值為 active。不存在的行將根據需要建立,最多可達 ViewColumn.Nine。使用 ViewColumn.Beside 在目前活動編輯器的旁邊開啟編輯器。

TerminalExitReason

終端機結束原因類型。

列舉成員

未知原因。

視窗已關閉/重新載入。

shell 行程已結束。

使用者關閉了終端機。

某個擴充功能處置了終端機。

TerminalExitStatus

表示終端機如何結束。

屬性

終端機結束時的結束代碼,它可以具有以下值

  • 零:終端機行程或自訂執行成功。
  • 非零:終端機行程或自訂執行失敗。
  • undefined:使用者強制關閉終端機,或自訂執行結束時未提供結束代碼。

觸發終端機結束的原因。

終端機行上的連結。

建構子

建立新的終端機連結。

參數說明
startIndex: number

連結在 TerminalLinkContext.line 上的起始索引。

length: number

連結在 TerminalLinkContext.line 上的長度。

tooltip?: string

將滑鼠停留在這個連結上時顯示的工具提示文字。

如果提供了工具提示,它將會顯示在包含如何觸發連結之指示的字串中,例如 {0} (ctrl + click)。特定指示會因作業系統、使用者設定和語系而異。

傳回說明
TerminalLink

屬性

連結在 TerminalLinkContext.line 上的長度。

連結在 TerminalLinkContext.line 上的起始索引。

將滑鼠停留在這個連結上時顯示的工具提示文字。

如果提供了工具提示,它將會顯示在包含如何觸發連結之指示的字串中,例如 {0} (ctrl + click)。特定指示會因作業系統、使用者設定和語系而異。

TerminalLinkContext

提供終端機中某一行的資訊,以便為其提供連結。

屬性

這是終端機中未自動換行的行中的文字。

連結所屬的終端機。

TerminalLinkProvider<T>

啟用終端機內連結偵測與處理的提供者。

方法

處理已啟動的終端機連結。

參數說明
link: T

要處理的連結。

傳回說明
ProviderResult<void>

為給定的內容提供終端機連結。請注意,即使在先前的呼叫解析之前,這也可能會被呼叫多次,請確保不要共用可能會在非同步使用重疊時出問題的全域物件(例如 RegExp)。

參數說明
context: TerminalLinkContext

關於正在為其提供哪些連結的資訊。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

給定行的終端機連結清單。

TerminalLocation

終端機的位置。

列舉成員

在終端機檢視中

在編輯器區域中

TerminalOptions

描述終端機應使用哪些選項的數值物件。

屬性

終端機圖示 ThemeColor。建議使用 terminal.ansi* 主題金鑰以在各主題之間獲得最佳對比度與一致性。

用於終端機的目前工作目錄路徑或 Uri。

包含將被新增至編輯器行程之環境變數的物件。

啟用時,終端機將正常執行行程,但在呼叫 Terminal.show 之前不會顯示給使用者。典型的用法是當您需要執行可能需要互動的東西,但只想在需要互動時才通知使用者。請注意,終端機仍會如往常般對所有擴充功能公開。下次開啟工作區時,隱藏的終端機將不會被還原。

終端機的圖示路徑或 ThemeIcon

選擇退出重新啟動和重新載入時的預設終端機持續性。這只有在啟用 terminal.integrated.enablePersistentSessions 時才會生效。

首次啟動時寫入終端機的訊息,請注意這不會傳送到行程,而是直接寫入終端機。這支援例如設定文字樣式等跳脫序列。

將用於在 UI 中表示終端機的人類可讀字串。

自訂 shell 可執行檔的引數。字串僅能在 Windows 上使用,允許以 命令列格式指定 shell 引數。

用於驗證 Shell 整合序列是否來自受信任來源的 nonce。這對使用者體驗 (UX) 的影響範例是,如果命令列回報時帶有 nonce,則透過 shell 整合命令裝飾重新執行命令列之前,不需要向使用者驗證命令列是否正確。

如果終端機包含 自訂 shell 整合支援,則應使用此項。它應設定為隨機 GUID,這將設定 VSCODE_NONCE 環境變數。在 shell 內部,應隨後將其從環境中移除,以保護其免受一般存取。完成後,可以將其傳遞到相關序列中以使其受信任。

要在終端機中使用的自訂 shell 可執行檔路徑。

終端機行程環境是否應完全如 TerminalOptions.env 中所提供。當此值為 false(預設值)時,環境將基於視窗的環境,並在頂端套用已設定的平台設定(例如 terminal.integrated.env.windows)。當此值為 true 時,必須提供完整的環境,因為不會從行程或任何設定中繼承任何內容。

TerminalProfile

終端機設定檔定義了將如何啟動終端機。

建構子

建立新的終端機設定檔。

參數說明
options: TerminalOptions | ExtensionTerminalOptions

終端機啟動時使用的選項。

傳回說明
TerminalProfile

屬性

終端機啟動時使用的選項。

TerminalProfileProvider

當透過 UI 或命令啟動時,為所貢獻的終端機設定檔提供終端機設定檔。

方法

提供終端機設定檔。

參數說明
token: CancellationToken

表示不再需要結果的取消 token。

傳回說明
ProviderResult<TerminalProfile>

終端機設定檔。

TerminalShellExecution

在終端機中執行的命令。

屬性

已執行的命令列。此數值的 信心水準 取決於特定 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');
}

當此命令執行時,shell 所回報的工作目錄。此 Uri 可能代表另一部機器上的檔案 (例如透過 ssh 連線到另一部機器)。這需要 shell 整合支援工作目錄回報。

方法

建立寫入終端機的原始資料串流(包含跳脫序列)。這將僅包含首次呼叫 read 之後寫入的資料,也就是說,您必須在透過 TerminalShellIntegration.executeCommandwindow.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

在終端機中執行的命令列。

屬性

命令列數值的信心水準,由取得該數值的方式決定。這取決於 shell 整合指令碼的實作。

命令列數值是否來自受信任的來源,因此可以安全執行而無需使用者額外確認,例如詢問「您要執行 (command) 嗎?」的通知。如果您要再次執行該命令,可能才需要進行此驗證。

只有當命令列是由 shell 整合指令碼明確回報(即 高信心水準)且使用 nonce 進行驗證時,此值才會是 true

已執行的完整命令列,包含命令及其引數。

TerminalShellExecutionCommandLineConfidence

TerminalShellExecutionCommandLine 數值的信心水準。

列舉成員

命令列數值信心水準偏低。這表示該數值是使用 shell 整合指令碼回報的標記從終端機緩衝區讀取的。此外,將滿足以下條件之一

  • 命令從最左側的欄位開始,這很不尋常,或者
  • 命令是多行的,由於行接續字元與右側提示字元,這較難準確偵測。
  • shell 整合指令碼未回報命令列標記。

命令列數值信心水準為中。這表示該數值是使用 shell 整合指令碼回報的標記從終端機緩衝區讀取的。該命令是單行的,且不是從最左側的欄位開始(這很不尋常)。

命令列數值信心水準為高。這表示該數值是由 shell 整合指令碼明確傳送的,或者該命令是透過 TerminalShellIntegration.executeCommand API 執行的。

TerminalShellExecutionEndEvent

表示終端機中的執行已結束的事件。

屬性

已結束的終端機 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');
    }
  }
});

shell 整合物件。

已在其中啟用 shell 整合的終端機。

TerminalShellExecutionStartEvent

表示終端機中的執行已開始的事件。

屬性

已結束的終端機 shell 執行。

shell 整合物件。

已在其中啟用 shell 整合的終端機。

TerminalShellIntegration

由終端機擁有的 shell 整合驅動功能。

屬性

終端機的目前工作目錄。此 Uri 可能代表另一部機器上的檔案 (例如透過 ssh 連線到另一部機器)。這需要 shell 整合支援工作目錄回報。

方法

執行命令,並在需要時傳送 ^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

執行命令,並在需要時傳送 ^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 時請小心,因為像是 $(...) 的字串經常可以在 shell 中用於在字串內執行程式碼。

傳回說明
TerminalShellExecution

TerminalShellIntegrationChangeEvent

表示終端機的 shell 整合已變更的事件。

屬性

shell 整合物件。

已在其中啟用 shell 整合的終端機。

TerminalSplitLocationOptions

使用父系 Terminal 的位置作為此終端機的位置

屬性

要在其旁邊分割此終端機的父系終端機。無論父系終端機是在面板中還是編輯器區域中,這都能運作。

TerminalState

表示 Terminal 的狀態。

屬性

是否已與 Terminal 進行互動。互動意味著終端機已將資料傳送到行程,這取決於終端機的 模式。預設情況下,當按下按鍵或當命令或擴充功能傳送文字時會傳送輸入,但根據終端機的模式,它也可以發生在

  • 指標點擊事件
  • 指標捲動事件
  • 指標移動事件
  • 終端機取得/失去焦點

有關可傳送資料之事件的詳細資訊,請參閱 https://invisible-island.net/xterm/ctlseqs/ctlseqs.html 上的「DEC 私人模式設定 (DECSET)」

偵測到的 Terminal shell 類型。當沒有關於 shell 是什麼的明確訊號,或尚未支援該 shell 時,這將是 undefined。當啟動子 shell 時,此數值應該變更為子 shell 的 shell 類型(例如,在 zsh 內執行 bash)。

請注意,可能的值目前定義為以下任何一項:'bash'、'cmd'、'csh'、'fish'、'gitbash'、'julia'、'ksh'、'node'、'nu'、'pwsh'、'python'、'sh'、'wsl'、'xonsh'、'zsh'。

TestController

發現與執行測試的進入點。它包含用於填入編輯器 UI 的 TestController.items,並與 執行設定檔 相關聯,以允許執行測試。

屬性

tests.createTestController 中傳入的控制器 id。這必須是全域唯一的。

「頂層」TestItem 執行個體的集合,它們反過來可以擁有自己的 子系 以形成「測試樹」。

擴充功能控制何時新增測試。例如,當觸發 workspace.onDidOpenTextDocument 時,擴充功能應為檔案新增測試,以便檔案內的測試裝飾可見。

不過,編輯器有時可能會使用 resolveHandler 明確請求子系。請參閱該方法的說明文件以取得更多詳細資料。

測試控制器的人類可讀標籤。

如果此方法存在,UI 中將會出現重新整理按鈕,且當按一下該按鈕時將會叫用此方法。當被呼叫時,擴充功能應掃描工作區以尋找任何新、已變更或已移除的測試。

建議擴充功能嘗試即時更新測試(例如使用 FileSystemWatcher),並將此方法作為後備。

參數說明
token: CancellationToken
傳回說明
void | Thenable<void>

當測試重新整理完成時解析的 thenable。

如果 TestItem.canResolveChildrentrue,編輯器可能會呼叫由擴充功能提供的函式來請求測試項目的子系。當被呼叫時,該項目應發現子系,並在發現子系時呼叫 TestController.createTestItem

通常擴充功能會管理測試項目的生命週期,但在某些條件下,編輯器可能會請求載入特定項目的子系。例如,如果使用者在重新載入編輯器後要求重新執行測試,編輯器可能需要呼叫此方法來解析先前執行的測試。

總管中的項目將自動標記為「忙碌」,直到函式傳回或傳回的 thenable 解析為止。

參數說明
item: TestItem

正在請求其子系的未解析測試項目,或者傳回 undefined 以解析控制器的初始 items

傳回說明
void | Thenable<void>

方法

建立用於執行測試的設定檔。為了執行測試,擴充功能必須建立至少一個設定檔。

參數說明
label: string

此設定檔的人類可讀標籤。

kind: TestRunProfileKind

設定此設定檔管理的執行類型。

runHandler: (request: TestRunRequest, token: CancellationToken) => void | Thenable<void>

呼叫以啟動測試執行的函式。

isDefault?: boolean

這是否為其類型的預設動作。

tag?: TestTag

設定檔測試標籤。

supportsContinuousRun?: boolean

設定檔是否支援連續執行。

傳回說明
TestRunProfile

TestRunProfile 的執行個體,會自動與此控制器相關聯。

建立新的受管理 TestItem 執行個體。它可以新增至現有項目的 TestItem.children 中,或新增至 TestController.items 中。

參數說明
id: string

TestItem 的識別碼。測試項目的 ID 在其被加入的 TestItemCollection 中必須是唯一的。

label: string

測試項目的人類可讀標籤。

uri?: Uri

此 TestItem 相關聯的 URI。可以是檔案或目錄。

傳回說明
TestItem

建立 TestRun。當提出執行測試的請求時,這應由 TestRunProfile 呼叫,如果從外部偵測到測試執行,也可以呼叫此方法。建立後,要求中包含的測試將移至佇列狀態。

使用相同 request 執行個體建立的所有執行將群組在一起。例如,如果在一組多個平台上執行單一套件的測試,這會很有用。

參數說明
request: TestRunRequest

測試執行要求。僅可修改 include 內的測試,其 exclude 中的測試將被忽略。

name?: string

執行的人類可讀名稱。這可以用來區分測試執行中的多組結果。例如,如果測試跨多個平台執行,這會很有用。

persist?: boolean

執行所建立的結果是否應持久化在編輯器中。如果結果來自外部已儲存的檔案(例如涵蓋率資訊檔案),這可能是 false。

傳回說明
TestRun

TestRun 的執行個體。從叫用此方法的那一刻起,直到呼叫 TestRun.end 為止,它都將被視為「正在執行」。

取消註冊測試控制器,並處置其相關聯的測試與未持久化的結果。

參數說明
傳回說明
void

將項目的結果標記為過期。當程式碼或設定變更且先前的結果不再被視為相關時,通常會呼叫此方法。用於將結果標記為過期的相同邏輯,可用來驅動 連續測試執行

如果將項目傳遞至此方法,該項目及其所有子系的測試結果將被標記為過期。如果未傳遞任何項目,則 TestController 擁有的所有測試都將被標記為過期。

在呼叫此方法之前啟動的任何測試執行(包括可能仍在進行中的執行),都將被標記為過期,並在編輯器的 UI 中降低優先順序。

參數說明
items?: TestItem | readonly TestItem[]

要標記為過期的項目。如果為 undefined,則控制器的所有項目都會被標記為過期。

傳回說明
void

TestCoverageCount

包含涵蓋資源相關資訊的類別。可以針對檔案中的行、分支與宣告提供計數。

建構子

參數說明
covered: number
total: number
傳回說明
TestCoverageCount

屬性

檔案中已涵蓋的項目數量。

檔案中已涵蓋項目的總數。

TestItem

顯示在「測試總管」檢視中的項目。

TestItem 可以代表測試套件或測試本身,因為它們兩者具有相似的功能。

屬性

控制該項目是否在「測試總管」檢視中顯示為「忙碌」。這對於在發現子系時顯示狀態很有用。

預設值為 false

指示此測試項目是否可能透過解析來發現子系。

如果為 true,此項目會在「測試總管」檢視中顯示為可展開,且展開該項目將會叫用帶有該項目的 TestController.resolveHandler

預設為 false

此測試項目的子系。對於測試套件,這可能包含個別的測試案例或巢狀套件。

顯示在標籤旁邊的選用描述。

載入測試時發生的選用錯誤。

請注意,這不是測試結果,且僅應用於表示測試探索中的錯誤,例如語法錯誤。

TestItem 的識別碼。這用於將文件中的測試結果和測試與工作區(測試總管)中的測試進行關聯。在 TestItem 的生命週期中,這不能更改,且在其父項的直接子項中必須是唯一的。

描述測試案例的顯示名稱。

此項目的父項。它是自動設定的,對於 TestController.items 中的頂層項目以及尚未包含在其他項目的 children 中的項目,它是未定義的。

測試項目在其 uri 中的位置。

只有當 uri 指向檔案時,這才具有意義。

將此項目與其他項目進行比較時應使用的字串。當為 falsy 時,會使用 label

與此測試項目相關聯的標籤。可與 tags 結合使用,或單純作為組織功能使用。

TestItem 相關聯的 URI。可以是檔案或目錄。

TestItemCollection

測試項目集合,可在 TestItem.childrenTestController.items 中找到。

屬性

取得集合中的項目數量。

方法

將測試項目新增至子項。如果具有相同 ID 的項目已存在,將會被取代。

參數說明
item: TestItem

要新增的項目。

傳回說明
void

從集合中移除單一測試項目。

參數說明
itemId: string

要刪除的項目 ID。

傳回說明
void

迭代此集合中的每個項目。

參數說明
callback: (item: TestItem, collection: TestItemCollection) => unknown

要針對每個項目執行的函式。

thisArg?: any

叫用處理常式函式時所使用的 this 內容。

傳回說明
void

如果子項中存在該測試項目,則透過 ID 有效地取得它。

參數說明
itemId: string

要取得的項目 ID。

傳回說明
TestItem

找到的項目;如果不存在,則為 undefined。

取代集合所儲存的項目。

參數說明
items: readonly TestItem[]

要儲存的項目。

傳回說明
void

TestMessage

與測試狀態相關聯的訊息。可以連結至特定的原始程式碼範圍,例如對判斷提示失敗非常有用。

靜態

建立一個會在編輯器中以 diff 呈現的新 TestMessage。

參數說明
message: string | MarkdownString

要顯示給使用者的訊息。

expected: string

預期輸出。

actual: string

實際輸出。

傳回說明
TestMessage

建構子

建立新的 TestMessage 執行個體。

參數說明
message: string | MarkdownString

要顯示給使用者的訊息。

傳回說明
TestMessage

屬性

實際測試輸出。如果與 expectedOutput 一起提供,將會顯示 diff 檢視。

測試項目的內容值。這可用於對測試預覽檢視貢獻訊息特定的動作。在此設定的值可以在下列 menus 貢獻點的 testMessage 屬性中找到

  • testing/message/context - 結果樹狀結構中訊息的內容功能表
  • testing/message/content - 覆疊在顯示訊息之編輯器內容上的顯眼按鈕。

例如

"contributes": {
  "menus": {
    "testing/message/content": [
      {
        "command": "extension.deleteCommentThread",
        "when": "testMessage == canApplyRichDiff"
      }
    ]
  }
}

呼叫命令時將傳入包含以下內容的物件

預期測試輸出。如果與 actualOutput 一起提供,將會顯示 diff 檢視。

相關聯的檔案位置。

要顯示的人員可讀訊息文字。

與訊息或失敗相關聯的堆疊追蹤。

TestMessageStackFrame

TestMessage.stackTrace 中找到的堆疊框架。

建構子

參數說明
label: string

堆疊框架的名稱

uri?: Uri
position?: Position

堆疊框架在檔案中的位置

傳回說明
TestMessageStackFrame

屬性

堆疊框架的名稱,通常是方法或函式名稱。

堆疊框架在檔案中的位置。

此堆疊框架的位置。如果編輯器可以存取呼叫框架的位置,則應將其提供為 URI。

TestRun

TestRun 表示進行中或已完成的測試執行,並提供方法來回報執行中個別測試的狀態。

活動

當編輯器不再對與測試執行相關聯的資料感興趣時觸發的事件。

屬性

編輯器在重新載入時是否會持續保留測試執行。

執行的人類可讀名稱。這可以用來區分測試執行中的多組結果。例如,如果測試跨多個平台執行,這會很有用。

從 UI 取消測試執行時將觸發的取消權杖。

方法

新增執行中檔案的覆蓋率。

參數說明
fileCoverage: FileCoverage
傳回說明
void

附加來自測試執行器的原始輸出。應使用者要求,輸出將顯示在終端機中。支援 ANSI 跳脫序列(例如顏色和文字樣式)。新行必須以 CRLF (\r\n) 而非 LF (\n) 表示。

參數說明
output: string

要附加的輸出文字。

location?: Location

指示輸出是在給定位置記錄的。

test?: TestItem

要與輸出相關聯的測試項目。

傳回說明
void

發送信號表示測試執行結束。任何包含在執行中且其狀態尚未更新的測試,其狀態都會被重設。

參數說明
傳回說明
void

指示測試已排隊等待稍後執行。

參數說明
test: TestItem

要更新的測試項目。

傳回說明
void

指示測試發生錯誤。您應該傳入一或多個 TestMessages 來描述失敗。這與 "failed" 狀態不同,因為它表示根本無法執行的測試,例如由於編譯錯誤所致。

參數說明
test: TestItem

要更新的測試項目。

message: TestMessage | readonly TestMessage[]

與測試失敗相關聯的訊息。

duration?: number

測試執行所花費的時間(以毫秒為單位)。

傳回說明
void

指示測試已失敗。您應該傳入一或多個 TestMessages 來描述失敗。

參數說明
test: TestItem

要更新的測試項目。

message: TestMessage | readonly TestMessage[]

與測試失敗相關聯的訊息。

duration?: number

測試執行所花費的時間(以毫秒為單位)。

傳回說明
void

指示測試已通過。

參數說明
test: TestItem

要更新的測試項目。

duration?: number

測試執行所花費的時間(以毫秒為單位)。

傳回說明
void

指示測試已被略過。

參數說明
test: TestItem

要更新的測試項目。

傳回說明
void

指示測試已開始執行。

參數說明
test: TestItem

要更新的測試項目。

傳回說明
void

TestRunProfile

TestRunProfile 描述在 TestController 中執行測試的一種方式。

活動

當使用者變更這是否為預設設定檔時觸發。此事件包含 isDefault 的新值

屬性

如果此方法存在,UI 中將會出現一個設定齒輪,並且在按一下它時會叫用此方法。呼叫時,您可以採取其他編輯器動作,例如顯示快速選擇或開啟設定檔。

參數說明
傳回說明
void

控制當觸發其種類時,此設定檔是否為將採取的預設動作。例如,如果使用者按一下通用的「全部執行」按鈕,則會執行 TestRunProfileKind.Run 的預設設定檔,儘管使用者可以對此進行設定。

使用者在其預設設定檔中所做的變更,將會在 onDidChangeDefault 事件之後反映在此屬性中。

設定此設定檔控制哪種執行的種類。如果某個種類沒有設定檔,它將無法在 UI 中使用。

在 UI 中顯示給使用者的標籤。

請注意,如果使用者要求以特定方式重新執行測試,則標籤具有一定的意義。例如,如果正常執行了測試,而使用者要求以偵錯模式重新執行測試,則編輯器將嘗試使用具有 Debug 種類且相同標籤的設定。如果沒有此類設定,將會使用預設值。

由擴充功能提供的函式,可提供檔案的詳細陳述式與函式層級覆蓋率。當檔案需要更多詳細資料時(例如在編輯器中開啟檔案或在 Test Coverage 檢視中展開時),編輯器將會呼叫此函式。

傳遞至此函式的 FileCoverage 物件,與此設定檔相關聯之 TestRun.addCoverage 呼叫上發出的執行個體相同。

參數說明
testRun: TestRun
fileCoverage: FileCoverage
token: CancellationToken
傳回說明
Thenable<FileCoverageDetail[]>

由擴充功能提供的函式,可為檔案中的單一測試提供詳細的陳述式與函式層級覆蓋率。這是 TestRunProfile.loadDetailedCoverage 的每測試對應函式,僅在 FileCoverage.includesTests 中提供測試項目時以及僅針對回報此類資料的檔案呼叫。

通常當使用者開啟檔案時,會先呼叫 TestRunProfile.loadDetailedCoverage,然後如果他們向下切入到特定的每測試覆蓋率資訊,就會呼叫此方法。接著,此方法應僅傳回在執行期間由特定測試執行的陳述式和宣告的覆蓋率資料。

傳遞至此函式的 FileCoverage 物件,與此設定檔相關聯之 TestRun.addCoverage 呼叫上發出的執行個體相同。

參數說明
testRun: TestRun

產生覆蓋率資料的測試執行。

fileCoverage: FileCoverage

要載入詳細覆蓋率的檔案覆蓋率物件。

fromTestItem: TestItem

要要求覆蓋率資訊的測試項目。

token: CancellationToken

指示應取消作業的取消權杖。

傳回說明
Thenable<FileCoverageDetail[]>

呼叫以啟動測試執行的處理常式。叫用時,此函式應至少呼叫一次 TestController.createTestRun,並且應在函式傳回或傳回的 promise 解決之前,建立與該要求相關聯的所有測試執行。

如果設定了 supportsContinuousRun,則 TestRunRequest.continuous 可能是 true。在這種情況下,設定檔應觀察原始程式碼的變更,並透過呼叫 TestController.createTestRun 來建立新的測試執行,直到對 token 要求取消為止。

參數說明
request: TestRunRequest

測試執行的要求資訊。

token: CancellationToken
傳回說明
void | Thenable<void>

此設定檔是否支援持續執行要求。如果是,則可以將 TestRunRequest.continuous 設定為 true。預設為 false。

設定檔的相關聯標籤。如果設定了此項,則只有具有相同標籤的 TestItem 執行個體才有資格在此設定檔中執行。

方法

刪除執行設定檔。

參數說明
傳回說明
void

TestRunProfileKind

TestRunProfiles 控制的執行種類。

列舉成員

Run 測試設定檔種類。

Debug 測試設定檔種類。

Coverage 測試設定檔種類。

TestRunRequest

TestRunRequest 是 TestRun 的前置項目,而 TestRun 依次是透過將要求傳遞給 TestController.createTestRun 來建立的。TestRunRequest 包含有關應執行哪些測試、不應執行哪些測試以及如何執行它們(透過 profile)的資訊。

一般而言,TestRunRequests 是由編輯器建立並傳遞給 TestRunProfile.runHandler 的,但您也可以在 runHandler 之外建立測試要求與執行。

建構子

參數說明
include?: readonly TestItem[]

要執行的特定測試陣列,或為 undefined 以執行所有測試

exclude?: readonly TestItem[]

要從執行中排除的測試陣列。

profile?: TestRunProfile

用於此要求的執行設定檔。

continuous?: boolean

是否隨著原始程式碼變更而持續執行測試。

preserveFocus?: boolean

啟動執行時是否保留使用者的焦點

傳回說明
TestRunRequest

屬性

隨著原始程式碼變更,設定檔是否應持續執行。僅與設定了 TestRunProfile.supportsContinuousRun 的設定檔相關。

使用者標記為從包含在此執行中的測試中排除的測試陣列;排除項目應在包含項目之後套用。

如果未要求任何排除項目,則可以省略。測試控制器不應執行已排除的測試或已排除測試的任何子項。

要執行的特定測試的篩選器。如果給定,擴充功能應執行所有包含的測試及其所有子項,但不包含任何出現在 TestRunRequest.exclude 中的測試。如果此屬性為 undefined,則擴充功能應簡單地執行所有測試。

執行測試的過程應解析尚未解析之任何測試項目的子項。

控制如何對「測試結果」檢視進行對焦。如果為 true,編輯器將維持使用者的焦點。如果為 false,編輯器將偏好將焦點移至「測試結果」檢視中,儘管這可由使用者進行設定。

用於此要求的設定檔。對於從編輯器 UI 發出的要求,這將一律定義,不過擴充功能可以透過程式設計方式建立與任何設定檔無關的要求。

TestTag

標籤可以與 TestItemsTestRunProfiles 相關聯。具有標籤的設定檔只能執行在其 TestItem.tags 陣列中包含該標籤的測試。

建構子

建立新的 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', 'cp857'.

此文件中主要使用的 換行符號 序列。

相關聯資源的檔案系統路徑。TextDocument.uri.fsPath 的簡寫標記法。與 uri 配置無關。

如果文件已關閉,則為 true。已關閉的文件不再進行同步,且再次開啟相同資源時不會重複使用。

如果有未保存的變更,則為 true

此文件是否代表尚未儲存過未命名檔案。注意,這並不表示文件會儲存到磁碟,請使用 Uri.scheme 來找出文件將會 儲存 在何處,例如 fileftp 等。

與此文件相關聯的語言識別碼。

此文件中的行數。

此文件的相關聯 uri。

注意,大多數文件都使用 file 配置,這表示它們是磁碟上的檔案。不過,並非所有文件都儲存磁碟上,因此在嘗試存取磁碟上的底層檔案或同層級項目之前,必須先檢查 scheme

參見

此文件的版本號碼(在每次變更後會嚴格遞增,包括復原/重做)。

方法

取得此文件的文字。可以透過提供範圍來擷取子字串。此範圍將會被 調整

參數說明
range?: Range

僅包含該範圍所包含的文字。

傳回說明
string

提供範圍內的文字或整段文字。

取得給定位置處的單字範圍。根據預設,單字是由常見分隔符號(如空格、-、_ 等)所定義。此外,可以定義每種語言的自訂單字定義。也可以提供自訂規則運算式。

  • 注意 1:自訂規則運算式不得符合空字串,如果符合,將會被忽略。
  • 注意 2:自訂規則運算式將無法符合多行字串,且為了速度考量,規則運算式不應符合帶有空格的單字。若要處理更複雜、非單字的案例,請使用 TextLine.text

此位置將會被 調整

參數說明
position: Position

位置。

regex?: RegExp

描述何謂單字的選用規則運算式。

傳回說明
Range

跨越單字的範圍,或 undefined

傳回由行號所代表的文字行。請注意,傳回的物件是非即時的,且不會反映對文件的變更。

參數說明
line: number

[0, lineCount) 中的行號。

傳回說明
TextLine

A line.

傳回由位置所代表的文字行。請注意,傳回的物件是非即時的,且不會反映對文件的變更。

此位置將會被 調整

另請參閱 TextDocument.lineAt

參數說明
position: Position

位置。

傳回說明
TextLine

A line.

將位置轉換為以 0 為起始的位移。

此位置將會被 調整

參數說明
position: Position

位置。

傳回說明
number

UTF-16 程式碼單位 中有效的以 0 為起始位移。

將以 0 為起始的位移轉換為位置。

參數說明
offset: number

文件中以 0 為起始的位移。此位移是以 UTF-16 程式碼單位 為單位。

傳回說明
Position

有效的 Position

儲存底層檔案。

參數說明
傳回說明
Thenable<boolean>

檔案儲存後將解析為 true 的 promise。如果儲存失敗,將傳回 false

確保某個位置包含在此文件的範圍內。

參數說明
position: Position

位置。

傳回說明
Position

給定的位置或新調整的位置。

確保某個範圍完全包含在此文件中。

參數說明
range: Range

範圍。

傳回說明
Range

給定的範圍或新調整的範圍。

TextDocumentChangeEvent

描述異動性 document 變更的事件。

屬性

內容變更陣列。

受影響的文件。

變更文件的原因。如果原因不明,則為 undefined

TextDocumentChangeReason

文字文件變更的原因。

列舉成員

文字變更是由復原作業所引起的。

文字變更是由重做作業所引起的。

TextDocumentContentChangeEvent

描述 document 文字中個別變更的事件。

屬性

被取代的範圍。

被取代範圍的長度。

被取代範圍的位移。

該範圍的新文字。

TextDocumentContentProvider

文字文件內容提供者允許將唯讀文件新增至編輯器,例如來自 dll 的原始程式碼或從 md 產生的 html。

內容提供者是針對 uri-scheme 進行 註冊 的。當要 載入 具有該配置的 uri 時,會詢問內容提供者。

活動

警示資源已變更的事件。

方法

提供給定 uri 的文字內容。

編輯器將使用傳回的字串內容來建立唯讀 document。當對應的文件已 關閉 時,應釋放配置的資源。

注意:由於換行符號序列標準化,所建立的 document 內容可能與提供的文字不完全相同。

參數說明
uri: Uri

其配置與此提供者 註冊 時所用配置相符的 uri。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<string>

字串或解析為此類內容的 thenable。

TextDocumentSaveReason

表示儲存文字文件的原因。

列舉成員

手動觸發,例如透過使用者按一下儲存、啟動偵錯或透過 API 呼叫。

延遲後自動執行。

當編輯器失去焦點時。

TextDocumentShowOptions

表示用於設定在 editor 中顯示 document 之行為的選項。

屬性

選用旗標,當為 true 時,將會阻止 editor 取得焦點。

選用旗標,用以控制 editor 索引標籤是否顯示為預覽。預覽索引標籤將會被取代並重複使用,直到設定為保留為止(透過明確設定或透過編輯)。

注意,如果使用者已在設定中停用預覽編輯器,則會忽略此旗標。

要套用於 editor 中文件的選用選取範圍。

應顯示 editor 的選用檢視欄位。預設為 active。不存在的欄位將依需求建立,最多可達 ViewColumn.Nine。使用 ViewColumn.Beside 可在目前使用中編輯器的側邊開啟編輯器。

TextDocumentWillSaveEvent

當即將儲存 document 時觸發的事件。

若要在儲存文件之前對其進行修改,請呼叫帶有解析為 text edits 陣列之 thenable 的 waitUntil 函式。

屬性

將要儲存的文件。

觸發儲存的原因。

方法

允許暫停事件迴圈並套用 pre-save-edits。對此函式的後續呼叫編輯將依序套用。如果發生文件的並行修改,這些編輯將會被忽略

注意:此函式只能在事件分派期間呼叫,不能以非同步方式呼叫

workspace.onWillSaveTextDocument(event => {
  // async, will *throw* an error
  setTimeout(() => event.waitUntil(promise));

  // sync, OK
  event.waitUntil(promise);
});
參數說明
thenable: Thenable<readonly TextEdit[]>

解析為 pre-save-edits 的 thenable。

傳回說明
void

允許暫停事件迴圈,直到提供的 thenable 解析完成。

注意:此函式只能在事件分派期間呼叫。

參數說明
thenable: Thenable<any>

延遲儲存的 thenable。

傳回說明
void

TextEdit

文字編輯表示應套用於文件的編輯。

靜態

用於建立刪除編輯的公用程式。

參數說明
range: Range

範圍。

傳回說明
TextEdit

新的文字編輯物件。

用於建立插入編輯的公用程式。

參數說明
position: Position

一個位置,將成為空的範圍。

newText: string

一個字串。

傳回說明
TextEdit

新的文字編輯物件。

用於建立取代編輯的公用程式。

參數說明
range: Range

範圍。

newText: string

一個字串。

傳回說明
TextEdit

新的文字編輯物件。

用於建立 eol 編輯的公用程式。

參數說明
eol: EndOfLine

eol 序列

傳回說明
TextEdit

新的文字編輯物件。

建構子

建立新的 TextEdit。

參數說明
range: Range

範圍。

newText: string

一個字串。

傳回說明
TextEdit

屬性

文件中使用的 eol 序列。

注意,eol 序列將套用到整個文件。

此編輯將插入的字串。

此編輯所套用的範圍。

TextEditor

表示附加至 document 的編輯器。

屬性

與此文字編輯器相關聯的文件。在整個文字編輯器的生命週期中,文件將保持相同。

文字編輯器選項。

此文字編輯器上的主要選取範圍。TextEditor.selections[0] 的簡寫。

此文字編輯器中的選取範圍。主要選取範圍一律位於索引 0。

顯示此編輯器的欄位。如果這不是主要編輯器之一(例如內嵌編輯器),或者編輯器欄位大於三,則會是 undefined

編輯器中目前的 zichtbare (visible) 範圍(垂直方向)。這僅計算垂直捲動,而不計算水平捲動。

方法

對與此文字編輯器相關聯的文件執行編輯。

使用必須用於進行編輯的 edit-builder 來叫用給定的回呼函式。請注意,edit-builder 僅在回呼執行期間有效。

參數說明
callback: (editBuilder: TextEditorEdit) => void

可以使用 edit-builder 建立編輯的函式。

options?: {undoStopAfter: boolean, undoStopBefore: boolean}

圍繞此編輯的復原/重做行為。根據預設,將在此編輯前後建立復原停止點。

傳回說明
Thenable<boolean>

解析為指示是否可以套用編輯之值的 promise。

隱藏文字編輯器。

  • 已取代 - 請改用命令 workbench.action.closeActiveEditor。此方法會顯示非預期的行為,並將在下一次主要更新中移除。
參數說明
傳回說明
void

插入 程式碼片段 並將編輯器置於程式碼片段模式。「程式碼片段模式」表示編輯器會新增預留位置和額外游標,以便使用者完成或接受程式碼片段。

參數說明
snippet: SnippetString

要在此編輯中插入的程式碼片段。

location?: Range | Position | readonly Range[] | readonly Position[]

要插入程式碼片段的位置或範圍,預設為目前的編輯器選取範圍。

options?: {keepWhitespace: boolean, undoStopAfter: boolean, undoStopBefore: boolean}

圍繞此編輯的復原/重做行為。根據預設,將在此編輯前後建立復原停止點。

傳回說明
Thenable<boolean>

解析為指示是否可以插入程式碼片段之值的 promise。請注意,此 promise 不表示程式碼片段已完全填入或被接受。

依照 revealType 指示捲動,以顯示指定的範圍。

參數說明
range: Range

範圍。

revealType?: TextEditorRevealType

用於顯示 range 的捲動策略。

傳回說明
void

將一組裝飾新增至文字編輯器。如果已存在具有給定 decoration type 的裝飾集,則會將其取代。如果 rangesOrOptions 為空,則會移除具有給定 decoration type 的現有裝飾。

另請參閱 createTextEditorDecorationType

參數說明
decorationType: TextEditorDecorationType

裝飾類型。

rangesOrOptions: readonly Range[] | readonly DecorationOptions[]

ranges 或更詳細的 options

傳回說明
void

顯示文字編輯器。

參數說明
column?: ViewColumn

顯示此編輯器的 column。此方法會顯示非預期的行為,並將在下一次主要更新中移除。

傳回說明
void

TextEditorCursorStyle

游標的轉譯樣式。

列舉成員

將游標轉譯為垂直粗線。

將游標轉譯為填滿區塊。

將游標轉譯為水平粗線。

將游標轉譯為垂直細線。

將游標轉譯為框線區塊。

將游標轉譯為水平細線。

TextEditorDecorationType

表示在 text editor 中共用相同 styling options 之裝飾集的控制代碼。

若要取得 TextEditorDecorationType 的執行個體,請使用 createTextEditorDecorationType

屬性

控制代碼的內部表示法。

方法

移除此裝飾類型以及使用它的所有文字編輯器上的所有裝飾。

參數說明
傳回說明
void

TextEditorEdit

將在 TextEditor 上以單一異動套用的複雜編輯。這包含編輯的描述,如果編輯是有效的(即沒有重疊區域、同時文件未遭變更等),則可以將它們套用到與 text editor 相關聯的 document 上。

方法

刪除特定的文字區域。

參數說明
location: Range | Selection

此作業應移除的範圍。

傳回說明
void

在某個位置插入文字。您可以在 value 中使用 \r\n\n,它們將被正規化至目前的 document。雖然可以使用 replace 進行同等的文字編輯,但 insert 會產生不同的結果選取範圍(它會被移動)。

參數說明
location: Position

應插入新文字的位置。

value: string

此作業應插入的新文字。

傳回說明
void

用新值取代特定的文字區域。您可以在 value 中使用 \r\n\n,它們將被正規化至目前的 document

參數說明
location: Range | Position | Selection

此作業應移除的範圍。

value: string

移除 location 後此作業應插入的新文字。

傳回說明
void

設定行尾序列。

參數說明
endOfLine: EndOfLine

document 的新行尾。

傳回說明
void

TextEditorLineNumbersStyle

行號的轉譯樣式。

列舉成員

不轉譯行號。

轉譯行號。

使用相對於主要游標位置的值來轉譯行號。

在每第 10 行行號上轉譯行號。

TextEditorOptions

表示 text editoroptions

屬性

此編輯器中游標的繪製樣式。取得文字編輯器的選項時,此屬性將一律存在。設定文字編輯器的選項時,此屬性為選用。

insertSpaces為 true 時要插入的空格數。

取得文字編輯器的選項時,此屬性一律為數字 (已解析)。設定文字編輯器的選項時,此屬性為選用,且它可以是數字或 "tabSize"

按下 Tab 時插入 n 個空格。取得文字編輯器的選項時,此屬性一律為布林值 (已解析)。設定文字編輯器的選項時,此屬性為選用,且它可以是布林值或 "auto"

呈現相對於目前行號的相對行號。取得文字編輯器的選項時,此屬性將一律存在。設定文字編輯器的選項時,此屬性為選用。

定位點 (tab) 所佔的空格大小。這用於兩個目的

  • 定位點字元的呈現寬度;
  • insertSpaces 為 true 且 indentSize 設定為 "tabSize" 時要插入的空格數。

取得文字編輯器的選項時,此屬性一律為數字 (已解析)。設定文字編輯器的選項時,此屬性為選用,且它可以是數字或 "auto"

TextEditorOptionsChangeEvent

表示描述 文字編輯器選項 變更的事件。

屬性

文字編輯器選項 的新值。

選項已變更的 文字編輯器

TextEditorRevealType

表示文字編輯器中的不同 顯示 策略。

列舉成員

將會以盡可能少捲動的方式顯示範圍。

範圍將一律顯示在檢視區的中央。

如果範圍在檢視區之外,將會顯示在檢視區的中央。否則,將會以盡可能少捲動的方式顯示。

範圍將一律顯示在檢視區的頂端。

TextEditorSelectionChangeEvent

表示描述 文字編輯器選取範圍 變更的事件。

屬性

觸發此事件的 變更類型。可以是 undefined

選取範圍已變更的 文字編輯器

TextEditorSelectionChangeKind

表示可能導致 選取範圍變更事件 的來源。

列舉成員

由於在編輯器中輸入而變更的選取範圍。

由於在編輯器中按一下而變更的選取範圍。

由於執行了命令而變更的選取範圍。

TextEditorViewColumnChangeEvent

表示描述 文字編輯器檢視欄 變更的事件。

屬性

檢視欄已變更的 文字編輯器

TextEditorVisibleRangesChangeEvent

表示描述 文字編輯器可見範圍 變更的事件。

屬性

可見範圍已變更的 文字編輯器

TextLine

表示一行文字,例如一行原始程式碼。

TextLine 物件是不可變的 (immutable)。當 文件 變更時,先前擷取的行將無法代表最新狀態。

屬性

/\s/ 所定義的第一個非空白字元的位移。注意,如果某行完全是空白字元,則會傳回該行的長度。

此行是否僅包含空白字元,這是 TextLine.firstNonWhitespaceCharacterIndex === TextLine.text.length 的簡寫。

從零開始的行號。

此行涵蓋的範圍,不含換行分隔字元。

此行涵蓋的範圍,包含換行分隔字元。

此行的文字,不含換行分隔字元。

ThemableDecorationAttachmentRenderOptions

表示文字裝飾內容 之前之後 的佈景主題特定呈現樣式。

屬性

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

要在附加元件中呈現之圖片的絕對路徑或 URI。只能顯示圖示或文字其中之一,無法同時顯示兩者。

定義顯示在附加元件中的文字內容。只能顯示圖示或文字其中之一,無法同時顯示兩者。

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

將套用至裝飾附加元件的 CSS 樣式屬性。

ThemableDecorationInstanceRenderOptions

表示裝飾實例的可設定佈景主題呈現選項。

屬性

定義插入於裝飾文字之後的附件之轉譯選項。

定義插入於裝飾文字之前的附件之轉譯選項。

ThemableDecorationRenderOptions

表示 文字編輯器裝飾 的佈景主題特定呈現樣式。

屬性

定義插入於裝飾文字之後的附件之轉譯選項。

裝飾的背景色彩。請使用 rgba() 並定義透明背景色彩,以便與其他裝飾良好搭配。或者,也可以 參照 色彩登錄中的色彩。

定義插入於裝飾文字之前的附件之轉譯選項。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'border' 來設定一或多個個別的邊框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

要在裝訂邊中轉譯之影像的絕對路徑或 URI。

指定裝訂邊圖示的大小。可用值為 'auto'、'contain'、'cover' 以及任何百分比值。如需詳細資訊:https://msdn.microsoft.com/en-us/library/jj127316(v=vs.85).aspx

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'outline' 來設定一或多個個別的外框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'outline' 來設定一或多個個別的外框屬性。

將套用至裝飾所包含文字的 CSS 樣式屬性。最好使用 'outline' 來設定一或多個個別的外框屬性。

概觀尺規中裝飾的色彩。請使用 rgba() 並定義透明色彩,以便與其他裝飾良好搭配。

將套用至裝飾所包含文字的 CSS 樣式屬性。

ThemeColor

指向 https://vscode.com.tw/api/references/theme-color 中定義的工作台顏色之一的參考。建議使用佈景主題顏色而非自訂顏色,因為這可讓佈景主題作者和使用者變更顏色。

建構子

建立佈景主題顏色的參考。

參數說明
id: string

顏色的。可用顏色列於 https://vscode.com.tw/api/references/theme-color 中。

傳回說明
ThemeColor

屬性

此顏色的識別碼。

ThemeIcon

具名圖示的參考。目前支援 FileFolderThemeIcon 識別碼。建議使用佈景主題圖示而非自訂圖示,因為這可讓產品佈景主題作者變更圖示。

注意,佈景主題圖示也可以呈現在標籤與描述內。支援佈景主題圖示的地方會明確說明,且會使用 $(<name>) 語法,例如 quickPick.label = "Hello World $(globe)"

靜態

代表檔案之圖示的參考。該圖示取自目前的檔案圖示佈景主題,或使用預留位置圖示。

代表資料夾之圖示的參考。該圖示取自目前的檔案圖示佈景主題,或使用預留位置圖示。

建構子

建立佈景主題圖示的參考。

參數說明
id: string

圖示的識別碼。可用圖示列於 https://vscode.com.tw/api/references/icons-in-labels#icon-listing 中。

color?: ThemeColor

圖示的選用 ThemeColor。此顏色目前僅用於 TreeItem

傳回說明
ThemeIcon

屬性

圖示的選用 ThemeColor。此顏色目前僅用於 TreeItem

圖示的識別碼。可用圖示列於 https://vscode.com.tw/api/references/icons-in-labels#icon-listing 中。

TreeCheckboxChangeEvent<T>

描述樹狀結構項目核取方塊狀態變更的事件。

屬性

已勾選或取消勾選的項目。

TreeDataProvider<T>

提供樹狀資料的資料提供者

活動

用於發出信號表示元素或根已變更的選用事件。這會觸發檢視以遞迴方式更新變更的元素/根及其子系 (如果有顯示)。若要發出根已變更的信號,請勿傳遞任何引數或傳遞 undefinednull

方法

取得 element 的子系,如果未傳遞元素,則取得根的子系。

注意:API 取用者不會變動結果;唯讀陣列可以轉型為 T[]

參數說明
element?: T

提供者從其取得子系的元素。可以是 undefined

傳回說明
ProviderResult<T[]>

element 的子系,如果未傳遞元素,則為根的子系。

傳回 element 父系的選用方法。如果 element 是根的子系,則傳回 nullundefined

注意:必須實作此方法才能存取 reveal API。

參數說明
element: T

必須傳回其父系的元素。

傳回說明
ProviderResult<T>

element 的父系。

取得 elementTreeItem 表示法

參數說明
element: T

要求其 TreeItem 表示法的元素。

傳回說明
TreeItem | Thenable<TreeItem>

元素的 TreeItem 表示法。

於滑鼠懸停時呼叫,以解析為 undefined 的 TreeItem 屬性。於樹狀結構項目按一下/開啟時呼叫,以解析為 undefined 的 TreeItem 屬性。只有原本為 undefined 的屬性才能在 resolveTreeItem 中解析。這項功能日後可能會擴充,包含在選取及/或開啟時被呼叫以解析其他遺漏的屬性。

每個 TreeItem 絕對只會被呼叫一次。

不應從 resolveTreeItem 內部觸發 onDidChangeTreeData。

注意,當樹狀結構項目已經顯示在 UI 中時會呼叫此函式。因此,無法變更任何會改變呈現方式的屬性 (標籤、描述等)。

參數說明
item: TreeItem

應設定 item 的 undefined 屬性,然後傳回 item

element: T

與 TreeItem 相關聯的物件。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TreeItem>

已解析的樹狀結構項目或解析為此項目的 thenable。傳回指定的 item 是可以的。當未傳回任何結果時,將會使用指定的 item

TreeDragAndDropController<T>

TreeView 中提供拖放支援。

屬性

TreeDragAndDropControllerhandleDrag 方法可能會新增至樹狀資料傳輸的 MIME 類型。這些可以是定義完善的現有 MIME 類型,以及擴充功能所定義的 MIME 類型。

將自動新增樹狀結構建議的 MIME 類型 (application/vnd.code.tree.<treeidlowercase>)。

DragAndDropControllerhandleDrop 方法所支援的 MIME 類型。這些可以是定義完善的現有 MIME 類型,以及擴充功能所定義的 MIME 類型。

若要支援從樹狀結構拖放,您需要新增該樹狀結構的 MIME 類型。這包括從同一個樹狀結構內部的拖放。樹狀結構的 MIME 類型建議採用 application/vnd.code.tree.<treeidlowercase> 格式。

使用特殊的 files MIME 類型來支援所有類型的拖放檔案 files,無論檔案的實際 MIME 類型為何。

若要了解被拖曳項目的 MIME 類型

  1. 設定您的 DragAndDropController
  2. 使用 Developer: Set Log Level... 命令將層級設定為 "Debug"
  3. 開啟開發人員工具,並將具有未知 MIME 類型的項目拖曳到您的樹狀結構上方。MIME 類型將會記錄至開發人員主控台

請注意,無法傳送至擴充功能的 MIME 類型將會被略過。

方法

當使用者開始從此 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>

當拖放動作導致放置在此 DragAndDropController 所屬的樹狀結構上時呼叫。

擴充功能應針對任何需要重新整理的元素觸發 onDidChangeTreeData

參數說明
target: T

正在發生放置的目標樹狀結構元素。當為 undefined 時,目標為根。

dataTransfer: DataTransfer

拖曳來源的資料傳輸項目。

token: CancellationToken

表示放置已被取消的取消權杖。

傳回說明
void | Thenable<void>

TreeItem

樹狀結構項目是樹狀結構的 UI 元素。樹狀結構項目由 資料提供者 建立。

建構子

參數說明
label: string | TreeItemLabel

描述此項目的可讀字串

collapsibleState?: TreeItemCollapsibleState

樹狀結構項目的 TreeItemCollapsibleState。預設為 TreeItemCollapsibleState.None

傳回說明
TreeItem

參數說明
resourceUri: Uri

代表此項目的資源 Uri

collapsibleState?: TreeItemCollapsibleState

樹狀結構項目的 TreeItemCollapsibleState。預設為 TreeItemCollapsibleState.None

傳回說明
TreeItem

屬性

螢幕閱讀器與此樹狀結構項目互動時所使用的無障礙資訊。一般而言,TreeItem 不需要設定 accessibilityInformation 的 role;不過,在某些情況下,TreeItem 未以樹狀方式顯示,此時設定 role 可能會有意義。

樹狀結構項目的 TreeItemCheckboxState。當 checkboxState 變更時,應觸發 onDidChangeTreeData

樹狀結構項目的 TreeItemCollapsibleState

選取樹狀結構項目時應執行的 Command

當樹狀結構項目在編輯器中開啟某些內容時,請使用 vscode.openvscode.diff 作為命令識別碼。使用這些命令可確保產生的編輯器外觀與其他內建樹狀結構開啟編輯器的方式一致。

樹狀結構項目的內容值。這可用於在樹狀結構中貢獻項目特定的動作。例如,某個樹狀結構項目的內容值為 folder。使用 menus 擴充點將動作貢獻至 view/item/context 時,您可以在 when 運算式中指定索引鍵 viewItem 的內容值,例如 viewItem == folder

"contributes": {
  "menus": {
    "view/item/context": [
      {
        "command": "extension.deleteFolder",
        "when": "viewItem == folder"
      }
    ]
  }
}

這將只會對 contextValuefolder 的項目顯示 extension.deleteFolder 動作。

呈現較不顯眼的可讀字串。當為 true 時,它是衍生自 resourceUri;當為 falsy 時,則不會顯示。

樹狀結構項目的圖示路徑或 ThemeIcon。當為 falsy 時,如果項目可折疊,則指派 資料夾佈景主題圖示,否則指派 檔案佈景主題圖示。當指定檔案或資料夾 ThemeIcon 時,圖示是使用 resourceUri (如果已提供) 從目前檔案圖示佈景主題中為指定的佈景主題圖示衍生而來。

樹狀結構項目的選用識別碼,在整個樹狀結構中必須是唯一的。此識別碼用於保留樹狀結構項目的選取與展開狀態。

如果未提供,將使用樹狀結構項目的標籤產生識別碼。注意,當標籤變更時,識別碼也會變更,且選取與展開狀態將無法再保持穩定。

描述此項目的可讀字串。當為 falsy 時,它是衍生自 resourceUri

代表與此項目相關聯之資源的 Uri

設定後,如果未明確提供,此屬性可用來自動衍生數個項目屬性

當您將滑鼠停留在這個項目上時顯示的工具提示文字。

TreeItemCheckboxState

樹狀結構項目的核取方塊狀態

列舉成員

決定項目未勾選

決定項目已勾選

TreeItemCollapsibleState

樹狀結構項目的可折疊狀態

列舉成員

決定項目既不能折疊也不能展開。表示它沒有子系。

判定某個項目已折疊

判定某個項目已展開

TreeItemLabel

描述 樹狀結構項目 的標籤

屬性

標籤中要突顯的範圍。範圍定義為兩個數字的元組,其中第一個數字是包含在內的起始索引,第二個數字是不包含在內的結束索引

描述 樹狀結構項目 的可讀字串。

TreeView<T>

表示樹狀檢視

活動

用於發出信號表示元素或根已被勾選或取消勾選的事件。

選取範圍 變更時發出的事件

可見性 變更時發出的事件

當元素折疊時發出的事件

當元素展開時發出的事件

屬性

要在此 TreeView 顯示的徽章。若要移除徽章,請設定為 undefined。

呈現較不顯眼的選用可讀描述,位於檢視的標題中。將標題描述設定為 null、undefined 或空字串會從檢視中移除該描述。

將呈現於檢視中的選用可讀訊息。將訊息設定為 null、undefined 或空字串會從檢視中移除該訊息。

目前選取的元素。

樹狀檢視標題最初取自擴充功能的 package.json。對 title 屬性的變更將適當地反映在 UI 的檢視標題中。

如果 樹狀檢視 可見,則為 true,否則為 false

方法

釋放此物件。

參數說明
傳回說明
any

在樹狀檢視中顯示指定的元素。如果樹狀檢視不可見,則會顯示樹狀檢視並顯示該元素。

根據預設,會選取顯示的元素。若要不選取,請將 select 選項設定為 false。若要取得焦點,請將 focus 選項設定為 true。若要展開顯示的元素,請將 expand 選項設定為 true。若要以遞迴方式展開,請將 expand 設定為要展開的層級數。

參數說明
element: T
options?: {expand: number | boolean, focus: boolean, select: boolean}
傳回說明
Thenable<void>

TreeViewExpansionEvent<T>

TreeView 中的元素展開或折疊時發出的事件

屬性

已展開或折疊的元素。

TreeViewOptions<T>

建立 TreeView 的選項

屬性

樹狀結構是否支援多重選取。當樹狀結構支援多重選取且從樹狀結構執行命令時,命令的第一個引數是執行命令所在的樹狀結構項目,而第二個引數是包含所有選取之樹狀結構項目的陣列。

用於在樹狀檢視中實作拖放的選用介面。

根據預設,當樹狀結構項目的子系已經擷取時會根據父樹狀結構項目的勾選狀態自動管理子系核取方塊。如果樹狀結構項目預設為折疊狀態 (表示尚未擷取子系),則子系核取方塊將不會更新。若要覆寫此行為並在擴充功能中管理子系與父系核取方塊狀態,請將此項設定為 true

TreeViewOptions.manageCheckboxStateManually 為 false (預設行為) 的範例

  1. 勾選樹狀結構項目,然後擷取其子系。子系將會被勾選。

  2. 勾選樹狀結構項目的父系。該樹狀結構項目及其所有同層級項目將會被勾選。

  • 父系
    • 子系 1
    • 子系 2 當使用者勾選「父系」時,樹狀結構看起來會像這樣
  • 父系
    • 子系 1
    • 子系 2
  1. 樹狀結構項目及其所有同層級項目皆已勾選。父系將會被勾選。
  • 父系
    • 子系 1
    • 子系 2 當使用者勾選「子系 1」和「子系 2」時,樹狀結構看起來會像這樣
  • 父系
    • 子系 1
    • 子系 2
  1. 取消勾選樹狀結構項目。父系將會被取消勾選。
  • 父系
    • 子系 1
    • 子系 2 當使用者取消勾選「子系 1」時,樹狀結構看起來會像這樣
  • 父系
    • 子系 1
    • 子系 2

是否顯示「全部折疊」動作。

提供樹狀資料的資料提供者。

TreeViewSelectionChangeEvent<T>

樹狀檢視的選取範圍 發生變更時發出的事件

屬性

選取的元素。

TreeViewVisibilityChangeEvent

樹狀檢視的可見性 發生變更時發出的事件

屬性

如果 樹狀檢視 可見,則為 true,否則為 false

TypeDefinitionProvider

型別定義提供者定義了擴充功能與「移至型別定義」功能之間的合約。

方法

提供給定位置與文件中符號的型別定義。

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<Definition | LocationLink[]>

定義或解析為該定義的 thenable。若無結果,可透過傳回 undefinednull 來表示。

TypeHierarchyItem

表示型別階層的項目,例如類別或介面。

建構子

建立新的型別階層項目。

參數說明
kind: SymbolKind

項目的種類。

name: string

項目的名稱。

detail: string

項目的詳細資料。

uri: Uri

項目的 Uri。

range: Range

項目的完整範圍。

selectionRange: Range

項目的選取範圍。

傳回說明
TypeHierarchyItem

屬性

此項目的更多詳細資料,例如函式的簽章。

此項目的種類。

此項目的名稱。

包圍此符號的範圍,不包含前導/尾端空白,但包含其他所有內容,例如註解和程式碼。

挑選此符號時應選取並顯示的範圍,例如類別的名稱。必須包含在 range 屬性中。

此項目的標籤。

此項目的資源識別碼。

TypeHierarchyProvider

型別階層提供者介面描述了擴充功能與型別階層功能之間的合約。

方法

透過傳回給定文件和位置所指示的項目來啟動型別階層。此項目將作為進入型別圖表的進入點。當給定位置沒有項目時,提供者應傳回 undefinednull

參數說明
document: TextDocument

叫用命令的文件。

position: Position

叫用命令的位置。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TypeHierarchyItem | TypeHierarchyItem[]>

一個或多個型別階層項目,或是解析為此類項目的 thenable。若無結果,可以傳回 undefinednull 或空陣列來發出信號。

提供項目的所有子型別,例如從給定項目衍生/繼承的所有型別。在圖表術語中,這描述了型別圖表內部的有向和標註邊,例如給定項目是起始節點,而結果是可以到達的節點。

參數說明
item: TypeHierarchyItem

應計算其子型別的階層項目。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TypeHierarchyItem[]>

一組直接子型別或解析為此類子型別的 thenable。若無結果,可以傳回 undefinednull 來發出信號。

提供項目的所有父型別,例如型別衍生/繼承自的所有型別。在圖表術語中,這描述了型別圖表內部的有向和標註邊,例如給定項目是起始節點,而結果是可以到達的節點。

參數說明
item: TypeHierarchyItem

應計算其父型別的階層項目。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<TypeHierarchyItem[]>

一組直接父型別或解析為此類父型別的 thenable。若無結果,可以傳回 undefinednull 來發出信號。

UIKind

可以使用擴充功能的 UI 的可能種類。

列舉成員

從桌面應用程式存取擴充功能。

從網頁瀏覽器存取擴充功能。

Uri

表示磁碟上的檔案或其他資源 (例如未命名的資源) 的通用資源識別碼。

靜態

從檔案系統路徑建立 URI。配置 將會是 file

Uri.parseUri.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 實例。

從其組成部分建立 URI

另請參閱 Uri.toString

參數說明
components: {authority: string, fragment: string, path: string, query: string, scheme: string}

Uri 的組成部分。

傳回說明
Uri

新的 Uri 實例。

建立一個新的 uri,其路徑是將基底 uri 的路徑與提供的路徑區段結合的結果。

  • 注意 1:joinPath 僅影響路徑元件,所有其他元件 (scheme、authority、query 和 fragment) 保持不變。
  • 注意 2:基底 uri 必須具有路徑;否則會擲回錯誤。

路徑區段會以下列方式進行標準化

  • 路徑分隔符號序列 (/\) 會被取代為單一分隔符號
  • 對於 Windows 上的 file-uri,反斜線字元 (\) 會被視為路徑分隔符號
  • .. 區段表示父系區段,. 表示目前區段
  • 路徑有一個永遠保留的根目錄,例如在 Windows 上磁碟機代號是根目錄,因此這是成立的:joinPath(Uri.file('file:///c:/root'), '../../other').fsPath === 'c:/other'
參數說明
base: Uri

一個 uri。必須具有路徑。

...pathSegments: string[]

一或多個路徑片段

傳回說明
Uri

一個新 uri,其路徑與指定的片段結合

從字串建立 URI,例如 http://www.example.com/some/pathfile:///usr/homescheme:with/path

注意,有一陣子接受沒有 scheme 的 uri。這是不正確的,因為所有 uri 都應該具有 scheme。為了避免破壞現有程式碼,已新增選用的 strict 引數。我們強烈建議使用它,例如 Uri.parse('my:uri', true)

另請參閱 Uri.toString

參數說明
value: string

Uri 的字串值。

strict?: boolean

value 為空或無法解析任何 scheme 時擲回錯誤。

傳回說明
Uri

新的 Uri 實例。

建構子

使用 fileparse factory 函式來建立新的 Uri 物件。

參數說明
scheme: string
authority: string
path: string
query: string
fragment: string
傳回說明
Uri

屬性

授權單位是 http://www.example.com/some/path?query#fragment 中的 www.example.com 部分。即第一個雙斜線與下一個斜線之間的部分。

片段是 http://www.example.com/some/path?query#fragment 中的 fragment 部分。

代表此 Uri 對應檔案系統路徑的字串。

將會處理 UNC 路徑,並將 Windows 磁碟機代號標準化為小寫。同時也會使用平台特定的路徑分隔符號。

  • 不會驗證路徑是否有無效字元與語意。
  • 不會檢視此 Uri 的 scheme。
  • 產生的字串應不得用於顯示用途,而是用於磁碟操作,例如 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';

路徑是 http://www.example.com/some/path?query#fragment 中的 /some/path 部分。

查詢是 http://www.example.com/some/path?query#fragment 中的 query 部分。

配置是 http://www.example.com/some/path?query#fragment 中的 http 部分。即第一個冒號之前的部分。

方法

傳回此 Uri 的 JSON 表示法。

參數說明
傳回說明
any

一個物件。

傳回此 Uri 的字串表示法。URI 的表示與標準化取決於 scheme。

  • 產生的字串可安全地與 Uri.parse 一起使用。
  • 產生的字串應不得用於顯示用途。

注意,實作將會進行積極編碼,這通常會導致非預期但並非不正確的結果。例如,冒號會被編碼為 %3A,這在 file-uri 中可能是非預期的。此外,&= 也會被編碼,這對 http-uri 來說可能是非預期的。基於穩定性原因,這已無法再變更。如果您受到過於積極的編碼所苦,您應該使用 skipEncoding 引數:uri.toString(true)

參數說明
skipEncoding?: boolean

不要對結果進行百分比編碼(percentage-encode),預設為 false。請注意,路徑中出現的 #? 字元將一律會被編碼。

傳回說明
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 變更的物件。若要取消設定元件,請使用 null 或空字串。

傳回說明
Uri

反映給定變更的新 Uri。如果變更沒有改變任何內容,將會傳回 this Uri。

UriHandler

Uri 處理常式負責處理全系統的 uri

另請參閱 window.registerUriHandler

方法

處理提供的全系統 Uri

另請參閱 window.registerUriHandler

參數說明
uri: Uri
傳回說明
ProviderResult<void>

ViewBadge

呈現檢視值的徽章

屬性

要在徽章的工具提示中呈現的標籤。

要在徽章中呈現的值。

ViewColumn

表示視窗中編輯器的位置。編輯器可以排列成網格,且每個欄位代表該網格中的一個編輯器位置,依編輯器出現的順序計算。

列舉成員

表示作用中欄位旁邊的欄位之 象徵性 編輯器欄位。這個值可以在開啟編輯器時使用,但編輯器 解析後viewColumn 值將永遠是 OneTwoThree、... 或 undefined,而絕不會是 Beside

表示目前作用中欄位的 象徵性 編輯器欄位。這個值可以在開啟編輯器時使用,但編輯器 解析後viewColumn 值將永遠是 OneTwoThree、... 或 undefined,而絕不會是 Active

第一個編輯器欄位。

第二個編輯器欄位。

第三個編輯器欄位。

第四個編輯器欄位。

第五個編輯器欄位。

第六個編輯器欄位。

第七個編輯器欄位。

第八個編輯器欄位。

第九個編輯器欄位。

Webview

顯示 html 內容,類似於 iframe。

活動

當 webview 內容發佈訊息時觸發。

Webview 內容可以將字串或可進行 JSON 序列化的物件發佈回擴充功能。它們無法發佈 BlobFileImageData 及其他 DOM 特定的物件,因為接收訊息的擴充功能並非在瀏覽器環境中執行。

屬性

webview 資源的內容安全性原則 (CSP) 來源。

這是應該在內容安全性原則規則中使用的來源

`img-src https: ${webview.cspSource} ...;`;

Webview 的 HTML 內容。

這應該是一個完整且有效的 html 文件。變更此屬性會導致 webview 重新載入。

Webview 與一般的擴充功能處理序隔離 (sandboxed),因此與 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 時必須遵循所有標準的網路安全性最佳做法。這包括適當地淨化所有不受信任的輸入 (包括來自工作區的內容) 以及設定內容安全性原則 (CSP)

Webview 的內容設定。

方法

將本機檔案系統的 uri 轉換為可在 webviews 內部使用的 uri。

Webviews 無法直接使用 file: uri 從工作區或本機檔案系統載入資源。asWebviewUri 函式會接受本機的 file: uri,並將其轉換為可在 webview 內部用來載入相同資源的 uri

webview.html = `<img src="${webview.asWebviewUri(
  vscode.Uri.file('/Users/codey/workspace/cat.gif')
)}">`;
參數說明
localResource: Uri
傳回說明
Uri

發佈訊息至 webview 內容。

只有在 webview 處於執行狀態 (也就是可見的,或者是在背景中且設定了 retainContextWhenHidden) 時,才會傳遞訊息。

參數說明
message: any

訊息主體。這必須是字串或其他可進行 JSON 序列化的物件。

對於舊版本的 vscode,如果在 message 中包含了 ArrayBuffer,它將無法正確序列化,也無法被 webview 接收。同樣地,任何 TypedArrays (例如 Uint8Array) 的序列化效率會非常低,也無法在 webview 內部被重新建立為具型別的陣列。

然而,如果您的擴充功能在其 package.jsonengines 欄位中將目標設為 vscode 1.57+,則出現在 message 中的任何 ArrayBuffer 值將能更有效率地傳輸到 webview,並在 webview 內部正確地重新建立。

傳回說明
Thenable<boolean>

一個 promise,會在訊息發佈至 webview 時解析,或在訊息因無法傳遞而被捨棄時解析。

如果訊息已發佈至 webview,則傳回 true。訊息只能發佈至執行中的 webview (亦即可見的 webview,或是設定了 retainContextWhenHidden 的隱藏 webview)。

傳回 true 並不表示訊息實際已被 webview 接收。例如,可能沒有在 webview 內部連結任何訊息監聽器,或者 webview 可能在訊息發佈之後、接收之前就被銷毀了。

如果您想要確認訊息是否確實被接收,您可以嘗試讓您的 webview 發佈確認訊息回您的擴充功能。

WebviewOptions

webview 的內容設定。

屬性

控制是否在 webview 內容中啟用命令 uri。

預設為 false (已停用命令 uri)。

如果您傳入陣列,則只允許該陣列中的命令。

控制是否在 webview 內容中啟用表單。

如果啟用了指令碼,則預設為 true。否則預設為 false。明確將此屬性設定為 true 或 false 將會覆寫預設值。

控制是否在 webview 內容中啟用指令碼。

預設為 false (已停用指令碼)。

webview 可以使用來自 asWebviewUri 的 uri 從中載入本機 (檔案系統) 資源的根路徑

預設為目前工作區的根資料夾加上擴充功能的安裝目錄。

傳入空陣列以拒絕存取任何本機資源。

webview 內部使用的 localhost 連接埠對應。

連接埠對應允許 webviews 透明地定義如何解析 localhost 連接埠。這可用於允許在 webview 內部使用靜態的 localhost 連接埠,該連接埠會被解析為服務正在執行的隨機連接埠。

如果 webview 存取 localhost 內容,我們建議您指定連接埠對應,即使 webviewPortextensionHostPort 連接埠相同亦然。

請注意,連接埠對應僅適用於 httphttps 網址。WebSocket 網址 (例如 ws://:3000) 無法對應至其他連接埠。

WebviewPanel

包含 Webview 的面板。

活動

當面板的檢視狀態改變時觸發。

當面板被處置時觸發。

這可能是因為使用者關閉了面板,或是在其上呼叫了 dispose

嘗試在面板被處置後使用它會擲回例外狀況。

屬性

面板是否為作用中 (被使用者取得焦點)。

顯示於 UI 中的面板圖示。

webview 面板的內容設定。

顯示於 UI 中的面板標題。

面板的編輯器位置。只有在 webview 位於其中一個編輯器檢視欄位中時,才會設定此屬性。

識別 webview 面板的類型,例如 'markdown.preview'

面板是否為可見。

屬於此面板的 Webview

方法

處置 webview 面板。

如果面板正在顯示,這會將其關閉並處置 webview 所擁有的資源。當使用者關閉 webview 面板時,webview 面板也會被處置。這兩種情況都會觸發 onDidDispose 事件。

參數說明
傳回說明
any

在指定的欄位中顯示 webview 面板。

webview 面板一次只能顯示在單一欄位中。如果它已經在顯示中,此方法會將其移動到新的欄位。

參數說明
viewColumn?: ViewColumn

要在其中顯示面板的檢視欄位。如果未定義,則顯示在目前的 WebviewPanel.viewColumn 中。

preserveFocus?: boolean

當為 true 時,webview 將不會取得焦點。

傳回說明
void

WebviewPanelOnDidChangeViewStateEvent

webview 面板的檢視狀態改變時觸發的事件。

屬性

檢視狀態改變的 WebviewPanel

WebviewPanelOptions

webview 面板的內容設定。

屬性

控制是否在面板中啟用尋找小工具 (find widget)。

預設值為 false

控制即使面板不再可見時,webview 面板的內容 (iframe) 是否仍保留著。

通常 webview 面板的 html 內容是在面板變為可見時建立,並在隱藏時銷毀。具有複雜狀態或 UI 的擴充功能可以設定 retainContextWhenHidden,讓編輯器在 webview 移動到背景分頁時仍保留 webview 內容。當使用 retainContextWhenHidden 的 webview 變為隱藏時,其指令碼和其他動態內容將會暫停。當面板再次變為可見時,內容將會自動還原為原本完全相同的狀態。即使啟用了 retainContextWhenHidden,您也無法向隱藏的 webview 傳送訊息。

retainContextWhenHidden 具有很高的記憶體負荷,只有在您的面板內容無法快速儲存並還原時才應使用。

WebviewPanelSerializer<T>

還原當 vscode 關閉時已持續保存的 webview 面板。

webview 持久化有兩種類型

  • 工作階段 (session) 內的持久化。
  • 跨工作階段的持久化 (跨編輯器重新啟動)。

WebviewPanelSerializer 僅適用於第二種情況:跨工作階段持久化 webview。

工作階段內的持久化允許 webview 在變為隱藏時儲存其狀態,並在再次變為可見時從此狀態還原其內容。這完全由 webview 內容本身驅動。若要儲存持久化狀態,請呼叫帶有任何可進行 JSON 序列化物件的 acquireVsCodeApi().setState()。若要再次還原狀態,請呼叫 getState()

// Within the webview
const vscode = acquireVsCodeApi();

// Get existing state
const oldState = vscode.getState() || { value: 0 };

// Update state
setState({ value: oldState.value + 1 });

WebviewPanelSerializer 將此持久化延伸到編輯器重新啟動之後。當編輯器關閉時,它會從所有具有序列化器的 webviews 的 setState 儲存狀態。當重新啟動後 webview 首次變為可見時,此狀態會傳遞至 deserializeWebviewPanel。然後,擴充功能可以從此狀態還原舊的 WebviewPanel

方法

從序列化的 state 還原 webview 面板。

當序列化的 webview 首次變為可見時呼叫。

參數說明
webviewPanel: WebviewPanel

要還原的 webview 面板。序列化器應取得此面板的擁有權。序列化器必須還原 webview 的 .html 並連結所有 webview 事件。

state: T

來自 webview 內容的持久化狀態。

傳回說明
Thenable<void>

表示 webview 已完全還原的 Thenable。

WebviewPortMapping

定義在 webview 內部用於 localhost 的連接埠對應。

屬性

目標連接埠。webviewPort 會被解析為此連接埠。

要在 webview 內部重新對應的 localhost 連接埠。

WebviewView

基於 webview 的檢視。

活動

當檢視的可見性改變時觸發的事件。

觸發可見性變更的動作

  • 檢視被摺疊或展開。
  • 使用者切換至側邊欄或面板中的不同檢視群組。

請注意,使用內容功能表隱藏檢視會改為處置該檢視並觸發 onDidDispose

當檢視被處置時觸發的事件。

當使用者明確隱藏檢視時,檢視會被處置 (當使用者在檢視中按一下滑鼠右鍵並取消勾選 webview 檢視時會發生這種情況)。

嘗試在檢視被處置後使用它會擲回例外狀況。

屬性

要在此 webview 檢視中顯示的徽章。若要移除徽章,請設定為 undefined。

在標題中以較不顯眼方式呈現的人類可讀字串。

顯示於 UI 中的檢視標題。

檢視標題最初取自擴充功能的 package.json 貢獻項目。

識別 webview 檢視的類型,例如 'hexEditor.dataView'

追蹤 webview 目前是否可見。

當檢視位於螢幕上且已展開時即為可見。

該檢視的底層 webview。

方法

在 UI 中顯示檢視。

如果檢視已摺疊,這會將其展開。

參數說明
preserveFocus?: boolean

當為 true 時,檢視將不會取得焦點。

傳回說明
void

WebviewViewProvider

用於建立 WebviewView 項目的提供者。

方法

解析 webview 檢視。

當檢視首次變為可見時會呼叫 resolveWebviewView。這可能發生在檢視首次載入時,或是當使用者隱藏然後再次顯示檢視時。

參數說明
webviewView: WebviewView

要還原的 webview 檢視。提供者應取得此檢視的擁有權。提供者必須設定 webview 的 .html 並連結其感興趣的所有 webview 事件。

context: WebviewViewResolveContext<unknown>

關於正在解析之檢視的其他後設資料。

token: CancellationToken

取消權杖,表示不再需要所提供的檢視。

傳回說明
void | Thenable<void>

選用的 thenable,表示檢視已完全解析。

WebviewViewResolveContext<T>

關於正在解析之 webview 檢視的其他資訊。

屬性

來自 webview 內容的持久化狀態。

為了節省資源,編輯器通常會取消配置不可見的 webview 文件 (iframe 內容)。例如,當使用者摺疊檢視或切換至側邊欄中的另一個頂層活動時,WebviewView 本身保持運作,但 webview 的底層文件會被取消配置。當檢視再次變為可見時,它會被重新建立。

您可以在 WebviewOptions 中設定 [WebviewOptions.retainContextWhenHidden retainContextWhenHidden](#WebviewOptions.retainContextWhenHidden retainContextWhenHidden) 來防止此行為。然而,這會增加資源使用量,應盡可能避免。相反地,您可以使用持久化狀態來儲存 webview 的狀態,以便在需要時快速重新建立。

若要儲存持久化狀態,請在 webview 內呼叫帶有任何可進行 JSON 序列化物件的 acquireVsCodeApi().setState()。若要再次還原狀態,請呼叫 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 傳回) 是透過依下列順序覆寫或合併值來計算的

  1. defaultValue (如果在 package.json 中定義,否則從該值的類型衍生)
  2. globalValue (如果有定義)
  3. workspaceValue (如果有定義)
  4. workspaceFolderValue (如果有定義)
  5. defaultLanguageValue (如果有定義)
  6. globalLanguageValue (如果有定義)
  7. workspaceLanguageValue (如果有定義)
  8. 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 };

注意:工作區與工作區資料夾設定包含 launchtasks 設定。其基本名稱將會成為區段識別碼的一部分。以下程式碼片段顯示如何從 launch.json 擷取所有設定

// launch.json configuration
const config = workspace.getConfiguration(
  'launch',
  vscode.workspace.workspaceFolders[0].uri
);

// retrieve values
const values = config.get('configurations');

如需詳細資訊,請參閱設定

方法

從此設定傳回值。

參數說明
section: string

組態名稱,支援 點號分隔 的名稱。

傳回說明
T

section 所表示的值或 undefined

從此設定傳回值。

參數說明
section: string

組態名稱,支援 點號分隔 的名稱。

defaultValue: T

當找不到任何值時應傳回的值,即為 undefined

傳回說明
T

section 所表示的值或預設值。

檢查此設定是否具有特定的值。

參數說明
section: string

組態名稱,支援 點號分隔 的名稱。

傳回說明
boolean

如果該區段不會被解析為 undefined,則為 true

擷取關於設定項目的所有資訊。設定值通常由預設值、全域或全安裝範圍的值、工作區特有值、資料夾特有值以及語言特有值 (如果 WorkspaceConfiguration 的範圍限定於某個語言) 所組成。

同時提供定義給定設定項目的所有語言識別碼。

注意:設定名稱必須表示設定樹中的葉節點 (例如 editor.fontSizeeditor),否則不會傳回任何結果。

參數說明
section: string

組態名稱,支援 點號分隔 的名稱。

傳回說明
{defaultLanguageValue: T, defaultValue: T, globalLanguageValue: T, globalValue: T, key: string, languageIds: string[], workspaceFolderLanguageValue: T, workspaceFolderValue: T, workspaceLanguageValue: T, workspaceValue: T}

關於設定項目的資訊或 undefined

更新設定值。更新後的設定值會被持久化保存。

可以在下列項目中變更值:

注意:若要移除設定值,請使用 undefined,例如:config.update('somekey', undefined)

  • throws - 更新時發生錯誤
    • 未註冊的設定。
    • 將視窗設定至工作區資料夾
    • 當未開啟工作區時,將設定至工作區或工作區資料夾。
    • 當沒有工作區資料夾設定時,將設定至工作區資料夾。
    • WorkspaceConfiguration 的範圍未限定於資源時,將設定至工作區資料夾。
參數說明
section: string

組態名稱,支援 點號分隔 的名稱。

value: any

新的值。

configurationTarget?: boolean | ConfigurationTarget

設定目標或布林值。- 如果為 true,則更新全域設定。- 如果為 false,則更新工作區設定。- 如果為 undefinednull,若設定為資源專屬,則更新至工作區資料夾設定,否則更新至工作區設定

overrideInLanguage?: boolean

是否在要求的 languageId 範圍內更新值。- 如果為 true,則在要求的 languageId 下更新值。- 如果為 undefined,則僅當該設定是針對該語言定義時,才在要求的 languageId 下更新值。

傳回說明
Thenable<void>

WorkspaceEdit

工作區編輯是針對多個資源和文件的文字與檔案變更集合。

使用 applyEdit 函式來套用工作區編輯。

建構子

參數說明
傳回說明
WorkspaceEdit

屬性

受文字或資源變更影響的資源數量。

方法

建立一般檔案。

參數說明
uri: Uri

新檔案的 Uri。

options?: {contents: Uint8Array | DataTransferFile, ignoreIfExists: boolean, overwrite: boolean}

定義是否應覆寫或忽略現有檔案。當同時設定了 overwriteignoreIfExists 時,以 overwrite 為優先。當兩者皆未設定且檔案已經存在時,編輯將無法成功套用。content 屬性允許設定建立檔案時的初始內容。

metadata?: WorkspaceEditEntryMetadata

該項目的選用後設資料。

傳回說明
void

刪除給定範圍內的文字。

參數說明
uri: Uri

資源識別碼。

range: Range

範圍。

metadata?: WorkspaceEditEntryMetadata

該項目的選用後設資料。

傳回說明
void

刪除檔案或資料夾。

參數說明
uri: Uri

要刪除的檔案之 uri。

options?: {ignoreIfNotExists: boolean, recursive: boolean}
metadata?: WorkspaceEditEntryMetadata

該項目的選用後設資料。

傳回說明
void

取得依資源分組的所有文字編輯。

參數說明
傳回說明
Array<[Uri, TextEdit[]]>

[Uri, TextEdit[]] 屬組的淺層複本。

取得資源的文字編輯。

參數說明
uri: Uri

資源識別碼。

傳回說明
TextEdit[]

文字編輯陣列。

檢查資源的文字編輯是否存在。

參數說明
uri: Uri

資源識別碼。

傳回說明
boolean

如果給定資源會被此編輯觸及,則為 true

在給定位置插入給定的文字。

參數說明
uri: Uri

資源識別碼。

position: Position

位置。

newText: string

一個字串。

metadata?: WorkspaceEditEntryMetadata

該項目的選用後設資料。

傳回說明
void

重新命名檔案或資料夾。

參數說明
oldUri: Uri

現有的檔案。

newUri: Uri

新的位置。

options?: {ignoreIfExists: boolean, overwrite: boolean}

定義是否應覆寫或忽略現有檔案。當同時設定了 overwrite 和 ignoreIfExists 時,以 overwrite 為優先。

metadata?: WorkspaceEditEntryMetadata

該項目的選用後設資料。

傳回說明
void

用給定的文字取代給定資源的指定範圍。

參數說明
uri: Uri

資源識別碼。

range: Range

範圍。

newText: string

一個字串。

metadata?: WorkspaceEditEntryMetadata

該項目的選用後設資料。

傳回說明
void

設定 (並取代) 資源的文字編輯或程式碼片段編輯。

參數說明
uri: Uri

資源識別碼。

edits: ReadonlyArray<TextEdit | SnippetTextEdit>

編輯陣列。

傳回說明
void

設定 (並取代) 帶有後設資料之資源的文字編輯或程式碼片段編輯。

參數說明
uri: Uri

資源識別碼。

edits: ReadonlyArray<[TextEdit | SnippetTextEdit, WorkspaceEditEntryMetadata]>

編輯陣列。

傳回說明
void

設定 (並取代) 資源的筆記本編輯。

參數說明
uri: Uri

資源識別碼。

edits: readonly NotebookEdit[]

編輯陣列。

傳回說明
void

設定 (並取代) 帶有後設資料之資源的筆記本編輯。

參數說明
uri: Uri

資源識別碼。

edits: ReadonlyArray<[NotebookEdit, WorkspaceEditEntryMetadata]>

編輯陣列。

傳回說明
void

WorkspaceEditEntryMetadata

工作區編輯項目的額外資料。支援為項目標記標籤,並將項目標記為需要使用者確認。編輯器會將具有相同標籤的編輯分組為樹狀節點,例如所有標籤為「字串變更」的編輯將會是一個樹狀節點。

屬性

在同一行上以較不顯眼方式呈現的人類可讀字串。

該編輯的圖示路徑或 ThemeIcon

以顯眼方式呈現的人類可讀字串。

指示需要使用者確認的旗標。

WorkspaceEditMetadata

關於工作區編輯的額外資料。

屬性

向編輯器發出訊號,表示此編輯是重構。

WorkspaceFolder

工作區資料夾是編輯器開啟的潛在多個根目錄之一。所有工作區資料夾都是平等的,這表示沒有作用中或主要工作區資料夾的概念。

屬性

此工作區資料夾的序號。

此工作區資料夾的名稱。預設為其 uri-path 的基本名稱。

此工作區資料夾的關聯 uri。

注意:刻意選擇 Uri 類型,以便編輯器的未來版本可以支援未儲存在本機磁碟上的工作區資料夾,例如 ftp://server/workspaces/foo

WorkspaceFolderPickOptions

用於設定工作區資料夾挑選 UI 行為的選項。

屬性

設定為 true 可在焦點移至編輯器的其他部分或其他視窗時保持選擇器開啟。此設定在 iPad 上會被忽略且永遠為 false

要在輸入方塊中顯示為預留位置以引導使用者的選擇性字串。

WorkspaceFoldersChangeEvent

描述 工作區資料夾集合變更的事件。

屬性

新增的工作區資料夾。

移除的工作區資料夾。

WorkspaceSymbolProvider<T>

工作區符號提供者介面定義了擴充功能與符號搜尋功能之間的合約。

方法

在整個專案中搜尋符合給定查詢字串的符號。

query 參數應以放寬的方式來解讀,因為編輯器會對結果套用其自身的突顯與計分機制。一個很好的經驗法則是不區分大小寫進行比對,並簡單檢查 query 的字元是否按順序出現在候選符號中。請勿使用前置詞、子字串或類似的嚴格比對。

為了改善效能,實作者可以實作 resolveWorkspaceSymbol,然後提供具有部分 location 物件且未定義 range 的符號。接著,編輯器將僅針對選取的符號呼叫 resolveWorkspaceSymbol,例如在開啟工作區符號時。

參數說明
query: string

查詢字串,可以是空字串,在此情況下應傳回所有符號。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T[]>

文件反白的陣列,或是解析為此類陣列的 thenable。若無結果,可透過傳回 undefinednull 或空陣列來表示。

給定一個符號,填入其 location。每當在 UI 中選取符號時,就會呼叫此方法。提供者可以實作此方法,並從 provideWorkspaceSymbols 傳回不完整的符號,這通常有助於改善效能。

參數說明
symbol: T

要解析的符號。保證是先前呼叫 provideWorkspaceSymbols 所傳回之物件的執行個體。

token: CancellationToken

取消 token。

傳回說明
ProviderResult<T>

解析後的符號或解析為該符號的 thenable。當未傳回任何結果時,將使用給定的 symbol

API 模式

這些是我們在 VS Code API 中使用的一些常見模式。

Promises

VS Code API 使用 promises 來表示非同步操作。從擴充功能中,可以傳回任何類型的 promise,例如 ES6、WinJS、A+ 等。

API 中透過 Thenable 類型來表達獨立於特定 promise 程式庫之外。Thenable 代表作為最大公因數的 then 方法。

在大多數情況下,promise 的使用是選用的,當 VS Code 呼叫擴充功能時,它可以處理結果類型以及結果類型Thenable。當 promise 的使用是選用時,API 會透過傳回 or 類型來表示這點。

provideNumber(): number | Thenable<number>

取消權杖

通常操作是在會在操作完成前變動的不穩定狀態上啟動的。例如,開始計算 IntelliSense,而使用者繼續輸入,導致該操作的結果過期。

公開此類行為的 API 將會傳入一個 CancellationToken,您可以在其上檢查是否已取消 (isCancellationRequested) 或在發生取消時收到通知 (onCancellationRequested)。取消權杖通常是函式呼叫的最後一個參數且為選用的。

可處置物件

VS Code API 對從 VS Code 取得的資源使用處置模式。這適用於事件監聽、命令、與 UI 互動以及各種語言貢獻項目。

例如,setStatusBarMessage(value: string) 函式會傳回一個 Disposable,在呼叫 dispose 時會將訊息移除。

活動

VS Code API 中的事件是以函式的形式公開的,您可以使用監聽器函式呼叫它們來進行訂閱。對 subscribe 的呼叫會傳回一個 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) 時觸發的事件。

嚴格 Null 檢查

VS Code API 在適當的地方使用 undefinednull TypeScript 類型,以支援嚴格 null 檢查

English 한국어 中文(简体) 中文(繁體)
© . This website operates independently and is not affiliated with or endorsed by Microsoft. All brand names, logos, and trademarks are the property of their respective owners.