🚀 在 VS Code 中

2021 年 2 月 (版本 1.54)

更新 1.54.1:此更新解決了擴充功能相依性的問題

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

更新 1.54.3:此更新解決了這個問題

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


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

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

加入我們的直播,在 3 月 11 日星期四太平洋時間上午 8 點(倫敦下午 4 點)觀看 VS Code 團隊的直播,以觀看此版本新功能的示範,並向我們即時提問。

Insiders: 想要盡快試用新功能嗎?您可以下載每晚的 Insiders 組建,並在最新更新可用時立即試用。

Apple Silicon

我們很高興地宣布在此迭代中首次發行穩定的 Apple Silicon 組建。使用 M1 晶片的 Mac 使用者現在可以在沒有 Rosetta 模擬的情況下使用 VS Code,並且在執行 VS Code 時會注意到更好的效能和更長的電池續航力。感謝社群使用 Insiders 組建進行自我託管,並在迭代初期回報問題。

macOS 的 VS Code 預設下載現在是通用組建,可在所有 Mac 上原生執行。在下載頁面上,您可以找到更多適用於 Intel 或 Apple Silicon 的架構特定組建連結,與通用套件相比,這些組建的下載檔案較小。

Website showing the new downloads view for Apple Silicon builds

Website showing the default download for macOS

協助工具

工具列和索引標籤佔用一個 Tab 停駐點

工作台中所有工具列現在都遵循標準導覽行為,因此工具列在 Tab 順序中僅佔用一個位置,並且可以使用方向鍵導覽。一旦焦點在工具列上,應使用方向鍵將焦點移動到工具列中的特定項目。由於此變更,工作台的 Tab 停駐點大幅減少,使其更容易在所有部分之間導覽。

為了保持一致性,相同的變更也應用於索引標籤區域。因此,整個索引標籤區域只有一個 Tab 停駐點,索引標籤之間的鍵盤導覽應使用向左和向右方向鍵完成。

Windows 上的單字導覽

我們改進了 Windows 上單字導覽的執行方式,使其與 Windows 螢幕閱讀器對基於 Electron 的應用程式的期望保持一致。現在,當使用單字導覽時,螢幕閱讀器會正確讀出每個單字。

由於此變更,我們正在棄用以下命令。它們仍然可以運作,但我們可能會在未來移除它們。

  • cursorWordAccessibilityLeft
  • cursorWordAccessibilityLeftSelect
  • cursorWordAccessibilityRight
  • cursorWordAccessibilityRightSelect

非 Windows 平台已經如預期般運作,因此我們沒有在那裡進行任何變更。

改進檢視和按鈕的角色

根據使用者意見反應,我們改進了工作台中多個檢視和按鈕的角色。活動列側邊列面板現在具有 role:none,這將使螢幕閱讀器不那麼冗長。活動列內的管理帳戶按鈕現在正確地宣告它們有一個彈出視窗。

整合式終端機

在視窗重新載入時保留終端機程序

本機終端機程序現在會在視窗重新載入時還原,例如當擴充功能安裝需要重新載入時。終端機將重新連線,並且終端機的 UI 狀態將會還原,包括活動索引標籤和分割終端機的相對尺寸。

In a local window, two split terminals are created and resized. On reload, the layout appears unchanged.

可以透過將 terminal.integrated.enablePersistentSessions 設定為 false 來停用此功能。

Windows 效能改進

由於新的終端機程序配置,來自終端機程序的頻繁 pty 資料事件現在應能更快地處理。由於 Windows 上的 conpty 提供的事件較小,預計這對 Windows 的影響大於其他平台。

自動重新啟動需要環境變更的終端機

最近推出了一項新功能,使擴充功能能夠影響終端機的環境。各種語言擴充功能和內建 git 擴充功能使用此功能來啟用 VS Code 作為 git 驗證提供者,以免除登入的需求。先前,此功能的 UX 是在右上角顯示一個不明顯的 ⚠️ 圖示,以指示終端機的環境已過時。指示器不明顯,因為環境變更可能重要也可能不重要。

我們已調整此功能,以在尚未與之互動時自動重新啟動具有過時環境的終端機。這可能會導致一些閃爍,但擴充功能終端機整合現在更加無縫。例如,WSL 視窗中的第一個終端機應不再顯示 Git 驗證錯誤,前提是重新啟動發生在終端機中輸入之前。

