現已釋出!閱讀關於 11 月新增功能和修復的內容。

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

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

當開啟多個編輯器組時,居中佈局檢視現在將自動調整大小以達到最大寬度。這使得居中佈局更容易使用,並且減少了手動切換的需要。此行為由預設啟用的新設定 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(又名“legacy”)具有實驗性支援。

多個除錯控制檯

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

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 簡寫屬性值中使用的零單位進行 linting。例如,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 或貢獻點的列表。

打包擴充套件

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

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

為了簡化初始擴充套件開發,已從 Yeoman 擴充套件生成器模板中刪除了 publisher 欄位。對於沒有 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。它遵循即將推出的瀏覽器 Clipboard 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 模組支援的 wiki。

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

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

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。
© . This site is unofficial and not affiliated with Microsoft.