🚀 在 VS Code 中取得

2023 年 4 月 (版本 1.78)

更新 1.78.1:此更新解決了此安全性問題

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

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


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

如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的更新

組建測試人員: 想要盡快試用新功能嗎?您可以下載每夜組建的 組建測試人員 版本,並在最新更新可用時立即試用。

協助工具

Aria 詳細程度設定

螢幕閱讀器使用者可以從功能的 aria-label 排除提示,以透過 "accessibility.verbosity.diff-editor""accessibility.verbosity.terminal" 設定來減少冗餘。

已改進並對齊快速選取體驗

先前,協助工具模式的使用者在使用命令選取區和其他快速選取時,體驗到不同的行為。在協助工具模式中,為了完全可存取,未選取快速選取的第一個項目。在此迭代中,我們導入了新的行為,讓您能夠兩全其美:可存取快速的快速選取工作流程,讓您可以立即按下 Enter 鍵

注意:此方法的一個權衡是,如果選取了快速選取中的項目,由於 ARIA 限制,您將無法聽到快速選取輸入方塊的 ARIA 變更。若要聽到這些變更,您可以按 Shift + Tab 鍵,直到未選取清單中的任何項目為止。

終端機

終端機可存取緩衝區改進

  • 使用 ⌥↓ (Windows、Linux Alt+Down)⌥↑ (Windows、Linux Alt+Up) 在命令之間跳轉。
  • 使用設定選取錨點從錨點選取到游標,以及透過 ⇧PageUp (Windows、Linux Shift+PageUp)⇧PageDown (Windows、Linux Shift+PageDown) 進行頁面導覽。
  • 在使用前往可存取檢視中的符號 (⇧⌘O (Windows、Linux Ctrl+Shift+O)) 之前,先預覽位置,然後再接受命令以移至新位置。
  • 在發生動態更新時與輸出互動。

終端機協助工具說明功能表

現在可以使用方向鍵導覽終端機的協助工具說明功能表。

差異編輯器音訊提示改進

VS Code 現在會快取音訊提示,因此它們只需載入一次,從而提高回應速度,並改進用於差異編輯器的音調。

前往行/列公告

當叫用前往行/列... (⌃G (Windows、Linux Ctrl+G)) 時,螢幕閱讀器現在會讀取相關聯的行內容。

工作台

新的預設色彩主題

新的「深色現代」和「淺色現代」主題取代「深色+」和「淺色+」作為新的預設深色和淺色色彩主題。

Dark Modern and Light Modern color themes

設定檔範本

設定檔可讓您根據目前的專案或工作,快速切換編輯器擴充功能、設定和 UI 版面配置。為了協助您開始使用設定檔,我們正在發行設定檔範本,這些範本是針對不同程式設計語言和案例策劃的設定檔。您可以按原樣使用設定檔範本,或將其用作起點,以進一步自訂以符合您自己的工作流程。

您可以透過設定檔 > 建立設定檔... 下拉式選單選取設定檔範本

Create Profile dropdown with profile templates

選取設定檔範本後,您可以檢閱設定、擴充功能和其他資料,並移除個別項目 (如果您不想將它們包含在新設定檔中)。

Profiles view showing the contents of the Data Science profile template

在您根據範本建立新的設定檔之後,對設定、擴充功能或 UI 所做的變更會持續保存到您的設定檔中。

字形邊界裝飾轉譯改進

本月,我們改進了編輯器邊界中顯示的裝飾轉譯。偵錯相關的裝飾 (例如中斷點和堆疊框架指標) 將始終轉譯在編輯器行號旁邊。其他裝飾會轉譯在任何偵錯相關裝飾的左側。即使同一行上有其他裝飾 (例如測試裝飾或書籤),您也可以檢視中斷點。請注意,按一下尚未限定於個別裝飾。

bookmarks displayed next to breakpoint and stack frame pointer decorations

從影像預覽複製影像

