參加你附近的 ,瞭解 VS Code 中的 AI 輔助開發。

2022 年 2 月 (版本 1.65)

更新 1.65.1:此更新解決了這些安全問題

更新 1.65.2:此更新解決了這些問題

下載:Windows:x64 Arm64 | Mac:通用 Intel Apple 晶片 | Linux:deb rpm tarball Arm snap


歡迎使用 Visual Studio Code 2022 年 2 月版。

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

工作臺

新的編輯器歷史導航

VS Code 中的編輯器歷史導航功能驅動了一些常用命令,例如後退前進。隨著時間的推移,積累了大量功能請求,以改進此功能並增加更多功能。此里程碑的編輯器歷史導航已從頭開始重寫,以解決其中大部分請求。

編輯器組感知導航

在編輯器歷史記錄中導航時,現在會考慮編輯器組。在編輯器歷史記錄中來回導航將啟用並聚焦編輯器組中的編輯器,就像它們以前一樣。當編輯器組被移除時,所有相關的歷史記錄條目都會被丟棄。

在下面的短影片中,第一次後退將游標放在新的編輯器組中,然後第二次後退導航返回到原始編輯器組。

主題:GitHub Light

將導航範圍限定到編輯器組或編輯器的新設定

新設定workbench.editor.navigationScope可以將編輯器歷史記錄導航範圍限定為僅活動編輯器組,甚至編輯器。支援的值有

  • default:編輯器導航適用於所有開啟的編輯器組和編輯器。
  • editorGroup:編輯器導航僅限於活動編輯器組的已開啟編輯器。
  • editor:編輯器導航僅限於活動編輯器。

如果將範圍配置為editorGroupeditor,則每個編輯器組或編輯器將擁有自己的導航堆疊,可以單獨導航。

筆記本支援

您現在可以在任何筆記本中選擇的單元格之間導航。導航跨編輯器工作,與您在文字編輯器中游標位置之間導航的方式相同。

主題:GitHub Light

新的命令來導航編輯或導航位置

預設情況下,每當您在編輯器之間導航時,以及在編輯器內導航時(例如,切換筆記本單元格或更改文字編輯器中的選擇),都會新增編輯器導航位置。如果您覺得記錄的位置太多,我們添加了新命令,可以將位置減少到

  • 導航位置 - 例如,使用跳轉到定義時。
  • 編輯位置 - 每當編輯器更改時。例如,在文字編輯器中輸入時。

您可以將自己喜歡的鍵繫結分配給這些命令,以相應地更改您的導航。

編輯位置的命令

  • workbench.action.navigateForwardInEditLocations - 在編輯位置向前。
  • workbench.action.navigateBackInEditLocations - 在編輯位置向後。
  • workbench.action.navigatePreviousInEditLocations - 在編輯位置向前一個。
  • workbench.action.navigateToLastEditLocation - 轉到上一個編輯位置(此命令以前已存在)。

導航位置的命令

  • workbench.action.navigateForwardInNavigationLocations - 在導航位置向前。
  • workbench.action.navigateBackInNavigationLocations - 在導航位置向後。
  • workbench.action.navigatePreviousInNavigationLocations - 在導航位置向前一個。
  • workbench.action.navigateToLastNavigationLocation' - 轉到上一個導航位置。

已新增關聯的上下文鍵,以使鍵繫結更強大。

編輯位置的上下文鍵

  • canNavigateBackInEditLocations - 是否可以在編輯位置向後。
  • canNavigateForwardInEditLocations - 是否可以在編輯位置向前。
  • canNavigateToLastEditLocation - 是否可以轉到上一個編輯位置。

導航位置的上下文鍵

  • canNavigateBackInNavigationLocations - 是否可以在導航位置向後。
  • canNavigateForwardInNavigationLocations - 是否可以在導航位置向前。
  • canNavigateToLastNavigationLocation - 是否可以轉到上一個導航位置。

新的佈局控制選項

上一個里程碑,我們在標題欄中引入了實驗性佈局控制(透過將workbench.experimental.layoutControl.enabled設定為true啟用)。我們收到了反饋,雖然控制中的操作很有用,但它們需要太多的點選。因此,我們正在新增幾個 UI 選項,供大家使用設定workbench.experimental.layoutControl.type進行嘗試。此設定具有以下選項

  • menu:以前的行為,帶有一個開啟選單的按鈕(預設)。
  • toggles:一個新的選項,顯示三個按鈕以切換“面板”、“側邊欄”和“側面板”。
  • both:一個新的選項,顯示切換按鈕,然後是選單按鈕,這仍然允許您相當快速地訪問“自定義佈局快速選擇”。

