2018 年 11 月 (版本 1.30)
更新 1.30.2:此更新解決了這些問題。
更新 1.30.1:此更新解決了這些問題。
下載:Windows:x64 | Mac:Intel | Linux 64 位:deb rpm tarball | 32 位:deb rpm tarball
歡迎使用 Visual Studio Code 2018 年 11 月版。此版本中有許多重大更新,我們希望您會喜歡,其中一些主要亮點包括:
- 多行搜尋改進 - 無需使用正則表示式即可輕鬆建立多行搜尋模式。
- Linux 上的自定義標題欄 - 自定義標題欄和選單欄現在是 Linux 上的預設設定。
- 引用檢視 - “查詢所有引用”檢視包括最近搜尋的歷史記錄。
- 程式碼片段註釋變數 - 程式碼片段變數根據語言插入正確的註釋。
- JS/TS 回撥顯示 - 現在您可以檢視匿名回撥的上下文。
- JSDoc Markdown 高亮顯示 - 包括 JSDoc 中 Markdown 程式碼塊的語法高亮顯示。
- 簡化的初始除錯配置 - 更好的預設值和用於初始啟動配置的快速選擇 UI。
- 開啟資料夾時執行 - 配置任務以便在首次開啟專案資料夾時執行。
- 選擇擴充套件版本 - 安裝 Marketplace 擴充套件的早期版本。
如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。
釋出說明按以下與 VS Code 重點領域相關的部分進行排列。以下是一些進一步的更新
- 工作臺 - 選單滾動和改進的溢位處理,一鍵開啟 settings.json。
- 語言 - JS/TS 重新命名現在處理解構,新增缺失的“new”快速修復。
- 除錯 - 刪除除錯控制檯,直接從 VS Code 程序資源管理器中除錯。
- 任務 - 清除任務終端,任務變數的使用者輸入,重新執行上次任務命令。
- 擴充套件創作 - 轉到宣告支援,新的簽名幫助上下文。
Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code!
工作臺
多行搜尋輸入
上個月,我們添加了對多行搜尋的支援。本月我們改進了搜尋 UX,使其更易於使用。現在,您無需編寫正則表示式即可使用多行文字進行搜尋。在搜尋框中鍵入Shift+Enter
以插入換行符,搜尋框將展開以顯示您的完整多行查詢。您還可以將編輯器中的多行選擇複製並貼上到搜尋框中。
Linux 上預設的自定義標題欄和選單欄
經過多次釋出,我們一直在透過自定義標題欄和選單欄改進 Windows 上選單的可訪問性和主題化。雖然它在 Linux 上是可選的,但在此版本中將預設啟用。
要使用本機標題欄,您可以將window.titleBarStyle
設定為native
。
滾動選單
啟用自定義選單欄後,選單被限制在 VS Code 視窗內渲染。以前,選單可能會被視窗邊界截斷。現在透過在需要時使上下文選單可滾動來解決此問題。
選單欄溢位選單
當您的視窗寬度不足以同時容納選單欄和視窗標題時,選單欄還會有一個新的溢位選單 (...)。
移動的設定編輯器操作
設定編輯器操作(開啟 settings.json、顯示修改的設定等)已從設定編輯器內的...選單移至編輯器標題欄。這使它們與其他編輯器型別保持一致,並且開啟 settings.json現在只需單擊帶有大括號{}
按鈕即可。鍵盤快捷方式編輯器也進行了相同的更改。
引用檢視
“引用”檢視已進行完善,不再是預覽功能。現在有兩個命令:
- 查詢所有引用,它會開啟“引用”檢視。
- 速覽引用,它會在“速覽”檢視中開啟引用。
“引用”檢視在啟動時是隱藏的,但一旦使用過就會保持可見。如果清除所有搜尋結果,它會顯示以前搜尋的歷史記錄。
現在檢視頂部有一個結果摘要,以及一個用於清除和複製結果的上下文選單。修復了許多錯誤,整體穩定性得到了改進。
編輯器
程式碼片段註釋變數
有新的程式碼片段變數可插入行註釋或塊註釋,並尊重當前語言。對於塊註釋使用BLOCK_COMMENT_START
和BLOCK_COMMENT_END
,否則使用LINE_COMMENT
。
下面的程式碼片段在 JavaScript 檔案中插入/* Hello World */
,在 HTML 檔案中插入。
{
"hello": {
"scope": "javascript,html",
"prefix": "hello",
"body": "$BLOCK_COMMENT_START Hello World $BLOCK_COMMENT_END"
}
}
宣告與定義
到目前為止,VS Code 提供了用於顯示符號定義的命令,例如轉到定義和速覽定義。這沒有考慮到某些語言在宣告和定義之間存在比其他語言更嚴格的區別。我們已經修復了這個問題,現在有轉到宣告和速覽宣告命令用於符號的宣告。
諸如轉到宣告之類的語言功能所需的資料由擴充套件計算,並且有一個新的 API,您可以在擴充套件創作部分閱讀相關內容。
平滑游標動畫
有一個新設定editor.cursorSmoothCaretAnimation
,它會在游標移動時啟用過渡動畫。
Git 整合
更改預設點選操作
現在,您可以更改在“原始碼管理”檢視中單擊檔案時的預設操作。預設情況下,VS Code 將開啟“差異”檢視,但透過將git.openDiffOnClick
設定為false
,檔案將在常規編輯器中開啟。
提交時推送或同步
新設定git.postCommitCommand
允許您在提交後推送或同步您的儲存庫。可用值為none
(預設)、push
和sync
。
語言
TypeScript 3.2
VS Code 現在包含TypeScript 3.2.2。此版本帶來了一些令人興奮的新語言功能,包括bind
、call
和apply
的嚴格型別,以及BigInt 支援。TypeScript 更新還修復了一些重要錯誤,幷包括新的工具功能和改進。
改進了 JavaScript 和 TypeScript 回撥的顯示
JavaScript 和 TypeScript 匿名回撥以前在“大綱”檢視、麵包屑檢視和文件符號列表中都被標記為
。這使得無法分辨您真正想要的是哪個函式。
藉助 TypeScript 3.2+,VS Code 現在為回撥函式顯示更多上下文,以便您可以區分它們。
重新命名正確處理 JS/TS 解構
重新命名現在可以處理 JavaScript 和 TypeScript 解構,並在需要時引入別名。
新增缺失的 JS/TS 快速修復
例項化類時忘記了new
?TypeScript 3.2 帶來了新的快速修復來幫助您。
此快速修復適用於 TypeScript 和型別檢查的 JavaScript。
JS/TS 路徑建議的檔案圖示
在VS Code 1.29 的工作基礎上,IntelliSense 小部件現在顯示 JavaScript 和 TypeScript 路徑建議的檔案圖示。
JSDoc 註釋中 Markdown 元素的高亮顯示
JSDoc 塊內的圍欄程式碼塊和其他 Markdown 元素現在已進行語法高亮顯示。
這種內聯高亮顯示更好地匹配了 VS Code 對懸停和 IntelliSense 文件的 JSDoc Markdown 渲染。
除錯
簡化的初始除錯配置
在這個里程碑中,我們著手簡化為我們最流行的除錯擴充套件生成的launch.json
檔案。我們的目標是讓使用者更輕鬆地啟動和配置除錯。這意味著隱藏不必要的啟動配置屬性,並使用 Quick Pick UI 來實現更好的使用者互動,同時生成初始launch.json
。有關此工作的更多詳細資訊可以在問題 #62851中找到。
除錯控制檯可以刪除
從上一個里程碑開始,在除錯多個除錯會話時,我們顯示多個除錯控制檯,每個會話一個。現在,當相應的會話不再活動時,可以透過清除該除錯控制檯的內容來刪除這些控制檯。我們沒有新增用於管理除錯控制檯生命週期的顯式命令,因為我們相信當前的方法會更直觀且更易於使用。
改進了除錯配置的使用者輸入變數
我們改進並推廣了提示使用者輸入的launch.json
變數概念。您可以在任務部分找到詳細資訊。
從程序資源管理器進行除錯
現在可以使用除錯上下文選單操作從 VS Code 程序資源管理器(開發人員:開啟程序資源管理器)啟動 Node.js 程序的除錯。
下面您可以看到連線到從整合終端啟動的 Node.js 程序。
Node/Chrome 除錯
smartStep
現在預設啟用
在幾個版本之前,我們更改了smartStep
的行為以使其更有用。使用smartStep
可以帶來更好的除錯體驗,尤其是對於 TypeScript,因此我們已將行為更改為始終開啟。
localRoot
的自動預設值
在 Node.js 遠端除錯場景中,除錯配置屬性localRoot
現在自動預設為${workspaceFolder}
,只需要指定remoteRoot
。
任務
開啟資料夾時執行
如果您有一個在開啟資料夾時總是執行的任務,您可以透過配置其"runOn"
屬性來配置它在該資料夾開啟時自動執行。我們發現這對於確保沒有人破壞 VS Code 儲存庫中的新嚴格空檢查非常有用。透過新增"runOn": "folderOpen"
,所有允許任務自動執行的人在違反嚴格空檢查時都會收到標記。
{
"type": "npm",
"script": "strict-null-check-watch",
"label": "TS - Strict Null Checks",
"isBackground": true,
"problemMatcher": {
"base": "$tsc-watch",
"owner": "typescript-strict-null",
"applyTo": "allDocuments"
},
"runOptions": {
"runOn": "folderOpen"
}
}
清除任務終端
要在執行任務之前清除終端,您可以透過將任務的presentation
選項配置為"clear": true
。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"presentation": {
"clear": true
}
}
重新執行任務
現在可以使用任務:重新執行上次任務命令 (workbench.action.tasks.reRunTask
) 重新執行任務。預設情況下,重新執行任務將重新評估其執行變數,包括其輸入。要使用在上次執行中已評估的變數,請配置"reevaluateOnRerun"
選項。
{
"type": "gulp",
"task": "tslint",
"label": "Run tslint",
"runOptions": {
"reevaluateOnRerun": false
}
}
改進了任務和除錯配置的使用者輸入變數
長期以來,VS Code 一直透過${variableName}
語法支援tasks.json
和launch.json
中的變數替換。
對於launch.json
,甚至可以使用提示使用者輸入的變數(例如${command:pickNodeProcess}
,它會開啟一個基於 Quick Pick 的程序選擇器)。此功能不適用於tasks.json
,並且基於命令的變數也有其他限制(請參閱問題#9297、#9544和#30588)。
在這個里程碑中,使用者輸入變數已被泛化和改進,現在可用於launch.json
和tasks.json
。這項工作還將命令語法引入了tasks.json
。
對於使用者輸入變數,我們引入了一個新的變數類別input
,其語法為:${input:variableName}
。這個簡單的語法不足以向用戶呈現有意義的 UI,因此我們在launch.json
和tasks.json
中引入了一個新的inputs
部分,其中指定了額外的配置屬性。
使用 Angular CLI 的示例
這是支援的屬性列表:
id
- 使用這些屬性的相應變數名。type
- 使用者輸入小部件的型別。在此版本中,支援promptString
(用於字串 InputBox)和pickString
(用於字串 Quick Pick)。description
- 向用戶顯示的描述性文字。default
- 如果使用者只是按Enter,則使用的預設值。
第一個示例展示瞭如何在任務配置 (tasks.json
) 中使用使用者輸入變數。
{
"tasks": [
{
"label": "Echo input",
"type": "shell",
"command": "echo ${input:echoPrompt}"
}
],
"inputs": [
{
"id": "echoPrompt",
"description": "Please enter a value",
"default": "default echo text",
"type": "promptString"
}
]
}
另一個示例展示了一個用於在除錯配置 (launch.json
) 中選擇兩個選項之間的使用者輸入變數。
{
"configurations": [
{
"type": "node",
"request": "launch",
"name": "Launch Program",
"program": "${workspaceFolder}/${input:pickProgram}"
}
],
"inputs": [
{
"id": "pickProgram",
"description": "Select client or server",
"type": "pickString",
"options": ["client.js", "server.js"],
"default": "client.js"
}
]
}
我們計劃將使用者輸入變數與現有的基於命令的變數結合起來,以便使用者輸入變數可以由擴充套件貢獻。
擴充套件
安裝以前的版本
如果當前版本存在問題,您現在可以回溯到擴充套件的早期版本。VS Code 在已安裝的擴充套件上提供了一個安裝另一個版本操作,該操作會顯示一個可用版本的下拉列表。
無響應的擴充套件主機
VS Code 在一個單獨的 Node.js 程序中執行擴充套件——擴充套件主機。這會將擴充套件程式碼與 VS Code 本身隔離,但不會將不同的擴充套件相互隔離。由於 JavaScript 的單執行緒性質,一個擴充套件可能會(無論是有意還是無意)壟斷擴充套件主機執行緒,阻止所有其他擴充套件,並使操作顯得無響應。
VS Code 現在會監視擴充套件主機,當它變得無響應時,VS Code 會開始分析擴充套件主機。當某個擴充套件被確定為無響應的原因時,會顯示一個最小化的通知,鼓勵使用者提交問題。
作為使用者,請留意狀態列中的鈴鐺圖示,因為通知很小。作為擴充套件作者,如果您收到無響應問題,請查閱此指南,其中解釋了發生了什麼以及如何開啟問題中附帶的 CPU 配置檔案。
預覽功能
預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。
HTML 自定義標籤/屬性支援
新的html.experimental.custom.tags
和html.experimental.custom.attributes
設定允許您指定 VS Code 在啟動時載入的標籤和屬性列表。當您編輯 HTML 檔案時,VS Code 將為這些標籤和屬性提供自動完成和懸停。這對於Web Components非常有效,例如:
您可以開啟octref/web-components-examples儲存庫來測試此功能。此功能處於預覽階段,設定名稱和 JSON 格式都可能更改。
如果您有反饋或功能請求,請在問題 #62976中跟進。
擴充套件的網路代理支援
有一個實驗性設定Http: Proxy Support
用於為所有擴充套件啟用網路代理支援。雖然我們仍在研究一些細節,但我們邀請您嘗試一下,並告訴我們它是否適合您。(請注意,啟用網路代理支援目前會破壞 GitHub Pull-Request 擴充套件的登入。)
對於大多數設定,將其設定為override
應該效果最佳,如果效果不好,請嘗試on
進行比較。
擴充套件開發
轉到宣告
我們添加了一個DeclarationProvider
介面,擴充套件可以實現它來支援轉到宣告功能。宣告提供程式應返回符號宣告的位置。當為同一個檔案註冊多個提供程式時,它們的S結果將合併。
簽名幫助上下文
SignatureHelpProviders 現在接受一個context
引數,該引數提供有關簽名幫助如何觸發的資訊。上下文包括:
- 簽名幫助如何觸發(觸發字元、命令或文件上下文更改)。
- 導致簽名幫助觸發的字元。
- 簽名幫助在觸發時是否已顯示?
import * as vscode from 'vscode';
export function activate(context: vscode.ExtensionContext) {
vscode.languages.registerSignatureHelpProvider(
'markdown',
new (class implements vscode.SignatureHelpProvider {
provideSignatureHelp(
document: vscode.TextDocument,
position: vscode.Position,
token: vscode.CancellationToken,
context: vscode.SignatureHelpContext
): vscode.ProviderResult<vscode.SignatureHelp> {
// Return fake signature help result
const sigHelp = new vscode.SignatureHelp();
sigHelp.activeParameter = 0;
sigHelp.activeSignature = 0;
sigHelp.signatures = [new vscode.SignatureInformation(getLabel(context))];
return sigHelp;
}
})(),
{
triggerCharacters: ['('],
retriggerCharacters: [',']
}
);
}
function getLabel(context: vscode.SignatureHelpContext): string {
const parts = [];
// How was signature help triggered
switch (context.triggerKind) {
case vscode.SignatureHelpTriggerKind.Invoke:
parts.push('invoke');
break;
case vscode.SignatureHelpTriggerKind.ContentChange:
parts.push('change');
break;
case vscode.SignatureHelpTriggerKind.TriggerCharacter:
parts.push('character');
break;
}
// The character (if any) that caused signature help to be triggered
if (context.triggerCharacter) {
parts.push(context.triggerCharacter);
}
// Was signature help already showing when it was triggered again?
if (context.isRetrigger) {
parts.push('retrigger');
}
return parts.join(' ');
}
此外,SignatureHelpProviders 現在可以使用一組不同的觸發字元和重新觸發字元進行註冊。重新觸發字元僅在簽名幫助已顯示時才觸發簽名幫助。
這是上面 SignatureHelpProvider 的實際操作
配置貢獻的 TypeScript 伺服器外掛
擴充套件現在可以透過 VS Code 內建 TypeScript 擴充套件提供的 API 向貢獻的 TypeScript 伺服器外掛傳送配置資料。
// In your VS Code extension
export async function activate(context: vscode.ExtensionContext) {
// Get the TS extension
const tsExtension = vscode.extensions.gettsExtension(
'vscode.typescript-language-features'
);
if (!tsExtension) {
return;
}
await tsExtension.activate();
// Get the API from the TS extension
if (!tsExtension.exports || !tsExtension.exports.getAPI) {
return;
}
const api = tsExtension.exports.getAPI(0);
if (!api) {
return;
}
// Configure the 'my-typescript-plugin-id' plugin
api.configurePlugin('my-typescript-plugin-id', {
someValue: process.env['SOME_VALUE']
});
}
TypeScript 伺服器外掛透過onConfigurationChanged
方法接收配置資料。
// In your TypeScript plugin
import * as ts_module from 'typescript/lib/tsserverlibrary';
export = function init({ typescript }: { typescript: typeof ts_module }) {
return {
create(info: ts.server.PluginCreateInfo) {
// Create new language service
},
onConfigurationChanged(config: any) {
// Receive configuration changes sent from VS Code
}
};
};
此 API 允許 VS Code 擴充套件將 VS Code 設定與 TypeScript 伺服器外掛同步,或動態更改外掛的行為。請檢視TypeScript TSLint 外掛和lit-html擴充套件,瞭解此 API 在實踐中的使用方式。
自定義檢視
用於向檢視新增全部摺疊操作的提議 API 現已穩定。
樹項描述
您現在可以使用TreeItem
中的description
屬性為樹項新增描述。如果樹項由資源支援,您還可以透過將description
設定為true
來讓 VS Code 從資源派生描述。
/**
* A human readable string which is rendered less prominently.
* When `true`, it is derived from [resourceUri](#_TreeItem.resourceUri), and when `falsy`, it is not shown.
*/
description?: string | boolean;
除錯 API
更豐富的 DebugSession
DebugSession
API 現在顯示工作區資料夾和已解析的除錯配置。已解析意味著所有變數都已替換,並且平臺特定的屬性部分已針對匹配的平臺進行“展平”,並已為不匹配的平臺刪除。
斷點的唯一 ID
Breakpoint
類現在顯示一個唯一的 ID (id
),該 ID 在其整個生命週期內不會更改。
用於控制除錯介面卡建立的最終 API
在此里程碑中,我們已最終確定用於控制除錯介面卡建立的擴充套件 API。該 API 使用一個新的DebugAdapterDescriptorFactory
,必須使用vscode.debug.registerDebugAdapterDescriptorFactory
為特定除錯型別註冊。工廠有一個方法createDebugAdapterDescriptor
,VS Code 在需要除錯介面卡時呼叫該方法。由於除錯會話作為引數傳遞(並且會話現在顯示工作區資料夾和已解析的配置),因此在要求建立除錯介面卡時,實現可以訪問完整的上下文。createDebugAdapterDescriptor
必須返回一個描述如何建立和/或連線到除錯介面卡的物件。
DebugAdapterExecutable
描述符使 VS Code 為每個會話將除錯介面卡作為外部程序啟動,並透過 stdin/stdout 與其通訊。選項屬性包可以指定工作目錄和環境變數。DebugAdapterServer
使 VS Code 連線到處理多個會話並透過套接字通訊的伺服器程序。
請注意:隨著此 API 的最終確定,我們正在棄用舊的(提議的)APIDebugConfigurationProvider.debugAdapterExecutable
和非常舊的基於命令的方法(貢獻點Debuggers
,屬性:adapterExecutableCommand
)。請儘快放棄這些 API,因為我們計劃在下一個版本中移除對它們的支援。
此程式碼片段展示瞭如何使用此 API 執行嵌入在其包含擴充套件中的除錯介面卡。
let server: Net.Server;
vscode.debug.registerDebugAdapterDescriptorFactory('mock', {
createDebugAdapterDescriptor(session: DebugSession, executable: DebugAdapterExecutable) {
// start server on launch of first debug session
if (!server) {
// start listening on a random port
server = Net.createServer(socket => {
const s = new MockDebugSession();
s.setRunAsServer(true);
s.start(<NodeJS.ReadableStream>socket, socket);
}).listen(0);
}
// make VS Code connect to debug server instead of launching debug adapter
return new DebugAdapterServer(server.address().port);
}
});
最終確定的除錯介面卡跟蹤器 API
在此里程碑中,我們已最終確定用於跟蹤 VS Code 和偵錯程式擴充套件之間使用的除錯介面卡協議的擴充套件 API。該 API 使用新的DebugAdapterTrackerFactory
,必須使用vscode.debug.registerDebugAdapterTrackerFactory
為除錯型別註冊。工廠有一個方法createDebugAdapterTracker
,VS Code 在開始與除錯介面卡通訊之前呼叫該方法。createDebugAdapterDescriptor
必須返回DebugAdapterTracker
的實現(或undefined
以防止跟蹤)。
此程式碼片段展示瞭如何使用此 API 記錄 Node.js 偵錯程式的除錯介面卡協議。
vscode.debug.registerDebugAdapterTrackerFactory('node', {
createDebugAdapterTracker(session: DebugSession) {
return {
onWillReceiveMessage: m => console.log(`> ${JSON.stringify(m, undefined, 2)}`),
onDidSendMessage: m => console.log(`< ${JSON.stringify(m, undefined, 2)}`)
};
}
});
為了確保擴充套件在需要時啟用,可以在package.json
中使用啟用事件onDebugAdapterProtocolTracker:
。如果省略除錯型別,則為所有除錯型別啟用擴充套件。
{
"activationEvents": ["onDebugAdapterProtocolTracker:node"]
}
除錯介面卡協議
runInTerminal
響應的新shellProcessId
屬性
如果除錯介面卡需要在終端中執行目標,它可以使用 DAP runInTerminal
請求。此請求可以選擇返回目標程序的processId
,但實際上沒有前端實現能夠提供此資訊。因此,我們引入了一個新屬性shellProcessId
,用於返回終端 shell 的程序 ID(這更容易確定)。
剪貼簿
剪貼簿 API 已最終確定,現在所有擴充套件都可以使用它。它允許擴充套件將字串複製和貼上到作業系統剪貼簿。
完成項
當插入跨越多行的完成項時,VS Code 會調整縮排。這並非總是需要的,因此我們添加了vscode.CompletionItem.keepWhitespace
來控制此行為。
符號提供程式的標籤
註冊文件符號提供程式時,現在可以提供一個標籤(DocumentSymbolProviderMetadata
)。當文件有多個符號提供程式時,此標籤將顯示在麵包屑和“大綱”檢視中。
提議的擴充套件 API
每個里程碑都附帶新的提議 API,擴充套件作者可以試用它們。一如既往,我們渴望您的反饋。以下是試用提議 API 所需的操作:
- 您必須使用 Insiders 版本,因為提議的 API 經常更改。
- 您的擴充套件的
package.json
檔案中必須包含以下行:"enableProposedApi": true
。 - 將最新版本的 vscode.proposed.d.ts 檔案複製到您的專案中。
請注意,您不能釋出使用提議 API 的擴充套件。我們很可能會在下一個版本中進行破壞性更改,我們絕不希望破壞現有擴充套件。
自定義檢視支援訊息文字
樹檢視訊息
您現在可以使用TreeView
中的message
屬性在樹檢視中設定訊息。
/**
* An optional human-readable message that will be rendered in the view.
*/
message?: string | MarkdownString;
智慧選擇和擴充套件
我們添加了一個提議的 API 來支援智慧選擇功能。今天,當您執行展開選擇或收縮選擇命令時,選擇範圍是根據弱啟發式演算法計算的。雖然我們正在努力改進該啟發式演算法,但我們也希望擴充套件作者參與進來。因此,我們添加了一個用於SelectionRangeProvider
的提議 API。
工程
移除 WinJS-Promise
當 VS Code 剛開始時,JavaScript 還不像今天這樣。例如,當時沒有原生 Promise,團隊決定使用WinJS.Promise
。快進到今天,情況有所不同:原生 Promise 是真實的,而WinJS.Promise
已過時。
因此,我們正在逐步擺脫WinJS.Promise
。由於 API 和執行時行為的差異,這不是一項容易的任務。我們從大約 10000 個對WinJS.Promise
的引用開始,現在已減少到 1471 個,其中約 500 個是例項化而不是純型別註解。我們相信我們很快就會完成這段史詩般的旅程!
繼續探索 Electron 3.0
在此里程碑中,我們繼續探索將 Electron 3.0.0 打包到 VS Code 中。這是一個主要的 Electron 版本,附帶 Chrome 66 和 Node.js 10.x(與我們當前使用 Chrome 61 和 Node.js 8.x 的版本相比,這是一個巨大的飛躍)。我們計劃在 12 月向 Insiders 使用者推出更新,以收集更多反饋。如果您有興趣提供幫助,請務必安裝 VS Code Insiders。
社群問題跟蹤
社群長期以來一直定期幫助我們進行問題跟蹤。由於我們看到越來越多的問題被提出(目前平均每天 70 個),我們已經開始邀請最活躍的社群成員為他們正在處理的問題新增特定標籤。由於 GitHub 沒有細粒度許可權,我們正在使用我們的問題機器人來識別某些評論併為它們新增標籤。請參閱下面的感謝部分以瞭解致謝。
嚴格空檢查
我們對VS Code 主要程式碼庫進行嚴格空檢查的工作仍在繼續。我們現在正在對大約 800 個檔案進行嚴格空檢查,並將繼續這項工作,直到覆蓋整個程式碼庫。
您可以在問題 #60565中跟蹤這項工程工作並瞭解更多有關該過程的資訊。
對擴充套件的貢獻
我們的團隊維護或貢獻了許多 VS Code 擴充套件。本月最值得注意的是
GitHub 拉取請求
在此里程碑中,我們致力於改進GitHub Pull Requests擴充套件。
以下是一些新功能
- 直接從您的本地分支建立拉取請求。
- 在已檢出的拉取請求上建議一系列原始碼更改。
- 在拉取請求描述頁面上檢視狀態檢查資訊。
您可以在vscode-pull-request-github releases上閱讀擴充套件的完整發布說明。
值得注意的修復
- 37929: 建立除錯環境下拉選單時不啟用偵錯程式
- 60187: 偵錯程式不會在 jest 測試中命中斷點
- 61590: 使設定和鍵繫結編輯器在顯示編輯器操作時保持一致
- 62370: 改進編輯器中的診斷懸停
- 62500: 將“執行到游標”新增到命令面板
- 62778: 居中佈局不恢復大小
- 63618: 除錯 Electron 2.0.13 64 位失敗,錯誤“無法連線到執行時程序,超時 10000 毫秒”。但在 Electron 32 位上成功。
感謝
最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:
對我們問題跟蹤的貢獻
對 vscode
的貢獻
- Adrien Becchis (@AdrieanKhisbe): 語法注入 - 考慮更廣泛的範圍PR #50534
- David Bailey (@davidbailey00): 從 URL 處理程式桌面檔案移除 StartupWMClassPR #63750
- Anuj (@desaianuj): representation 而不是 presentationPR #63477
- Donald Pipowitch (@donaldpipowitch): 新增 .hintrc 並將 .babelrc 移動到 jsonc 語法PR #63759
- Eric Amodio (@eamodio)
- Alexandr Fadeev (@fadeevab): 根據最新語法更新 makefile 顏色化測試PR #61961
- Guillaume Poussel (@gpoussel): 修復 #62278: IPv6 連結支援PR #62293
- Aleksandr Filatov (@greybax): 修復問題 #46816PR #60404
- Napoleon Oikonomou (@iamnapo): 如果存在,則顯示 README 而不是歡迎頁面PR #60061
- Raul Humberto Lopez Lopez (@iBlackShadow): 當搜尋由選項更改觸發時,向搜尋歷史新增條目PR #61993
- Andrii Dieiev (@IllusionMH): 控制搜尋結果中操作對齊的選項PR #63457
- joan xie (@infinnie): 選單水平對齊PR #61454
- Matt Q (@irrationalRock): 修復 #34345 - 添加了將多個游標新增到檔案末尾/檔案頂部的命令PR #50312
- Jeffrey (@JeffreyCA)
- @jokurz: 將 ksh 指令碼自動檢測為 shellscriptPR #62838
- karan verma (@karanisverma): 修復: #55946 添加了註釋程式碼片段變數PR #63572
- Krish De Souza (@Kedstar99): 修復 updateService.linux.ts 中的 checkForSnapUpdate 以正確識別 snap 版本PR #63716
- Benjamin Lannon (@lannonbr): 添加了將擴充套件資訊輸出到剪貼簿的功能PR #56514
- Luo Wenqing (@laphets): 修復啟用 autoNavigateNextConflict 時最後的合併衝突警告PR #62788
- Matthew Leon (@leonm1): 修復 #62785 除錯控制檯 copyAll 中的空行PR #62823
- Bruno Logerfo (@Logerfo): keyboardMapperTestUtils 的嚴格空檢查PR #63027
- Mathias Rasmussen (@mathiasvr): 修復 #60002 撤銷上次提交:保留暫存檔案PR #60104
- Matt Crupi (@mmcru): 修復 #63295: 在 Linux 儲存錯誤訊息中引用 SudoPR #63394
- Philip Arola (@philiparola): 在設定螢幕中將“overwrite”更改為“override”PR #61926
- Samuel Toriel (@riltsken): [修復] #27649 將 intellisense 文件小部件固定到頂部PR #62115
- Ryan Scott (@rscott): 新增 Git:Fetch (prune)PR #59735
- Prabhanjan S Koushik (@skprabhanjan)
- SlaneR (@slaner): 修復註釋中的拼寫錯誤PR #62117
- Thomas Struller-Baumann (@Thomas-S-B): 移除了不必要的型別轉換PR #63947
- Alexander (@usernamehw)
- Konrad Borowski (@xfix): 修復快照載入器中的意外穿透PR #62294
- Yisrael Veller (@YisraelV)
對 vscode-vsce
的貢獻
- Nikolay Kondratyev (@kondratyev-nv): 修復特定版本的釋出PR #307
對 vscode-eslint
的貢獻
對 language-server-protocol
的貢獻
- Jan Keromnes (@jankeromnes): 小改進:拼寫錯誤、語法、措辭。PR #579
- Adolfo Ochagavía (@aochagavia): 修復規範中的拼寫錯誤PR #597
對 vscode-languageserver-node
的貢獻
- Remy Suen (@rcjsuen): 提供帶有 DefinitionLink 的符號元資料PR #415
- Guillaume Martres (@smarter): 將 asVersionedTextDocumentIdentifier 新增到 Converter 介面PR #421
對 vscode-html-languageservice
的貢獻
對 vscode-generator-code
的貢獻
- Graham Bartley (@grabartley): 不再在不建立 git 儲存庫時建立 git 相關檔案PR #141
對 debug-adapter-protocol
的貢獻
- Danny Tuppeny (@DanTup): 修復 Dart 外掛連結PR #16
對 vscode-chrome-debug-core
的貢獻
- @digeff: 不傳送儲存源的 src 更改事件PR #378
- Shennie Yao (@Shenniey)
對 vscode-chrome-debug
的貢獻
- Shennie Yao (@Shenniey): 新增 chrome 命令列開關的執行時引數遙測PR #749
- Leslie Leigh (@shrinktofit): 修復 targetTypes 選項PR #760
對vscode-azure-account
的貢獻
- Yujin Hong (@yujhongmicrosoft): 新增對主權登入的支援PR #79
- Zhe Li (@Sneezry): 修復 Azure 中國登入問題PR #104
- Mateus Amin (@MateusAmin): 更新 README 與設定PR #107
對 vscode-recipes
的貢獻
- Damon Jablons (@blackrobot): 清理 Python 食譜的 Markdown 格式PR #172
- Vinícius Salomão (@vizeke): 使用 vscode 執行和除錯 PHPPR #169
對 localization
的貢獻
Transifex VS Code 專案團隊有近 1400 名成員,每月約有 100 名活躍貢獻者。我們感謝您的貢獻,無論是提供新翻譯、對翻譯投票還是提出流程改進建議。
以下是此版本的貢獻者快照。有關專案(包括貢獻者名單)的詳細資訊,請訪問專案網站:https://aka.ms/vscodeloc。
- 保加利亞語:Любомир Василев。
- 加泰羅尼亞語: Adolfo Jayme-Barrientos, Enric Soler Rastrollo (MaDDoGo), Oriol Torrillas。
- 捷克語: Vít Staniček, Ondra Kalousek, Kryštof Černý。
- 丹麥語: Johan Fagerberg。
- 芬蘭語: Feetu Nyrhinen, Jussi Palo, Ahto Simakuutio。
- 法語: Antoine Griffard, Thierry DEMAN-BARCELO, Adrien Clerbois。
- 德語: Carsten Kneip。
- 希臘語: George Xenakis, Christos Koutsiaris, dimipapaioan。
- 印地語: Anand Chalakkal Jose Mohan, Kiren Paul, Ashwini Gupta, amgusain, Pointless Banter, Shaswat Rungta, Adnan Shaikh, Shashida Nand Jha。
- 匈牙利語: Tar Dániel.
- 簡體中文: feiyun0112 feiyun0112, Tingting Yi, XIANG ZUO, Tony Xia, G.Y. Z, Dave Young, Jessica Zhang, 馳 雷, Liam Kennedy, bh wu, WangCG duoduobear, ziqiang sun, 正元 劉, 越 鄭, peng wei, xiong Fu, 吉姆 舒, 瑜 周, 仁松 陳, Jiang LI。
- 繁體中文: Winnie Lin , Duran Hsieh, Hans Chiu, Alan Liu。
- 印尼語: Laurensius Dede Suhardiman, Wildan Mubarok, Joshua Siagian, Rizki A. Wibowo。
- 日語: Satoshi Kajiura, Shunya Tajima, Yuichi Nukiyama, Yoshihisa Ozaki, dkp sk, Hiroyuki Mori。
- 卡納達語: Sanjay !, Sushmit Patil。
- 馬拉雅拉姆語: Kiren Paul, Anand Chalakkal Jose Mohan。
- 挪威語: Espen Klein Nilsen, Ivar L, Simen Dæhlin, Daniel Bjørnbakk。
- 波蘭語: Artur。
- 葡萄牙語(巴西): Danilo Dantas, Thiago Custodio, Vinicius Ribeiro, Lucas Santos, Gabriel Henrique Oliveira de Mello。
- 羅馬尼亞語: Szauka。
- 俄語: Mikhail Zabaluev, Acupofspirt, Ilya Umnov。
- 僧伽羅語: Anand Chalakkal Jose Mohan。
- 西班牙語: Jorge Serrano Pérez, Alejandro Medina, Alberto Poblacion, Carlos Longarela, Carlos Mendible, Guillermo Callaghan, Alfonso Jesus Flores Alvarado, Andy Gonzalez。
- 泰米爾語: Vijay Nirmal, Avinash, Jeyanthinath Muthuram, Narayanan Singaram。
- 泰盧固語: Raja Tirumala Rao Guna。
- 土耳其語: Eyüp DALAN, Mustafa Turhan, Türker YILDIRIM。
- 越南語: Nguyễn Nhật Tân。