您現在可以使用 ⌘C (Windows、Linux Ctrl+C) 或在預覽中按一下滑鼠右鍵並選取複製,從內建影像預覽複製影像。複製的影像資料可以貼回 VS Code 或其他應用程式。

編輯器

拖放選取器

VS Code 可讓您在拖放之前按住 Shift 鍵,將檔案和內容拖放到文字編輯器中。在此更新中,我們新增了 UI,可讓您變更此內容插入檔案的方式。例如,在您將影像拖放到 Markdown 檔案中之後,此控制項可讓您在插入 Markdown 影像、影像的工作區相對路徑和影像的完整路徑之間切換

每當您拖放內容且有超過一種可能的插入方式時,拖放選取器控制項就會出現。您可以按一下控制項或使用 ⌘. (Windows、Linux Ctrl+.) 來開啟控制項。當您開始輸入或將游標移到插入的文字外部時,拖放選取器就會消失。您也可以使用 "editor.dropIntoEditor.showDropSelector": "never" 完全停用拖放選取器控制項。

VS Code 包含一些內建方式來拖放常見的內容格式。擴充功能也可以使用 DocumentDropEditProvider API 新增自己的拖放選項。

獨立色彩選取器

現在可以啟動獨立色彩選取器,以便插入和取代色彩。若要開啟色彩選取器,請從命令選取區選取顯示或焦點獨立色彩選取器

Standalone color picker control adjusted to blue color

當擴充功能未提供任何色彩或色彩格式時,色彩選取器會回復為 CSS 格式的色彩。現在也可以在所有檔案類型中視覺化 CSS 格式色彩的內嵌色彩裝飾器。若要顯示這些裝飾器,請啟用編輯器:預設色彩裝飾器 (editor.defaultColorDecorators) 設定。

時區偏移的新程式碼片段變數

現在提供新的程式碼片段變數 CURRENT_TIMEZONE_OFFSET。此變數會以 +HH:MM-HH:MM 格式 (例如 -07:00) 傳回目前的時區偏移。這補充了其他與時間相關的程式碼片段變數,例如 CURRENT_YEARCURRENT_MONTHCURRENT_DAY_NAME 等。

差異演算法改進

我們繼續改進 VS Code 中的新差異演算法,並已淘汰舊的演算法。雖然舊的演算法仍然是差異編輯器的預設演算法,但我們將逐漸將預設值變更為新的演算法,並測量其效能。

您可以將 diffEditor.diffAlgorithm 設定為 advanced (新的差異演算法) 或 legacy (預設值) 來覆寫預設值。

新的演算法在許多情況下產生更好的差異,但對於某些文件而言可能會比較慢。

以下是一些範例 (舊版與進階版)

  • 透過考量縮排來改進行插入差異

    JSON file diff result using legacy algorithm

    JSON file diff result using advanced algorithm

  • 透過考量空格和分隔符號字元來改進文字插入差異

    TypeScript imports word insertion diff using legacy algorithm

    TypeScript imports word insertion diff using advanced algorithm

  • 透過不僅最小化差異的長度,也最小化區塊的數量,來產生更自然的差異

    TypeScript added line diff using legacy algorithm

    TypeScript added line diff using advanced algorithm

  • 如果單字的一部分發生顯著變更,則透過將字元層級差異延伸到整個單字,來減少雜訊

    TypeScript code change diff using legacy algorithm

    TypeScript code change diff using legacy algorithm

差異原始碼,甚至僅評估差異的品質都是困難的問題,而且仍有改進的空間。如果您遇到您認為演算法可以做得更好的差異,請試用我們的差異遊樂場,並在我們的問題追蹤器中分享您的意見反應和想法!

內嵌完成改進

此迭代我們重寫了內嵌完成功能,並修正了許多錯誤

最值得注意的是,接受文字現在跨行運作,並且有一個新的命令接受行。為了支援此功能,接受下一個文字/行不會再次詢問擴充功能,因為內嵌完成提供者擴充功能在要求下一個行的內嵌完成時,通常會報告完全不同的建議。

