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

2018 年 10 月 (版本 1.29)

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

下載:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball


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

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
您還可以觀看 Cloud Developer Advocate Brian Clark 製作的 1.29 版本亮點影片

釋出說明按以下與 VS Code 重點領域相關的部分進行排列。以下是一些進一步的更新

  • 工作臺 - 平臺特定的行尾字元,突出顯示已修改的檔案選項卡。
  • 整合終端 - 分割終端 cwd 選項,Cmd+Backspace 刪除到行首。
  • 語言 - 懸停時顯示 CSS 特異性,處理未知 CSS 屬性。
  • 除錯 - 多個除錯控制檯,入口停止啟動,console.log 訊息樣式。
  • 擴充套件創作 - 活動終端 API,對自定義檢視的更多控制。

Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code

VS Code 現在支援多行搜尋!與編輯器中一樣,正則表示式搜尋僅在其包含 \n 字面量時才以多行模式執行。搜尋檢視在每個多行匹配項旁邊顯示一個提示,其中包含附加匹配行的數量。

Multiline search

此功能得益於 ripgrep 工具在實現多行搜尋方面所做的工作。

現在還可以透過設定 "search.usePCRE2": true 在正則表示式搜尋中使用反向引用先行斷言。這會將 ripgrep 配置為使用 PCRE2 正則表示式引擎。雖然 PCRE2 支援許多其他功能,但我們只支援在 JavaScript 中仍然有效的正則表示式,因為開啟的編輯器仍然使用基於編輯器的 JavaScript 搜尋進行搜尋。

Fancy regex search

如果您仍然缺少後行斷言,請不要擔心!該功能最近才被 JavaScript 支援,並應在稍後的 Electron shell 更新中新增到 VS Code 中。

我們添加了一個設定 search.showLineNumbers,它將在搜尋檢視中顯示每個匹配項的行號。

禁用搜索和替換預覽

有一個新設定 search.useReplacePreview,它允許您在搜尋檢視中執行搜尋/替換時禁用出現的預覽差異。

line numbers

Git 允許您使用 core.excludesfile 配置屬性配置全域性 gitignore 檔案。預設情況下,搜尋不遵循全域性 gitignore 檔案,但您現在可以透過啟用新設定 search.useGlobalIgnoreFiles 來更改此設定。

工作臺

macOS Mojave 暗色模式支援

VS Code 現在更好地支援 macOS Mojave 暗色模式。以前,即使 macOS 執行在暗色主題下,VS Code 選單和對話方塊也會顯示預設的亮色主題。現在,如果啟用暗色模式,所有本機 UI 元素都將以暗色模式顯示。

macOS Mojave Dark Mode

macOS 全屏支援

引入了一個新設定 window.nativeFullScreen,如果設定為 false,它將為 VS Code 啟用不使用本機 macOS 全屏功能的全屏模式。這樣做的好處是,進入全屏模式不會在桌面上建立 macOS 空間。預設情況下,VS Code 仍將使用 macOS 本機全屏。

files.eol 的新預設值:auto

files.eol 行尾設定現在具有新的預設值 auto。當設定為 auto 時,新檔案的行尾字元特定於作業系統。在 Windows 上為 \r\n,在 macOS 和 Linux 上為 \n。您仍然可以明確將 file.eol 設定為 \n\r\n

突出顯示已修改的選項卡

新設定 workbench.editor.highlightModifiedTabs 在編輯器髒(有未儲存的更改)時,在編輯器選項卡的頂部顯示粗邊框。這使得更容易找到需要儲存的檔案。邊框的顏色可以自定義(請參閱下文)。

Highlight modified tabs

居中編輯器佈局自動調整大小

當開啟超過 1 個編輯器組時,居中佈局檢視現在將自動調整大小以達到最大寬度。這應該使居中佈局更易於使用,並減少手動切換的需要。此行為由預設啟用的新設定 workbench.editor.centeredLayoutAutoResize 控制。

麵包屑中的符號順序

有一個新設定控制麵包屑選擇器中符號的排序方式:breadcrumbs.symbolSortOrder

允許的值是

  • position - 檔案中的位置(預設)
  • name - 字母順序
  • type - 符號型別順序

下面的示例顯示了按名稱排序的麵包屑符號列表

Breadcrumb picker ordered by name

麵包屑和預覽編輯器

