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 月版。此版本中有許多重要更新,我們希望你會喜歡,其中一些主要亮點包括
- 多行搜尋 - 使用正則表示式多行表示式跨檔案搜尋。
- IntelliSense 中的檔案圖示 - 在 IntelliSense 中快速區分檔案型別。
- 更好的 macOS 支援 - 全屏模式控制和 Mojave 深色模式支援。
- 可摺疊堆疊幀 - 摺疊不感興趣的堆疊幀以清晰檢視程式碼。
- 改進的已載入指令碼檢視 - 顯示相關資源,例如原始原始檔。
- 更新的擴充套件示例 - 統一的樣式和結構、README 和 API 用法。
- 擴充套件 CI 配方 - 用於擴充套件的 Azure Pipelines 構建配方。
- 預覽:查詢所有引用 - “查詢所有引用”檢視顯示引用搜索結果。
如果您想線上閱讀這些發行說明,請訪問 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 字面量時才以多行模式執行。搜尋檢視會在每個多行匹配項旁邊顯示提示,其中包含額外的匹配行數。

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

如果你仍然缺少後瞻斷言,請不要擔心!JavaScript 最近才支援該功能,並將在後續的 Electron shell 更新中引入 VS Code。
在搜尋中顯示行號
我們添加了一個設定 search.showLineNumbers,它將在搜尋檢視中顯示每個匹配項的行號。
禁用搜索和替換預覽
有一個新設定 search.useReplacePreview 允許你停用在搜尋檢視中執行搜尋/替換時出現的預覽差異。

在搜尋中使用全域性 .gitignore 檔案
Git 允許你使用 core.excludesfile 配置屬性配置全域性 gitignore 檔案。預設情況下,搜尋不遵循全域性 gitignore 檔案,但你現在可以透過啟用新設定 search.useGlobalIgnoreFiles 來更改此設定。
工作臺
macOS Mojave 深色模式支援
VS Code 現在更好地支援 macOS Mojave 深色模式。以前,即使 macOS 在深色主題下執行,VS Code 選單和對話方塊也會顯示預設的淺色主題。現在,如果啟用深色模式,所有原生 UI 元素都將以深色模式顯示。

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 在編輯器髒(有未儲存的更改)時,在編輯器選項卡頂部顯示粗邊框。這使得查詢需要儲存的檔案變得更容易。邊框的顏色可以自定義(見下文)。

居中編輯器佈局自動調整大小
當開啟多個編輯器組時,居中佈局檢視現在將自動調整大小以達到最大寬度。這使得居中佈局更容易使用,並且減少了手動切換的需要。此行為由預設啟用的新設定 workbench.editor.centeredLayoutAutoResize 控制。
麵包屑中的符號順序
有一個新設定控制麵包屑選取器中的符號排序方式:breadcrumbs.symbolSortOrder。
允許的值為
position- 檔案中的位置(預設)name- 按字母順序type- 符號型別順序
下面的示例顯示了按名稱排序的麵包屑符號列表

麵包屑和預覽編輯器
當用滑鼠中鍵單擊麵包屑導航中的專案時,它們現在會在新編輯器中開啟,並且不會重複使用預覽編輯器。此行為現在與在資源管理器中用滑鼠中鍵單擊檔案相匹配。
即使顯示按鈕,通知也會自動隱藏
以前,如果通知包含按鈕,VS Code 將永遠不會隱藏通知。這可能導致通知堆積在右下角並覆蓋編輯器的一部分。在此版本中,即使通知顯示按鈕,通知也會在超時後隱藏。
有兩個例外
- 嚴重性為
error的通知不會被隱藏,前提是使用者需要採取一些操作。 - 來自 VS Code 的一些特定通知將保持開啟狀態。例如,詢問你是否要在瀏覽 VS Code Marketplace 後安裝擴充套件的通知。
注意: 即使通知被隱藏,你也可以隨時從通知中心訪問所有通知,方法是單擊狀態列中的小鈴鐺圖示或透過顯示通知 (notifications.toggleList) 命令。
面板位置按鈕移至上下文選單
為了節省水平空間並減少混亂,我們從面板標題區域刪除了切換面板位置按鈕(移至右側、移至底部)。現在可以在面板標題區域上下文選單以及檢視 > 外觀 > 切換面板位置主選單中使用該操作。刪除此按鈕的另一個原因是,我們相信使用者會設定一次佈局,並且通常不會來回切換。

