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 月版。
- 新的編輯器歷史導航 - 將“後退/前進”歷史記錄範圍限定為編輯器組或單個編輯器。
- 淺色高對比度主題 - 用於增強 VS Code 編輯器可見性的淺色主題。
- 新的音訊提示 - 針對警告、內聯建議和斷點命中的音訊提示。
- 拖放問題和搜尋結果 - 將結果拖放到新的或現有的編輯器組。
- 原始碼管理差異編輯器管理 - 在 Git 操作後自動關閉差異編輯器。
- 偵錯程式惰性變數評估 - JavaScript/TypeScript 屬性 getter 的惰性評估。
- 預覽:終端 shell 整合 - 重新執行終端命令,命令狀態裝飾。
- Web 版 VS Code - 重新開啟最近的本地檔案和資料夾,改進了 Git 整合。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
工作臺
新的編輯器歷史導航
VS Code 中的編輯器歷史導航功能驅動了一些常用命令,例如後退和前進。隨著時間的推移,積累了大量功能請求,以改進此功能並增加更多功能。此里程碑的編輯器歷史導航已從頭開始重寫,以解決其中大部分請求。
編輯器組感知導航
在編輯器歷史記錄中導航時,現在會考慮編輯器組。在編輯器歷史記錄中來回導航將啟用並聚焦編輯器組中的編輯器,就像它們以前一樣。當編輯器組被移除時,所有相關的歷史記錄條目都會被丟棄。
在下面的短影片中,第一次後退將游標放在新的編輯器組中,然後第二次後退導航返回到原始編輯器組。
主題:GitHub Light
將導航範圍限定到編輯器組或編輯器的新設定
新設定workbench.editor.navigationScope
可以將編輯器歷史記錄導航範圍限定為僅活動編輯器組,甚至編輯器。支援的值有
default
:編輯器導航適用於所有開啟的編輯器組和編輯器。editorGroup
:編輯器導航僅限於活動編輯器組的已開啟編輯器。editor
:編輯器導航僅限於活動編輯器。
如果將範圍配置為editorGroup
或editor
,則每個編輯器組或編輯器將擁有自己的導航堆疊,可以單獨導航。
筆記本支援
您現在可以在任何筆記本中選擇的單元格之間導航。導航跨編輯器工作,與您在文字編輯器中游標位置之間導航的方式相同。
主題: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
以顯示三個切換按鈕以及選單下拉列表。
淺色高對比度主題
已新增新的淺色高對比度主題,以提高編輯器的可讀性和易讀性。
音訊提示
此版本新增了音訊提示,包括警告、內聯建議和偵錯程式斷點命中的音訊提示。聲音已調整,並且通用設定audioCues.enabled
已被棄用,取而代之的是各個audioCues.*
設定
所有音訊提示(除了lineHasWarning
)預設對螢幕閱讀器使用者啟用(設定值auto
)。
一個新的音訊提示命令 幫助:列出音訊提示 列出了所有可用的音訊提示,讓您在列表中移動時聽到每個音訊提示,並檢視當前啟用了哪些提示。
拖放問題和搜尋結果
您現在可以將問題、搜尋或引用結果拖放到編輯器中,開啟檔案並顯示結果位置。如果您想啟動一個新的編輯器組或將結果放到現有編輯器組中,這會很有用。
設定編輯器拆分檢視
“設定”編輯器現在使用可調整的拆分檢視將目錄與設定列表分開。
改進的自動語言檢測
當新設定workbench.editor.historyBasedLanguageDetection
啟用時,無標題編輯器將使用改進的自動語言檢測演算法,該演算法考慮了您的編輯器歷史記錄和當前工作區的內容。新演算法比以前需要更少的文字輸入即可提供檢測結果。
下面是跨 JavaScript、TypeScript、Markdown、Python、PHP 和 C++ 使用此功能的示例(支援更多語言)
改進的語言擴充套件建議
語言功能擴充套件建議現在在推薦時會考慮市場中其他主要的語言擴充套件。例如,如果您安裝了Apache NetBeans Java擴充套件,VS Code 將不會推薦Java 擴充套件包。
擴充套件樹懸停的鍵盤快捷方式
您可以使用鍵盤快捷方式Ctrl/Cmd+K, Ctrl/Cmd+I
來觸發懸停以顯示由擴充套件貢獻的自定義樹檢視。
編輯器
用程式碼片段包圍
有一個新命令可以用程式碼片段包圍當前選定的內容。選擇一些文字,從命令面板 (⇧⌘P (Windows, Linux Ctrl+Shift+P)) 呼叫用程式碼片段包圍命令,並從下拉列表中選擇一個程式碼片段。
在下面的短影片中,選定的方法被 try/catch 程式碼片段包圍。
任何使用TM_SELECTED_TEXT
或SELECTION
變數的適用程式碼片段都將在用程式碼片段包圍快速選擇下拉列表中可用。自定義使用者或專案程式碼片段也包括在內。
可訪問的內聯提示
內聯提示在原始碼中顯示附加資訊,例如變數的推斷型別。對於螢幕閱讀器使用者,有一個新命令可以幫助實現此功能。從命令面板中選擇帶內聯提示讀取行,編輯器將讀取當前行並穿插其提示。
上下文 Unicode 高亮顯示
為了減少誤報,如果周圍字元在視覺上表明是非 ASCII 指令碼,則不再突出顯示模糊和不可見的 Unicode 字元。因此,在受信任的工作區中,只有不可見或可能與 ASCII 字元混淆的字元才會被突出顯示。此規則的例外是那些包含在非 ASCII 字元單詞中的字元,其中至少有一個字元不能與 ASCII 字元混淆。
以前您可以在 const 字串中看到多個誤報
只有令人困惑的字元才被突出顯示
終端
多行貼上警告
當 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 檔案中的一些常見語法錯誤。這包括解析錯誤,以及塊作用域變數的無效重新宣告
以前,這些錯誤只有在您在 JavaScript 中啟用語義檢查時才會報告。
您可以停用此錯誤報告,方法是設定
"javascript.validate.enable": false
更多 JS/TS 設定可按語言配置
現在可以以特定語言設定的形式配置更多的 JavaScript 和 TypeScript 設定。特定語言設定很有用,例如,如果您想要為javascript
和javascriptreact
設定不同的設定。
新的特定語言啟用設定包括
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.dev或insiders.vscode.dev時,最近開啟的本地檔案和資料夾列表現已可用。選擇本地檔案將在編輯器中開啟它,選擇本地資料夾將更新檔案資源管理器以顯示其內容。在顯示內容之前,瀏覽器可能會要求您確認本地檔案訪問許可權。
遠端倉庫
GitHub 儲存庫
此里程碑,在vscode.dev和github.dev上編輯 GitHub 儲存庫時,合併衝突解決方案得到了改進。現在您的編輯器中有合併衝突裝飾,並提供接受當前更改、接受傳入更改或接受兩者更改的選項。
“原始碼管理”檢視中還提供了針對包含合併衝突的檔案的暫存更改操作。
此外,您現在可以在vscode.dev和github.dev上的 GitHub 儲存庫中輕鬆暫存和取消暫存特定資料夾下的所有更改。為此,請右鍵單擊“原始碼管理”檢視並選擇按樹檢視。
主題:One Monokai
工作區搜尋和查詢所有引用現在預設會下載並索引儲存庫的完整副本,而不是像以前那樣預設提供部分結果。
有幾個設定可以配置此索引功能
remoteHub.indexing.verboseDownloadNotification
- 控制下載通知是顯示為彈出視窗(預設)還是顯示在狀態列中。remoteHub.indexing.maxIndexSize
- 控制要下載的索引的大小限制。如果超過此限制,下載將被取消,並提供部分結果。您可以將此設定留空,以便從不下載儲存庫並始終使用部分結果。
Azure Repos
在此里程碑中,我們將 Azure Repos 支援從使用特定的 Azure DevOps 身份驗證提供程式切換到使用通用的 Microsoft 身份驗證提供程式(由設定同步使用)。當您訪問 Azure Repo 時,系統將提示您再次登入,但您所有儲存的更改都將保留。
對擴充套件的貢獻
十六進位制編輯器資料檢查器改進
以前,十六進位制編輯器擴充套件始終在側邊欄中顯示其資料檢查器,並在十六進位制編輯器顯示時顯示它。然而,一些使用者覺得這很煩人,並且其與偵錯程式的記憶體檢查器整合導致了特別具有破壞性的體驗。現在,資料檢查器將顯示在被檢查位元組的右側。如果編輯器太窄,資料檢查器將顯示在懸停小部件中。
主題:Codesong
這可以透過hexeditor.inspectorType
設定進行配置,該設定可以取以下三個值之一
aside
- 將資料檢查器顯示在旁邊。hover
- 僅在懸停時顯示資料檢查器,無論編輯器寬度如何。sidebar
- 像以前一樣在側邊欄中顯示資料檢查器。
GitHub 拉取請求和議題
我們繼續開發 GitHub 拉取請求和問題擴充套件,該擴充套件允許您處理、建立和管理拉取請求和問題。檢視該擴充套件的 0.38.0 版本更新日誌以檢視亮點。
預覽功能
終端 Shell 整合
終端中的 shell 整合最初是在上一個版本中引入的,本月已經看到了許多改進。回顧一下,此功能允許 VS Code 對終端中發生的事情獲得額外的見解,這以前在很大程度上是未知的。該功能仍被認為是實驗性的,您可以透過terminal.integrated.shellIntegration.enabled
設定選擇啟用。
此版本最大的變化是,shell 整合檢測到的命令現在在左側的“邊距”中具有裝飾。命令裝飾在視覺上打破了緩衝區,並提供了對使用 shell 整合功能的資訊和操作的訪問。有三種類型的命令裝飾:錯誤、成功和預設,由命令的退出程式碼決定。
單擊裝飾會在選單中顯示特定於該命令的操作,目前包括重新執行命令和複製輸出。
將滑鼠懸停在裝飾上會顯示有關命令的資訊,例如自執行以來的時間以及關聯的退出程式碼。
可以透過將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 顯示活動編輯器的特定語言資訊。這可以是關於專案或工具集版本的通用資訊,也可以顯示錯誤和警告。
該 API 類似於狀態列 API,可以透過vscode.languages.createLanguageStatusItem(...)
訪問。應使用文件選擇器建立語言狀態項,以便 VS Code 可以在活動編輯器更改時顯示和隱藏它。
內聯提示
內聯提示提供程式 API 現已定稿。它允許在原始碼中內聯附加資訊。下圖顯示了 TypeScript 如何為推斷型別新增內聯提示。
該 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
圖示貢獻點現已最終確定
圖示貢獻點允許擴充套件透過 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-ubuntu
和distro-fedora
,以及預設圖示定義。圖示在給定字型字元的圖示字型中定義。
檔案圖示主題:支援檔案關聯中的資料夾名稱
在檔案圖示主題中,folderNames
、folderNamesExpanded
、fileNames
和fileExtensions
中的關聯現在也可以包含資料夾名稱
"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 的步驟
- 查詢您要嘗試的提議並將其名稱新增到
package.json#enabledApiProposals
。 - 使用最新的vscode-dts並執行
vscode-dts dev
。它會將相應的d.ts
檔案下載到您的工作區中。 - 您現在可以根據該提議進行程式設計。
您不能釋出使用提議 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 日之間)
- Var Style (allen)
- helloworld-web-sample (Andrey Belym)
- asciidoctor.asciidoctor-vscode (asciidoctor)
- Gitignore Adder (beatrix)
- gkauthentication-test (BranchCreation SLU)
- Racket Helpers (Calvin-LL)
- PHP Tools (DEVSENSE)
- Naninovel (Elringus)
- Pitoco Extension (Feodrippe)
- feodrippe.feodrippe-helloworld-minimal-sample-test-web (Feodrippe)
- Simple React Snippets for Typescript (Giovanni Fu Lin)
- GitKraken Authentication (GitKraken)
- groog (groogle)
- ModalKeys (haberdashPI)
- VDM VSCode (Jonas Rask)
- cis-algorithm (kimjihu)
- Markdown (Pandoc Flavored) (Kolen Cheung)
- zyname - this is for testing and will be deleted soon (leodevbro)
- Snippet Copy (Lukas Spieß)
- PHP import checker (Marabesi)
- VSCode Language JSONata (Markus Gutbrod)
- Babel JavaScript (Michael McDermott)
- Create Project (Public Theta)
- Dynamic Theme (Rody Davis)
- Router Generator (Rody Davis)
- Chimera Theme (roydukkey)
- Qiita Markdown Preview (Ryoji Kato)
- Kestrel (SenseTime)
- Test token (sevillal)
- Sourcegraph (Sourcegraph)
- Rewrap (stkb)
- wav-preview (sukumo28)
- Pandoc (TANIGUCHI Masaya)
- Hex Viewer (Tao Cumplido)
- 時間連結捆綁包(Web 版本) (Time Link)
- DCC Websocket (virgilsisoe)
- VSC+ (Vrej)
問題跟蹤
對我們問題跟蹤的貢獻
- John Murray (@gjsjohnmurray)
- Andrii Dieiev (@IllusionMH)
- ArturoDent (@ArturoDent)
- Simon Chan (@yume-chan)
拉取請求
對 vscode
的貢獻
- @aminya (Amin Yahyaabadi):修復:簡化任務/通用中的正則表示式 PR #142899
- @Balastrong (Leonardo)
- 增加了過載計數器工具提示的透明度 PR #141828
- 在必要時解碼之前和之後透過檢查片段來修復元素檢測 PR #141848
- @BMBurstein (Baruch):更正了括號指南設定的描述 PR #143722
- @Bruce-Hopkins (Bruce Hopkins):新增使用者主頁變數 PR #141902
- @caioagiani (Caio Agiani):修復拼寫錯誤 PR #141959
- @CGNonofr (Loïc Mangeonjean)
- 在所有語言功能註冊函式中用 languageSelector 替換 languageId PR #143610
- 允許 getWorker 函式返回一個 promise PR #143611
- @ChaseKnowlden:更新 Lua 語法 PR #142107
- @divinity76:似乎 root 需要 --no-sandbox PR #137125
- @efcoyote (coyote):更新到最新的 seti-ui 版本 PR #141931
- @enticies (enticies):修復錯誤訊息拼寫錯誤 PR #142054
- @g-plane (Pig Fang):將“pnpm-lock.yaml”新增到預設檔案巢狀模式 PR #142375
- @gjsjohnmurray (John Murray)
- 將可選的 languageId 新增到 window.createOutputChannel API (#_19561) PR #140876
- 修復
testing.openTesting
設定文字 (#_142306) PR #142314
- @haykam821:防止影像預覽透明背景受縮放影響 PR #141667
- @heartacker:新增數學程式碼片段 PR #142697
- @icepaq (Anton):WebviewPanel 的自動完成啟用事件 PR #141752
- @jeanp413 (Jean Pierre)
- 修復 WebviewElement::streamToBuffer PR #142288
- 修復在擴充套件檢視中按 ID 查詢擴充套件時,擴充套件編輯器始終呈現穩定版本的問題 PR #143481
- @JJRcop (Jonathan Rubenstein):新增 VS 2022 到支援版本 PR #142667
- @LuanVSO (Luan Vitor Simião Oliveira)
- 修復 psreadline 不與 shell 整合一起工作的問題 PR #142211
- 修復 shellintegration.ps1 PR #142217
- @michaelkuhn (Michael Kuhn):修復部分 Solarized 顏色 PR #142670
- @neeleshb (Neelesh Bodas):修復“轉到上一個問題”的錯誤標籤 PR #143823
- @satokaz (Kazuyuki Sato):在 Markdown 路徑 IntelliSense 中解碼標題建議 PR #142392
- @SNDST00M (M.U.N.I.N):在檔案圖示主題中新增可選的目錄語法 PR #140079
- @stefanhaller (Stefan Haller):修復 #142028 PR #142930
- @surajteggi:修復拼寫錯誤 PR #142185
- @thebinarysearchtree (Andrew Jones):修復縮排 PR #141997
- @weartist (Han):在 VSCode 終端中實現 multiLinePasteWarning,修復 #122683 PR #141822
- @y-tsutsu (y-tsutsu)
- 命令面板中同時顯示翻譯名稱和原始名稱。 PR #142524
- 修復操作類別 PR #142911
- @Yash621 (Yash Goel):修復設定同步重複登入問題 PR #142340
- @zardoy (Vitaly):解析 tsconfig.extends 的正確連結路徑 PR #141062
對 vscode-css-languageservice
的貢獻
對 vscode-languageserver-node
的貢獻
- @dsherret (David Sherret):功能:當 childProcess.spawn 失敗時,提供更具描述性的錯誤 PR #888
對 debug-adapter-protocol
的貢獻
- @apupier (Aurélien Pupier):新增 Apache Camel 除錯介面卡 PR #245
- @eshelyaron (Eshel Yaron):將 SWI-Prolog DAP 實現新增到 adapters.md PR #248
- @hyangah (Hyang-Ah Hana Kim):更新 sdks.md * 包含 go-dap PR #241
- @lukaszsamson (Łukasz Samson):新增 Elixir DAP 實現連結 PR #243
- @Ricbet (John):將 OpenSumi 新增到實現工具 PR #247
對 language-server-protocol
的貢獻
- @zwpaper (Wei Zhang):使用語言 ID 保持一致性 PR #1409
對 monaco-editor
的貢獻
- @Dan1ve (Daniel Veihelmann):使 Vite 示例程式碼與 Firefox 相容 PR #2991
- @philipturner (Philip Turner):向 Swift 新增
@noDerivative
修飾符 PR #2957