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

2022 年 4 月 (版本 1.67)

更新 1.67.1:此更新解決了此安全 問題

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

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


歡迎使用 Visual Studio Code 2022 年 4 月版本。此版本中有許多更新,希望您會喜歡,其中一些主要亮點包括

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

觀看釋出派對: 聽 VS Code 團隊討論一些新功能。您可以在我們的 YouTube 頻道上找到活動的錄音

亮點短片: 如果您只有 60 秒的時間,請檢視4 月 VS Code 釋出亮點影片,快速瞭解新功能。

內測版:想盡快嘗試新功能?您可以下載每晚的內測版構建,並儘快嘗試最新的更新。

工作臺

檔案資源管理器檔案巢狀

資源管理器現在支援根據檔名稱巢狀相關檔案。有幾個設定可以控制此行為

  • explorer.fileNesting.enabled - 控制是否總體啟用檔案巢狀。它可以在全域性或特定工作區中設定。
  • explorer.fileNesting.expand - 控制巢狀檔案是否預設展開。
  • explorer.fileNesting.patterns - 控制檔案如何巢狀。預設配置為 TypeScript 和 JavaScript 專案提供巢狀智慧,但鼓勵您修改此配置以適應您自己的專案結構。一些示例

預設配置

.js and .min.js files nested under .ts file, tsconfig.test.json nested under tsconfig.json, package-lock.json nested under package.json

當檔案與目錄名稱匹配時,在 index.ts 下巢狀 ("index.ts": "${dirname}.ts")

in directory named SomeFolder, SomeFolder.ts is nested under index.ts

巢狀與另一個檔案同名但附加了段的檔案 ("*": "${basename}.*.${extname}")

file1.test.myext is nested under file1.myext, file2.spec.other is nested under file2.other

主題:GitHub Light High Contrast

檔案巢狀已透過實驗性設定提供了幾次迭代。現在的行為基本不變,除了檔案操作。實驗性設定 explorer.experimental.fileNesting.operateAsGroup 已被刪除,取而代之的是在摺疊時將巢狀視為一個組,否則視為單個實體。這意味著,如果您想複製、剪下、拖動或刪除整個巢狀檔案堆疊,您可以摺疊巢狀,然後將其作為一個實體進行操作。當巢狀元素展開時,選擇將像正常一樣。

設定編輯器搜尋篩選器按鈕

設定編輯器搜尋控制元件現在右側包含一個漏斗按鈕。單擊該按鈕會顯示一個篩選器列表,您可以將其應用於搜尋查詢以篩選結果。

主題:Light Pink

設定編輯器語言篩選器指示器

設定編輯器語言篩選器現在更改範圍文字,以便在應用語言篩選器時更清楚地顯示正在操作的語言。上面的短影片顯示 Markdown 語言篩選器 (@lang:markdown) 應用於篩選後的設定。

作為參考,當應用語言篩選器時,修改設定的值將僅修改該語言的該設定的值。特定於語言的設定透過語言識別符號settings.json 中設定範圍

  "[markdown]": {
      "editor.wordBasedSuggestions": "off"
  }

重構後儲存檔案

重構(如重新命名)通常會修改多個檔案並使其處於未儲存狀態(髒)。外部開發工具通常要求儲存這些檔案。為了簡化此工作流,有一個新的設定 files.refactoring.autoSave,它預設為 true,並控制是否應自動儲存作為重構一部分的檔案。

在編輯器限制中排除髒編輯器

一個新的設定 workbench.editor.limit.excludeDirty 控制開啟編輯器的最大數量是否應排除髒編輯器以計入配置的限制。該設定預設停用 (false)。

將“未提交的更改”重新新增到時間線

上個月我們引入了本地歷史功能時,我們從 Git 時間線提供程式中刪除了未提交的更改條目,因為它感覺有點冗餘。但是,一些使用者認為此時間線條目具有實際價值,現在您可以透過相應配置新的 git.timeline.showUncommitted 設定來將其重新新增。

開啟失敗時的新編輯器佔位符

當編輯器無法開啟時,VS Code 不再顯示通知並顯示之前開啟的編輯器。相反,它會顯示一個帶有錯誤訊息的通用佔位符,在某些情況下還會顯示解決錯誤的措施。