工作台

Emmet

以縮寫包裝以縮寫包裝個別行命令已合併為單一的以縮寫包裝命令,以減少對使用哪個包裝命令的任何混淆。此外,以縮寫包裝命令現在可以正確顯示預覽空白。

emmet.extensionsPath 設定現在也可以接受路徑陣列,而不僅僅是字串。因此,當與設定同步結合使用時,可以指向不同機器上的不同程式碼片段檔案,而無需更新每台機器的設定。

產品圖示主題

第一個產品圖示主題已在擴充功能市集中提供。感謝主題作者的傑出工作!

若要選取或尋找主題,請使用命令提示字元或設定齒輪中的偏好設定:產品圖示主題命令。

Product icon themes in the Extension Marketplace

內容金鑰的 IntelliSense

VS Code 使用 when 子句來啟用和停用鍵盤快速鍵。擴充功能也使用 when 子句來控制 功能表檢視 貢獻。撰寫這些 when 子句現在變得更加簡單,因為編輯器為它們提供完成項目。

keybindings.json 中內容金鑰的 IntelliSense 主題:GitHub Light Theme,字型:FiraCode

開啟的編輯器新的未命名檔案動作

現在在開啟的編輯器檢視標題區域中有一個新的未命名檔案動作。

New untitled file in Open Editors view

更新的應用程式功能表設定

應用程式功能表可見性的 window.menuBarVisibility 設定已更新,以更好地反映選項。已進行兩項主要變更。

首先,設定的 default 選項已重新命名為 classic

其次,應用程式功能表列中的顯示功能表列項目現在會在 classiccompact 選項之間切換。若要完全隱藏它,您可以更新設定,或在 compact 模式下使用活動列的內容功能表。

應用程式功能表中的顯示功能表列項目 主題:GitHub Light Theme

Webview 快取改進

我們改進了 Webview 中本機檔案的快取。如果 Webview 從磁碟重新載入檔案,則我們現在使用 ETag 以避免在檔案未變更時再次讀取檔案。這可以消除資料傳輸,並縮短回應時間,尤其是在遠端工作區中。

此快取目前僅適用於現有的 Webview 重新載入資源時。它不適用於新建立的 Webview,即使該 Webview 屬於先前建立類似 Webview 的擴充功能。

工作區搜尋動作的變更

我們已修改現有的 workbench.view.search,使其不再將選取的文字放入搜尋輸入中,而是開啟輸入。若要使用選取的文字並遵循 search.mode 設定來建立新的搜尋,應使用 workbench.action.findInFiles

僅限修飾鍵的鍵盤快速鍵

現在可以為重複的修飾鍵定義鍵盤快速鍵,例如 shift shiftalt altctrl ctrlcmd cmd / meta meta / win win。這些鍵盤快速鍵可以手動輸入到 keybindings.json 中,例如

{ "key": "shift shift", "command": "workbench.action.quickOpen" }

更新的清單/樹狀結構 UI

我們已更新清單/樹狀結構樣式,以符合原生焦點和選取指示器:焦點元素現在將使用外框顏色呈現。

List/tree UI showing focused element

重大變更

建議主題發佈者也採用此樣式,只需將 list.focusBackground 顏色的自訂取代為 quickInput.list.focusBackground 顏色即可。若要查看範例,請查看此commit

表格小工具

我們引入了一個新的表格小工具,它建立在現有的清單小工具之上,因此我們可以以與呈現清單元素相同的效能來呈現表格資料。目前,它用於遠端功能的連接埠檢視中。

Table widget view of remote Ports

入門

我們正在試驗一個新的編輯器,在啟動時顯示,稱為入門編輯器。這旨在讓新使用者更容易接近 VS Code 的某些功能。一些 Insiders 使用者可能已經看過它,並且在本迭代過程中將緩慢地推廣到更多穩定使用者。您可以隨時透過將 workbench.startupEditor 設定修改為或遠離 gettingStarted 來選擇加入或退出新行為。

Getting Started experience walkthrough

時間軸檢視

