擴充功能功能概觀
Visual Studio Code 提供了許多方式讓擴充功能擴展其功能。有時很難找到正確的貢獻點和VS Code API 來使用。本主題將擴充功能功能分為幾個類別。每個類別描述
- 您的擴充功能可以使用的某些功能
- 使用這些功能的更詳細主題連結
- 一些擴充功能想法
但是,我們也對擴充功能施加了限制,以確保 VS Code 的穩定性和效能。例如,擴充功能無法存取 VS Code UI 的 DOM。
通用功能
通用功能是您可以在任何擴充功能中使用的核心功能。
其中一些功能包括
- 註冊命令、組態、快速鍵或關聯式選單項目。
- 儲存工作區或全域資料。
- 顯示通知訊息。
- 使用快速選取來收集使用者輸入。
- 開啟系統檔案選取器,讓使用者選取檔案或資料夾。
- 使用進度 API 來指示長時間執行的操作。
佈景主題
佈景主題控制 VS Code 的外觀,包括編輯器中原始碼的色彩和 VS Code UI 的色彩。如果您曾經想讓您的程式碼看起來像在駭客任務中一樣呈現不同的綠色陰影,或者只是想建立終極的極簡灰階工作區,那麼佈景主題非常適合您。
擴充功能想法
- 變更原始碼的色彩。
- 變更 VS Code UI 的色彩。
- 將現有的 TextMate 佈景主題移植到 VS Code。
- 新增自訂檔案圖示。
宣告式語言功能
宣告式語言功能為程式語言新增基本文字編輯支援,例如括號配對、自動縮排和語法突顯。這是以宣告方式完成,無需編寫任何程式碼。如需更進階的語言功能,例如 IntelliSense 或偵錯,請參閱程式化語言功能。
擴充功能想法
- 將常見的 JavaScript 程式碼片段捆綁到擴充功能中。
- 告訴 VS Code 關於一種新的程式語言。
- 為程式語言新增或取代語法。
- 使用語法注入擴充現有的語法。
- 將現有的 TextMate 語法移植到 VS Code。
程式化語言功能
程式化語言功能新增豐富的程式語言支援,例如浮動提示、跳到定義、診斷錯誤、IntelliSense 和 CodeLens。這些語言功能透過vscode.languages.*
API 公開。擴充功能可以直接使用這些 API,或編寫語言伺服器並使用 VS Code 語言伺服器函式庫將其調整為 VS Code。
雖然我們提供了語言功能及其預期用途的清單,但沒有什麼可以阻止您創造性地使用這些 API。例如,CodeLens 和浮動提示是呈現額外內嵌資訊的好方法,而診斷錯誤可用於突顯拼字或程式碼樣式錯誤。
擴充功能想法
- 新增顯示 API 範例用法的浮動提示。
- 使用診斷報告原始碼中的拼字或 linter 錯誤。
- 為 HTML 註冊新的程式碼格式器。
- 提供豐富、具備上下文意識的 IntelliSense。
- 為語言新增摺疊、麵包屑和外框支援。
工作台擴充功能
工作台擴充功能擴充 VS Code 工作台 UI。將新的右鍵選單動作新增至檔案總管,甚至使用 VS Code 的 TreeView API 建立自訂總管。如果您的擴充功能需要完全自訂的使用者介面,請使用 WebView API,使用標準 HTML、CSS 和 JavaScript 建立您自己的文件預覽或 UI。
擴充功能想法
- 將自訂關聯式選單動作新增至檔案總管。
- 在側邊欄中建立新的互動式 TreeView。
- 定義新的活動列檢視。
- 在狀態列中顯示新資訊。
- 使用
WebView
API 呈現自訂內容。 - 貢獻原始碼控制提供者。
偵錯
您可以透過編寫偵錯工具擴充功能,將 VS Code 的偵錯 UI 連接到特定的偵錯工具或執行階段,來利用 VS Code 的偵錯功能。
擴充功能想法
- 透過貢獻 偵錯配接器實作,將 VS Code 的偵錯 UI 連接到偵錯工具或執行階段。
- 指定偵錯工具擴充功能支援的語言。
- 為偵錯工具使用的偵錯組態屬性提供豐富的 IntelliSense 和浮動提示資訊。
- 提供偵錯組態程式碼片段。
另一方面,VS Code 也提供了一組 偵錯擴充功能 API,您可以使用它們在任何 VS Code 偵錯工具之上實作偵錯相關功能,以自動化使用者的偵錯體驗。
擴充功能想法
- 根據動態建立的偵錯組態啟動偵錯工作階段。
- 追蹤偵錯工作階段的生命週期。
- 以程式化方式建立和管理中斷點。
UX 指南
為了幫助您的擴充功能無縫地融入 VS Code 使用者介面,請參閱UX 指南,您將在其中學習建立擴充功能 UI 的最佳實務,以及遵循慣用的 VS Code 工作流程的慣例。
限制
我們對擴充功能施加了一些限制。以下是限制及其目的。
禁止 DOM 存取
擴充功能無法存取 VS Code UI 的 DOM。您無法編寫將自訂 CSS 應用於 VS Code 或將 HTML 元素新增至 VS Code UI 的擴充功能。
在 VS Code,我們不斷嘗試最佳化底層網頁技術的使用,以提供始終可用、高度回應靈敏的編輯器,我們將隨著這些技術和我們產品的發展,繼續調整我們對 DOM 的使用。為了確保擴充功能不會干擾 VS Code 的穩定性和效能,並且我們可以繼續改進 VS Code 的 DOM 而不會破壞現有的擴充功能,我們在擴充功能主機程序中執行擴充功能,並防止直接存取 DOM。
禁止自訂樣式表
使用者或擴充功能提供的自訂樣式表會與 DOM 結構和類別名稱衝突。由於我們將它們視為內部項目,因此未記錄這些內容。為了發展、重構或改進 VS Code,我們需要自由地對使用者介面進行變更。對 DOM 的任何變更都可能破壞現有的自訂樣式表,導致樣式表提供者感到沮喪,並因樣式表損壞而導致 UI 故障,造成糟糕的使用者體驗。
相反地,VS Code 旨在提供設計完善的擴充功能 API,以支援 UI 自訂。該 API 已記錄在案,隨附工具和範例,並在 VS Code 的所有即將發佈版本中保持穩定。