按檔案型別更新的檔案圖示
在上一個版本中,我們為常見的 VS Code 檔案型別添加了自定義圖示。我們現在將這些圖示新增到較小的檢視中,以便它們將出現在列表檢視中。
![]()
設定編輯器“已修改於”提示現在是連結
在設定編輯器中,當設定在當前選定範圍以外的範圍(使用者、工作區)中配置時,我們會顯示一個提示。其他範圍提示現在是一個連結,它將帶你到其他範圍中的設定。

樹小部件效能
VS Code 樹小部件控制元件在 VS Code UI 中的許多地方使用,但在某些特定用例(“問題”面板、“大綱”檢視)中遇到了效能限制。我們一直在研究更快的虛擬樹小部件實現,它可以適應不同級別的效能與 API 便利性。你可以在此處閱讀以瞭解更多資訊。
新的 ObjectTree 小部件現在正用於“問題”面板,我們已經看到了顯著改進。我們能夠顯著提高工作臺可以處理的問題項數量,並提高某些操作(例如全部摺疊)的速度和高階過濾場景。這些改進現在使得處理更大的集合大小成為可能。
工作臺導航命令
添加了四個命令來改進工作臺導航
workbench.action.nextSideBarView:轉到側欄中的下一個檢視。workbench.action.previousSideBarView:轉到側欄中的上一個檢視。workbench.action.nextPanelView:轉到下一個面板。workbench.action.previousPanelView:轉到上一個面板。
預設情況下,這些命令沒有鍵盤快捷方式。
還添加了兩個上下文鍵 sideBarFocus 和 panelFocus。這允許在不同的工作臺區域使用相同的鍵繫結來執行不同的命令
[
{ "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"
}
]

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

編輯器
IntelliSense 中的檔案和資料夾圖示
IntelliSense 小部件現在根據你的檔案圖示主題顯示檔案完成的檔案和資料夾圖示。這提供了統一的外觀,並幫助你快速識別不同的檔案型別。
![]()
格式化選定內容
為了加快小的格式化操作,格式化選定內容命令如果沒有編輯器選定內容,現在將格式化當前行。
顯示錯誤程式碼
如果定義了錯誤程式碼,編輯器現在會顯示問題的錯誤程式碼。錯誤程式碼顯示在行尾的方括號中。
你可以在下面看到 TypeScript 正在顯示錯誤程式碼 '2339'

整合終端
拆分終端可以繼承工作目錄
添加了一個設定 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 以在任務執行之前清除終端。
除錯
可摺疊堆疊幀
有時偵錯程式中的呼叫堆疊包含使用者不感興趣的堆疊幀(外部程式碼、跳過的檔案等...)。為了減少混亂並節省垂直空間,我們現在將這些不感興趣的堆疊幀呈現為摺疊狀態。

改進的已載入指令碼檢視
在此里程碑中,我們更新了已載入指令碼檢視以支援檔案圖示,並添加了將相關資源顯示為子元素的功能。除錯擴充套件可以使用此功能來顯示已轉譯為指令碼的原始檔(在源對映中可用)。
下面來自 Node.js 偵錯程式的圖片顯示了 JavaScript 檔案(在源對映中可用)的 TypeScript 源

請注意,相關資源功能需要除錯擴充套件選擇加入。在 10 月版本中,只有 node-debug 對 Node.js 版本 < 8.0(又名“legacy”)具有實驗性支援。
多個除錯控制檯
當除錯多個除錯會話時,我們現在在不同的除錯控制檯中顯示它們的輸出。這使得區分哪個除錯會話負責哪個輸出和評估變得更容易。

在入口處停止啟動除錯
對於 Node.js 除錯,我們添加了一個新命令除錯:開始除錯並在入口處停止 (extension.node-debug.startWithStopOnEntry)。如果你想開始除錯並立即在程式入口處停止,請使用此命令。預設鍵繫結是 F11。請注意,此命令僅在選定的啟動配置型別為 node 時才可用。
Node 除錯支援 console.log 樣式
除錯 Node.js(或使用“Debugger for Chrome”擴充套件除錯 Chrome)時,你現在可以使用 %c 設定來自 console.log 的訊息樣式,類似於 Chrome DevTools 支援的功能。支援的屬性有 color、background、font-weight: bold 和 text-decoration: underline。

斷點小部件展開到多行
斷點小部件現在可以展開到多行,使用 Shift+Enter 插入額外的一行,或者只是貼上多行條件或日誌訊息。這應該有助於編輯更復雜的條件和日誌訊息。