擴充功能

改進的擴充功能建議通知

擴充功能建議通知現在會顯示建議擴充功能的發行者。這可協助您在安裝擴充功能之前做出更明智的決定。以下影像顯示當有單一擴充功能和多個擴充功能的建議時的新通知。

Extension recommendations notification with a single recommendation Extension recommendations notification with multiple recommendations

通知已安裝的已淘汰擴充功能

如果您已安裝已淘汰的擴充功能,您現在會收到通知,告知您此事並建議替代方案。每個已淘汰的擴充功能只會顯示一次。

Notification about deprecated extension

原始碼控制

原始碼控制輸入中的快速修正

原始碼控制訊息方塊中現在支援程式碼動作和快速修正

例如,程式碼拼字檢查器擴充功能會將拼字修正新增至原始碼控制輸入。擴充功能可以貢獻其他修正和程式碼動作。

GitHub 存放庫規則集

VS Code 已經可讓您使用 git.branchProtection 設定來定義分支保護。在此里程碑中,我們新增了一項新的實驗性功能,該功能使用最近發布的GitHub 存放庫規則集來判斷分支是否受到保護。如果您使用 GitHub 存放庫規則集,您可以使用 github.branchProtection 設定來啟用此功能。

筆記本

將影像檔案拖放到筆記本中以建立附件

您現在可以將影像檔案拖放到筆記本 Markdown 儲存格中以建立附件。當您拖放影像時,請使用新的拖放選取器控制項來選取將影像插入為附件

Using the drop selector in a notebook Markdown cell

這會將影像新增至筆記本作為附件,而不是僅新增影像的連結

An image file added as an attachment

切換筆記本輸出捲動

您現在可以切換個別儲存格,以在可捲動區域中顯示輸出,方法是透過命令筆記本:切換捲動儲存格輸出 (⌘K Y (Windows、Linux Ctrl+K Y)) 或截斷訊息中的連結。

尋找控制項改進

筆記本尋找控制項現在預設會在視覺呈現的內容上搜尋關鍵字。使用者可以透過設定 notebook.find.scope 來變更搜尋範圍 (Markdown 原始碼、Markdown 預覽、程式碼原始碼和程式碼輸出)。此外,在取代相符項目時,Markdown 儲存格會轉換為可編輯的儲存格,以便您可以進行取代。完成後,儲存格會轉換回 Markdown,並還原預覽。

語言

將影片拖放到 Markdown 檔案中

想要將影片插入 Markdown 中嗎?只需將其拖放到編輯器中,然後按住 Shift 鍵以將其拖放到檔案中

這會插入指向影片檔案的 <video> 標籤。您可以從 VS Code 的檔案總管或從本機作業系統拖曳影片。

HTML 中 JavaScript 腳本區塊的嚴格 Null 值

您現在可以使用 js/ts.implicitProjectConfig.strictNullChecks 設定,為 HTML 腳本區塊中的 JavaScript 啟用嚴格 Null 值

Strict nulls in a script block

啟用嚴格 Null 值後,當類型可以是 Null 值時,hover 和其他 IntelliSense 功能會顯示。例如,請注意 el 現在具有 HTMLElement | null 類型。這是因為 document.getElementById 在找不到具有該 ID 的元素時會傳回 Null 值。

測試

持續執行現在可以針對個別測試開啟。這需要支援持續執行並採用上一次迭代中完成的 supportsContinuousRun API 的測試擴充功能。

Continuous run button highlighted on an individual test

適用於網頁的 VS Code

將檔案認可至 Git Large File Storage

Git Large File Storage (LFS) 可讓您有效率地在 Git 存放庫中儲存大型檔案。github.devvscode.dev 現在支援將檔案認可至 GitHub 上託管的存放庫中的 Git LFS,讓您可以從瀏覽器輕鬆更新,而無需在本機為 Git 安裝 LFS 擴充功能。