當在麵包屑導航中單擊中間項時,它們現在會在新編輯器中開啟,並且不會重複使用預覽編輯器。此行為現在與在資源管理器中單擊中間檔案匹配。

通知即使顯示按鈕也會自動隱藏

以前,如果通知包含按鈕,VS Code 永遠不會隱藏它們。這可能導致通知堆積在右下角並覆蓋編輯器的一部分。在此版本中,即使通知顯示按鈕,它們也會在超時後隱藏。

有兩個例外

  • 具有 error 嚴重性的通知不會隱藏,假設使用者需要採取一些操作。
  • VS Code 中的一些特定通知將保持開啟狀態。例如,在瀏覽 VS Code Marketplace 後詢問您是否要安裝擴充套件的通知。

注意:即使通知被隱藏,您始終可以從通知中心訪問所有通知,方法是單擊狀態列中的小鈴鐺圖示或透過顯示通知 (notifications.toggleList) 命令。

面板位置按鈕到上下文選單

為了節省水平空間並減少混亂,我們從面板標題區域刪除了切換面板位置按鈕(移至右側移至底部)。該操作現在在面板標題區域上下文選單和檢視 > 外觀 > 切換面板位置主選單中可用。刪除此按鈕的另一個原因是,我們認為使用者會一次性設定其佈局,並且通常不會來回切換。

Move panel

按檔案型別更新的檔案圖示

上一個版本中,我們為常見的 VS Code 檔案型別添加了自定義圖示。我們現在將這些圖示新增到較小的檢視中,以便它們出現在列表檢視中。

Updated file icons

在設定編輯器中,當設定在當前選定範圍之外的範圍(使用者、工作區)中配置時,我們會顯示一個提示。其他範圍提示現在是連結,將帶您到其他範圍中的設定。

modified in link

樹小部件效能

VS Code 樹小部件控制元件在 VS Code UI 的許多地方使用,但在某些特定用例(問題面板、大綱檢視)中達到了效能限制。我們一直在研究更快的虛擬樹小部件實現,它們可以適應不同級別的效能與 API 便利性。您可以在此處閱讀以瞭解更多資訊。

新的 ObjectTree 小部件現在正在問題面板中使用,我們已經看到了顯著的改進。我們能夠顯著提高工作臺可以處理的問題項數量,並提高某些操作(例如全部摺疊)和高階篩選場景的速度。這些改進現在使得處理更大的集合成為可能。

工作臺導航命令

添加了四個命令以改進工作臺導航

  • workbench.action.nextSideBarView:轉到側欄中的下一個檢視。
  • workbench.action.previousSideBarView:轉到側欄中的上一個檢視。
  • workbench.action.nextPanelView:轉到下一個面板。
  • workbench.action.previousPanelView:轉到上一個面板。

預設情況下,這些命令沒有鍵盤快捷鍵。

還添加了兩個上下文鍵 sideBarFocuspanelFocus。這允許在不同的工作臺區域中使用相同的鍵繫結來執行不同的命令

[
  { "key": "cmd+]", "command": "workbench.action.nextEditor" },
  { "key": "cmd+[", "command": "workbench.action.previousEditor" },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousSideBarView",
    "when": "sideBarFocus"
  },
  {
    "key": "cmd+]",
    "command": "workbench.action.nextPanelView",
    "when": "panelFocus"
  },
  {
    "key": "cmd+[",
    "command": "workbench.action.previousPanelView",
    "when": "panelFocus"
  }
]

workbench-navigation

顯示檢視組父級

開啟檢視命令(在快速開啟中為 view)現在顯示每個檢視組的父級,以更好地表示檢視層次結構。例如,資源管理器組現在顯示為側欄 / 資源管理器,終端組顯示為面板 / 終端

structured-view

編輯器

IntelliSense 中的檔案和資料夾圖示

IntelliSense 小部件現在根據您的檔案圖示主題顯示檔案完成的檔案和資料夾圖示。這提供了統一的外觀,並幫助您快速識別不同的檔案型別。

File Icons in IntelliSense

格式化選區

為了加快小型格式化操作,格式化選區命令在沒有編輯器選區時現在將格式化當前行。

顯示錯誤程式碼

如果定義了錯誤程式碼,編輯器現在會顯示問題的錯誤程式碼。錯誤程式碼顯示在行尾的方括號中。

