🚀 在 VS Code 中

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 以刪除至行首。
  • 語言 - 在 hover 上顯示 CSS 特殊性、處理未知的 CSS 屬性。
  • 偵錯 - 多個偵錯主控台、啟動時停止進入點、樣式 console.log 訊息。
  • 擴充功能撰寫 - 活動終端機 API、更佳的自訂檢視控制。

Insiders: 想要盡快查看新功能嗎?您可以下載每晚的 Insiders 組建,並在最新更新可用時立即試用。如需最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上追蹤我們 @code

VS Code 現在支援多行搜尋!與編輯器中相同,regex 搜尋只有在包含 \n 常值時,才會在多行模式下執行。「搜尋」檢視會在每個多行相符項目旁邊顯示提示,其中包含其他相符行數。

Multiline search

此功能歸功於 ripgrep 工具中完成的多行搜尋實作。

現在也可以在 regex 搜尋中使用反向參考lookahead判斷提示,方法是設定 "search.usePCRE2": true。這會將 ripgrep 設定為使用 PCRE2 regex 引擎。雖然 PCRE2 支援許多其他功能,但我們僅支援在 JavaScript 中仍然有效的 regex 運算式,因為仍使用編輯器的 JavaScript 型搜尋來搜尋開啟的編輯器。

Fancy regex search

如果您仍然缺少 lookbehind 判斷提示,請別擔心!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 會在編輯器為 dirty(有未儲存的變更)時,在編輯器索引標籤的頂端顯示粗邊框。這讓您更容易找到需要儲存的檔案。邊框的色彩可以自訂(請參閱下方)。

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

樹狀結構 Widget 效能

VS Code 樹狀結構 Widget 控制項在 VS Code UI 的許多地方使用,但在某些特定使用案例(問題面板、「大綱」檢視)中達到效能限制。我們一直在開發更快速的虛擬樹狀結構 Widget 實作,它可以容納不同層級的效能與 API 便利性。您可以在此處閱讀以深入瞭解。

新的 ObjectTree Widget 現在已在問題面板中使用,我們已經看到顯著的改進。我們能夠大幅提高工作台可以處理的問題項目數量,並提高某些作業(例如全部摺疊)和進階篩選案例的速度。這些改進現在使處理較大的集合大小變得可行。

工作台導覽命令

新增了四個命令以改進工作台導覽

  • 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 Widget 現在根據您的檔案圖示主題,為檔案完成項目顯示檔案和資料夾圖示。這提供了統一的外觀,並協助您快速識別不同的檔案類型。

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

中斷點 Widget 展開為多行

中斷點 Widget 現在可以展開為多行,使用 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"
  }
}

hover 訊息中的 CSS 特殊性

CSS hover 現在會顯示 CSS 特殊性

css-specificity

處理未知的 CSS 屬性

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

改良的 CSS 零單位警告

CSS 現在會檢查在 CSS 簡寫屬性值中使用的零單位。例如,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

嚴格的 Null 檢查核心 VS Code

在此里程碑中,我們也開始工作,以在核心 VS Code 原始碼中啟用 TypeScript 的嚴格 Null 檢查。嚴格 Null 檢查有助於捕捉許多常見的程式設計錯誤,並使程式設計人員的意圖更加明確。我們已經看到對 VS Code 內建擴充功能使用嚴格 Null 檢查的明顯好處。

由於 VS Code 的核心原始碼包含數千個檔案,因此我們正在逐步採用嚴格 Null 檢查。我們從嚴格 Null 檢查沒有匯入的檔案開始,現在正在反覆地在僅匯入其他嚴格 Null 檢查檔案的檔案中啟用嚴格 Null 檢查。這將持續到轉換整個程式碼基底。

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

其他

低對比功能表列

如果您使用的是 Ubuntu 18.10 或 GTK 主題,它將淺色或深色內容功能表與應用程式功能表列的相反主題混合在一起,您可能會遇到難以閱讀的低對比功能表列。

有兩種可能的解決方法

  • 透過將設定 window.titleBarStyle 設定為 custom,試用 VS Code 自訂標題列樣式。
  • 變更您的 GTK 主題。您可以透過安裝 Gnome Tweaks 應用程式並使用先前的預設主題 Adwaita 來執行此動作。