下圖顯示layoutControl.type設定為both以顯示三個切換按鈕以及選單下拉列表。

Layout control with type set to both to show toggle buttons and menu dropdown

淺色高對比度主題

已新增新的淺色高對比度主題,以提高編輯器的可讀性和易讀性。

VS Code using Light High Contrast theme

音訊提示

此版本新增了音訊提示,包括警告、內聯建議和偵錯程式斷點命中的音訊提示。聲音已調整,並且通用設定audioCues.enabled已被棄用,取而代之的是各個audioCues.*設定

A screenshot of all available audio cue enablement settings

所有音訊提示(除了lineHasWarning)預設對螢幕閱讀器使用者啟用(設定值auto)。

一個新的音訊提示命令 幫助:列出音訊提示 列出了所有可用的音訊提示,讓您在列表中移動時聽到每個音訊提示,並檢視當前啟用了哪些提示。

Audio cue help command dropdown with the warning and breakpoint audio cues enabled

拖放問題和搜尋結果

您現在可以將問題、搜尋或引用結果拖放到編輯器中,開啟檔案並顯示結果位置。如果您想啟動一個新的編輯器組或將結果放到現有編輯器組中,這會很有用。

設定編輯器拆分檢視

“設定”編輯器現在使用可調整的拆分檢視將目錄與設定列表分開。

改進的自動語言檢測

當新設定workbench.editor.historyBasedLanguageDetection啟用時,無標題編輯器將使用改進的自動語言檢測演算法,該演算法考慮了您的編輯器歷史記錄和當前工作區的內容。新演算法比以前需要更少的文字輸入即可提供檢測結果。

下面是跨 JavaScript、TypeScript、Markdown、Python、PHP 和 C++ 使用此功能的示例(支援更多語言)

主題:GitHub Light + HC 自定義

改進的語言擴充套件建議

語言功能擴充套件建議現在在推薦時會考慮市場中其他主要的語言擴充套件。例如,如果您安裝了Apache NetBeans Java擴充套件,VS Code 將不會推薦Java 擴充套件包

擴充套件樹懸停的鍵盤快捷方式

您可以使用鍵盤快捷方式Ctrl/Cmd+K, Ctrl/Cmd+I來觸發懸停以顯示由擴充套件貢獻的自定義樹檢視。

編輯器

用程式碼片段包圍

有一個新命令可以用程式碼片段包圍當前選定的內容。選擇一些文字,從命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 呼叫用程式碼片段包圍命令,並從下拉列表中選擇一個程式碼片段。

在下面的短影片中,選定的方法被 try/catch 程式碼片段包圍。

任何使用TM_SELECTED_TEXTSELECTION變數的適用程式碼片段都將在用程式碼片段包圍快速選擇下拉列表中可用。自定義使用者或專案程式碼片段也包括在內。

可訪問的內聯提示

內聯提示在原始碼中顯示附加資訊,例如變數的推斷型別。對於螢幕閱讀器使用者,有一個新命令可以幫助實現此功能。從命令面板中選擇帶內聯提示讀取行,編輯器將讀取當前行並穿插其提示。

上下文 Unicode 高亮顯示

為了減少誤報,如果周圍字元在視覺上表明是非 ASCII 指令碼,則不再突出顯示模糊和不可見的 Unicode 字元。因此,在受信任的工作區中,只有不可見或可能與 ASCII 字元混淆的字元才會被突出顯示。此規則的例外是那些包含在非 ASCII 字元單詞中的字元,其中至少有一個字元不能與 ASCII 字元混淆。

以前您可以在 const 字串中看到多個誤報

Screenshot of text with many false positives and one true positive

只有令人困惑的字元才被突出顯示

Screenshot of text with only one true positive

終端

多行貼上警告

當 shell 不支援多行時,在終端中貼上多行時,預設會顯示一個對話方塊。此警告會顯示在括號貼上模式和 PowerShell 中,當我們直接將Ctrl+V傳遞給 shell 時。對話方塊上有一個不再詢問我複選框,可以輕鬆停用此功能。