您可以在下面看到 TypeScript 顯示錯誤程式碼“2339”

error codes

整合終端

分割終端可以繼承工作目錄

添加了一個設定 terminal.integrated.splitCwd 來控制終端分割時新終端的當前工作目錄 (cwd)

  • workspaceRoot - 以前的行為;新的分割終端將使用工作區根目錄作為工作目錄。在多根工作區中,將提供選擇要使用哪個根資料夾的選項。
  • initial - 新的分割終端將使用父終端啟動時的工作目錄。
  • inherited - 在 macOS 和 Linux 上,新的分割終端將使用父終端的工作目錄。在 Windows 上,這與 initial 的行為相同。

Cmd+Backspace 刪除到行首

在 macOS 上添加了一個新鍵繫結 Cmd+Backspace,它向終端傳送 \u0015 (Ctrl+U)。在 bash 中,這會從游標刪除到行首;在 zsh 中,它會刪除整行。

實驗性緩衝區改進

一個新設定 terminal.integrated.experimentalBufferImpl 允許將終端儲存其緩衝區的方式更改為基於 TypedArray/ArrayBuffer 的實現。如果您想選擇加入,您可以期待全面提高效能,包括減少記憶體使用和垃圾回收,以及總體上提高終端的吞吐量。

{
  "terminal.integrated.experimentalBufferImpl": "TypedArray"
}

這僅僅是個開始,我們預計在接下來的幾個版本中,在將其作為預設實現之前,吞吐量和記憶體使用將進一步改進。特別感謝來自 xterm.js 團隊的 @jerch,他一直是這個長達數月的專案的主要推動力。

任務

在執行任務前清除終端

任務 presentation 配置中添加了一個新屬性 clear。將 clear 屬性設定為 true 以在任務執行之前清除終端。

除錯

可摺疊的堆疊幀

有時偵錯程式中的呼叫堆疊包含使用者不感興趣的堆疊幀(外部程式碼、跳過的檔案等)。為了減少混亂並節省垂直空間,我們現在將這些不感興趣的堆疊幀呈現為摺疊狀態。

stack frames

改進的已載入指令碼檢視

在此里程碑中,我們更新了已載入指令碼檢視以支援檔案圖示,並添加了將相關資源顯示為子元素的功能。除錯擴充套件可以使用此功能顯示已轉換為指令碼的原始檔。

下面 Node.js 偵錯程式中的圖片顯示了 JavaScript 檔案的 TypeScript 原始碼(如源對映中可用)

loaded scripts view

請注意,相關資源功能需要除錯擴充套件選擇加入。在 10 月版本中,只有 node-debug 對 Node.js 版本 < 8.0(即“舊版”)的此功能提供實驗性支援。

多個除錯控制檯

在除錯多個除錯會話時,我們現在會在不同的除錯控制檯中顯示它們的輸出。這使得更容易區分哪個除錯會話負責哪個輸出和評估。

multiple debug consoles

啟動除錯並在入口處停止

對於 Node.js 除錯,我們添加了一個新命令除錯:啟動除錯並在入口處停止 (extension.node-debug.startWithStopOnEntry)。如果您想啟動除錯並立即在程式入口處停止,請使用此命令。預設鍵繫結是F11。請注意,此命令僅在您選擇的啟動配置型別為 node 時可用。

Node 除錯支援 console.log 樣式

除錯 Node.js(或使用“Debugger for Chrome”擴充套件除錯 Chrome)時,您現在可以使用 %c 設定 console.log 訊息的樣式,類似於 Chrome DevTools 支援的功能。支援的屬性有 colorbackgroundfont-weight: boldtext-decoration: underline

console styles

斷點小部件展開為多行

斷點小部件現在可以展開為多行,使用 Shift+Enter 插入附加行,或者簡單地貼上多行條件或日誌訊息。這應該有助於編輯更復雜的條件和日誌訊息。

breakpoint widget

語言

TypeScript 3.1.4

此版本包含 TypeScript 3.1.4,這是一個小更新,修復了一些重要錯誤

Markdown 片段改進

內建的 Markdown 片段,例如用於連結和程式碼塊的片段,現在預設使用當前選定的文字。這允許您建立鍵繫結,將當前選定的文字轉換為連結或標題