您現在可以使用選取以進行比較與選取的項目比較命令,跨 Git 歷史記錄時間軸項目比較變更,這與在 Explorer 檢視中比較檔案類似。此功能可讓您快速查看 Git 檔案歷史記錄中任意兩個提交之間的所有變更。

Select for Compare command in context menu

預設窗格懸停邊框顏色

1.52 版本中,我們為窗格引入了懸停邊框顏色權杖 (sash.hoverBorder),但未設定預設值。我們現在預設在所有主題上顯示此顏色。

Sash hover border color

偵錯

中斷點檢視改進

用於移除中斷點的新內嵌動作

我們已在中斷點檢視中新增了一個內嵌動作 X 以移除中斷點。此動作應使移除中斷點更容易。

Breakpoints view showing X next to selected breakpoint

例外狀況篩選器的說明文字支援

最近,我們已新增對中斷點檢視中例外狀況篩選器編輯條件的支援。

為了使這些條件更易於探索,並且其語法不言自明,VS Code 現在在中斷點篩選器上顯示懸停,並在條件文字方塊中顯示預留位置文字。

由於兩者的資訊都由底層偵錯擴充功能提供,因此它可以比某些通用訊息更具體(因此更有幫助)。

由於此新功能基於對偵錯配接器協定 (見下文) 的新增功能,因此需要偵錯擴充功能選擇加入。在此版本中,只有 VS Code 的內建 JavaScript 偵錯工具支援此新功能。

Breakpoint placeholder

新設定和其他改進

摺疊偵錯主控台中相同的行

有一個新設定 debug.console.collapseIdenticalLines,可控制偵錯主控台是否應摺疊相同的行,並使用徽章顯示多次出現的情況。預設值為摺疊。

控制在偵錯之前要儲存哪些編輯器

有一個新設定 debug.saveBeforeStart,可控制在偵錯開始之前要儲存哪些編輯器。此設定具有以下值

  • allEditorsInActiveGroup:儲存活動群組中的所有編輯器。預設值。
  • nonUntitledEditorsInActiveGroup:儲存活動群組中的所有編輯器,但未命名的編輯器除外。
  • none:不儲存任何編輯器。

此設定對於 PowerShell 偵錯很有用,因為 PowerShell 偵錯工具支援偵錯未儲存的檔案。

改進重新啟動框架動作的啟用

透過對偵錯配接器協定的新增功能,偵錯擴充功能現在能夠向 VS Code UI 傳達「重新啟動框架」動作是否在選取的堆疊框架上可用。VS Code 現在停用呼叫堆疊檢視中無法重新啟動的堆疊框架的重新啟動框架內嵌動作。

例如,JS-Debug 擴充功能已採用此功能,現在非同步堆疊追蹤會停用重新啟動框架動作。

語言

TypeScript 4.2

VS Code 現在隨附 TypeScript 4.2.2。此主要更新包含許多 TypeScript 語言改進,以及 JavaScript 和 TypeScript 工具的許多改進和錯誤修正。

您可以在 TypeScript 部落格上閱讀有關 TypeScript 4.2 的更多資訊。

快速修正以宣告遺失的函式

新的新增遺失的函式宣告快速修正會為遺失的函式建立存根。例如,如果我們呼叫遺失的函式 add

const x: number = add(1, 2);

add 上使用新增遺失的函式宣告會產生

const x: number = add(1, 2);
function add(arg0: number, arg1: number): number {
  throw new Error('Function not implemented.');
}

您可以在編寫程式碼時使用此快速修正,以根據呼叫簽名快速為函式建立存根。

若要在 JavaScript 中使用此快速修正,您必須啟用類型檢查

JS Doc 範本現在產生 @returns

如果正在註解的函式包含 return 陳述式,則 JS Doc 範本現在會自動包含 @returns。例如,對於函式 getViz

function getViz(el) {
  return el?.viz;
}

產生的 JSDoc 範本為

/**
 *
 * @param {*} el
 * @returns
 */
function getViz(el) {
  return el?.viz;
}

您可以使用 javascript.suggest.jsdoc.generateReturnstypescript.suggest.jsdoc.generateReturns 在 JSDoc 註解中停用 @returns

已棄用的 DOM API 現在已標記