此版本對終端連結的實現進行了大規模重構。這簡化並改進了該功能的維護性,但也帶來了

  • 連結高亮再次正常工作。
  • 已解析連結的快取,減少了某些連結顯示時的延遲。
  • 工作區搜尋連結現在由與已驗證連結相同的程式碼處理,以實現更高的一致性並改進行/列識別。
  • 修復了多個錯誤。

上一版本中引入的開啟上次檔案連結開啟檢測到的連結...命令現在排除了資料夾,這應該會使其更有用。

原始碼管理

差異編輯器管理

此里程碑我們進行了更改,這應該有助於管理差異編輯器。命令面板中有一個新命令Git:關閉所有差異編輯器,可用於關閉所有開啟的差異編輯器。還有一個新設定git.closeDiffOnOperation,用於在更改被暫存、提交、丟棄、暫存或取消暫存時自動關閉差異編輯器。

Git 命令輸出日誌記錄

執行 Git 命令時,`stderr` 的內容會記錄在Git 輸出視窗中。有一個新設定 `git.commandsToLog`,用於指定一系列 Git 命令,這些命令的 `stdout` 內容將被記錄在Git 輸出視窗中。

除錯

惰性變數

訪問變數的值可能會產生副作用或代價高昂。VS Code 的通用偵錯程式現在可以顯示一個按鈕,供使用者按需獲取變數值。這適用於支援新的“惰性”變數功能的除錯擴充套件。目前,這僅由內建的 JavaScript 偵錯程式針對屬性 getter 實現,但我們預計其他偵錯程式擴充套件將很快跟進。

任務

有一個新的與平臺無關的userHome變數,您可以在任務中使用它。

{
  "label": "Test Home",
  "type": "shell",
  "command": "ls ${userHome}"
}

Notebook

內建輸出渲染器更新

我們將文字、影像、HTML 和程式碼渲染器從 VS Code 核心移動到內建的輸出渲染器擴充套件。透過此更改,VS Code 現在可以在這些輸出型別上搜索文字。

在下面的短影片中,搜尋item最初有 3 個程式碼單元格結果,但可以過濾以包含單元格輸出。

粘性滾動筆記本單元格按鈕

當向下滾動程式碼單元格時,“執行”按鈕和單元格工具欄現在會粘滯在螢幕頂部。這使得在長程式碼單元格中工作時它們更易於訪問。

主題:Dracula

語言

TypeScript 4.6

VS Code 現在隨 TypeScript 4.6 一起釋出。此更新帶來了一些新的語言功能,以及工具改進和錯誤修復。您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.6 的更多資訊。

JavaScript 檔案中的語法錯誤報告

得益於 TypeScript 4.6,VS Code 現在可以報告 JavaScript 檔案中的一些常見語法錯誤。這包括解析錯誤,以及塊作用域變數的無效重新宣告

Detecting a redeclaration of a const variable in a JavaScript file

以前,這些錯誤只有在您在 JavaScript 中啟用語義檢查時才會報告。

您可以停用此錯誤報告,方法是設定

"javascript.validate.enable": false

更多 JS/TS 設定可按語言配置

現在可以以特定語言設定的形式配置更多的 JavaScript 和 TypeScript 設定。特定語言設定很有用,例如,如果您想要為javascriptjavascriptreact設定不同的設定。

新的特定語言啟用設定包括

  • javascript.preferences.quoteStyle, typescript.preferences.quoteStyle
  • javascript.preferences.importModuleSpecifier, typescript.preferences.importModuleSpecifier
  • javascript.preferences.importModuleSpecifierEnding, typescript.preferences.importModuleSpecifierEnding
  • javascript.preferences.jsxAttributeCompletionStyle, typescript.preferences.jsxAttributeCompletionStyle
  • javascript.preferences.renameShorthandProperties, typescript.preferences.renameShorthandProperties
  • javascript.preferences.useAliasesForRenames, typescript.preferences.useAliasesForRenames
  • javascript.suggest.enabled, typescript.suggest.enabled
  • javascript.suggest.completeJSDocs, typescript.suggest.completeJSDocs
  • javascript.suggest.jsdoc.generateReturns, typescript.suggest.jsdoc.generateReturns
  • javascript.autoClosingTags, typescript.autoClosingTags