{
  "key": "cmd+k",
  "command": "editor.action.insertSnippet",
  "when": "editorTextFocus",
  "args": {
    "langId": "markdown",
    "name": "Insert link"
  }
}

懸停訊息中的 CSS 特異性

CSS 懸停現在顯示 CSS 特異性

css-specificity

處理未知的 CSS 屬性

使用 CSS 預處理器(例如 PostCSS)時,您可能會使用在開發期間編譯為有效屬性的無效屬性。[css/less/scss].lint.validProperties 設定可防止 VS Code 將這些無效屬性標記為錯誤。

改進的 CSS 零單位警告

CSS 現在會對 CSS 簡寫屬性值中使用的零單位進行 Lint 檢查。例如,0px 現在會觸發警告。

JSON 模式載入錯誤的優雅處理

如果 VS Code 無法下載用於 IntelliSense 或 JSON 檔案錯誤檢查的 JSON 模式,狀態列中將顯示警告

json-schema-loading

過去,您會在編輯器中看到錯誤。

工程

繼續探索 Electron 3.0

在此里程碑期間,我們繼續探索將 Electron 3.0.0 捆綁到 VS Code 中。這是一個主要的 Electron 版本,它附帶 Chrome 66 和 Node.js 10.x(與我們當前擁有 Chrome 61 和 Node.js 8.x 的版本相比,這是一個重大飛躍)。我們計劃在不久的將來向我們的 Insiders 使用者推送更新,以收集更多反饋。如果您有興趣提供幫助,請務必安裝 VS Code Insiders

嚴格的空值檢查核心 VS Code

在此里程碑中,我們還開始工作,在核心 VS Code 原始碼中啟用 TypeScript 的嚴格空值檢查。嚴格空值檢查有助於捕獲許多常見的程式設計錯誤,並使程式設計師的意圖更加明確。我們已經看到在 VS Code 的內建擴充套件中使用嚴格空值檢查的明顯好處。

由於 VS Code 的核心原始碼包含數千個檔案,我們正在逐步採用嚴格空值檢查。我們首先對沒有匯入的檔案進行嚴格空值檢查,現在正在迭代地對僅匯入其他嚴格空值檢查過的檔案中的檔案啟用嚴格空值檢查。這將持續到整個程式碼庫都轉換完成。

啟用嚴格空值檢查是一項重大的工程工作,但我們認為在原始碼和產品質量方面的回報是值得的。您可以在此處跟蹤我們的嚴格空值檢查進度。

雜項

低對比度選單欄

如果您使用的是 Ubuntu 18.10 或 GTK 主題,將淺色或深色上下文選單與應用程式選單欄的相反主題混合使用,您可能會遇到難以閱讀的低對比度選單欄。

對此有兩種可能的解決方法

  • 嘗試透過將設定 window.titleBarStyle 配置為 custom 來使用 VS Code 自定義標題欄樣式。
  • 更改您的 GTK 主題。您可以透過安裝 Gnome Tweaks 應用程式並使用以前的預設主題 Adwaita 來執行此操作。

此問題的資訊可以在問題 62593 中跟蹤。

Electron 更新

在此版本中,我們從 Electron 2.0.9 更新到 2.0.12。

預覽功能

預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。

引用檢視

有一個新命令查詢所有引用,它顯示一個專用側邊欄檢視,其中顯示引用搜索結果。這補充了現有的 Peek 檢視呈現,並提供了更穩定的引用列表。在上下文選單中,選擇查詢所有引用 (),引用將顯示在單獨的檢視中,就像搜尋結果一樣。

References View

結果穩定,並且可以清除單個結果,如果您將檢視用作待辦事項列表,這非常有用。您可以使用 F4⇧F4 (Windows, Linux Shift+F4) 來導航結果,而無需將手從鍵盤上移開。

讓我們知道您的想法,我們將在下次更新中改進體驗。

擴充套件開發

規範化擴充套件示例

vscode-extension-samples 中的 VS Code 擴充套件示例已更新以保持一致性。

每個擴充套件示例現在都包含

  • 統一的編碼風格和結構。
  • 一個 README,其中解釋了示例的功能並附帶了一個簡短的動畫。
  • 每個示例中使用的 vscode API 或貢獻點的列表。

捆綁擴充套件

捆綁的擴充套件載入速度更快。因此,我們建立了一個示例,演示如何打包擴充套件