當您的存放庫根目錄中已經有一個 .gitattributes 檔案,指定哪些檔案類型應與 Git LFS 一起儲存時,github.dev 和 vscode.dev 中的 LFS 認可支援可立即運作。若要首次設定存放庫以用於 Git LFS,請參閱 Git LFS 文件。

遠端開發

遠端開發擴充功能可讓您使用 開發容器、透過 SSH 或 遠端通道的遠端機器,或 適用於 Linux 的 Windows 子系統 (WSL) 作為全功能開發環境。

您可以在遠端開發版本資訊中瞭解新的擴充功能功能和錯誤修正。

並查看 使用 VS Code 隨處開發 VS Code Day 會議。

擴充功能貢獻

Python

Jupyter 擴充功能不再預設安裝

Jupyter 擴充功能不再與 Python 擴充功能一起預設自動安裝。此變更是為了回應 來自 開發容器 使用者的意見反應,他們希望容器建立過程更快,且預設不安裝 Jupyter 擴充功能。

如果您有僅列出 Python 擴充功能的開發容器定義,並希望繼續在容器中使用 Jupyter 筆記本功能,您可以將 Jupyter 擴充功能 ID 新增至您的 devcontainer.json 檔案

  "customizations": {
    "vscode": {
      "extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
    }
  }

或者,您可以建立包含 Python 和 Jupyter 擴充功能,以及任何其他您喜愛的擴充功能的設定檔

使用 microvenv 建立環境命令

當使用未安裝 venv 套件的 Python 發行版本叫用 Python:建立環境 命令時,Python 擴充功能現在會使用 microvenv 作為後備選項。這對於 Unix 型系統上預先安裝的 Python 環境來說可能是一個障礙。

Microvenv 是一個輕量型 Python 模組,提供建立 Python 專案虛擬環境的簡約方法。它未配備傳統的啟用腳本 (如虛擬環境),但當 venv 模組在您的 Python 發行版本中不可用時,它為建立隔離環境提供了一個很好的替代方案。

建立環境命令也會將 pip 安裝到透過 microvenv 建立的環境中。

格式器擴充功能建議

在先前的版本中,我們發布了 Black Formatterautopep8 的新擴充功能,這些擴充功能透過 語言伺服器通訊協定 (LSP) 與 Python 擴充功能協同運作,以提供 Python 檔案的格式設定。在此版本中,如果您仍然使用 Python 擴充功能的內建格式設定功能,我們會顯示通知,提示您安裝這些新的擴充功能。

執行 Python 動作現在位於子功能表中

為了簡化在編輯器中按一下滑鼠右鍵時可用的 Python 命令,在終端機中執行 Python 檔案在 Python 終端機中執行選取範圍/行命令現在是執行 Python 項目下的子功能表項目。

Run Python option on context menu with "Run file in terminal" and "Run selection/line" options in the submenu

自動轉換 f-字串