新的 Lua 語法高亮語法

VS Code 為 Lua 檔案提供了新的、維護得更好的 Lua 語法以進行語法高亮顯示。新語法積極維護,修復了舊語法中存在的問題,並支援較新的 Lua 令牌。

Web 版 VS Code

重新開啟本地檔案和資料夾

當您使用支援Web 檔案系統訪問 API的瀏覽器訪問vscode.devinsiders.vscode.dev時,最近開啟的本地檔案和資料夾列表現已可用。選擇本地檔案將在編輯器中開啟它,選擇本地資料夾將更新檔案資源管理器以顯示其內容。在顯示內容之前,瀏覽器可能會要求您確認本地檔案訪問許可權。

遠端倉庫

GitHub 儲存庫

此里程碑,在vscode.devgithub.dev上編輯 GitHub 儲存庫時,合併衝突解決方案得到了改進。現在您的編輯器中有合併衝突裝飾,並提供接受當前更改接受傳入更改接受兩者更改的選項。

“原始碼管理”檢視中還提供了針對包含合併衝突的檔案的暫存更改操作。

此外,您現在可以在vscode.devgithub.dev上的 GitHub 儲存庫中輕鬆暫存和取消暫存特定資料夾下的所有更改。為此,請右鍵單擊“原始碼管理”檢視並選擇按樹檢視

主題:One Monokai

工作區搜尋和查詢所有引用現在預設會下載並索引儲存庫的完整副本,而不是像以前那樣預設提供部分結果。

有幾個設定可以配置此索引功能

  • remoteHub.indexing.verboseDownloadNotification - 控制下載通知是顯示為彈出視窗(預設)還是顯示在狀態列中。
  • remoteHub.indexing.maxIndexSize - 控制要下載的索引的大小限制。如果超過此限制,下載將被取消,並提供部分結果。您可以將此設定留空,以便從不下載儲存庫並始終使用部分結果。

Azure Repos

在此里程碑中,我們將 Azure Repos 支援從使用特定的 Azure DevOps 身份驗證提供程式切換到使用通用的 Microsoft 身份驗證提供程式(由設定同步使用)。當您訪問 Azure Repo 時,系統將提示您再次登入,但您所有儲存的更改都將保留。

對擴充套件的貢獻

十六進位制編輯器資料檢查器改進

以前,十六進位制編輯器擴充套件始終在側邊欄中顯示其資料檢查器,並在十六進位制編輯器顯示時顯示它。然而,一些使用者覺得這很煩人,並且其與偵錯程式的記憶體檢查器整合導致了特別具有破壞性的體驗。現在,資料檢查器將顯示在被檢查位元組的右側。如果編輯器太窄,資料檢查器將顯示在懸停小部件中。

Image showing the Data Inspector to the right side of the hex bytes

主題:Codesong

這可以透過hexeditor.inspectorType設定進行配置,該設定可以取以下三個值之一

  • aside - 將資料檢查器顯示在旁邊。
  • hover - 僅在懸停時顯示資料檢查器,無論編輯器寬度如何。
  • sidebar - 像以前一樣在側邊欄中顯示資料檢查器。

GitHub 拉取請求和議題

我們繼續開發 GitHub 拉取請求和問題擴充套件,該擴充套件允許您處理、建立和管理拉取請求和問題。檢視該擴充套件的 0.38.0 版本更新日誌以檢視亮點。

預覽功能

終端 Shell 整合

終端中的 shell 整合最初是在上一個版本中引入的,本月已經看到了許多改進。回顧一下,此功能允許 VS Code 對終端中發生的事情獲得額外的見解,這以前在很大程度上是未知的。該功能仍被認為是實驗性的,您可以透過terminal.integrated.shellIntegration.enabled設定選擇啟用。

此版本最大的變化是,shell 整合檢測到的命令現在在左側的“邊距”中具有裝飾。命令裝飾在視覺上打破了緩衝區,並提供了對使用 shell 整合功能的資訊和操作的訪問。有三種類型的命令裝飾:錯誤、成功和預設,由命令的退出程式碼決定。

A command succeeds and a success decoration is placed to the left of the prompt. A command fails and an error decoration is placed to the left of the prompt. A placeholder decoration is to the left of no-op commands and the current command before it's been executed.