無需釋出者即可開發擴充套件

為了簡化初始擴充套件開發,publisher 欄位已從 Yeoman 擴充套件生成器模板中刪除。對於沒有 publisher 識別符號的擴充套件,VS Code 現在會將其作為 undefined_publisher 載入。但是,如果您在嘗試將擴充套件釋出到 Marketplace 時缺少有效的釋出者,vsce 釋出工具將發出警告。

活動終端 API

提供活動終端訪問許可權的提議 API window.activeTerminalwindow.onDidChangeActiveTerminal 現已穩定。

帶按鈕的通知在超時後隱藏

如果您的擴充套件正在使用帶有非模態選項和按鈕的 showInformationMessageshowWarningMessage API,請注意這些通知現在會在一定超時後隱藏。只有透過 showErrorMessage 觸發並帶有按鈕的通知才會像以前一樣保持開啟。如果您必須立即從使用者那裡獲取輸入或需要突出顯示訊息,您仍然可以使用 modal: true 作為選項。這將彈出一個模態對話方塊,在關閉之前阻止使用者執行任何操作。但是,我們不鼓勵過度使用此選項,因為它會中斷使用者。

自定義檢視:展開顯示元素

您現在可以使用 reveal API 中的 expand 選項展開一個元素以進行顯示。它還支援透過傳遞層數遞迴展開子元素。

注意:您最多隻能展開 3 層。

/**
 * Reveals the given element in the tree view.
 * If the tree view is not visible then the tree view is shown and element is revealed.
 *
 * By default revealed element is selected.
 * In order to not to select, set the option `select` to `false`.
 * In order to focus, set the option `focus` to `true`.
 * In order to expand the revealed element, set the option `expand` to `true`. To expand recursively set `expand` to the number of levels to expand.
 * **NOTE:** You can expand only to 3 levels maximum.
 *
 * **NOTE:** [TreeDataProvider](#_TreeDataProvider) is required to implement [getParent](#_TreeDataProvider.getParent) method to access this API.
 */
reveal(element: T, options?: { select?: boolean, focus?: boolean, expand?: boolean | number }): Thenable<void>;

新主題顏色

有新的主題顏色

  • tab.activeModifiedBorder:活動組中已修改(髒)活動選項卡頂部的邊框。
  • tab.inactiveModifiedBorder:活動組中已修改(髒)非活動選項卡頂部的邊框。
  • tab.unfocusedActiveModifiedBorder:未聚焦組中已修改(髒)活動選項卡頂部的邊框。
  • tab.unfocusedInactiveModifiedBorder:未聚焦組中已修改(髒)非活動選項卡頂部的邊框。
  • editor.stackFrameHighlightBackground:編輯器中頂部除錯堆疊幀高亮背景色。預設情況下,此顏色為黃色。
  • editor.focusedStackFrameHighlightBackground:編輯器中聚焦除錯堆疊幀高亮背景色。預設情況下,此顏色為綠色。

Git 擴充套件 API 補充

Git 擴充套件 API 已更新,以公開每個儲存庫實際更改的詳細資訊。

此外,還公開了以下方法

使用 Azure Pipelines 進行擴充套件 CI

我們更新了關於如何使用 Azure Pipelines 為您的擴充套件設定持續整合解決方案的文件。新指南提供了一個配置,您可以使用它同時在 Windows、macOS 和 Linux 上執行您的擴充套件測試。

Azure Pipelines CI results

提議的擴充套件 API

每個里程碑都附帶新的提議 API,擴充套件作者可以試用它們。一如既往,我們渴望您的反饋。以下是試用提議 API 所需的操作:

  • 您必須使用 Insiders 版本,因為提議的 API 經常更改。
  • 您的擴充套件的 package.json 檔案中必須包含以下行:"enableProposedApi": true
  • 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。

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

剪貼簿 API

我們有一個提議的 API 來訪問剪貼簿。它遵循即將推出的瀏覽器剪貼簿 API,目前允許讀寫文字

export interface Clipboard {
  readText(): Thenable<string>;
  writeText(value: string): Thenable<void>;
}
export namespace env {
  const clipboard: Clipboard;
}

完成文字插入規則

