2021 年 8 月 (版本 1.60)
更新 1.60.1:此更新解決了這些問題。
更新 1.60.2:此更新解決了這些問題。
下載:Windows: x64 Arm64 | Mac: 通用 Intel Silicon | Linux: deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2021 年 8 月發行版本。此版本包含許多我們希望您會喜歡的更新,其中一些重點包括:
- 自動語言偵測 - 當您貼到 VS Code 時,會偵測程式語言。
- 內建快速括號配對著色 - 針對大型檔案的快速括號配對和著色。
- 設定編輯器語法醒目提示 - 針對設定描述程式碼區塊的豐富語法醒目提示。
- 自訂終端機字元圖像彩現 - 更好地顯示方塊繪製和區塊元素字元。
- 在監看式檢視中設定偵錯值 - 在偵錯工作階段期間變更監看式值。
- 筆記本改進 - Markdown 連結導覽、更快彩現大型輸出。
- JavaScript/TypeScript 內嵌提示 - 參數名稱和類型的內嵌提示等等。
- 鎖定編輯器群組預覽 - 透過鎖定編輯器群組來保留偏好的編輯器版面配置。
- Python 擴充功能測試更新 - 改善對測試探索、導覽和狀態的支援。
- Web 擴充功能作者指南 - 了解如何在瀏覽器中更新您的 VS Code 擴充功能。
如果您想在線上閱讀這些版本資訊,請前往 Updates,網址為 code.visualstudio.com。
加入我們的直播,在 9 月 2 日星期四太平洋時間上午 8 點(倫敦下午 4 點)觀看 VS Code 團隊的直播,以觀看此版本新功能的示範,並現場向我們提問。
Insiders:想要盡快試用新功能嗎?您可以下載每晚組建的 Insiders 版本,並在最新更新可用時立即試用。
工作台
自動語言偵測
在上一個版本中,我們針對未命名的檔案推出了一項實驗性功能,該功能會根據內容自動設定檔案的語言模式。自動語言偵測功能使用機器學習來猜測語言,而機器學習模型完全在本機電腦上執行。該模型由開放原始碼 ML 程式庫 Tensorflow.js 和來自 GitHub 使用者 @yoeo 的 Guesslang 的 ML 模型提供支援。
在此版本中,我們預設啟用自動語言偵測,並將偵測範圍擴展到包含沒有副檔名的檔案。在筆記本中,我們提供了一種使用語言選取器輕鬆要求語言偵測的方法。
我們新增此功能的原因是,我們發現一些 VS Code 新使用者不知道如何設定語言模式,也不知道為了獲得 VS Code 的豐富功能集(語言著色和擴充功能建議)而需要這樣做。讓新使用者能夠快速看到 VS Code 可用的語言功能和擴充功能,有助於他們快速上手編輯器。
此外,將未命名的文字編輯器用作草稿紙的進階使用者不再需要明確設定語言模式,我們希望這能簡化他們的工作流程。
以下是自動語言偵測啟用的幾個有趣情境。
從線上抓取範例並將其貼到未命名的編輯器中
佈景主題:Panda Theme
「Pipe into code」語言偵測(展示擴充功能較少的檔案的偵測)
佈景主題:Panda Theme
筆記本語言選取器中的自動偵測選項
佈景主題:Panda Theme
終端機編輯器確認對話方塊
現在,關閉具有執行中子處理序的終端機編輯器時顯示的對話方塊是針對終端機編輯器特定的,並且不再提供「儲存」終端機的方式。
保持編輯器開啟,而不是在還原失敗時關閉
先前,當編輯器在重新載入視窗或重新啟動應用程式後還原失敗時,編輯器會自動關閉,直到找到成功載入的編輯器。這種行為導致令人沮喪的結果,因為精心建立的編輯器版面配置會因為編輯器關閉而消失。
在此版本中,即使先前成功開啟的編輯器還原失敗,也不會關閉。編輯器會指出問題並提供重試操作的選項
設定編輯器中程式碼區塊的語法醒目提示
設定描述中的圍籬程式碼區塊現在會語法醒目提示
在側邊開啟設定編輯器
現在可以透過使用 openToSide
引數設定按鍵繫結,在側邊群組中開啟設定編輯器。
{
"key": "cmd+,",
"command": "workbench.action.openSettings",
"args": {
"openToSide": true
}
}
這也適用於 workbench.action.openSettingsJson
命令。
編輯器
高效能括號配對著色
編輯器現在支援原生括號配對著色
可以透過設定 "editor.bracketPairColorization.enabled": true
來啟用括號配對著色。所有色彩都是可佈景主題化的,最多可以設定六種色彩。
我們實作此功能是為了解決著名的 Bracket Pair Colorizer 擴充功能(由 CoenraadS 開發)的效能問題。
現在,即使在大型文件中進行變更也會立即反映出來
自動完成中的內嵌建議
當顯示自動完成小工具時,內嵌建議現在可以擴展建議預覽。如果自動完成小工具中選取的建議可以由內嵌完成提供者擴展,則擴充功能會以斜體顯示。按一下 Tab
鍵仍然只會接受自動完成建議。再次按下 Tab
鍵將會接受內嵌建議。
此功能需要啟用建議預覽 ("editor.suggest.preview": true
)。
已更新的「查看定義」檢視
我們已為「查看定義」檢視提供視覺更新,使其與其他編輯器檢視對齊
終端機
自訂彩現方塊繪製和區塊元素字元
當 GPU 加速開啟時 (terminal.integrated.gpuAcceleration
),方塊繪製和區塊元素字元現在使用像素完美的自訂字元圖像,而不是使用字型。這表示,例如,即使您在終端機中設定行高或字母間距,方塊也會在沒有間隙的情況下繪製。
以下是終端機應用程式 Zenith 的範例,該範例顯示區段周圍的方塊繪製字元以及圖表的區塊元素
可以透過設定 "terminal.integrated.customGlyphs": false
來停用此功能。
改善某些字型的底線彩現
終端機中底線的彩現方式存在一些歷史問題,其中大部分問題已透過切換至 WebGL 彩現器(預設)來修正。但仍有一個例外,即字型中的底線字元在 Linux 上意外地繪製在儲存格邊界下方。
請注意下排的底線是如何繪製在儲存格下方
雖然這在大多數情況下都運作良好,但在底排上會失敗,因為它繪製在畫布邊界之外。
我們現在透過偵測此類字型並將底線紋理向上移動直到它在儲存格邊界內來解決此問題。此解決方案也適用於畫布彩現器,該彩現器先前不會顯示任何列的底線,因為它會裁剪列以避免重疊。
重新載入視窗後更快速地重新連線
先前,重新載入視窗時,可能需要長達 300 毫秒才能剖析終端機緩衝區的狀態,並且也可能發生損毀。對於多個忙碌的終端機,這可能會很快累積起來!為了修正此問題,還原緩衝區的方法已從記錄 pty 主機上大量最近的原始終端機事件變更為在 pty 主機上維護無周邊終端機前端並將所有資料寫入其中。
此方法帶來多項優點
- 可以微調要還原的回溯量。預設值現在為 100,這是速度和資料量之間的良好平衡。可以使用
terminal.integrated.persistentSessionScrollback
設定來變更回溯量。 - 感謝 xterm.js 的快速剖析器,這應該對 CPU 使用率產生最小的影響,並減少 pty 主機上的整體記憶體使用量。
- 現在會明確還原終端機模式,這可能會在之前遺漏並導致緩衝區損毀。
- 不再需要重播成本高昂的調整大小事件,因為終端機的緩衝區始終與其大小同步。
- 由於還原速度相對較快,因此所有還原都在單一框架中處理。這表示寶貴的 CPU 時間不會浪費在彩現部分還原的終端機和進一步減慢速度上。
此新實作提供的加速量取決於許多因素,例如終端機數量、硬體、終端機緩衝區大小以及終端機中發生的情況。還原完整終端機緩衝區的粗略估計應產生大約 5-10 倍的加速。
我們也在 npm 上發佈了新的 xterm-headless 套件,因此您可以在自己的專案中使用此工作。
偵錯
在監看式檢視中設定值
現在可以使用內容功能表中的設定值動作,在監看式檢視中設定監看式運算式的值。
偵錯擴充功能必須選擇加入此功能,才能使用設定值。目前,JS-debug、C# 和 C++ 擴充功能支援此功能,但我們預期其他偵錯擴充功能也會很快跟進。
次要 UI 改善
-
VS Code 現在也會在變數檢視、監看式檢視和偵錯暫留中偵測值的連結。當變數的值是連結時,這將使其更容易透過按一下連結來追蹤該連結。
-
當啟動另一個已在執行的偵錯工作階段執行個體時,現在有一個強制回應確認對話方塊,以防止意外啟動兩個工作階段。
-
現在,按一下編輯器中中斷點邊界上的已停用中斷點會啟用中斷點,而不是移除它。
-
當偵錯工作階段處於作用中狀態時,執行到行動作現在可在編輯器的中斷點邊界內容功能表中使用
新設定
-
如果您想要避免在偵錯工作階段期間意外關閉視窗,您可以啟用新設定
debug.confirmOnExit
。將此設定為always
時,當您關閉視窗時,系統會提示您確認是否要停止偵錯工作階段。 -
新的設定
debug.console.acceptSuggestionOnEnter
控制是否應在偵錯主控台中接受Enter
上的建議。Enter
也用於評估在偵錯主控台中輸入的任何內容,因此此選項讓使用者可以更好地控制按下Enter
時發生的情況。
JavaScript 偵錯
舊版節點偵錯工具已移除
VS Code 長期以來一直包含內建的 Node.js 偵錯工具,並發佈了個別的 Chrome 偵錯工具。去年,我們針對 Node.js 和 Chrome 推出了一個新的偵錯工具,自 VS Code 1.47 (2020 年 7 月) 以來,它已成為預設值,並具有「選擇退出」選項。
在此版本中,舊版偵錯工具已從產品中移除,並在 Marketplace 上標示為已淘汰。如果您是未選擇退出新的 JavaScript 偵錯工具的絕大多數 VS Code 使用者之一,則對您而言不會有任何變更。
如果您需要舊版偵錯工具(例如,偵錯 Node.js 6 程式),您可以安裝 [已淘汰] Node Debug 或 [已淘汰] Debugger for Chrome 擴充功能,並分別使用 legacy-node
或 legacy-chrome
啟動類型。
改善非同步函式和 Node.js 內部元件中的逐步執行
您可以設定偵錯工具的 skipFiles 以避免逐步執行特定程式碼,包括 Node.js 內部元件,這通常在逐步執行非同步函式時會遇到。
但是,Node.js 在處理 「黑箱」 指令碼時並不總是表現出正確的行為,因此在這次反覆運算中,我們在偵錯工具中引入了「合成黑箱」。這應顯著提高處理 Node.js 程式時的可靠性,尤其是在逐步執行非同步函式時。
在我們的下一個版本中,我們計劃預設讓偵錯工具跳過 Node.js 內部元件。
安裝程式
預設註冊 VS Code 以支援的檔案類型
Windows 11 引入了 新的檔案總管內容功能表,該功能表將開啟方式放在功能表頂端,並與開啟分組。此更新讓尋找所有可用的編輯器和變更預設值變得更容易。
遵循新的最佳做法,VS Code 的核取方塊將 VS Code 註冊為相關聯檔案類型的編輯器現在將在 Windows 安裝期間預設核取。我們也檢閱了相關聯檔案類型的清單,並將其擴展以包含更多經常開啟的檔案類型。
Windows 11 上的 Microsoft Store
隨著即將推出的 Windows 11,新的 Microsoft Store 可以支援更多傳統應用程式類型和安裝程式。如果您已經透過 Windows 測試人員計畫測試 Windows 11,您現在可以透過在商店中搜尋 VS Code 來安裝最新版本的 VS Code。安裝完成後,您將擁有與從我們的網站以使用者安裝方式提供的 VS Code 相同的版本,並且更新將在應用程式內處理,就像今天一樣。
筆記本
Markdown 儲存格之間的連結
筆記本現在支援 Markdown 儲存格之間的連結
您可以使用下列方式建立 Markdown 儲存格中標題的連結
[Link text](#_header-slug)
header-slug
是標題的小寫文字,其中任何空格或特殊字元都會替換為 -
。上方範例中的連結將會前往標題 # Header Slug
。
處理大型輸出時的效能改善
我們已最佳化我們在筆記本中處理大型輸出的方式,以顯著提高效能。
在幕後,VS Code 使用 Uint8Arrays 將筆記本輸出儲存為二進位資料。先前,在擴充功能主機處理序和彩現器處理序之間傳輸輸出資料時,資料會先轉換為數字值陣列,然後序列化為 JSON。
若要了解為何這對效能不利,請考慮輸出文字的筆記本:Hello Code!
。這會在內部儲存為 Uint8Array
new Uint8Array([72, 101, 108, 108, 111, 32, 67, 111, 100, 101, 33]);
該資料長度為 11 個位元組。舊的實作方式接著會將二進位資料轉換為 JSON 字串
'[72,101,108,108,111,32,67,111,100,101,33]';
此字串長度為 41 個位元組,是原始資料大小的 3.5 倍以上!這是要傳輸的額外位元組,而接收者現在必須將該字串剖析為 JSON,以將其轉換回 Uint8Array
。對於大小為數十 MB 的筆記本輸出,此剖析可能會成為嚴重的瓶頸。
使用新的實作方式,筆記本輸出在傳輸時會保持為二進位資料。您可以在 提取要求中閱讀有關如何實作此功能的詳細資訊。
此修正顯著改善了載入儲存大型輸出的筆記本,以及改善筆記本在執行期間產生大型輸出時的效能。
onNotebook 啟動事件改善
當筆記本在工作區中開啟時,VS Code 將發出 onNotebook:{type}
和 onNotebook:*
事件,以便筆記本擴充功能可以在接聽這些事件時啟動。先前,VS Code 會等待接聽這兩個事件的所有擴充功能,然後再開啟檔案,但現在它只會等待特定筆記本的序列化程式註冊。例如,當使用者在新的工作區中開啟 ipynb
檔案時,內建的 ipynb
序列化程式擴充功能將會啟動,並且檔案會立即開啟。同時,VS Code 會向所有其他擴充功能(例如,Jupyter、.NET Interactive 或 Julia 擴充功能)發出啟動事件。其他擴充功能的啟動不會減慢檔案操作速度,以確保快速開啟筆記本。
筆記本版面配置自訂
您現在可以直接透過編輯器工具列自訂筆記本版面配置設定。
語言功能
TypeScript 4.4
VS Code 現在包含 TypeScript 4.4。此更新帶來對許多新語言功能和改善的支援,包括 靜態區塊 和 新的嚴格性選項。它也新增了新的工具改善並修正了一些重要的錯誤。
您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.4 的所有資訊。
JavaScript 和 TypeScript 的內嵌提示
TypeScript 4.4 中最重要的新工具功能是內嵌提示支援。內嵌提示會將其他內嵌資訊新增至原始碼,以協助您了解程式碼的作用。
例如,參數名稱內嵌提示會顯示函式呼叫中參數的名稱
這可以協助您一目了然地了解每個引數的意義,這對於採用布林值旗標或具有容易混淆的參數的函式特別有用。
若要啟用參數名稱提示,請設定 javascript.inlayHints.parameterNames.enabled
或 typescript.inlayHints.parameterNames.enabled
設定。有三個可能的值
none
- 停用參數內嵌提示。literals
- 僅顯示常值 (字串、數字、布林值) 的內嵌提示。all
- 顯示所有引數的內嵌提示。
此外,VS Code 也提供內嵌提示,以顯示 JavaScript 和 TypeScript 程式碼中的隱含類型資訊。
變數類型內嵌提示會顯示沒有明確類型註解的變數類型。
設定 - javascript.inlayHints.variableTypes.enabled
和 typescript.inlayHints.variableTypes.enabled
屬性類型內嵌提示會顯示沒有明確類型註解的類別屬性類型。
設定 - javascript.inlayHints.propertyDeclarationTypes.enabled
和 typescript.inlayHints.propertyDeclarationTypes.enabled
參數類型提示會顯示隱含類型參數的類型。
設定 - javascript.inlayHints.parameterTypes.enabled
和 typescript.inlayHints.parameterTypes.enabled
傳回類型內嵌提示會顯示沒有明確類型註解的函式傳回類型。
設定 - javascript.inlayHints.functionLikeReturnTypes.enabled
和 typescript.inlayHints.functionLikeReturnTypes.enabled
我們計劃繼續改進內嵌提示,因此請務必分享您對新功能的任何意見反應!
JavaScript 檔案中的拼字建議
VS Code 現在可協助您在 JavaScript 檔案中捕捉簡單的拼字錯誤
只有在高度確信它們是實際錯誤,而不僅僅是我們的 IntelliSense 引擎無法理解的程式碼模式時,才會顯示拼字建議。您可以在新增此功能的 PR 中閱讀有關此功能的詳細資訊。
您也可以透過設定停用這些建議
"javascript.suggestionActions.enabled": false
如需更全面的檢查,請嘗試在您的 JavaScript 程式碼中啟用完整語意檢查。這不僅可以協助捕捉更多錯誤,還可以啟用多個有用的快速修正。
typescript.tsserver.useSyntaxServer
新的 typescript.tsserver.useSyntaxServer
設定可讓您控制 TypeScript 是否啟動專用伺服器來快速處理語法相關操作,例如計算程式碼摺疊。它取代了現在已淘汰的 typescript.tsserver.useSeparateSyntaxServer
設定。
可能的值為
auto
- 產生完整伺服器和專用於語法操作的輕量型伺服器。語法伺服器用於加速語法操作,例如程式碼摺疊,並在專案載入時提供 IntelliSense。(預設)always
- 使用輕量型語法伺服器來處理所有 IntelliSense 操作。此語法伺服器只能為已開啟的檔案提供 IntelliSense。never
- 不使用專用語法伺服器。使用單一伺服器來處理所有 IntelliSense 操作。
預覽功能
鎖定的編輯器群組
隨著編輯器區域中的終端機的引入,我們收到使用者的報告,他們對終端機編輯器太容易或意外地被檔案編輯器取代感到沮喪。依預設,檔案將始終在作用中的編輯器群組中開啟,因此,即使終端機處於作用中狀態,檔案也會開啟並隱藏終端機。
鎖定的編輯器群組為解決此問題提供了一種新方法,不僅適用於終端機,也適用於任何編輯器。如果您開啟了多個編輯器群組,您現在可以鎖定它,無論是使用新的命令之一還是從 "..." 溢位功能表中鎖定。
鎖定的群組與未鎖定的群組的行為不同
- 除非使用者明確移動到鎖定的群組(例如,透過拖放),否則新的編輯器不會在鎖定的群組中開啟。
- 如果編輯器略過鎖定的群組以開啟,則它將在最近使用的未鎖定群組中開啟,或在鎖定的群組旁邊建立一個新群組。
- 編輯器群組的鎖定狀態會持續存在,並在重新啟動後還原。
- 您可以鎖定空的群組,以實現更穩定的編輯器版面配置。
- 鎖定的群組由動作工具列(右上角)中的鎖定圖示指示。
請參閱以下示範,了解鎖定的編輯器群組在動作中的行為。即使 Markdown 預覽處於作用中狀態,新檔案也會在左側編輯器群組中開啟
為此功能新增的命令為
workbench.action.experimentalLockEditorGroup
workbench.action.experimentalUnlockEditorGroup
workbench.action.experimentalToggleEditorGroupLock
新的內容金鑰 activeEditorGroupLocked
可用於根據群組的鎖定狀態有條件地繫結命令。
注意:相關聯的設定和命令是實驗性的,直到我們完成鎖定編輯器群組的設計為止。我們希望您對此新功能提供意見反應,因此請隨時報告問題。
自動鎖定編輯器群組
在新的鎖定編輯器群組概念的基礎上,新的 workbench.editor.experimentalAutoLockGroups
設定可讓您選取應在開啟時自動鎖定群組的編輯器。這僅適用於當編輯器是第一個在其他方面為空或新的群組中開啟的編輯器時。
終端機預設設定為導致新群組自動鎖定。在下面的短片中,即使終端機處於作用中狀態,從終端機選取的檔案也會在左側編輯器群組中開啟
如果您希望 Markdown 預覽自動鎖定群組,您可以將 mainThreadWebview-markdown.preview: true
新增至 experimentalAutoLockGroups
設定。
在下一個里程碑中,我們將致力於改善設定 UX,以便能夠選取編輯器,而無需知道其識別碼。相關聯的設定和命令是實驗性的,直到我們完成鎖定編輯器群組的設計為止。我們再次希望您提供意見反應。
「依檔案名稱搜尋」快速選取中的引號支援
在此反覆運算中,我們新增了透過將搜尋字串放在引號中,從「依檔案名稱搜尋」快速選取 (⌘P (Windows、Linux Ctrl+P)) 中排除模糊搜尋結果的功能。
此功能發光發熱的情境
當查詢只有幾個字元時
如果您想要減少結果的「雜亂」
我們喜歡這種引號體驗,並且感覺很直覺,因為大多數搜尋引擎都使用類似的機制,但我們希望您提供意見反應。我們也在考慮 問題 #131431 中討論的其他方法。
擴充功能貢獻
Jupyter
逐行執行
VS Code 現在支援 Jupyter 筆記本中的逐行執行功能。這是一種簡單的偵錯模式,可讓您逐行執行儲存格的程式碼。若要試用,請確保您已安裝 ipykernel
v6+ 作為選取的核心,然後選取逐行執行按鈕。
偵錯
也提供使用 VS Code 的完整偵錯功能偵錯 Jupyter 筆記本的實驗性支援。若要試用,請確保您已安裝 ipykernel
v6+ 作為選取的核心,設定 "jupyter.experimental.debugging": true
,設定中斷點,然後選取偵錯儲存格命令。
Jupyter 按鍵對應
我們將 Jupyter 傳統按鍵繫結提取到個別的 Jupyter Keymap 擴充功能,如果您偏好使用 Marketplace 中的另一組 筆記本按鍵繫結,您可以停用它。
Python
已修改的測試介面
感謝新的測試 API,Python 擴充功能已修改其測試功能。您現在可以享受更穩定的測試探索、導覽和狀態彩現體驗,以及搜尋測試、執行選取的測試、重新執行上次執行的測試等等新功能!
從編輯器在終端機中執行和偵錯 Python 檔案
您現在可以使用 Python 擴充功能,直接從編輯器在終端機中執行和偵錯您的 Python 檔案。
GitHub Pull Requests and Issues
在 GitHub Pull Requests and Issues 擴充功能中展開和摺疊所有註解的備受要求功能現在已推出。所有註解都可以透過命令 GitHub Pull Requests: 展開所有註解和 GitHub Pull Requests: 摺疊所有註解來展開和摺疊。還有一個設定 githubPullRequests.commentExpandState
可控制展開摺疊狀態。最後,您也可以從註解 UI 內摺疊所有註解
若要了解所有新功能和更新,您可以查看擴充功能 0.30.0 版本的完整變更記錄。
擴充功能撰寫
Web 擴充功能
當 VS Code 在瀏覽器中執行時,擴充功能會載入到也在瀏覽器中執行的擴充功能主機中。「Web 擴充功能主機」受瀏覽器限制,擴充功能無法存取本機檔案系統或平台功能。為了協助擴充功能作者更新其擴充功能以支援在 Web 版 VS Code 中執行,現在有一個 Web 擴充功能撰寫指南。在這裡,您將了解哪些類型的擴充功能在 Web 上運作最佳、如何存取 VS Code API 以及如何使用虛擬檔案系統。
除了 Web 擴充功能指南外,yo code
擴充功能產生器現在有一個選項可建構 Web 擴充功能,並且還包括對 @vscode/test-web
模組的支援,以從命令列測試 Web 擴充功能。
如果您尚未看過 Visual Studio Code for the Web 的實際運作情況,您可以按下 GitHub 存放庫的 <> 程式碼索引標籤中的 '.'
(句點鍵),您將啟動 Web 版 VS Code 以瀏覽和編輯原始碼。
命令的簡短標題
commands 貢獻點允許擴充功能為命令定義 UI 屬性,例如標題、類別或圖示。另一方面,功能表是顯示命令的「位置」,而功能表可能會呈現部分或所有命令的 UI 屬性。例如,某些功能表僅彩現圖示,而其他功能表則彩現標題或類別加上標題。作為擴充功能作者,很難想出一個在全球和本機功能表中同樣運作良好的命令標題。例如,命令面板可以顯示比內容功能表更多的文字。
為了允許不同的標題,有一個新的 shortTitle
屬性。它允許命令提供一個較短的標題,該標題可以根據 UI 良好地運作,例如命令面板中的 筆記本:清除所有儲存格輸出 和筆記本工具列中較短的 清除所有。
應用程式主機已新增至環境命名空間
.env
命名空間現在包含應用程式主機 appHost
屬性。appHost
允許擴充功能開發人員判斷 VS Code 託管的環境。範例包括桌面、GitHub Codespaces、github.dev 和 vscode.dev。
RendererContext.workspace.isTrusted 用於筆記本彩現器
傳遞至 筆記本彩現器的內容物件上的新 workspace.isTrusted
屬性可讓擴充功能作者檢查目前的工作區是否受信任
import type { ActivationFunction } from 'vscode-notebook-renderer';
export const activate: ActivationFunction<void> = (ctx) => {
return {
renderOutputItem: (outputInfo, element) => {
if (ctx.workspace.isTrusted) {
// Render normally. Still take precautions to avoid script injection and
// only enable as much functionality as your renderer needs.
} else {
// Only render safe content. Always make sure it has been properly sanitized.
}
}
}
};
平台特定擴充功能
我們在平台專用擴充功能方面取得了進展,這讓擴充功能作者可以為不同的平台(Windows、macOS、Linux)建立個別的擴充功能版本。我們一直與 Marketplace 團隊合作開發此功能,並已敲定解決方案。在這個里程碑中,我們開始實作,並計劃很快將其提供給擴充功能作者。您可以追蹤issue #23251以取得更新並提供意見反應。
已更新的 codicon
以下新圖示已新增至我們的 codicon 程式庫
folder-library
run-errors
Walkthrough 貢獻的更新
使用可主題化的 SVG 作為 Walkthrough 步驟媒體
Walkthrough 步驟現在可以在其 media
物件中指定 svg
屬性。除了更好的縮放支援外,SVG 還能存取佈景主題符號,讓媒體在視覺上更融入工作台的其餘部分。請參閱我們的 佈景主題化 webview 內容指南 以取得更多資訊。
宣告 Walkthrough 感興趣的檔案
Walkthrough 現在支援選用的 featuredFor
參數,其中列出給定 walkthrough 適用的檔案類型。當在工作區資料夾中找到這些檔案時,walkthrough 將以更高的視覺優先順序呈現。
工作預設群組 API
TaskGroup
的 isDefault
屬性已最終確定。擴充功能現在可以擷取工作,然後讀取工作 group
的 isDefault
屬性,以判斷工作是否為該群組的預設工作。
偵錯工具擴充功能撰寫
「DebugSessionOptions」上的新「managedByParent」屬性
已將新的旗標 managedByParent
新增至 DebugSessionOptions
類型。當傳遞至 startDebugging
API 時,它會控制是否將 disconnect
和 restart
等生命週期請求傳送至新建立的工作階段或其父工作階段。
偵錯配接器協定的「showUser」屬性
當 launch
請求失敗時,VS Code 現在將遵守偵錯配接器回應中傳送的 showUser
屬性。如果提供 showUser
屬性且為 false,VS Code 將不會顯示包含錯誤的強制回應對話方塊。如果 showUser
屬性遺失或為 true
,VS Code 的行為將與之前相同,並將顯示錯誤對話方塊。
對於其他偵錯配接器協定 (DAP) 請求,則沒有變更。如果 showUser
為 true
,則會使用通知顯示錯誤。否則,不會向使用者顯示任何內容。
VS Code 不再為「noDebug」偵錯工作階段註冊中斷點
當 DAP 的 launch
請求的 noDebug
屬性設定為 true
時,VS Code 將不再呼叫任何中斷點註冊 DAP 請求 (setBreakpoints
、setExceptionBreakpoints
、setDataBreakpoints
、setFunctionBreakpoints
、setInstructionBreakpoints
)。
VS Code 現在支援 DAP「setExpression」請求
如果偵錯配接器實作 setExpression
請求 (supportsSetExpression
功能為 true
),VS Code 將在兩種情況下使用 setExpression
- 在 [變數] 和 [監看式] 檢視中,用於變更變數的值,如果偵錯配接器不支援
setVariable
請求 (supportsSetVariable
功能遺失或為false
),且變數具有evaluateName
屬性且可編輯 (VariablePresentationHint
中的readOnly
屬性不是true
)。 - 在 [監看式] 檢視中,用於變更可指派的運算式的值,如果監看式運算式可編輯 (
VariablePresentationHint
中的readOnly
屬性不是true
)。
在 DAP 錯誤訊息中隱藏「開啟 launch.json」按鈕
偵錯配接器協定允許 Message 的 ErrorResponse 傳回 url
,其中可以找到關於訊息的其他資訊,以及 urlLabel
,它會以 UI 的形式呈現給使用者以開啟 URL。當 VS Code 在強制回應對話方塊中向使用者顯示訊息時,會顯示一個按鈕,其標題為 urlLabel
。在此版本之前,VS Code 也會新增一個標題為開啟 launch.json 的按鈕。如果訊息的 url
使用 'command' 方案,例如 command:myExtension.fixError
,則不再新增該按鈕。
偵錯介面協定
已發佈新的「memory」事件
memory
事件已完成,現在可在 偵錯配接器協定 的 1.49 版和對應的 npm 模組中使用。如果偵錯配接器已收到 initialize
請求的 supportsMemoryEvent
功能的值 true
,則偵錯配接器可以發出 memory
事件,以指示某些記憶體範圍已更新。
建議的擴充功能 API
每個里程碑都附帶新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。這是您試用建議 API 必須執行的操作
- 您必須使用 Insiders 版本,因為建議 API 經常變更。
- 您必須在擴充功能的
package.json
檔案中包含此行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到專案的原始碼位置。
您無法發佈使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,我們絕不希望破壞現有的擴充功能。
類型階層支援
有一個 TypeHierarchyProvider 的 API 建議,允許擴充功能為符號提供父類型和子類型。API 已準備好試用,如果您發現問題或有建議,可以在 VS Code 儲存庫 中輸入它們。
在任何地方建立終端機
建議的終端機位置 API 允許在面板和編輯器區域中建立終端機分割。
查詢和事件,用於判斷終端機是否已「互動」
一個新的建議 API,用於 Terminal.state 和 window.onDidChangeTerminalState,允許查詢終端機是否已「互動」。互動表示資料已傳送至程序,並且可能由於各種原因而發生,主要原因是鍵盤輸入。
QuickPickItems 中的按鈕
有一個建議 API,用於在 QuickPickItem 中新增和處理按鈕。我們希望這能讓擴充功能提供與 Quick Pick 更豐富的使用者互動。
試用看看,並告訴我們您的想法。需要注意的一件事是,目前 Quick Pick 的捲動位置存在已知問題,我們認為這個新的建議 API 會放大這個問題。我們正在努力尋找正確的 API 組合來解決這個問題。請透過參與該 issue 來告訴我們您的想法。
測試標籤
測試標籤是一個建議 API,它提供了一種組織測試的方法,以及指示哪些測試可執行。
非錯誤測試輸出
測試 API 支援測試失敗訊息,但先前沒有方法將非錯誤輸出與特定測試案例關聯。我們正在評估一種方法來做到這一點,方法是將選用的 TestItem
和 location
傳遞給 TestRun.appendOutput
方法。如果您有任何意見,請在 issue #129201 上留下意見反應!
內嵌完成提供者:與自動完成小工具互動
InlineCompletionContext
有一個新的欄位 selectedCompletionInfo
,其中包含自動完成小工具中目前選取建議的詳細資訊。此外,每當使用者變更自動完成小工具中選取的項目時,都會要求 InlineCompletionItemProvider
提供內嵌建議。如果內嵌建議擴充了選取的建議項目,則擴充功能會以斜體顯示。
工程
修正對 RHEL7 和 Centos7 發行版的支援
在 VS Code 1.53 版中,我們更新了我們的組建映像以使用較新的 Electron 版本,導致原生模組的 CXXABI 需求發生變更,這在某些發行版中破壞了我們的 rpm 套件 issue #115784。透過更新到 Electron v13,我們現在能夠使用與執行階段相同的編譯器工具鏈來組建我們的原生模組,特別是我們現在使用 Clang 並靜態連結來自執行階段的 libcxx。這讓我們能夠繞過 CXXABI 需求,而二進位大小僅小幅增加約 10 MB,並恢復對這些發行版的支援。感謝您的耐心和在 Insiders 版本上進行測試的協助。
文件
VS Code 中的 Julia
有一個新的 VS Code 中的 Julia 主題描述 Julia 程式設計語言 在 VS Code 中透過 Julia 擴充功能 提供的支援。Julia 擴充功能包含豐富的語言功能,例如程式碼完成、程式碼導覽和偵錯,以及整合式 REPL 和繪圖導覽器。
Azure Machine Learning
您可以閱讀 VS Code 中的 Azure Machine Learning 概觀,以了解 Azure Machine Learning 擴充功能 如何讓您直接從 VS Code 使用 Azure Machine Learning 雲端式 機器學習模型。
重大修正
- 82489:使用 "AltGr" 鍵時鍵盤輸入不正確
- 115945:當工具列停靠時,偵錯工具列貢獻的命令遺失
- 118196:重新啟動偵錯工作階段時,args-list 中的元素不會更新
- 121201:在 iPad 上選單選取未正確呈現
- 124128:擴充功能開發視窗在偵錯停止時未關閉
- 125259:偵錯在啟動前未儲存 launch.json
- 126102:SkipFiles 仍會暫時開啟要略過的檔案,導致速度變慢
- 126911:擴充功能偵錯:停止偵錯工作階段不會關閉視窗
- 128484:debug: 在啟動失敗時停用強制回應對話方塊的選項
- 129019:以關閉狀態啟動的 treeview 需要另一次重新整理 (或重新開啟) 才能顯示內容
- 129469:設定編輯器輸入方塊可以更大
- 129645:在設定 UI 中啟用程式碼區塊語法醒目提示
- 129844:markdownEnumDescriptions 不會移除設定 UI 中的 markdown `##`,也不會移除 settings.json 中的 ##
- 130265:Node 偵錯工具不會在未處理的 Promise 拒絕時中斷
感謝
最後但同樣重要的是,衷心感謝以下人士在本月為 VS Code 做出貢獻
對我們的 issue 追蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- CodeCrazy-ywt (@CodeCrazy-ywt)
- Sandeep Rajakrishnan (@san-coding)
- ArturoDent (@ArturoDent)
對 vscode
的貢獻
- @afonsomatos (Afonso Matos):修正陰影 DOM 中拖放功能無法運作的問題 PR #131392
- @akosyakov (Anton Kosyakov):為開啟的索引標籤使用個別的事件迴圈 PR #126341
- @AkatQuas (Akat)
- 修正註解中的一些錯字,重新命名一些方法 PR #130470
- fix(storage): 修正方法錯字 PR #131051
- @chrisyeh96 (Christopher Yeh):在轉譯呼叫之間持續保存 KaTeX 巨集 PR #129747
- @Chigusa0w0 (Chigusa0w0):修正使用觸控板低速向下捲動時的奇怪行為 PR #131231
- @erha19 (Dan):fix: 偵錯主控台變數輸出問題 PR #127132
- @Eskibear (Yan Zhang):peek type hierarchy PR #130922
- @gjsjohnmurray (John Murray)
- 修正 #126842 在重新整理成功時清除 Explorer 根資料夾錯誤指示器 PR #126843
- 修正 #129296 在瀏覽簡單檔案對話方塊時保留授權、查詢、片段 PR #129310
- 如果 DA 提供了命令,則在錯誤對話方塊中隱藏「開啟 launch.json」命令 (#_124020) PR #130754
- 改善 workbench.editor.experimentalAutoLockGroups 文字 PR #131157
- 修正 #131743 僅在新增 'Run to Line' 時新增選單分隔符號 PR #131744
- @jeanp413 (Jean Pierre)
- 修正重新載入後分割第一個終端機時,有時會非常窄的問題 PR #129668
- 修正 cmd+click 無效連結以在 markdown 中建立新檔案時無法運作的問題 PR #130815
- 修正筆記本 UI 顯示在終端機之上的問題 PR #130854
- 修正參數提示應使用連結 hover 顏色 PR #130963
- 修正建議詳細資訊應使用連結 hover 顏色 PR #130966
- @jihoon-ernesto:新增終端機按鍵繫結 cmd+. → ctrl+c 以符合 macOS 終端機 PR #131025
- @jsjoeio (Joe Previte):feat: 新增具有名稱中 port 的 asWebviewUri 測試 PR #131447
- @Kingwl (Wenlu Wang):修正具有 inlay hint 的摺疊範圍 PR #130399
- @lezgomatt (Matthew Go):修正自訂選取方塊 hover 樣式 PR #129970
- @nickofolas:修正狀態列中的文法問題 PR #131271
- @nrayburn-tech (Nicholas Rayburn):修正 #124276 批次 Markdown 檔案請求 PR #124545
- @remcohaszing (Remco Haszing):定義 window.MonacoEnvironment PR #128949
- @sdissegna-maystreet:[#131407] 修正瀏覽器中的 service worker 版本檢查 PR #131408
- @spahnke (Sebastian Pahnke):[獨立編輯器] 新增在註冊
CodeActionProvider
時列出提供的程式碼動作種類的支援 PR #131254 - @spasche (Sylvain Pasche):從基礎複製 URI 授權以分割終端機,修正 #127811 PR #130291
- @ssigwart (Stephen Sigwart):更新選取以符合括號方向 PR #128931
- @suzmue (Suzy Mueller):依回應順序排序執行緒 PR #128686
- @threeal (Alfi Maulana):feat: 新增 .tpp 和 .txx 作為 c++ 擴充功能 PR #130101
- @tony-xia (Tony Xia)
- 更新方法名稱 PR #129224
- 更新變數名稱 PR #129226
- @vagusX (vagusX):fix: 移除 vscode.FileDecoration api 中無用的 priority 欄位 PR #129501
- @xgdgsc:按一下已停用的中斷點以啟用而不是移除 #125904 PR #125931
- @xisui-MSFT
- 修正在反組譯碼檢視中焦點堆疊框架的色彩 PR #129721
- 將事件接聽程式移至反組譯碼檢視中的 renderTemplate PR #129734
- 改善反組譯碼檢視中的協助工具 PR #129788
- 在反組譯碼不可用時新增特殊項目 PR #129797
- @yannickowow (Yanis HAMITI):[debugService #113742] 偵錯工作階段結束時的變數顯示 PR #131016
- @yash112-lang (Yash Singhal):修正垂直對齊 PR #130327
對 vscode-generator-code
的貢獻
- @octref (Pine):新增本機開發提示 PR #296
對 vscode-js-debug
的貢獻
- @Manish-Giri (Manish Giri):更新 userDataDir 選項文件 PR #1078
對 vscode-pull-request-github
的貢獻
- @joshuaobrien (Joshua O'Brien)
- @RishabhKothaari (Rishab):讓檢視知道 PR 的檢閱狀態 PR #1833
對 debug-adapter-protocol
的貢獻
- @robertoaloi (Roberto Aloi):新增 Erlang 配接器 PR #202
對 language-server-protocol
的貢獻
- @okuramasafumi (OKURA Masafumi):最新版本現在為 3.16 PR #1321
- @OliverKovacs (Oliver Kovacs):修正錯字 PR #1332
- @vintagedave (David Millington):調整依語言的字母排序 PR #1323
- @Wilfred (Wilfred Hughes):修正 honorsChangeAnnotations 描述中的錯字 PR #1322
對 monaco-editor
的貢獻
- @SpaceComet:網站 playground 的小更新 PR #2616
- @thien-do (Thien Do):將搭配 Vite 的用法新增至 ESM Integrate 文件 PR #2632
對 monaco-html
的貢獻
- @Pranomvignesh (Pranom Vignesh):fix(workerManager.js) : 新增檢查 worker 是否存在 PR #15
對 monaco-languages
的貢獻
- @ladyrick (LadyRick):fix(cpp): 修正 cpp 語言整數後綴 PR #156