單擊裝飾會在選單中顯示特定於該命令的操作,目前包括重新執行命令複製輸出

Command decoration context menu showing Re-run Command and Copy Output actions

將滑鼠懸停在裝飾上會顯示有關命令的資訊,例如自執行以來的時間以及關聯的退出程式碼。

Command decoration hover displaying Show Command Actions option and information that the command executed 3 minutes ago and returned failed exit code 127

可以透過將terminal.integrated.shellIntegration.decorationsEnabled設定為false來停用裝飾。可以透過terminal.integrated.shellIntegration.decorationIcon*設定配置單個圖示,並且這些新主題鍵設定顏色

  • terminalCommandDecoration.successBackground
  • terminalCommandDecoration.errorBackground
  • terminalCommandDecoration.defaultBackground

以下是其他主要更改

  • 啟用設定已重新命名為terminal.integrated.shellIntegration.enabled
  • 在所有支援的 shell 中啟用 shell 整合的機制現在更可靠。
  • 使用遠端連線視窗(SSH、WSL、容器)時,shell 整合現在應該可以工作。
  • 行繼續符(例如,$PS2)現在應該在所有支援的 shell 上工作。
  • “跳過”的命令現在會特別標記。例如,在使用Ctrl+C或執行空命令之後。
  • “執行最近命令”和“轉到最近目錄”命令現在會在會話之間儲存歷史記錄。歷史記錄儲存可以透過“terminal.integrated.shellIntegration.history”設定進行配置。

ESLint

ESLint 擴充套件初步支援包含可用 ESLint 驗證的單元格的筆記本文件。此支援僅在擴充套件的預釋出版本中可用。

擴充套件創作

語言狀態項

我們已經完成了語言狀態項的 API。此 API 顯示活動編輯器的特定語言資訊。這可以是關於專案或工具集版本的通用資訊,也可以顯示錯誤和警告。

JSON language status item linking to schema used for validation

該 API 類似於狀態列 API,可以透過vscode.languages.createLanguageStatusItem(...)訪問。應使用文件選擇器建立語言狀態項,以便 VS Code 可以在活動編輯器更改時顯示和隱藏它。

內聯提示

內聯提示提供程式 API 現已定稿。它允許在原始碼中內聯附加資訊。下圖顯示了 TypeScript 如何為推斷型別新增內聯提示。

TypeScript inferred variable type  shown as inlay hint

該 API 圍繞InlayHintsProvider構建。它提供InlayHint物件,這些物件具有一些有趣的特性

  • 內聯提示可以有工具提示和命令。
  • 提示的標籤可以由多個部分組成,每個部分又可以有工具提示和命令。
  • 標籤部分還可以具有關聯的源位置,從而為該部分啟用轉到定義等語言功能。

狀態列焦點邊框

我們透過向狀態列和狀態列專案新增焦點邊框,使狀態列導航更加容易和可訪問。

主題作者可以透過配置兩個新主題顏色來自定義邊框顏色

  • statusBar.focusBorder:狀態列獲得焦點時,整個狀態列的邊框顏色。
  • statusBarItem.focusBorder:狀態列專案獲得焦點時,狀態列專案的邊框顏色。

測試重新整理操作和 sortText

我們已完成我們的提案,以向TestController介面新增標準重新整理處理程式。如果擴充套件程式將方法分配給此屬性,VS Code 將在測試資源管理器檢視中顯示“重新整理”圖示。

此外,TestItem 現在可以具有sortText屬性,該屬性控制檔案中沒有特定位置的專案的排序順序。

評論時間戳

評論 API 現在允許您為每個Comment新增一個timestamp。此時間戳顯示在評論小部件和評論檢視中。預設情況下,時間戳顯示為相對時間(例如,“2 周前”),但使用者設定comments.useRelativeTime可用於顯示確切時間。時間戳的懸停將始終是確切時間。

vscode-test 包重新命名為 @vscode/test-electron

vscode-test包已重新命名為@vscode/test-electron。如果擴充套件作者在其擴充套件的package.json檔案devDependencies中包含該包,則應更新該條目。 @vscode/test-electron 包有助於執行 VS Code 擴充套件的整合測試。您可以在vscode-test 儲存庫中瞭解更多資訊。

更新的 codicons