有一個新的提議 API 用於修改完成項的插入行為。預設情況下,多行完成項會“重新格式化”以匹配當前行的縮排。有時這種縮排是不需要的,新的提議 API 允許完成項將其關閉。CompletionItemInsertTextRule 是一個位掩碼,它有一個 KeepWhitespace 規則,完成項可以設定該規則。

自定義檢視

全部摺疊操作

您可以透過在建立 TreeView 時將 showCollapseAll 選項設定為 true 來向檢視新增全部摺疊操作。

/**
 * Options for creating a [TreeView](#_TreeView]
 */
export interface TreeViewOptions<T> {
  /**
   * A data provider that provides tree data.
   */
  treeDataProvider: TreeDataProvider<T>;

  /**
   * Whether to show collapse all action or not.
   */
  showCollapseAll?: boolean;
}

namespace window {
  export function createTreeView<T>(
    viewId: string,
    options: TreeViewOptions<T>
  ): TreeView<T>;
}

VS Code 提供全部摺疊功能,併為所有選擇加入的檢視顯示相同的圖示和位置。

Collapse All

TreeItem 標籤突出顯示

您可以透過使用 highlights 選項提供範圍來突出顯示 TreeItem 標籤。由於它是一個提議的 API,您必須使用 TreeItem2 來更新突出顯示。

/**
 * Label describing the [Tree item](#_TreeItem)
 */
export interface TreeItemLabel {
  /**
   * A human-readable string describing the [Tree item](#_TreeItem).
   */
  label: string;

  /**
   * Ranges in the label to highlight. A range is defined as a tuple of two number where the
   * first is the inclusive start index and the second the exclusive end index
   */
  highlights?: [number, number][];
}

export class TreeItem2 extends TreeItem {
  /**
   * Label describing this item. When `falsy`, it is derived from [resourceUri](#_TreeItem.resourceUri).
   */
  label?: string | TreeItemLabel | /* for compilation */ any;

  /**
   * @param label Label describing this item
   * @param collapsibleState [TreeItemCollapsibleState](#_TreeItemCollapsibleState) of the tree item. Default is [TreeItemCollapsibleState.None](#_TreeItemCollapsibleState.None)
   */
  constructor(label: TreeItemLabel, collapsibleState?: TreeItemCollapsibleState);
}

Label highlights

隱藏原始碼管理輸入框

SourceControlInputBox 例項上有一個新的提議 API 屬性,它允許您隱藏原始碼管理提供程式 UI 檢視頂部的輸入框。

export interface SourceControlInputBox {
  /**
   * Controls whether the input box is visible (default is  true`).
   */
  visible: boolean;
}

SignatureHelpContext

提議的 SignatureHelpContextSignatureHelpProviders 提供了有關請求籤名幫助的額外資訊

export interface SignatureHelpProvider {
  provideSignatureHelp(
    document: TextDocument,
    position: Position,
    token: CancellationToken,
    context: SignatureHelpContext
  ): ProviderResult<SignatureHelp>;
}

SignatureHelpContext 包括

  • 導致觸發簽名幫助的操作
  • 觸發字元(如果有)
  • 這是重新觸發嗎?(簽名幫助已經顯示)
/**
 * Contains additional information about the context in which a
 * [signature help provider](#_SignatureHelpProvider.provideSignatureHelp) is triggered.
 */
export interface SignatureHelpContext {
  /**
   * Action that caused signature help to be requested.
   */
  readonly triggerReason: SignatureHelpTriggerReason;

  /**
   * Character that caused signature help to be requested.
   *
   * This is `undefined` when signature help is not triggered by typing, such as when invoking signature help
   * or when moving the cursor.
   */
  readonly triggerCharacter?: string;

  /**
   * Whether or not signature help was previously showing when triggered.
   *
   * Retriggers occur when the signature help is already active and can be caused by typing a trigger character
   * or by a cursor move.
   */
  readonly isRetrigger: boolean;
}

/**
 * How a [Signature provider](#_SignatureHelpProvider) was triggered
 */
export enum SignatureHelpTriggerReason {
  /**
   * Signature help was invoked manually by the user or by a command.
   */
  Invoke = 1,

  /**
   * Signature help was triggered by a trigger character.
   */
  TriggerCharacter = 2,

  /**
   * Signature help was triggered by the cursor moving or by the document content changing.
   */
  ContentChange = 3
}

此外,該提案允許使用一組 triggerCharacters 和一組不同的 retriggerCharacters 註冊 SignatureHelpProvider