有一個新的 "python.analysis.autoFormatStrings" 設定,可在使用 Pylance 時啟用 f-字串的自動轉換。啟用後,當您在引號內插入 { 時,Pylance 會自動在字串開頭插入 f

此設定的預設值目前已停用,但將在即將發行的版本中啟用,等待正面意見反應。如果您對此功能有任何意見或建議,請隨時在 Pylance GitHub 存放庫 上分享。

在包含路徑的字串上啟用程式碼導覽

還有另一個新的實驗性設定,稱為 "python.analysis.gotoDefinitionInStringLiteral",可從類似模組的字串常值啟用前往定義。如果您正在處理 Web 應用程式 (例如 Django 應用程式),並想要導覽至字串常值中定義的模組或路徑,這會很有幫助

與前面提到的 autoFormatStrings 設定一樣,此新設定目前預設為停用。但是,我們計劃根據意見反應在未來的版本中啟用此行為。最終,我們計劃完全移除此設定。

Jupyter

重新啟動命令

Jupyter 擴充功能現在包含兩個新命令,讓使用者可以直接重新啟動核心並執行儲存格。這些命令是重新啟動核心並執行所有儲存格重新啟動核心並執行到選取的儲存格,並且可以透過命令 ID jupyter.restartkernelandrunallcellsjupyter.restartkernelandrunuptoselectedcell 分別存取。

重新連線到忙碌的遠端 Jupyter 核心

在先前的版本中,當連線到遠端 Jupyter 核心工作階段時,Jupyter 擴充功能會等待核心閒置後再連線。如果核心正忙於執行長時間運算的計算,這可能會花費很長時間。在此版本中,即使核心忙碌,Jupyter 擴充功能也會立即連線到核心。這可讓您在核心忙碌時中斷核心。

平台特定 Jupyter 擴充功能

Jupyter 擴充功能現在隨附平台特定擴充功能,每個 VSIX 都針對特定平台 (Windows 64 位元、Windows 32 位元、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon 等) 建置。個別平台的 Jupyter 擴充功能下載大小較小,從而縮短下載時間並減少磁碟空間使用量。

GitHub Pull Requests 和 Issues

GitHub Pull Requests 和 Issues 擴充功能方面取得了更多進展,可讓您處理、建立和管理提取要求和問題。重點包括

  • 您可以將團隊檢閱者新增至提取要求。
  • 所有您可以簽出預設分支的位置現在都遵循 git.pullBeforeCheckout 設定。
  • 支援 GitHub 的檔案層級註解。

檢閱擴充功能的 0.64.0 版本變更記錄,以瞭解其他重點。

GitHub Copilot

注意:這些功能在 GitHub Copilot Chat 擴充功能中提供。

聊天編輯器

我們在 GitHub Copilot Chat 上的第一個迭代啟用了側邊欄中的聊天工作階段。現在,我們支援將相同的聊天檢視開啟為編輯器。這可讓您自訂聊天工作階段的位置,使其位於視窗版面配置中的任何位置。

您可以執行命令互動式工作階段:開啟編輯器來開啟聊天編輯器,然後就像對待任何其他編輯器一樣,在編輯器群組之間移動它。

A chat view as an editor

其他程式碼區塊命令

程式碼區塊工具列中有兩個新命令:插入到新檔案在終端機中執行。這些命令位於現有的命令複製在游標處插入旁邊,並為您提供額外的選項,可快速對從 Copilot 傳回的程式碼建議採取動作。

The codeblock toolbar showing the two new codeblock commands

程式碼動作和內嵌聊天

編輯器聊天工作階段現在已與快速修正整合。選取波浪線的燈泡,即可使用 Copilot 進行修正或說明。

除了程式碼動作之外,內嵌聊天現在也可以從編輯器內容功能表中使用。

內嵌聊天模式

現在有一個設定可以變更內嵌聊天的不同模式:inlineChat.editMode

選項包括

  • live - 將 AI 建議的變更直接套用至編輯器 (預設值)。
  • livePreview - 套用變更,但在內嵌差異編輯器中轉譯它們。
  • preview - 在已中斷連線的內嵌差異編輯器中顯示變更。

命令選取區中類似的命令

憑藉 Copilot 的強大功能,命令選取區現在能夠顯示類似的命令結果。若要啟用此功能,您必須擁有有效的 Copilot 訂閱、處於聊天檢視的私人預覽中,並套用設定

"workbench.commandPalette.experimental.useSemanticSimilarity": true

以下是一些範例

  • 「開啟自動儲存」被解譯為切換自動儲存

    query "turn on autosave" is correctly resolved to Toggle Auto Save

  • 「新增函數」在底部包含來自擴充功能的其他結果

    query "add function" including Azure Functions Create Function command

  • 最後,如果您的結果沒有產生任何結果,您可以詢問 GitHub Copilot,這會將您的篩選方塊中的內容放入新的聊天中,以便 Copilot 處理。

    Ask GitHub Copilot "no results" option in the Command Palette

我們將在此空間中迭代,敬請期待!

預覽功能

TypeScript 5.1 支援

此更新包含對即將推出的 TypeScript 5.1 版本的支援。閱讀 TypeScript 5.1 Beta 部落格文章TypeScript 5.1 迭代計畫,以深入瞭解 TypeScript 團隊目前正在處理的內容。一些編輯器工具重點

  • JSX 標籤的連結編輯支援。
  • @param JSDoc 標籤的程式碼片段完成。

若要開始使用 TypeScript 5.1 每夜組建,請安裝 TypeScript Nightly 擴充功能。

使用 F2 重新命名相符的 JSX 標籤

當您在 JSX 標籤上觸發重新命名時,VS Code 現在只會重新命名相符的標籤,而不是嘗試更新標籤的所有參考

這需要 TypeScript 5.1+,並且符合重新命名在 HTML 中的運作方式。

您可以使用 javascript.preferences.renameMatchingJsxTagstypescript.preferences.renameMatchingJsxTags 停用此行為。

擴充功能撰寫

工作區編輯現在可以直接從 DataTransferFile 建立檔案

其中一個主要用途是拖放至編輯器 API,是將拖放的檔案/內容寫入工作區。然而,在先前的 VS Code 版本中,對於大型檔案來說,這可能會相當緩慢。這是因為檔案內容最終會在處理程序之間複製兩次:第一次是從渲染器到擴充功能主機以讀取檔案內容,然後再從擴充功能主機回到渲染器以寫入檔案。

class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
  async provideDocumentDropEdits(
    _document: vscode.TextDocument,
    _position: vscode.Position,
    dataTransfer: vscode.DataTransfer,
    _token: vscode.CancellationToken
  ): Promise<vscode.DocumentDropEdit | undefined> {
    const pngFile = dataTransfer.get('image/png')?.asFile();
    if (!pngFile) {
      return;
    }

    // Read file
    // This results in the entire file contents being copied over to the extension host.
    const contents = await pngFile.data();

    // Now create a workspace edit that writes the file into the workspace
    // This results in the same file contents from above being copied back again.
    const additionalEdit = new vscode.WorkspaceEdit();
    const path = vscode.Uri.joinPath(
      vscode.workspace.workspaceFolders![0].uri,
      'image.png'
    );
    additionalEdit.createFile(path, { contents });

    const edit = new vscode.DocumentDropEdit(path.fsPath);
    edit.additionalEdit = additionalEdit;
    return edit;
  }
}