語言
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 屬性
使用 CSS 預處理器(例如 PostCSS)時,你可能會使用在開發過程中編譯為有效屬性的無效屬性。[css/less/scss].lint.validProperties 設定可防止 VS Code 將這些無效屬性標記為錯誤。
改進的 CSS 零單位警告
CSS 現在會對 CSS 簡寫屬性值中使用的零單位進行 linting。例如,0px 現在會引起警告。
JSON 架構載入錯誤的優雅處理
如果 VS Code 無法下載用於 IntelliSense 或錯誤檢查 JSON 檔案的 JSON 架構,狀態列中將顯示警告

過去,你會在編輯器中看到錯誤。
工程
繼續探索 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 視圖表示形式,並提供了更穩定的引用列表。在上下文選單中,選擇查詢所有引用 (),引用將顯示在單獨的檢視中,就像搜尋結果一樣。

結果是穩定的,單個結果可以清除,如果你將檢視用作待辦事項列表,這將非常有用。你可以使用 F4 和 ⇧F4 (Windows, Linux Shift+F4) 在結果中導航,而無需將手從鍵盤上移開。
請讓我們知道你的想法,我們將在下一次更新中完善體驗。
擴充套件開發
規範化的擴充套件示例
vscode-extension-samples 中的 VS Code 擴充套件示例已更新以保持一致性。
每個擴充套件示例現在包括
- 統一的編碼風格和結構。
- 解釋示例功能的 README 和簡短動畫。
- 每個示例中使用的
vscodeAPI 或貢獻點的列表。
打包擴充套件
打包的擴充套件載入速度更快。因此,我們建立了一個示例,演示如何打包擴充套件。
無需釋出者即可開發擴充套件
為了簡化初始擴充套件開發,已從 Yeoman 擴充套件生成器模板中刪除了 publisher 欄位。對於沒有 publisher 識別符號的擴充套件,VS Code 現在會以 undefined_publisher 作為其釋出者載入它們。但是,如果你嘗試將擴充套件釋出到 Marketplace,vsce 釋出工具將警告你缺少有效的釋出者。
活動終端 API
用於訪問活動終端的擬議 API window.activeTerminal 和 window.onDidChangeActiveTerminal 現在已穩定。
帶有按鈕的通知在超時後隱藏
如果你的擴充套件使用帶有非模態選項和按鈕的 showInformationMessage 或 showWarningMessage 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 上同時執行擴充套件測試。

提議的擴充套件 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 提供全部摺疊功能,併為所有選擇加入的檢視顯示相同的圖示和位置。

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);
}