export interface SignatureHelpProviderMetadata {
  readonly triggerCharacters: ReadonlyArray<string>;
  readonly retriggerCharacters: ReadonlyArray<string>;
}

namespace languages {
  export function registerSignatureHelpProvider(
    selector: DocumentSelector,
    provider: SignatureHelpProvider,
    metadata: SignatureHelpProviderMetadata
  ): Disposable;
}

retriggerCharacters 僅在簽名幫助已經顯示時才會呼叫簽名幫助提供程式。

對擴充套件的貢獻

我們的團隊維護或貢獻了許多 VS Code 擴充套件。本月最值得注意的是

Go

以下是使用 Go 1.11 中的新 Go 模組Go 擴充套件現在支援的一些主要功能

  • 程式碼導航(轉到定義、簽名幫助、懸停時的符號資訊)
  • 程式碼補全
  • 程式碼覆蓋率
  • 程式碼診斷
  • 與包相關的命令,例如Go: Add ImportGo: Browse Packages

有關更多詳細資訊,請閱讀維基百科上關於 Visual Studio Code 中 Go 模組支援的內容。

Go 擴充套件中的其他值得注意的功能是

  • Sourcegraph 的語言伺服器現在也支援 Windows。
  • 自動完成小部件現在顯示建議符號的文件。按 ⌃Space (Windows, Linux Ctrl+Space) 展開/摺疊自動完成小部件的詳細資訊部分。
  • 交叉編譯時現在支援自動完成。當您嘗試 Go 1.11 中新的 WebAssembly 支援時,這尤其有用。
  • 除錯檢視的變數窗格中現在提供帶有複製值複製為表示式新增到監視選項的上下文選單。
  • 檔案儲存時僅對當前檔案進行 lint 檢查的選項。

TypeScript TSLint 外掛

新的 TypeScript TSLint 外掛將 TSLint 作為 TypeScript 語言服務外掛啟用。這些外掛可在任何使用 TypeScript 語言服務的編輯器中使用,包括 VS Code、Visual Studio、Atom 和 Sublime Text。

我們還發布了捆綁 TypeScript TSLint 外掛的擴充套件,這樣您就不必在工作區中配置該外掛。

GitHub 拉取請求

在此里程碑期間,我們致力於改進 GitHub Pull Requests 擴充套件。該擴充套件現在支援在編輯器和描述頁面中編輯和刪除註釋,並且對尚未提交的註釋具有更好的快取。您可以在此處閱讀該擴充套件的完整發行說明。

新文件

部署 Python 教程

有兩個新的 Python 教程,演示如何使用 VS Code 部署 Python Web 應用程式。

除錯秘訣

有適用於 PHPPythonRuby on Rails 的新 VS Code 除錯秘訣

值得注意的修復

  • 54214: vscode 中的 startDebugging 方法即使構建失敗也返回 true
  • 57289: 設定 UI 應在重新載入時記住其搜尋
  • 57321: 當設定搜尋沒有結果時顯示“清除搜尋”和“清除篩選器”按鈕
  • 59305: 在 .code-workspace 檔案中顯示“開啟工作區”按鈕
  • 59430: 無法再在節點內部檔案中中斷
  • 61711: 所有斷點均未驗證
  • 62085: 除錯介面卡未接收到 PauseRequest
  • 62346: 除錯會話初始化時無法取消
  • 62354: Node 10.12 後遠端除錯問題

感謝

最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:

vscode 的貢獻

vscode-eslint 的貢獻

vscode-languageserver-node 的貢獻

language-server-protocol 的貢獻

vscode-html-languageservice 的貢獻

vscode-css-languageservice 的貢獻

vscode-json-languageservice 的貢獻

debug-adapter-protocol 的貢獻

vscode-debugadapter-node 的貢獻

vscode-chrome-debug-core 的貢獻

  • @digeff
    • 我們適應最新版本的 Node.js,它使用 file:///,我們不傳送存在檔案的 sourceRef PR #373
    • 修復 NTVS 單元測試第一行未命中 BP PR #369
    • 修復節點在網路路徑中未命中斷點 PR #368
  • @rdegelo
    • 改進除錯控制檯樣式。新增下劃線和背景支援 PR #374
    • 添加了對除錯控制檯中基本顏色轉義序列的支援 PR #367