語言狀態改進

語言狀態項現在顯示格式化程式衝突——當安裝了多個語言格式化程式但沒有一個被配置為預設格式化程式時,就會發生這種情況。此外,當包含嚴重狀態時,語言狀態項會更加突出。

此外,當您的文件被懷疑是與當前設定的語言不同的語言時,語言狀態項現在會顯示切換語言的提示。這僅適用於無標題編輯器和筆記本單元,可以使用 workbench.editor.languageDetectionHints 設定進行配置。下面在Handy Dandy Notebook中演示了這一點,該筆記本支援以各種不同語言執行單元。

主題:GitHub Light High Contrast

顯示無效或不相容的擴充套件

擴充套件檢視現在在已安裝擴充套件列表中顯示帶有錯誤狀態的無效或不相容擴充套件。例如,如果您的 VS Code 版本是 1.67.0-insider 並且您安裝了一個需要 VS Code 版本 1.68.0 的擴充套件,那麼它將以不相容的錯誤狀態顯示在列表中。

Incompatible extension details shown in the Extensions view item hover

退出前確認

可以配置一個新的設定 window.confirmBeforeClose,以便在退出應用程式之前顯示確認對話方塊。

您可以選擇 keyboardOnly,以便在使用鍵盤快捷鍵時顯示確認對話方塊,或者選擇 always,即使使用滑鼠退出也會顯示。

注意:此設定並非全新,已在VS Code for Web中提供了一段時間。

comments.openView 預設值

comments.openView 的舊預設值為 file,這導致每次開啟帶有註釋的檔案時都會開啟註釋檢視。為了使註釋檢視不那麼嘈雜,新預設值為 firstFile,這導致註釋檢視僅在會話期間第一次開啟帶有註釋的檔案時開啟。

多行註釋

在幕後,VS Code 自注釋 UX 最終確定以來就支援多行註釋,但多行註釋從未在 UI 中顯示。您現在可以檢視和留下多行註釋。

在新視窗中處理 URI

只要 VS Code URI 包含查詢引數 windowId=_blank,VS Code 就會在新視窗中處理它。示例:vscode://vscode.git/clone?url=https%3A%2F%2Fgithub.com%2FMicrosoft%2Fvscode-vsce.git&windowId=_blank

編輯器

括號對彩色化預設啟用

鑑於 1.60 版本中引入的新括號對彩色化功能獲得了積極反饋,我們預設啟用了括號對彩色化。

Side by side comparison with bracket pair colorization on and off

可以透過將 "editor.bracketPairColorization.enabled" 設定為 false 來停用括號對彩色化。

括號對彩色化也可以僅針對特定語言停用

"[typescript]": {
  "editor.bracketPairColorization.enabled": false,
},

TextMate 語法可以將標記標記為不平衡

以前,TextMate 語法無法將某些括號標記為不平衡,例如 shell 指令碼的 case 語句中的右括號。

Old behavior where unbalanced brackets not detected

為了使括號對匹配和彩色化更加健壯,TextMate 語法貢獻現在可以表達某些標記中的括號不應匹配。在擴充套件的 package.jsoncontributes 部分中,提供的語法可以使用屬性 balancedBracketScopes(預設為 ["*"])和 unbalancedBracketScopes(預設為 [])來包含或排除用於括號匹配的範圍。

"grammars": [{
    "language": "shellscript",
    "scopeName": "source.shell",
    "path": "./syntaxes/shell-unix-bash.tmLanguage.json",
    "balancedBracketScopes": [ "*" ],
    "unbalancedBracketScopes": [ "meta.scope.case-pattern.shell" ]
}],

透過此功能,shell 指令碼的語法現在可以指示 case 語句中的 ) 不應匹配

New behavior correctly skipping a bracket that isn't matched

新括號匹配演算法

括號匹配現在使用與括號彩色化相同的資料結構。這既提高了準確性又提高了效能。

舊的括號匹配行為(請注意,顏色和突出顯示裝飾不匹配)

Old behavior with incorrect bracket matching

新的括號匹配行為

New behavior with correct bracket matching

括號指南改進