隱藏原始碼管理輸入框
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 擴充套件現在支援的一些關鍵功能
- 程式碼導航(轉到定義、簽名幫助、懸停時的符號資訊)
- 程式碼完成
- 程式碼覆蓋率
- 程式碼診斷
- 包相關命令,例如Go: Add Import 和 Go: 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 應用程式。
除錯配方
有適用於 PHP、Python 和 Ruby 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 的貢獻
- Agustín Rodríguez (@agurodriguez)
- Ahmed Atito (@atitoa93)
- Robert Balent (@balent)
- Anurag Banerjee (@banuragprdxn): 措辭/文字更改 PR #60996
- Brett Larney (@bblarney): 修復文件中的拼寫錯誤:“guardeed”->“guaranteed” PR #61186
- @benjamenhogben
- Alex Boyko (@BoykoAlex): http/https 的開啟符號處理程式取決於模式 PR #61509
- Brendon Crawford (@brendoncrawford): 修復 Fedora 上錯誤的作業系統檢查導致的測試錯誤 PR #60917
- Chris Sinco (@c5inco): Snap 字型堆疊到最新 PR #61419
- Emil Hessman (@ceh): 刪除重複的 switch case PR #59677
- Joshua (@cookiej91): 修復註釋中的拼寫錯誤 PR #61909
- Daksh (@DakshMiglani)
- Dick van den Brink (@DickvdBrink): 修復在 debian 8 上安裝時的警告 PR #59406
- Jonathan Dierksen (@dierksen): 使用 textmate/swift.tmbundle 獲取 Swift 語法。 PR #59639
- Douglas Gabriel (@douglasgabriel): 刪除 'build/monaco/api.ts' 中的死程式碼 PR #60024
- Frieder Bluemle (@friederbluemle): 修復 markdown 檔案中的空格錯誤 PR #62299
- Gary Mathews (@garymathews): 修復資源管理器 inputbox 對齊 PR #60539
- Guillaume Poussel (@gpoussel): 修復快速開啟檢視中的 'null' 工具提示 PR #62268
- Len Smith (@ignu): 為 macOS 新增 window.nonNativeFullscreen 選項 PR #55267
- Ilya Biryukov (@IlyaBiryukov)
- joan xie (@infinnie)
- Matt Q (@irrationalRock): Emmet 語法配置檔案 tag_nl 不產生額外的空格 PR #60108
- John Graham (@J-Graham): 用滑鼠中鍵單擊麵包屑資源管理器中的檔案開啟… PR #59797
- Jason Bright (@jgbright): .code-workspace 檔案中的開啟工作區按鈕 PR #59586
- Kai Wood (@kaiwood): 修復程式碼註釋中的拼寫錯誤 PR #62282
- karan verma (@karanisverma): enablePreview 描述更改 PR #61603
- Karl Schärlund (@kscharlund): 支援奇數縮排大小(修復 #17639) PR #59568
- Kyra (@kyranet): snippets: 新增 setInterval 片段 PR #61351
- Samuel Attard (@MarshallOfSound): 啟用 mojave 深色模式支援 PR #59742
- Maksym Dogadailo (@mdogadailo): 拆分檢視中的專案沒有分隔線邊框無法拖動 PR #59830
- Josip Medved (@medo64): 更正 minLength 和 maxLength 驗證訊息 PR #61556
- Prem Kagrani (@michaelscof): 修復拼寫錯誤和一個單詞 PR #61171
- Michael Kopf (@Michel73): 預填充快速開啟 PR #55752
- Mine Starks (@minestarks): 支援配置 TypeScript 外掛 PR #61756
- Matthew J. Clemente (@mjclemente): 修復 vscode 名稱空間 API 中損壞的連結 PR #61651
- mnikn (@mnikn): 在彈出選單中新增接受所有傳入或當前更改。 PR #53649
- Matthew Knox (@mrkno): 問題檢視過濾器有很大的延遲 PR #60080
- Niclas van Eyk (@NiclasvanEyk): 將 #57321 中的操作新增到“未找到設定”訊息中 PR #59739
- Nick Schonning (@nschonni)
- Olivier Truong (@oltruong): 修復拼寫錯誤 PR #62196
- @orangegrove1955: 更正了註釋中的拼寫錯誤 PR #61216
- Karthikayan (@ParkourKarthik): 在 requestItem 中包含 priority 並新增到請求佇列 PR #60582
- Antoine (@Poke1650): 在註釋中新增缺失的句點。 PR #61827
- Maxime Guerreiro (@PunKeel): 從文件中刪除了重複的“the”。 PR #59897
- Roni Hacohen (@ronihcohen): 將 Pascal case 新增到片段格式選項 PR #59758
- Roy Tang (@roytang): 格式化選定內容鍵盤快捷方式將... PR #61206
- Ryan Clarke (@ryanclarke): 為麵包屑符號樹新增排序選項 PR #61420
- Sankt Petersbug (@sankt-petersbug): 修復 Markdown 預覽錯誤地編碼連結 PR #61530
- Prabhanjan S Koushik (@skprabhanjan)
- Tharun Jose (@tharunjose): 更新 README.md PR #60100
- Marcus Farkas (@ToothlessGear): 新增設定以允許停用替換預覽 PR #60153
- Stepan Usatyuk (@usaatyuk): 重新載入時保留設定搜尋 PR #59704
- Alexander (@usernamehw)
- Varan Shukla (@varanshukla): 修復拼寫錯誤 PR #61789
- Jeremy Shore (@w9jds)
- Konrad Borowski (@xfix): 在非內建語言列表末尾新增分號 PR #62284
- Literallie (@xxyy): JSON 架構解析問題的錯誤訊息干擾性更低 PR #60219
- sk (@yeahok): 修復 R 圖示大小 PR #59891
- Yisrael Veller (@YisraelV): 多行斷點小部件 - 實現 #56521 PR #61859
- Richard Harlen (@zimbo73): 更新 src/vs/workbench/services/files/electron-browser/fileService.ts PR #62296
對 vscode-eslint 的貢獻
- Loune Lam (@loune): 新增此行/此檔案快速操作的禁止規則/顯示文件 PR #530
- Nguyen Long Nhat (@torn4dom4n): 更新變數引用 #553
- David Broder-Rodgers (@broder): 修復 eslintServer 中的一些拼寫錯誤 PR #555
對 vscode-languageserver-node 的貢獻
- Vic Nightfall (@Victorious3): 異常中的拼寫錯誤 PR #419
- Chris Wendt (@chrismwendt): 修復 README 中的示例 PR #428
- Thibaud Colas (@thibaudcolas): 更新 lockfile 中的版本以匹配 package.json PR #431
對 language-server-protocol 的貢獻
- Tobias Bieniek (@Turbo87): overview: 修復示例響應 id PR #575
- Jonathan Yee (@jonyeezs): Readme: 使用逗號使列表更具可讀性 PR #578
- Lewis Cowper (@lewiscowper): 將標題轉換為超連結(網站) PR #577
- Remy Suen (@rcjsuen): 更正請求名稱中的拼寫錯誤 PR #589
- @fghzxm: 修復損壞的括號 PR #590
對 vscode-html-languageservice 的貢獻
對 vscode-css-languageservice 的貢獻
- Will Bender (@Ragnoroct): 在 css 選擇器懸停中顯示特異性。 PR #129
- Richard Samuelson (@ricsam): 刪除 package-lock.json PR #125
- Thomas Lent (@tlent)
對 vscode-json-languageservice 的貢獻
- Debasish Sahoo (@debck): 向 readme 新增許可證徽章 PR #31
- Flo Edelmann (@FloEdelmann): 不要包裝在陣列和物件完成中 PR #29
- Levertion (@Levertion): 使用 'if' 建立完成 PR #27
- Literallie (@xxyy)
對 debug-adapter-protocol 的貢獻
- Igor Kulaychuk (@ayuckhulk): 將 NetCoreDbg 新增到 Debug Adapter Protocol 實現者列表 PR #9
- Mario Loriedo (@l0rd): 在 Dev Tools 中新增 Theia PR #10
- Sven Efftinge (@svenefftinge): Theia 由 Eclipse 社群維護 PR #11
對 vscode-debugadapter-node 的貢獻
對 vscode-chrome-debug-core 的貢獻
對 vscode-generator-code 的貢獻
- Diogo Simões (@s1moe2): 添加了在安裝依賴項的模板上選擇 npm/yarn 的選項 PR #133
- Randy (@TheQwerty): 修復拼寫錯誤:commmand -> command PR #140
對 vscode-vsce 的貢獻
- Fabio Spampinato (@fabiospampinato): 添加了對
VSCE_IGNORE_KEYWORDS_LENGTH環境變數的支援 PR #298
對 vscode-extension-samples 的貢獻
- Eunice Park (@eunicode): 新增 README 到 theme-sample PR #115
對 vscode-recipes 的貢獻
- Alistair Chapman (@agc93): 新增除錯 Cake 指令碼的配方 PR #168
- Akshay Avinash (@akshay11298)
- @amiya-1998
- André Vargas (@andrevargas): 新增除錯 Gatsby.js 的說明 PR #160
- Taylor (@ATaylor1181): 修復 Ruby On Rails Readme 中的拼寫錯誤 PR #153
- Calvin Wong (@calvwng): 澄清 launch.json 步驟並新增 Nuxt.js 除錯連結 PR #147
- Cameo Langford (@cameo-myob): 更新了除錯 Ruby on Rails 以修復拼寫錯誤 PR #151
- Cody Condon (@codycc): 修復 README 中的拼寫錯誤 PR #139
- @guymcmanusgithub: 清理了 README 前幾段的語言... PR #154
- John Hinson (@jlhinson): 修復了 Meteor 配方中的幾個語法和拼寫問題。 PR #133
- Kirk Clemons (@kcclemo): 各種語法更改。 PR #161
- Maddie Kreamer (@maddiekreamer): 修復拼寫錯誤 PR #167
- Nisaruj (@nisaruj): 修復一些拼寫問題 PR #138
- Luiz Machado (@odahcam): 新增 PHP 說明 PR #136
- Peter Blazejewicz (@peterblazejewicz): Angular cli 配方 minor changes PR #134
- @qhieu45: 向 README.md 和 launch.json 新增 "skipFiles" 選項 PR #164
- Robin Cher (@robincher): PR - 新增 Mocha 預設測試選項 PR #148
- Sam Warner (@sjwarner-bp): 更新 Docker-TpeScript README.md 並進行語法更改 PR #149
對 inno-updater 的貢獻
- @edawine: 修復 strings.rs 中不完整的錯誤訊息 PR #4
- Isaac Whitfield (@whitfin): 輪詢退出時刪除不必要的分配 PR #6
- Jared De La Cruz (@jareddlc): 使日誌記錄更一致 PR #7
對 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。