vscode-generator-code 的貢獻

vscode-vsce 的貢獻

vscode-extension-samples 的貢獻

vscode-recipes 的貢獻

inno-updater 的貢獻

localization 的貢獻

Transifex VS Code 專案團隊中有近 1400 名成員,每月約有 100 名活躍貢獻者。我們感謝您的貢獻,無論是提供新翻譯、對翻譯進行投票還是提出流程改進建議。

以下是此版本的貢獻者快照。有關專案(包括貢獻者名單)的詳細資訊,請訪問專案網站:https://aka.ms/vscodeloc

  • 波斯尼亞語:Dario Fuzinato。
  • 保加利亞語:Любомир Василев。
  • 加泰羅尼亞語:joanmiro pisa。
  • 捷克語:Vít Staniček、Kryštof Černý、Michal Franc。
  • 荷蘭語:Gerald Versluis、Vincent Verbist。
  • 英語(英國):Matthew John Cheetham、Alexander Ogilvie。
  • 芬蘭語:Petri Niinimäki、Feetu Nyrhinen。
  • 法語:Antoine Griffard、Adrien Clerbois。
  • 德語:J.M. Rütter、Volkmar Rigo。
  • 希臘語:Dimitris Siakavelis、Christos Koutsiaris。
  • 印地語:Ashwini Gupta、Bimal .、Brahma Dev、Rahul Bhammarker。
  • 匈牙利語: Tar Dániel.
  • 簡體中文:Joel Yang、pluwen、Zijian Zhou、Simon Chan。
  • 繁體中文:Duran Hsieh、Poy Chang、Alan Tsai、Kevin Yang、Winnie Lin。
  • 印度尼西亞語:Rizki A. Wibowo、Laurensius Dede Suhardiman、Fahmi Irsyad khairi、Wildan Mubarok、G-RiNe Project、Pratikto Ariestyadi、Joshua Siagian、William Tantiono、Herman Prawiro、Febrian Setianto (Feber)、Angger Rafi Akbar、Joseph Aditya P G、Oka bRionZ、rodin。
  • 義大利語:Alessandro Alpi、Riccardo Cappello、Marco Dal Pino、Roberto Albano、Andrea Dottor、Luigi Bruno。
  • 日語:Shunya Tajima、Yuichi Nukiyama、Satoshi Kajiura、Yoshihisa Ozaki。
  • 卡納達語:Sanjay !。
  • 韓語:Kyunghee Ko、Junseong Jang。
  • 立陶宛語:Martynas Jusys。
  • 馬拉雅拉姆語:Ajith S Punalur、Anand Chalakkal Jose Mohan、Kiren Paul。
  • 挪威語博克馬爾:Espen Klein Nilsen。
  • 波蘭語:Artur、Andrzej Supermocny、Jan Bońkowski、Mateusz Wyczawski、Warchlak。
  • 葡萄牙語(巴西):Rodrigo Crespi、Roberto Fonseca、Danilo Dantas、Thiago Aragão、Thiago Moreira de Souza Arrais、Atílio Dadalto、Marcelo Fernandes、Douglas Heydt、Robson Cassiano、Lucas Miranda、Thiago Custodio。
  • 葡萄牙語(葡萄牙):Diogo Barros、António Santos、Antonio Lourenco。
  • 俄語:Ivan Kuzmenko、Roman Slauta、Michael Crane。
  • 西班牙語:José M. Aguilar、Matias Menich、Alberto Poblacion、Daniel J. Pérez Nieto、Andrés Reyes Galgani。
  • 泰米爾語:Nadar Solomon Sunder、Sarath Jasrin、Sakthi Raj、rajakvk、Avinash、ஜெகன் லங்கா சாமி துரை、Anand AV、Jeyanthinath Muthuram、Narayanan Singaram。
  • 泰盧固語:Rama Chandu、Hari Jujjavarapu、Sai Pavan Koundinya Upadhyayula。
  • 烏克蘭語:Svitlana Galianova、Borys Lebeda、Dmytro Kyrychuk、Victor Kubrak、Volodymyr Holovka。
  • 烏爾都語:Haseeb Anwer、Saqib Ameen、Ahmad Awais。
  • 越南語:Thanh Phu、Daniel Nguyen、Nguyễn Nhật Tân、Hung Nguyen、Vuong。