已棄用的 DOM 方法現在在建議和程式碼中標記為已棄用

document.clear being marked as deprecated in code

您可以透過設定 editor.showDeprecated: false 來停用在編輯器中顯示已棄用的屬性和函式。

筆記本

自動重新載入筆記本

當筆記本的檔案在磁碟上變更且沒有未儲存的變更時,筆記本現在會自動重新載入。這應該使處理版本控制下的筆記本變得更加簡單。

改進大型儲存格的焦點

當大型筆記本儲存格成為焦點時,您現在可以更好地判斷哪個儲存格成為焦點,即使儲存格的頂部和底部超出檢視範圍。我們現在在焦點儲存格的左側和右側顯示邊框。

Notebook focus for a large cell

CSS/LESS/SCSS 和 HTML 中的懸停

您現在可以微調 HTML 和 CSS 中懸停的內容,以

  • 不顯示來自 MDN 的文件
  • 不顯示 MDN 頁面的連結

使用設定 css.hover.documentationcss.hover.references 來變更 CSS 的懸停。將 css 替換為 htmlcssscssless 以變更這些語言的設定。

預覽功能

筆記本的可擴充 Markdown 轉譯器

在此迭代中,我們探索使筆記本儲存格的 Markdown 轉譯器可擴充。例如,在下面的螢幕擷取畫面中,我們擴充了 VS Code 的 Markdown 轉譯器,以支援在筆記本儲存格中顯示數學公式

A math formula being rendered in a notebook cell

為了使我們的 Markdown 轉譯器可擴充,我們探索使用 Markdown It 來轉譯所有筆記本 Markdown。我們還探索將轉譯的 Markdown 移動到筆記本的底層 Webview 中。

雖然我們尚未準備好開放此功能的官方 API,但我們計劃在 3 月繼續探索。您也可以立即使用未記錄的 notebook.experimental.useMarkdownRenderer: true 設定來試用新的可擴充 Markdown 轉譯器。

擴充功能的貢獻

Brackets

來自 Brackets 原始碼編輯器的開發人員可以使用 Brackets Keymap 擴充功能,在 VS Code 中繼續使用相同的鍵盤快速鍵。還有一個 Brackets Extension Pack,其中捆綁了用於處理 CSS 和建立即時預覽的擴充功能。

Brackets Extension Pack in the Marketplace

GitHub Pull Requests and Issues

GitHub Pull Requests and Issues 擴充功能上的工作仍在繼續,該擴充功能可讓您處理、建立和管理提取要求和問題。

若要了解所有新功能和更新,您可以查看擴充功能 0.24.0 版本的完整 變更記錄

遠端開發

遠端開發擴充功能上的工作仍在繼續,這些擴充功能可讓您使用容器、遠端機器或 Windows Subsystem for Linux (WSL) 作為功能完善的開發環境。

1.54 中的功能重點包括

  • 連接埠檢視表格配置
  • Remote - SSH:X11 轉發
  • WSL:改進的 WSL 2 支援

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

擴充功能撰寫

編輯器標題功能表和「執行」子功能表的限制

編輯器工具列 (editor/title) 中的空間有限。因此,我們有

  • 實作了溢位行為。當主要群組 (即使用圖示呈現的動作群組) 超過九個命令時,所有其他命令都會溢位到 ... 功能表中。
  • 新增了 editor/title/run 子功能表。我們要求擴充功能作者將執行和偵錯命令貢獻到此功能表中,而不是再貢獻到 editor/title 功能表中,因為我們在先前的版本中曾建議過。此外,不再需要使用魔術群組值 1_run@101_run@20 即可使命令顯示在正確的位置。

Run dropdown menu

另請注意,執行子功能表是動態的,當它是唯一子功能表時,會將自己替換為其第一個子功能表。

驗證提供者 API

您現在可以註冊驗證提供者,其他擴充功能可以使用它來對服務執行驗證。

擴充功能市集的新意見反應管道

有一個新的 公開存放庫,用於與擴充功能市集相關的問題。如果您有技術問題、想要提供意見反應或有功能要求,請開啟問題

更新的 codicon