水平括號指南現在正確支援換行。此外,僅跨單行的括號對也有其自己的水平括號指南。

Horizontal bracket guides displayed for wrapped lines

水平括號指南預設停用,可以透過 "editor.guides.bracketPairsHorizontal": true 啟用。

在此版本中,"editor.guides.highlightActiveIndentation" 現在接受值 "always"。如果設定為 always,即使已經有活動的括號對,也會突出顯示縮排指南。

切換嵌入式提示

嵌入式提示是在原始碼中顯示附加資訊的好方法。但是,有時您只希望看到實際的原始碼。為了支援快速隱藏嵌入式提示,editor.inlayHints.enabled 設定已更改:除了 onoff 之外,還有值 onUnlessPressedoffUnlessPressed。當按住 Ctrl+Alt 時,on/offUnlessPressed 值會隱藏或顯示嵌入式提示。

編輯器 > 嵌入式提示:已啟用

  • on - 嵌入式提示已啟用。
  • off - 嵌入式提示已停用。
  • onUnlessPressed - 按下 Ctrl+Alt 時顯示和隱藏嵌入式提示。
  • offUnlessPressed - 按下 Ctrl+Alt 時隱藏和顯示嵌入式提示。

改進的內聯建議

上個月我們添加了使用 👻 幽靈文字(淺色)進行快速建議的功能。提醒:您需要為 editor.quickSuggestions 設定使用 inline。我們在此領域做了一些改進工作,特別是現在支援觸發字元和 TypeScript“使用引數完成函式”。

要在鍵入觸發字元(例如 .)時停用 IntelliSense,請將 "editor.suggestOnTriggerCharacters": false。要啟用 TypeScript 函式呼叫完成,請使用 "typescript.suggest.completeFunctionCalls": true

將文字拖放到編輯器中

您現在可以將文字從其他應用程式拖放到文字編輯器中。例如,在 macOS 上,這允許您將表情符號從表情符號面板拖放到文字編輯器中

拖動時,虛線游標會顯示文字將插入的位置。

終端

查詢結果計數

在終端中搜索時,結果計數和當前選定的匹配索引現在顯示在“查詢”控制元件中。

Text is searched for in the terminal and the Find control is labeled match 12 of 14 to indicate that match 12 is currently selected

原始碼管理

原始碼管理儲存庫檢視

在此里程碑中,我們引入了一個新設定 scm.repositories.sortOrder,用於控制原始碼管理儲存庫檢視中顯示的儲存庫的預設排序順序。儲存庫可以按發現順序、按名稱和按完整路徑排序。可以透過原始碼管理儲存庫檢視的...檢視和更多操作選單和原始碼管理檢視的... > 檢視和排序 > 儲存庫選單來更改排序順序。

下面的短影片顯示,SCM > 儲存庫:排序順序設定預設為 discovery time,即選擇儲存庫的時間,並且您也可以在原始碼管理檢視中更改排序順序。

編輯器裝飾改進

上個里程碑我們透過採用修改行裝飾器的模式,改進了新增/修改行的編輯器裝飾器的可訪問性。這個里程碑,我們添加了一個新設定 scm.diffDecorationsGutterPattern,它允許使用者切換編輯器裝飾器的模式。

該設定預設使用修改行裝飾的模式,但不用於新增的行

"scm.diffDecorationsGutterPattern": {
    "added": false,
    "modified": true
}

效能改進

git.untrackedChanges 設定為 hidden 的使用者在使用大型儲存庫時將體驗到更好的效能。這是透過在呼叫 git status 時傳遞 -uno 引數實現的。

擴充套件的遠端源提供程式 API

Git 擴充套件 API 現在允許註冊或顯示遠端源提供程式的擴充套件提供更豐富的遠端源資訊。

遠端源提供程式現在可以為各個遠端源設定描述和圖示。此外,提供程式可以選擇指定最近的遠端源。這些源顯示在選擇器的頂層,以便於訪問,並且如果提供了時間戳,則按時間戳排序。

擴充套件的 API 已被內建的 GitHub 擴充套件以及 GitHub RepositoriesAzure Repos 擴充套件在 github.devvscode.dev 中採用。

使用 SSH 從 GitHub 克隆