以下新圖示已新增到我們的 codicon 庫中:

  • arrow-circle-down
  • arrow-circle-left
  • arrow-circle-right
  • arrow-circle-up
  • error-small
  • indent
  • layout-activitybar-left
  • layout-activitybar-right
  • layout-centered
  • layout-menubar
  • layout-panel-center
  • layout-panel-justify
  • layout-panel-left
  • layout-panel-right
  • layout-panel
  • layout-sidebar-left
  • layout-sidebar-right
  • layout-statusbar
  • layout
  • newline
  • record-small
  • target

Preview of updated icons

圖示貢獻點現已最終確定

圖示貢獻點允許擴充套件透過 ID 定義新圖示,以及預設圖示。然後,擴充套件(或依賴於該擴充套件的任何其他擴充套件)可以在任何可以使用ThemeIcon的地方使用圖示 ID(new ThemeIcon("iconId")),在 Markdown 字串中($(iconId)),以及作為某些貢獻點中的圖示。

產品圖示主題可以重新定義圖示(如果它們知道圖示 ID)。

"contributes": {
  "icons": {
    "distro-ubuntu": {
      "description": "Ubuntu icon",
      "default": {
        "fontPath": "./distroicons.woff",
        "fontCharacter": "\\E001"
      }
    },
    "distro-fedora": {
      "description": "Ubuntu icon",
      "default": {
        "fontPath": "./distroicons.woff",
        "fontCharacter": "\\E002"
      }
    }
  }
}

在上面的示例中,一個擴充套件定義了兩個新的圖示 ID distro-ubuntudistro-fedora,以及預設圖示定義。圖示在給定字型字元的圖示字型中定義。

檔案圖示主題:支援檔案關聯中的資料夾名稱

檔案圖示主題中,folderNamesfolderNamesExpandedfileNamesfileExtensions中的關聯現在也可以包含資料夾名稱

  "fileNames": {
    "system/win.ini": "_win_ini_file"
  },

system/win.ini表示關聯與直接位於system資料夾中的名為win.ini的檔案匹配。

  "fileExtensions": {
    "system/ini": "_ini_file"
  },

system/ini表示關聯與直接位於system資料夾中的名為*.ini的檔案匹配。

  "folderNames": {
    ".vscode/extensions": "_vscode_folder"
  },

在 Codespaces 的 Web 版 VS Code 中執行遠端安裝的 Web 擴充套件

Codespaces 的 Web 版 VS Code 現在支援在 Web 擴充套件主機中執行遠端安裝的Web 擴充套件。例如,如果您在 GitHub Codespace 中安裝了Vim 擴充套件(透過devcontainer.json檔案中的配置),那麼當您在瀏覽器中開啟 Codespace 時,Vim 將在 Web 擴充套件主機中載入。請閱讀我們的擴充套件主機文件以獲取更多資訊。

注意:目前已知存在此類擴充套件載入 Web Worker 的限制。有關更多詳細資訊,請參閱問題

偵錯程式擴充套件創作

支援“重要”輸出事件

最近,除錯介面卡協議Output事件添加了一個important類別。此類別標記了應該突出且不應被使用者忽略的事件。VS Code 現在將為具有important類別的訊息顯示通知彈出視窗。它們仍將記錄到除錯控制檯。

支援“惰性”變數

某些變數是動態的,需要執行程式碼才能獲取值。除錯介面卡可能不想自動檢索它們的完整值,因為這樣做可能會產生副作用或代價高昂。

一些除錯介面卡透過將“昂貴變數”表示為佔位符物件來解決此問題,使用者需要明確“展開”該物件才能獲取值。VS Code 的內建 js-debug 對 JS/TS getter 使用了這種方法

class Person {
  name = 'Danny';
  get email(): string {
    return 'foo@example.bar';
  }
  get address(): Address {
    return new Address();
  }
}
class Address {
  street = 'Main Street';
  city = 'Zurich';
}

以下螢幕截圖顯示,中間物件使得理解有效的​​資料結構變得困難

在此版本中,我們改進了 VS Code,以緊湊形式呈現中間物件,並帶有一個 (...) 按鈕,用於請求完整值。

除錯介面卡可以透過新增具有lazy屬性的VariablePresentationHint來請求此新的呈現樣式(請參閱 DAP 補充)。如果客戶端不支援lazy標誌,則變數將像以前一樣顯示。