現在,您可以透過直接將 DataTransferFile 傳遞給 WorkspaceEdit.createFile 來避免這些額外的複製。

additionalEdit.createFile(path, { contents: pngFile });

這應該能顯著提升效能,尤其是在處理較大型檔案時。

在 resolveCodeAction 中解析程式碼動作命令

現在,CodeActionProvider 可以在 resolveCodeAction 中延遲解析 CodeAction 的命令。先前,只有程式碼動作的編輯操作可以延遲解析。

如果命令的計算成本很高,這允許 CodeActionProvider 將這項工作延遲到即將套用程式碼動作時才執行。

editor/lineNumber/context 選單

我們已完成 editor/lineNumber/context 選單的最終設計。這允許擴充功能作者將動作貢獻到錨定於編輯器行號和字形邊距的關聯式選單。貢獻到此選單的動作會在命令引數中接收行號,並可以在其 when 子句中參考 editorLineNumber 內容金鑰。

驗證 API 改善

驗證工作階段偏好設定現在能感知工作區

對於支援同時登入多個帳戶的驗證提供者(例如 Microsoft),當使用 createIfNone: true 呼叫 vscode.authentication.getSession 時,系統會提示使用者選取要使用的帳戶。

先前的行為

此偏好設定會被記住,直到使用 ClearSessionPreference 旗標呼叫 vscode.authentication.getSession 為止。

新的行為

此偏好設定會針對每個工作區記住,直到在該工作區中使用 ClearSessionPreference 旗標呼叫 vscode.authentication.getSession 為止。

引入此行為是為了允許擴充功能針對不同的工作區使用不同的帳戶,並允許記住這些偏好設定。