一個新的設定 github.gitProtocol 允許您更改從 GitHub 克隆儲存庫時的預設協議。預設值為 https,但可以更改為 ssh

除錯

自動展開惰性變數

幾個月前,我們添加了支援單擊按鈕以在偵錯程式“變數”檢視中展開“惰性”變數的功能。現在有一個新設定 debug.autoExpandLazyVariables,可以在不單擊的情況下自動展開惰性變數。

惰性變數的新按鈕

我們已將文字連結按鈕更新為帶有“眼睛”程式碼圖示的真實按鈕。“眼睛”程式碼圖示也已更新,使其看起來更像眼睛。

A button to expand a lazy variable

按 Shift 鍵單擊以停用斷點

您現在可以Shift+Click斷點(或條件斷點,或日誌點)以停用它,並重新啟用它。

語言

您現在可以透過將檔案從 VS Code 的資源管理器拖放到 Markdown 編輯器中來快速建立 Markdown 連結。在將檔案拖到 Markdown 編輯器上時按住 Shift 鍵,將其放到編輯器中並建立指向它的連結

如果檔案看起來像影像,VS Code 會自動插入 Markdown 影像。否則會新增一個普通的 Markdown 連結。

這也適用於從其他應用程式拖動某些型別的檔案,例如從網路瀏覽器拖放影像

您可以透過設定 "markdown.editor.drop.enabled": false 來停用此拖放行為。

Markdown:查詢所有引用標題

VS Code 現在支援在 Markdown 檔案中對標題執行查詢所有引用。這讓您可以檢視當前工作區中給定標題的所有使用位置,包括從其他 Markdown 檔案連結到它的位置。

