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

2023 年 4 月 (1.78 版)

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

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

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


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

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

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

輔助功能

Aria 詳細程度設定

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

改進和統一的快速選擇體驗

以前,輔助功能模式使用者在使用命令面板和其他快速選擇時會遇到不同的行為。在輔助功能模式下,快速選擇的第一個專案未選中,以便完全可訪問。此迭代中,我們引入了新行為,讓您兩全其美:可訪問快速的快速選擇工作流,允許您立即按 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 設定啟用此功能。

Notebook

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

您現在可以將影像檔案拖放到筆記本 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 指令碼塊的嚴格空值

您現在可以使用 js/ts.implicitProjectConfig.strictNullChecks 設定來為 HTML 指令碼塊中的 JavaScript 啟用嚴格空值

Strict nulls in a script block

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

測試

連續執行現在可以為單個測試開啟。這需要一個支援連續執行並已採用上次迭代中最終確定的 supportsContinuousRun API 的測試擴充套件。

Continuous run button highlighted on an individual test

Web 版 VS Code

將檔案提交到 Git 大檔案儲存

Git 大檔案儲存 (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 擴充套件一起自動安裝。此更改是根據 Dev Container 使用者提供的反饋而做出的,他們希望在預設情況下不安裝 Jupyter 擴充套件的情況下實現更快的容器建立過程。

如果您有僅列出 Python 擴充套件的 Dev Container 定義,並希望繼續在容器中使用 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 專案建立虛擬環境。它不具備像虛擬環境那樣的傳統啟用指令碼,但當您的 Python 分發中沒有 venv 模組時,它提供了一個很好的替代方案來建立隔離環境。

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

格式化程式擴充套件建議

在之前的版本中,我們釋出了用於 Black 格式化程式autopep8 的新擴充套件,這些擴充套件與 Python 擴充套件協同工作,透過 語言伺服器協議 (LSP) 為 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 拉取請求和議題

GitHub 拉取請求和問題擴充套件取得了更多進展,該擴充套件允許您處理、建立和管理拉取請求和問題。亮點包括

  • 您可以將團隊審閱者新增到拉取請求。
  • 現在所有可以簽出預設分支的地方都尊重 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 的命令。以前只能延遲解析 Code Action 的編輯。

如果命令的計算成本很高,這允許 CodeActionProvider 將此工作推遲到將要應用 Code Action 時。

editor/lineNumber/context 選單

我們已最終確定 editor/lineNumber/context 選單。這允許擴充套件作者將操作新增到錨定到編輯器行號和字形邊距的上下文選單。貢獻到此選單的操作將在命令引數中接收行號,並且可以在其 when 子句中引用 editorLineNumber 上下文鍵。

身份驗證 API 改進

身份驗證會話首選項現在支援工作區

對於支援同時登入多個賬戶的身份驗證提供程式(如 Microsoft),當呼叫 vscode.authentication.getSession 並設定 createIfNone: true 時,系統會提示使用者選擇要使用的賬戶。

以前的行為

此首選項會一直記住,直到使用 ClearSessionPreference 標誌呼叫 vscode.authentication.getSession

新的行為

此首選項會為每個工作區記住,直到在該工作區中使用 ClearSessionPreference 標誌呼叫 vscode.authentication.getSession

引入此行為是為了允許擴充套件為不同的工作區使用不同的賬戶,並允許記住這些首選項。

注意:首選項是特定於擴充套件的。因此,如果一個擴充套件呼叫 vscode.authentication.getSession,它不會影響另一個擴充套件呼叫 vscode.authentication.getSession 的會話首選項。

桌面版 Microsoft 主權雲支援

在此迭代中,我們在核心產品中引入了一個新的身份驗證提供程式:Microsoft Sovereign Cloud。此提供程式用於向 Microsoft Cloud for Sovereignty(如 Azure 美國政府版、Azure 中國版等)的使用者進行身份驗證。在底層,它與 Microsoft 身份驗證提供程式的工作方式相同,只是 URL 不同。如果您想使用此身份驗證提供程式,您可以引導使用者設定 microsoft-sovereign-cloud.endpoint 值,該值有一些預設值,但也支援自定義主權雲 URL。

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

提議的 API

每個里程碑都會帶來新的提議 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 桌面版中。我們要感謝所有參與在 Insiders builds 上自託管並提供早期反饋的人。此更新附帶 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 的貢獻

vscode-pull-request-github 的貢獻

monaco-editor 的貢獻

devcontainers/cli 的貢獻