此問題的相關資訊可在問題 62593 中追蹤。

Electron 更新

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

預覽功能

預覽功能尚未準備好發行,但功能已足夠使用。我們歡迎您在它們開發期間提供早期意見反應。

參考檢視

有一個新的命令尋找所有參考,它會顯示一個專用的側邊欄檢視,其中顯示參考搜尋結果。這補充了現有的「預覽」檢視呈現方式,並提供更穩定的參考清單。在內容功能表中,選取尋找所有參考 (),參考會顯示在個別檢視中,就像搜尋結果一樣。

References View

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

請告訴我們您的想法,我們將在下一次更新中完善體驗。

擴充功能撰寫

標準化的擴充功能範例

位於 vscode-extension-samples 的 VS Code 擴充功能範例已更新以保持一致性。

每個擴充功能範例現在都包含

  • 統一的程式碼撰寫樣式和結構。
  • 說明範例功能的 README,其中包含簡短動畫。
  • 每個範例中使用的 vscode API 或貢獻點的清單。

捆綁擴充功能

捆綁的擴充功能載入速度更快。因此,我們建立了一個範例,說明如何webpack 擴充功能

開發擴充功能,而無需發行者

為了簡化初始擴充功能開發,從 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:在活動群組中已修改(dirty)的活動索引標籤頂端的邊框。
  • tab.inactiveModifiedBorder:在活動群組中已修改(dirty)的非活動索引標籤頂端的邊框。
  • tab.unfocusedActiveModifiedBorder:在未聚焦群組中已修改(dirty)的活動索引標籤頂端的邊框。
  • tab.unfocusedInactiveModifiedBorder:在未聚焦群組中已修改(dirty)的非活動索引標籤頂端的邊框。
  • 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

建議的 SignatureHelpContext 提供 SignatureHelpProviders 有關要求簽章說明原因的其他資訊

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 擴充功能現在支援的一些主要功能

  • 程式碼導覽(跳到定義、簽章說明、hover 上的符號資訊)
  • 程式碼完成
  • 程式碼涵蓋率
  • 程式碼診斷
  • 與套件相關的命令,例如Go:新增匯入Go:瀏覽套件

如需更多詳細資訊,請閱讀 Visual Studio Code 中 Go 模組支援上的 Wiki。

Go 擴充功能中的其他值得注意的功能包括

  • Sourcegraph 的語言伺服器現在也支援 Windows。
  • 自動完成 Widget 現在顯示建議符號的文件。按下 ⌃Space (Windows、Linux Ctrl+Space) 以展開/摺疊自動完成 Widget 的詳細資訊區段。
  • 跨編譯時現在支援自動完成。當您嘗試在 Go 1.11 中試用新的 WebAssembly 支援時,這特別有用。
  • 具有複製值複製為運算式新增至監看式選項的內容功能表現在可在「偵錯」檢視的「變數」窗格中使用。
  • 選項可在檔案儲存時僅檢查目前檔案。

TypeScript TSLint 外掛程式

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

我們也發佈了 擴充功能,它捆綁了 TypeScript TSLint 外掛程式,因此您不必在工作區中設定外掛程式。

GitHub Pull Requests

在此里程碑中,我們致力於改進 GitHub Pull Requests 擴充功能。此擴充功能現在支援編輯和刪除註解(在編輯器內和描述頁面上),並具有更佳的未提交註解快取。您可以在此處閱讀擴充功能的完整版本資訊。

新文件

部署 Python 教學課程

有兩個新的 Python 教學課程,說明如何使用 VS Code 部署 Python Web 應用程式。

偵錯食譜

有適用於 VS Code 偵錯的新食譜,適用於 PHPPythonRuby on Rails

值得注意的修正

  • 54214:即使建置失敗,vscode 中的 startDebugging 方法仍然回傳 true
  • 57289:設定 UI 應該記住重新載入時的搜尋
  • 57321:當設定搜尋沒有結果時,顯示「清除搜尋」和「清除篩選器」按鈕
  • 59305:在 .code-workspace 檔案中顯示「開啟工作區」按鈕
  • 59430:無法再於 node 內部檔案中中斷
  • 61711:所有中斷點都未驗證
  • 62085:debugAdapter 未收到 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。