語言伺服器協議

下一版本的語言伺服器協議及其對應的 npm 模組已經發布。新版本包含以下更改

  • LSP 型別到 VS Code 型別以及反之的轉換現在完全是非同步的。此更改避免了大型資料流的轉換,這可能會阻塞擴充套件主機。請注意,這是庫中的一個突破性 API 更改(更多資訊請參閱README.md)。它不影響協議本身的向後相容性。
  • 筆記本文件的擬議實現得到了增強。它現在具有完整的中介軟體和提供程式支援。

除錯介面卡協議

除錯介面卡協議中添加了一些新屬性。

  • 新的布林屬性lazy已新增到VariablePresentationHint中。客戶端可以使用可選標誌以支援特定手勢獲取其值的 UI 來呈現變數。
  • 新的可選字串屬性detail已新增到CompletionItem中。透過此人類可讀字串,客戶端可以顯示有關項的附加資訊,例如型別或符號資訊。請注意,VS Code 尚不支援此屬性。

建議的擴充套件 API

每個里程碑都會帶來新的提議 API,擴充套件作者可以嘗試這些 API。一如既往,我們希望得到您的反饋。以下是嘗試提議 API 的步驟

  1. 查詢您要嘗試的提議並將其名稱新增到 package.json#enabledApiProposals
  2. 使用最新的vscode-dts並執行vscode-dts dev。它會將相應的d.ts檔案下載到您的工作區中。
  3. 您現在可以根據該提議進行程式設計。

您不能釋出使用提議 API 的擴充套件。下個版本中可能會有破壞性更改,我們絕不希望破壞現有擴充套件。

時間線專案中的 Markdown 懸停

TimelineProvider提供的專案現在可以在detail屬性中支援 Markdown,該屬性用於為其工具提示提供內容。

支援筆記本的文件選擇器

vscode.DocumentSelector型別允許您將轉到定義等語言功能與特定文件關聯。這驅動了 UI,並決定是否向相應的提供程式請求結果。我們添加了一個新的 API 提案,允許擴充套件也選擇筆記本型別。例如,{ language: 'python', notebookType: 'jupyter-notebook'}針對嵌入在 Jupyter 筆記本中的所有 python 文件。這是當前的提案 - 嘗試一下並告訴我們您的想法。

具有自定義語言 ID 的輸出通道

有些擴充套件能夠在自己的輸出通道中定義令牌或語法著色和 CodeLens 功能,前提是它們本身是文字文件(只讀)。由於所有輸出通道共享相同的語言 ID,這些自定義可能會錯誤地應用於其他輸出通道。有一個功能請求,要求建立具有自定義語言 ID 的輸出通道,以便擴充套件作者可以按語言定義自定義。因此,在此里程碑中,我們引入了提案,以建立具有自定義語言 ID 的輸出通道。請嘗試一下並向我們提供反饋。

MarkdownString.baseUri

MarkdownString上擬議的baseUri屬性允許您指定一個基本 URI,Markdown 中的相對連結和影像將相對於該 URI 解析。此屬性的行為類似於 HTML 中的<base>元素

如果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'

新文件

Java GUI 應用程式

新的Java GUI 應用程式主題解釋瞭如何在 VS Code 中使用Java 擴充套件包開發 JavaFX、AWT 和 Swing 應用程式。

值得注意的修復

  • 107748 螢幕閱讀器不會朗讀已忽略同步的設定
  • 123399 Emmet 在 jsx 和 html 檔案中不新增帶有標籤 A 的類。
  • 141680 搜尋設定中的 @tags 很慢
  • 141977 設定編輯器:資料夾操作項未能正確處理 keyup
  • 142040 改進支援預釋出的擴充套件的“安裝另一個版本”操作。
  • 142462 當寫入鎖未清除時,檔案寫入可能掛起
  • 142641 ts-node 偵錯程式在 v1.64 中無法正常工作

感謝

最後但同樣重要的是,向 VS Code 的貢獻者們致以衷心的感謝

Web 擴充套件

啟用擴充套件以執行程式碼作為Web 擴充套件的擴充套件作者(以下列表為 2022 年 2 月 1 日至 2022 年 2 月 28 日之間)

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-languageserver-node 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