我們已將以下新圖示新增至我們的 codicon 程式庫

  • debug-rerun
  • gather
  • git-pull-request-create
  • notebook-template
  • run-above
  • run-below
  • type-hierarchy
  • type-hierarchy-sub
  • type-hierarchy-super
  • variable-group

Codicons for tasks

我們也更新了以下圖示以保持一致

  • debug-alt-small
  • debug-alt
  • debug-rerun
  • play-circle
  • play
  • run-above
  • run-all
  • run-below

Consistent codicons

建議的擴充功能 API

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

  • 您必須使用 Insiders,因為建議 API 經常變更。
  • 您必須在擴充功能的 package.json 檔案中加入此行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到專案的來源位置。

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

圖示貢獻點

圖示貢獻點允許擴充功能依 ID 定義新圖示,以及預設圖示。然後,擴充功能 (或任何其他依賴於該擴充功能的擴充功能) 可以在可以使用 ThemeIcon 的位置使用該圖示 ID:在 Markdown 字串 中 (例如,"$(distro-ubuntu)" Ubuntu 20.04"),以及所有採用 ThemeIcon 的位置 (例如,new ThemeIcon("distro-ubuntu"))。

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

如需更多資訊,請參閱 問題 114942 以取得詳細資訊並提供意見反應。

內嵌值提供者 API

現今,VS Code 偵錯工具的顯示內嵌值功能基於 VS Code 核心中的通用實作,並且不提供透過設定進行自訂或透過擴充功能進行擴充的功能。因此,它並不完全適合所有語言,並且有時會顯示不正確的值,因為它不了解底層原始碼語言。因此,我們正在開發一個擴充功能 API,允許完全取代內建實作,或將實作的某些部分替換為自訂程式碼。

在此里程碑中,我們已首次實作 建議的 API

以下是內嵌值提供者 API 的簡要說明

  • 必須為一種語言註冊 InlineValuesProvider
  • 對於給定的文件,InlineValuesProvider 必須找到應顯示內嵌值的所有語言元素。
  • 對於每個元素,都必須傳回 InlineValue 描述元物件,以指示 VS Code 要顯示哪些資訊。目前支援三種類型的 InlineValue 物件
    • InlineValueText:要顯示的完整文字,
    • InlineValueVariableLookup:變數的名稱,VS Code 將嘗試在 [變數] 檢視中查閱以尋找其值。然後以「名稱 = 值」的形式顯示名稱和值,
    • InlineValueEvaluatableExpression:VS Code 將傳送至偵錯工具進行評估的運算式。然後以「運算式 = 結果」的形式顯示運算式和結果。

以下程式碼片段 (來自 Mock Debug) 顯示了「markdown」檔案的最小內嵌值提供者,它使用規則運算式來尋找「變數」,然後指示 VS Code 透過變數檢視尋找它們的值

vscode.languages.registerInlineValuesProvider('markdown', {
  provideInlineValues(
    document: TextDocument,
    viewport: Range,
    context: InlineValueContext
  ): ProviderResult<InlineValue[]> {
    const allValues: InlineValue[] = [];
    for (let l = 0; l <= context.stoppedLocation.end.line; l++) {
      const line = document.lineAt(l);
      var regExp = /local_[ifso]/gi; // match variables of the form local_i, local_f, Local_i, LOCAL_S...
      do {
        var match = regExp.exec(line.text);
        if (match) {
          const varName = match[0];
          const varRange = new Range(l, match.index, l, match.index + varName.length);
          allValues.push(new InlineValueVariableLookup(varRange, varName));
        }
      } while (match);
    }
    return allValues;
  }
});

現在是運作中的內嵌值提供者

Debugger shows inline values

如果您想為此建議的 API 提供意見反應,請將註解新增至此問題

測試

我們繼續在 VS Code 中的測試方面取得進展。本月,我們專注於改進 VS Code 和擴充功能 API 中的基本體驗。我們也發佈了一些關於測試的 臨時文件,隨著 API 繼續穩定,這些文件將會充實。

語言伺服器協定

即將發行的 3.17 版本中實作了 診斷提取模型的第一個提案。該提案可在 VS Code LSP 程式庫的下一個版本中取得。

偵錯配接器協定

ExceptionBreakpointsFilter 的更多說明文字屬性

兩個選用的 UI 屬性 descriptionconditionDescription 已新增至 ExceptionBreakpointsFilter

透過這些屬性,用戶端可以顯示有關例外狀況中斷點的其他資訊。description 屬性可以顯示在 hover 中,而 conditionDescription 可以用作文字方塊的預留位置文字,可在其中編輯條件。

已改善 setExceptionBreakpoints 要求的描述

我們改善了 setExceptionBreakpoints 要求的描述,新增了關於如果使用者輸入無效的例外狀況中斷點條件,配接器應執行哪些動作的指引。

堆疊框架的新 canRestart 屬性

新的選用布林值屬性 canRestart 已新增至堆疊框架。它指出是否可以使用 restart 要求重新啟動堆疊框架。根據此資訊,用戶端可以啟用或停用重新啟動框架內容功能表動作。

工程

Electron 沙箱的進度

在此里程碑中,我們持續讓 VS Code 視窗準備好啟用 Electron 的沙箱內容隔離功能。

具體來說

  • 我們能夠將轉譯器中一些原生的模組需求移至其他程序。
  • MessagePort 通訊通道已實作,可在啟用沙箱時運作。

新的終端機程序配置

終端機程序現在是在新的「pty host」程序下產生,而不是在視窗程序下。此變更不僅是 Electron 沙箱的一部分,也應能改善終端機的穩定性和效能。

發佈至 Windows Package Manager 的 Windows 安裝程式

適用於 x86x64 的 Windows 使用者和系統安裝程式現在已發佈至 Windows Package Manager。您可以使用 winget 工具搜尋所有 Visual Studio Code 安裝程式 - winget search vscode,並安裝任何已發佈的安裝程式。

使用 TypeScript 4.3 建置 VS Code

VS Code 現在是使用 TypeScript 4.3 的每晚建置版本來建置。這讓我們可以驗證 TypeScript 團隊的最新成果,並針對新的變更提供意見反應。

最新的 TypeScript 版本已協助我們找出一些案例,在這些案例中,我們在條件式中遺失了 awaits

防止 yarn.lock 變更

我們現在有 CI 可以防止針對 yarn.lock 檔案的 PR,以改善供應鏈安全。

預設分支:main

我們已開始將所有存放庫的預設分支重新命名為 main,包括 microsoft/vscode。我們已完成約 60% 的工作。

文件

VS Code 和課堂上的 Python

閱讀 Harvey Mudd College 的電腦科學教授的案例研究,他在他的 Python 入門 CS 課程中使用 VS Code。瞭解他為學生推薦的設定,以及有用的擴充功能和免費的自學 Python 和資料科學課程。

擴充功能疑難排解部落格文章

每個人都喜歡安裝和使用 VS Code 擴充功能。但是,當您安裝了許多擴充功能時,有時編輯器可能會開始出現「異常」行為,而且如果知道行為是由特定擴充功能引起的,那就太好了。如果您錯過了先前關於 擴充功能二分 公用程式的公告,您可以閱讀這篇 「使用二分法解決擴充功能問題」 部落格文章,其中說明如何快速疑難排解「不良」擴充功能,甚至協助擴充功能作者提供意見反應。

值得注意的修正

  • 100151:功能表鍵套用至檔案總管中的錯誤項目
  • 112055:偵錯為每個 Python 工作階段開啟新的整合式終端機
  • 114881:複製資料夾或檔案時保留符號連結
  • 114933:「無法追蹤工作」令人沮喪
  • 115922:游標鍵在檔案總管中篩選時無法運作
  • 116037:偵錯主控台中輸出的連結未顯示 hover
  • 116101:我找不到命令搜尋中的目標命令,因為英文描述已消失
  • 116932:從貢獻的命令執行擲回自訂例外狀況會顯示神祕的錯誤彈出視窗

感謝您

最後但同樣重要的是,衷心感謝下列人士在本月為 VS Code 做出貢獻

對我們的問題追蹤做出貢獻

vscode 做出貢獻

language-server-protocol 做出貢獻

vscode-languageserver-node 做出貢獻

vscode-emmet-helper 做出貢獻

vscode-html-languageservice 做出貢獻

vscode-js-debug 做出貢獻

vscode-textmate 做出貢獻

vscode-vsce 做出貢獻