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 月發行版本。此版本中有許多重大更新,我們希望您會喜歡,其中一些主要重點包括
- 多行搜尋輸入改進 - 輕鬆建立多行搜尋模式,無需使用 regex。
- 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 World -->
{
"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 匿名回呼先前在 [大綱] 檢視、麵包屑檢視和文件符號清單中都被標記為 <function>
。這使得無法分辨您真正想要的是哪個函式
透過 TypeScript 3.2+,VS Code 現在會顯示更多回呼函式的內容,以便您可以區分它們
重新命名可正確處理 JS/TS 解構
重新命名現在可以處理 JavaScript 和 TypeScript 解構,並在需要時引入別名
新增遺失的 new JS/TS 快速修正
忘記在具現化類別時使用 new
嗎?TypeScript 3.2 帶來了新的快速修正來協助您
此快速修正適用於 TypeScript 和 類型檢查的 JavaScript。
JS/TS 路徑建議的檔案圖示
基於 VS Code 1.29 中的工作,IntelliSense 小工具現在會顯示 JavaScript 和 TypeScript 路徑建議的檔案圖示
JSDoc 註解中 Markdown 元素的醒目提示
JSDoc 區塊內的圍欄程式碼區塊和其他 Markdown 元素現在會語法醒目提示
此內嵌醒目提示更符合 VS Code 的 JSDoc Markdown 轉譯,適用於 hover 和 IntelliSense 文件。
偵錯
簡化的初始偵錯組態
在此里程碑中,我們研究了簡化最常用的偵錯擴充功能產生的 launch.json
檔案。我們的目標是讓使用者更容易開始和設定偵錯。這表示隱藏不必要的啟動組態屬性,並在使用快速選取 UI 時獲得更好的使用者互動,同時產生初始的 launch.json
。有關此工作的更多詳細資訊,請參閱 issue #62851。
可以刪除偵錯主控台
從上一個里程碑開始,當偵錯多個偵錯工作階段時,我們會顯示多個偵錯主控台,每個工作階段一個。現在,當對應的工作階段不再活動時,可以透過清除該偵錯主控台的內容來刪除這些主控台。我們沒有新增明確的命令來管理偵錯主控台的生命週期,因為我們相信目前的方法會更直覺且更易於使用。
改進偵錯組態的使用者輸入變數
我們改進並概括了提示使用者輸入的 launch.json
變數概念。您可以在工作章節中找到詳細資訊。
從處理序總管進行偵錯
現在可以從 VS Code 處理序總管 (開發人員:開啟處理序總管) 使用偵錯內容功能表動作開始偵錯 Node.js 處理序。
在下方,您可以看到附加到從整合式終端機啟動的 Node.js 處理序。
Node/Chrome 偵錯
smartStep
現在預設啟用
在幾個版本之前,我們變更了行為 smartStep
,使其更有用。使用 smartStep
會產生更好的偵錯體驗,尤其是對於 TypeScript 而言,因此我們已將行為變更為永遠開啟。
localRoot
的自動預設值
在 Node.js 遠端偵錯案例中,偵錯組態屬性 localRoot
現在會自動預設為 ${workspaceFolder}
,並且只需要指定 remoteRoot
。
工作
在資料夾開啟時執行
如果您有一個在開啟資料夾時總是執行的工作,您可以將其設定為在該資料夾開啟時自動執行,方法是設定其 "runOn"
屬性。我們發現這對於確保沒有人破壞我們在 VS Code 存放庫中的新嚴格 null 檢查非常有用。透過新增 "runOn": "folderOpen"
,每個允許自動執行工作的人都會在他們違反嚴格 null 檢查時收到標記
{
"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"
}
}
清除工作終端機
若要在執行工作之前清除終端機,您可以使用 "clear": true
設定工作的 presentation
選項。
{
"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 一直支援 tasks.json
和 launch.json
中的變數替換,透過 ${variableName}
語法。
對於 launch.json
,甚至可以使用提示使用者輸入的變數 (例如 ${command:pickNodeProcess}
,它會開啟基於快速選取處理序選取器的快速選取)。此功能不適用於 tasks.json
,且基於命令的變數也有其他限制 (請參閱 issue #9297、#9544 和 #30588)。
在此里程碑中,使用者輸入變數已獲得概括和改進,現在它們適用於 launch.json
和 tasks.json
。這項工作也將命令語法帶到了 tasks.json
。
對於使用者輸入變數,我們引入了一個新的變數類別 input
,它會產生此語法:${input:variableName}
。此簡單語法不足以向使用者呈現有意義的 UI,因此我們在 launch.json
和 tasks.json
中引入了一個新的 inputs
區段,其中指定了其他組態屬性。
使用 Angular CLI 的範例
以下是支援的屬性清單
id
- 這些屬性所使用的對應變數名稱。type
- 使用者輸入小工具的類型。在此版本中,支援promptString
(適用於字串輸入方塊) 和pickString
(適用於字串快速選取)。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 將為這些標籤和屬性提供自動完成和 hover。這非常適用於 Web Components,例如
您可以開啟 octref/web-components-examples 存放庫來測試此功能。此功能為預覽版,且設定名稱和 JSON 格式都可能會變更。
如果您有意見反應或功能要求,請在 issue #62976 中追蹤。
擴充功能的網路 Proxy 支援
有一個實驗性設定 Http: Proxy Support
,用於為所有擴充功能啟用網路 Proxy 支援。雖然我們仍在處理一些詳細資訊,但我們邀請您試用並 讓我們知道它是否適用於您。(請注意,啟用網路 Proxy 支援目前會 中斷 GitHub Pull-Request 擴充功能的登入。)
將其設定為 override
對於大多數設定應該最有效,當效果不佳時,請嘗試 on
進行比較。
擴充功能撰寫
前往宣告
我們新增了一個 DeclarationProvider
介面,擴充功能可以實作它來支援前往宣告功能。宣告提供者應傳回作為符號宣告的位置。當為同一個檔案註冊多個提供者時,它們的結果會合併。
簽章說明內容
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
)。
用於控制偵錯配接器建立的最終 API
在此里程碑中,我們已最終確定用於控制偵錯配接器建立的擴充功能 API。API 使用新的 DebugAdapterDescriptorFactory
,它必須使用 vscode.debug.registerDebugAdapterDescriptorFactory
為特定的偵錯類型註冊。Factory 有一個單一方法 createDebugAdapterDescriptor
,當需要偵錯配接器時,VS Code 會呼叫該方法。由於偵錯工作階段作為引數傳遞 (且工作階段現在會顯示工作區資料夾和已解析的組態),因此實作在被要求建立偵錯配接器時可以存取完整的內容。createDebugAdapterDescriptor
必須傳回一個物件,該物件向 VS Code 描述如何建立和/或連線到偵錯配接器
DebugAdapterExecutable
描述器使 VS Code 針對每個工作階段啟動偵錯配接器作為外部處理序,並透過 stdin/stdout 與其通訊。選項屬性包可以指定工作目錄和環境變數。DebugAdapterServer
使 VS Code 連線到處理多個工作階段並透過 socket 通訊的伺服器處理序。
請注意:隨著此 API 的最終確定,我們正在棄用舊的 (建議的) API DebugConfigurationProvider.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
為偵錯類型註冊。Factory 有一個單一方法 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:<debug type>
。如果省略偵錯類型,則會針對所有偵錯類型啟用擴充功能。
{
"activationEvents": ["onDebugAdapterProtocolTracker:node"]
}
偵錯配接器協定
runInTerminal
回應的新 shellProcessId
屬性
如果偵錯配接器需要在終端機中執行目標,則可以使用 DAP runInTerminal
要求。此要求可以選擇性地傳回目標處理序的 processId
,但實際上沒有前端實作能夠提供此資訊。因此,我們引入了一個新的屬性 shellProcessId
,用於傳回終端機 shell 的處理序 ID (這更容易判斷)。
剪貼簿
剪貼簿 API 已最終確定,現在可以供所有擴充功能使用。它允許擴充功能將字串複製和貼上到 OS 剪貼簿。
完成項目
當插入跨越多行的完成項目時,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 沒有細緻的權限設定,我們正在使用我們的議題機器人來偵測某些評論並為其新增標籤。請參閱下方的感謝章節以查看致謝名單。
嚴格 Null 檢查
我們持續進行對 VS Code 主要程式碼庫進行嚴格 null 檢查的工作。我們現在正在對約 800 個檔案進行嚴格 null 檢查,並將繼續這項工作,直到涵蓋整個程式碼庫。
您可以追蹤這項工程進度並透過議題 #60565 了解更多關於此過程的資訊。
擴充功能貢獻
我們的團隊維護或貢獻了許多 VS Code 擴充功能。本月最值得注意的是
GitHub Pull Requests
在這個里程碑中,我們致力於改進 GitHub Pull Requests 擴充功能。
以下是一些新功能
- 直接從您的本機分支建立 pull request。
- 在已簽出的 pull request 上建議一系列原始碼變更。
- 在 pull request 描述頁面檢視狀態檢查資訊。
您可以在 vscode-pull-request-github releases 閱讀擴充功能的完整發行說明。
值得注意的修正
- 37929:建立偵錯環境下拉式選單時,請勿啟動偵錯工具
- 60187:偵錯工具無法在 jest 測試中命中中斷點
- 61590:使設定和按鍵綁定編輯器在顯示編輯器動作方面保持一致
- 62370:改進編輯器中的診斷懸停顯示
- 62500:將「執行到游標處」新增至命令面板
- 62778:置中佈局無法還原大小
- 63618:偵錯 64 位元 Electron 2.0.13 失敗,並出現錯誤「無法連線到執行階段程序,逾時時間為 10000 毫秒」。但在 32 位元 Electron 上成功
感謝您
最後但同樣重要的是,衷心感謝!以下人士為使 VS Code 變得更好而提供了協助
對我們的議題追蹤的貢獻
對 vscode
的貢獻
- Adrien Becchis (@AdrieanKhisbe):語法注入 - 考慮更廣泛的 Scope PR #50534
- David Bailey (@davidbailey00):從 URL 處理常式桌面檔案中移除 StartupWMClass PR #63750
- Anuj (@desaianuj):使用 representation 而非 presentation PR #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):修正議題 #46816 PR #60404
- Napoleon Oikonomou (@iamnapo):如果 README 存在,則顯示 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 腳本為 shellscript PR #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 的嚴格 null 檢查 PR #63027
- Mathias Rasmussen (@mathiasvr):修正 #60002 還原上次提交:保留已暫存的檔案 PR #60104
- Matt Crupi (@mmcru):修正 #63295:在 Linux 儲存錯誤訊息中參考 Sudo PR #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):修正快照載入器中意外的 fallthrough 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):為 sovereign 雲新增登入支援 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 執行和偵錯 PHP PR #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。