注意:偏好設定是擴充功能特定的。因此,如果一個擴充功能呼叫 vscode.authentication.getSession,它不會影響另一個擴充功能呼叫 vscode.authentication.getSession 的工作階段偏好設定。

桌面版中的 Microsoft Sovereign Cloud 支援

在此迭代中,我們在核心產品中引入了一個新的驗證提供者:Microsoft Sovereign Cloud。此提供者用於驗證使用者到 Microsoft Sovereign Cloud(例如 Azure US Government、Azure China 等)。在底層,它的運作方式與 Microsoft 驗證提供者完全相同,只是 URL 不同。如果您想使用此驗證提供者,您可以引導使用者設定 microsoft-sovereign-cloud.endpoint 值,該值有一些預設值,但也支援自訂 Sovereign Cloud URL。

請記住,大多數使用者沒有 Sovereign Cloud 帳戶。我們的建議是,如果您想支援 Sovereign Cloud,您應該讓使用者可以透過 Sovereign Cloud 登入,但不要將其作為主要工作流程的一部分,以免混淆使用者。

建議的 API

每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟:

  1. 尋找您想要試用的建議,並將其名稱新增至 package.json#enabledApiProposals
  2. 使用最新的 vscode-dts 並執行 vscode-dts dev。它會將對應的 d.ts 檔案下載到您的工作區。
  3. 您現在可以針對建議進行程式設計。

您無法發布使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。

格式化多個範圍

DocumentRangeFormattingEditProvider API 有一個選用的建議函數,以支援一次格式化多個範圍。透過採用此 API,提供者可以改善格式化修改範圍的流程,因為只需要對語言服務發出單一請求。

文件拖放中繼資料

這個新的建議豐富了現有的拖放至編輯器 API,以支援新的拖放選取器。提供者可以使用它來提供更好的拖放至編輯器體驗。

此建議的第一部分為 DocumentDropEdit 新增了 label 屬性。這個人類可讀的標籤描述了編輯操作,並顯示在拖放選取器 UI 中。

Labels shown in the drop selector

第二部分為 registerDocumentDropEditProvider 新增了一個額外的 metadata 引數。這個中繼資料引數識別提供者,並告知 VS Code 它適用的內容類型。

vscode.languages.registerDocumentDropEditProvider(
  'markdown',
  new InsertBase64ImageProvider(),
  {
    // Unique id that identities this provider
    id: 'insertBase64Image',

    // Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
    // You can also use wildcards, such as `image/*` which matches any image content that is dropped.
    dropMimeTypes: ['image/*']
  }
);

dropMimeTypes 陣列可以幫助提高效能,因為您的提供者只會在相關的拖放內容時被呼叫。

工程

Electron 22 更新

在這個里程碑中,我們完成了使用自訂分配器來處理擴充功能主機的實驗,並準備將 Electron 22 捆綁到 VS Code Desktop 中。我們要感謝所有參與在 Insiders 組建上進行自我託管並提供早期意見反應的人員。此更新包含 Chromium 108.0.5359.215 和 Node.js 16.17.1

VS Code Day

您可以透過 VS Code Day 2023 YouTube 播放清單來了解 VS Code Day 的所有重點。您將在那裡找到關於諸如 GitHub Copilot資料科學TypeScript 等主題的會議,以及 Erich Gamma 和 Kai Maetzel 的 主題演講,他們在其中解釋了團隊如何建構和發布 VS Code。

感謝您

最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。

問題追蹤

對我們問題追蹤的貢獻

提取請求

vscode 的貢獻

vscode-js-debug 的貢獻

vscode-json-languageservice 的貢獻

  • @zardoy (Vitaly)
    • [completions] 始終顯示諸如 預設值 之類的詳細資訊 PR #183
    • [completion] 當 uniqueItems: true 時,不要建議重複的項目 PR #184

vscode-pull-request-github 的貢獻

monaco-editor 的貢獻

devcontainers/cli 的貢獻