要開始,請將游標放在標題本身或指向標題的連結的片段部分(例如,[link text](#_some-header) 中的 #some-header[link text](/path/to/file#some-header)),然後執行查詢所有引用

Finding all references to a Markdown header

這將在“引用”檢視中顯示所有引用。如果您喜歡不同的檢視,也可以使用速覽引用轉到引用命令。

VS Code 還支援查詢當前檔案中引用連結的所有引用。這支援以下情況:

  • [some text][ref] 中的 ref 上。
  • 在簡寫連結 [ref] 中的 ref 上。
  • 在連結定義 [ref]: http://example.com 中的 ref 上。

Finding all places a Markdown link reference is used

Markdown:查詢所有檔案引用

您現在還可以查詢當前工作區中給定 Markdown 檔案的所有引用。同樣,這包括跨檔案的連結。

可以通過幾種方式觸發此功能

  • 要查詢當前 Markdown 檔案的引用,請使用Markdown:查詢檔案引用命令。
  • 要查詢資源管理器中的 Markdown 檔案引用,請右鍵單擊它並執行查詢檔案引用命令。
  • 對 Markdown 檔案連結的檔案部分執行查詢所有引用,例如 [text](/link/to/file.md)

這將列出引用給定檔案的所有位置,包括對該檔案中標題的引用。

Markdown:查詢所有 URL 引用

最後,我們還支援查詢當前工作區中給定 URL 的所有使用位置。

Finding all places where a URL is used in Markdown files

Markdown:重新命名標題

您是否曾更改 Markdown 檔案中的標題,卻發現不小心破壞了所有指向它的連結?這就是我們新的 Markdown 重新命名支援可以提供幫助的地方。

要開始,請將游標放在標題上,然後按 F2 開始重新命名。輸入標題的新文字,然後按 Enter 接受。這將更新當前標題,並更新當前工作區中所有已知指向它的連結。

您可以對標題本身或指向標題的連結的標題元件觸發重新命名。例如,[link text](#_some-header) 中的 some-header[link text](/path/to/file#some-header)

您還可以在 Markdown 中重新命名引用連結。這將更新當前 Markdown 檔案中的所有引用連結

Renaming a Markdown link reference using F2

Markdown:重新命名檔案

完善我們新的 Markdown 重新命名支援,您現在可以使用 F2 對 Markdown 連結中的檔案路徑進行操作,以重新命名磁碟上的檔案並更新所有指向它的 Markdown 引用

Renaming a file by pressing F2 on the file path in a link

目前,僅支援在文字編輯器中透過 F2 對檔案連結進行重新命名。在即將到來的迭代中,我們還計劃在資源管理器中觸發重新命名時支援更新連結。

JSON

新的設定 json.validate.enable 允許您關閉 JSON 驗證。

Web 版 VS Code

開啟遠端儲存庫選擇器

當您使用開啟遠端儲存庫選擇器時,VS Code for Web 現在會遵循 window.openFoldersInNewWindow 設定。這使選擇器行為與 VS Code 的其他版本保持一致,並替換了在新視窗中開啟快速選擇項按鈕。

對擴充套件的貢獻

Java

內聯提示

Java 擴充套件包中包含的 Java 語言服務現在支援嵌入式提示以顯示方法簽名的引數名稱。

Java 引數名嵌入式提示有三種模式

  • literals - 僅對文字引數啟用引數名提示(預設)。
  • all - 對文字和非文字引數啟用引數名提示。
  • none - 停用引數名提示。

惰性變數解析

Java 偵錯程式擴充套件現在支援“惰性”變數。此功能允許您延遲昂貴變數的操作,直到您明確展開偵錯程式 UI 以檢視其值。

Jupyter

Jupyter PowerToys 擴充套件

我們很高興地宣佈 Jupyter PowerToys 擴充套件,它為使用 Jupyter 筆記本提供實驗性功能。在首次釋出中,我們原型化了以下功能

  • 核心管理面板
  • 上下文幫助
  • 執行分組

我們很樂意讓您試用這些功能,並告訴我們您的想法,以便我們有一天能將其完善為受支援的功能!

有關更多資訊,請參閱 vscode-jupyter-powertoys 儲存庫中的 README。

Web 擴充套件

Jupyter 擴充套件現在可以作為 Web 擴充套件安裝,用於 vscode.dev。功能目前有限,僅支援在不需要 https 的 Jupyter 伺服器上執行的筆記本(.ipynb 檔案)。

如果您想體驗此功能,請在本地機器上啟動 Jupyter,命令如下:

jupyter --no-browser --NotebookApp.allow_origin_pat=https://.*\.vscode-cdn\.net

並使用命令Jupyter:指定連線的 Jupyter 伺服器連線到它。

在即將釋出的版本中,我們將在瀏覽器中執行時啟用更多功能,包括

  • 基於“https”的伺服器
  • IntelliSense
  • 資料檢視
  • 變數檢視
  • 互動式視窗
  • IPyWidgets
  • 繪圖檢視
  • 匯出

Jupyter 核心處理

Jupyter 核心處理進行了一些更新

  • 為了更明顯地顯示核心崩潰,該擴充套件現在在單元格輸出中顯示此資訊。
  • 當在執行過程中檢測到某些已知錯誤時,單元格輸出中現在提供故障排除指南。
  • 解決核心執行問題可能是一個棘手且耗時的過程。我們已在我們的 Wiki 上整理了一個故障排除部分,希望能幫助您更快地找到解決方案。我們的 GitHub Discussions 論壇也是獲取幫助的好資源。

Python

更改語言伺服器時無需重新載入

Python 擴充套件現在支援更新 python.languageServer 設定的值,並自動重新啟動語言伺服器,而無需重新載入 VS Code。

Black 格式化程式擴充套件

現在有一個Black 格式化程式擴充套件,它使用black格式化程式為 Python 提供格式化支援。該擴充套件的預釋出版本可供安裝。

使用 isort 組織匯入

新的 isort 擴充套件,它使用 isort 庫提供匯入組織。該擴充套件的預釋出版本可用。

遠端開發

遠端開發擴充套件的工作仍在繼續,它允許您使用容器、遠端機器或 適用於 Linux 的 Windows 子系統 (WSL) 作為功能齊全的開發環境。

您可以在遠端開發發行說明中瞭解新的擴充套件功能和錯誤修復。

GitHub 拉取請求和議題

GitHub 拉取請求和問題擴充套件的工作仍在繼續,它允許您處理、建立和管理拉取請求和問題。此版本的亮點包括

  • 多行註釋
  • 在樹中顯示提交更改

檢視擴充套件 0.42.0 版本的更改日誌以瞭解其他亮點。

預覽功能

設定配置檔案

在此里程碑中,我們引入了設定配置檔案,它是您的設定、擴充套件和 UI 自定義的集合。如果您自定義了 VS Code,現在可以將您的自定義匯出到設定配置檔案 (mysetup.code-profile) 並將其儲存到您的計算機並與他人共享。

以下短影片展示了從 VS Code 匯出設定配置檔案

您還可以匯入設定配置檔案以恢復您的自定義設定。

下面顯示了將設定配置檔案匯入 VS Code

您可以將您的設定配置檔案託管在雲端,例如將其儲存為公共 GitHub gist,並與他人共享 URL。可以透過提供 URL 來匯入設定配置檔案。

注意:目前,設定配置檔案中僅包含以下 UI 自定義。未來將新增更多。

  • 狀態列項可見性
  • 活動欄、底部面板和側面板項的可見性和順序
  • 檢視的可見性、位置和順序

TypeScript 4.7 支援

此更新包括對即將釋出的 TypeScript 4.7 版本的支援。有關 TypeScript 團隊目前正在進行的工作的更多詳細資訊,請參閱TypeScript 4.7 迭代計劃。一些亮點

要開始使用 TypeScript 4.7 每晚構建,請安裝 TypeScript Nightly 擴充套件。

擴充套件創作

Tab API

我們已經最終確定了選項卡 API 的只讀側(也支援關閉選項卡),這標誌著我們最高投票問題之一 microsoft/vscode#15178 的完成。這暴露了諸如有多少組、哪些選項卡開啟、哪些選項卡活動、選項卡代表什麼型別的編輯器等資訊!更多資訊可以在 vscode.d.ts 檔案中找到,API 的入口點是 window.tabGroups

筆記本更改和儲存事件

我們已最終確定了兩個與筆記本相關的事件

  • vscode.workspace.onDidSaveNotebookDocument - 每當筆記本儲存時觸發的事件。
  • vscode.workspace.onDidChangeNotebookDocument - 每當筆記本更改時觸發的事件。這包括結構更改,如新增或刪除單元格,以及單元格更改,如更改輸出或元資料。

支援非遞迴工作區檔案監視器

在之前的里程碑中,我們宣佈 createFileSystemWatcher API 可用於監視磁碟上的任何資料夾,只要該資料夾不在已開啟的工作區內。我們現在放寬了此限制,並允許在任何位置(甚至在已開啟的工作區內)使用非遞迴檔案監視器。非遞迴監視器具有優勢,即配置的排除設定 (files.watcherExclude) 不適用,因此您可以確保檔案監視器僅針對您訂閱的路徑發出事件。

我們正在努力全面支援帶有自定義排除規則的遞迴監視器,敬請期待!

使用者體驗指南

面向擴充套件作者的UX 指南已重新整理,擁有自己的目錄,您可以在其中找到使用各種 VS Code 使用者介面元素的最佳實踐。具體主題討論了建立擴充套件 UI 時推薦的注意事項,以便它們無縫整合到 VS Code 中。

Command Palette UX Guidelines on code.visualstudio.com

執行擴充套件測試

以前,VS Code 會在測試執行結束後立即退出擴充套件主機程序。現在,在執行擴充套件測試時,VS Code 將首先經歷常規的 deactivate 流程,然後才退出。這允許生成程序的擴充套件更好地清理自身。

將檔案拖放到自定義樹中

在最近最終確定的樹拖放 API 的基礎上,我們現在支援使用 text/uri-list MIME 型別將檔案從作業系統拖放到擴充套件樹檢視中。

偵錯程式擴充套件創作

supportSuspendDebuggee 和 supportTerminateDebuggee 的 UI

disconnect 請求有兩個額外的選項,允許客戶端控制斷開連線時偵錯程式會發生什麼

  • suspendDebuggee 指示偵錯程式在斷開連線後是否應保持暫停狀態。
  • terminateDebuggee 指示偵錯程式斷開連線時是否應終止偵錯程式。

除錯介面卡可以使用功能 supportSuspendDebuggeesupportTerminateDebuggee 來指示它支援這些選項。如果支援,除錯工具欄中的停止按鈕旁邊將出現一個下拉列表,其中包含額外的斷開連線命令。

例如,在“啟動”型別除錯會話中,對於支援這兩種功能的除錯介面卡,預設工具欄按鈕將是正常的停止按鈕,但下拉選單將包括斷開連線 (terminateDebuggee: false) 和斷開連線並暫停 (terminateDebuggee: false, suspendDebuggee: true)。

A dropdown with extra disconnection commands

語言伺服器協議

對筆記本和拉取診斷的支援已從提議狀態移出,為 3.17 版本釋出做好準備。相應的客戶端和伺服器庫的新版本已釋出到 npm。

提議的 API

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

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

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

拖放到編輯器中

提議的文字編輯器拖放 API 允許擴充套件處理拖放到文字編輯器中的事件。這些拖放事件可以來自 VS Code 內部——例如將檔案從 VS Code 的資源管理器拖到文字編輯器中——也可以透過將檔案從您的作業系統拖到 VS Code 中生成。

本次迭代,我們將此 API 切換到基於提供程式的模型。我們還建立了一個新的擴充套件示例,演示如何使用此 API。

檢視上的徽章

為檢視新增徽章的新提案已可試用。類似於 VS Code 核心提供的檢視上的徽章工作方式,擴充套件可以使用此 API 提案為檢視新增數字徽章。

工程

用於 Electron 冒煙測試的 Playwright

我們長期以來一直使用 Playwright 進行基於 Web 的冒煙測試。然而,我們基於 Electron 的冒煙測試仍然依賴於我們自己的自定義解決方案。藉助 Playwright 中的 Electron 支援,我們能夠重用我們大部分基於 Web 的冒煙測試程式碼,並將其用於我們的 Electron 冒煙測試。我們現在很高興使用 Trace Viewer 來事後診斷失敗的冒煙測試。

新的擴充套件本地化管道

VS Code 支援多種顯示語言,您可以透過安裝語言包來啟用這些語言。這些對於本地化 VS Code 本身和 VS Code 的內建擴充套件非常有用。本次迭代,我們已開始標準化團隊擁有的非內建擴充套件的本地化工作。您將在 GitHub RepositoriesAzure Repos 擴充套件中看到這項工作的結果,因為它們的共同依賴擴充套件 Remote Repositories 是第一個加入此項工作的擴充套件。

在下一個迭代中,我們將繼續這項標準化工作並加入更多擴充套件。Python 擴充套件目前正在進行中,GitHub Repositories 和 Azure Repos 將緊隨其後。我們希望達到一個目標,即團隊擁有的每個擴充套件都已本地化,並且未來建立的任何新擴充套件都能夠輕鬆加入,以便非英語母語的使用者在 VS Code 中獲得出色的體驗。

文件

VS Code 中的 Rust

有一個新的Visual Studio Code 中的 Rust 主題,描述了使用 rust-analyzer 擴充套件在 VS Code 中支援Rust 程式語言。rust-analyzer 擴充套件包括豐富的語言功能,例如程式碼完成、linting、重構、除錯等。

rust-analyzer extension for Visual Studio Code details pane

值得注意的修復

  • 114844 允許從崩潰對話方塊跳過恢復上一會話中的編輯器
  • 127936 允許在啟動時將 files.encoding 設定為特定語言設定
  • 138461 React 檔案中方括號內的 Emmet 自動完成錯誤
  • 139392 清除最近專案確認
  • 139950 命中斷點時,插入符號(游標)應移動到該行
  • 145265 Windows 上的終端使用 cmd /C,這會破壞傳遞的引數
  • 146406 終端中的 Powerline 符號顏色錯誤
  • 146977 在 macOS 上 Info.plist 中宣告資料夾支援
  • 147104 無法完成 GitHub 登入

感謝

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

Web 擴充套件

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

問題跟蹤

對我們問題跟蹤的貢獻

拉取請求

vscode 的貢獻

vscode-css-languageservice 的貢獻

vscode-generator-code 的貢獻

vscode-js-debug 的貢獻

vscode-pull-request-github 的貢獻

debug-adapter-protocol 的貢獻

language-server-protocol 的貢獻

monaco-editor 的貢獻