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

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 月版本。此版本有許多重大更新,我們希望你會喜歡,其中一些重點內容包括:

如果您想線上閱讀這些發行說明,請訪問 code.visualstudio.com 上的更新頁面。

釋出說明按以下與 VS Code 重點領域相關的部分進行排列。以下是一些進一步的更新

  • 工作臺 - 選單滾動和改進的溢位處理,一鍵開啟 settings.json。
  • 語言 - JS/TS 重新命名現在處理解構,新增缺少的“new”快速修復。
  • 除錯 - 刪除除錯控制檯,直接從 VS Code 程序資源管理器除錯。
  • 任務 - 清除任務終端,任務變數的使用者輸入,重新執行上次任務命令。
  • 擴充套件創作 - “轉到宣告”支援,新的“簽名幫助”上下文。

Insiders:想盡快看到新功能嗎?您可以下載每夜更新的 Insiders 構建版本,並第一時間嘗試最新的更新。有關最新的 Visual Studio Code 新聞、更新和內容,請在 Twitter 上關注我們 @code

工作臺

多行搜尋輸入

上個月,我們添加了多行搜尋支援。本月我們改進了搜尋 UX,使其更易於使用。現在,你無需編寫正則表示式即可使用多行文字進行搜尋。在搜尋框中鍵入 Shift+Enter 以插入換行符,搜尋框將增大以顯示完整的多行查詢。你還可以將多行選擇從編輯器複製並貼上到搜尋框中。

multiline search input

Linux 上預設使用自定義標題欄和選單欄

通過幾次釋出,我們一直在透過自定義標題欄和選單欄改進 Windows 上選單的可訪問性和主題化。雖然它在 Linux 上是可選的,但在本次釋出中它將預設啟用。

Custom title and menu bar on Linux

要使用原生標題欄,你可以將 window.titleBarStyle 設定為 native

滾動選單

啟用自定義選單欄後,選單被限制在 VS Code 視窗內渲染。以前,選單可能會被視窗邊界截斷。現在透過在需要時使上下文選單可滾動來解決此問題。

Scrolling menus

選單欄溢位選單

當視窗寬度不足以容納選單欄和視窗標題時,選單欄還具有一個新的溢位選單 (...)。

Menu bar overflow

移動的設定編輯器操作

設定編輯器操作(開啟 settings.json顯示已修改的設定等)已從設定編輯器內的 ... 選單移動到編輯器標題欄。這使它們與其他編輯器型別保持一致,並且 開啟 settings.json 現在只需單擊帶有大括號 {} 按鈕即可完成。鍵盤快捷鍵編輯器也進行了相同的更改。

settings editor actions

引用檢視

引用檢視已經過完善,不再是預覽功能。現在有兩個命令

  • 查詢所有引用,它會開啟引用檢視。
  • 檢視引用,它會在“檢視”檢視中開啟引用。

引用檢視在啟動時是隱藏的,但一旦使用過就會保持可見。如果清除所有搜尋結果,它會顯示以前搜尋的歷史記錄。

References View

現在檢視頂部有一個結果摘要,以及一個用於清除和複製結果的上下文選單。修復了許多錯誤,整體穩定性得到了提高。

編輯器

程式碼片段註釋變數

有新的程式碼片段變數可以插入行或塊註釋,並遵循當前語言。對於塊註釋使用 BLOCK_COMMENT_STARTBLOCK_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 都提供了用於顯示符號定義的命令,例如 轉到定義檢視定義。這沒有考慮到某些語言在符號的宣告定義之間有更嚴格的區別。我們已經解決了這個問題,現在有了用於符號宣告的命令 轉到宣告檢視宣告

Go to Declaration

語言功能(如 轉到宣告)所需的資料由擴充套件計算,並且有一個新的 API,你可以在 擴充套件創作 部分了解它。

平滑游標動畫

有一個新的設定 editor.cursorSmoothCaretAnimation,它會在游標移動時啟用過渡動畫。

Git 整合

更改預設單擊操作

你現在可以更改在“原始碼管理”檢視中單擊檔案時的預設操作。預設情況下,VS Code 會開啟“比較”檢視,但透過將 git.openDiffOnClick 設定為 false,檔案將在常規編輯器中開啟。

提交時推送或同步

一個新的設定 git.postCommitCommand 允許你在提交後推送或同步你的儲存庫。可用值包括 none(預設值)、pushsync

語言

TypeScript 3.2

VS Code 現在包含 TypeScript 3.2.2。此版本帶來了一些令人興奮的新語言功能,包括 bindcallapply 的嚴格型別檢查,以及 BigInt 支援。TypeScript 更新還修復了一些重要錯誤,幷包括新的工具功能和改進

改進的 JavaScript 和 TypeScript 回撥顯示

JavaScript 和 TypeScript 匿名回撥以前在“大綱”檢視、麵包屑檢視和文件符號列表中都被標記為 <function>。這使得無法分辨你真正要找的是哪個函式

VS Code 1.29 with  entries in the Outline view

使用 TypeScript 3.2+,VS Code 現在會為回撥函式顯示更多上下文,以便你可以區分它們

VS Code 1.30 with much more helpful labels

重新命名正確處理 JS/TS 解構

重新命名現在處理 JavaScript 和 TypeScript 解構,如果需要,將引入別名

Rename with destructuring

新增缺少的 new JS/TS 快速修復

例項化類時忘記 new?TypeScript 3.2 帶來了一個新的快速修復來提供幫助

The add missing 'new' quick fix

此快速修復適用於 TypeScript 和 型別檢查的 JavaScript

JS/TS 路徑建議的檔案圖示

VS Code 1.29 中的工作 基礎上,IntelliSense 小部件現在顯示 JavaScript 和 TypeScript 路徑建議的檔案圖示

Icons in path IntelliSense

JSDoc 註釋中的 Markdown 元素高亮顯示

JSDoc 塊內的圍欄程式碼塊和其他 Markdown 元素現在具有語法高亮顯示

JSDoc Syntax highlighting

這種內聯高亮顯示更好地匹配 VS Code 對懸停和 IntelliSense 文件的 JSDoc Markdown 渲染。

除錯

簡化的初始除錯配置

在這個里程碑中,我們著手簡化了為我們最流行的除錯擴充套件生成的 launch.json 檔案。我們的目標是讓使用者更容易啟動和配置除錯。這意味著隱藏不必要的啟動配置屬性,並使用 Quick Pick UI 來更好地與使用者互動,同時生成初始 launch.json。有關此工作的更多詳細資訊,請參閱 issue #62851

可以刪除除錯控制檯

從上一個里程碑開始,當除錯多個除錯會話時,我們會顯示多個除錯控制檯,每個會話一個。現在,當相應會話不再活動時,可以透過清除該除錯控制檯的內容來刪除這些控制檯。我們沒有新增用於管理除錯控制檯生命週期的顯式命令,因為我們認為當前方法將更直觀且更易於使用。

改進的除錯配置使用者輸入變數

我們改進並推廣了提示使用者輸入的 launch.json 變數的概念。你可以在 任務 部分找到詳細資訊。

從程序資源管理器除錯

現在可以使用 除錯 上下文選單操作從 VS Code 程序資源管理器(開發人員:開啟程序資源管理器)啟動除錯 Node.js 程序。

下面你可以看到附加到從整合終端啟動的 Node.js 程序。

debugging a Node.js process started from the terminal

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 都支援在 tasks.jsonlaunch.json 中透過 ${variableName} 語法進行 變數替換

對於 launch.json,甚至可以使用提示使用者輸入的變數(例如 ${command:pickNodeProcess},它會開啟一個基於 Quick Pick 的程序選擇器)。此功能不適用於 tasks.json,並且基於命令的變數也有其他限制(請參閱 issues #9297#9544#30588)。

在這個里程碑中,使用者輸入變數得到了概括和改進,現在它們可用於 launch.json tasks.json。這項工作還將命令語法引入了 tasks.json

對於使用者輸入變數,我們引入了一個新的變數類別 input,其語法為:${input:variableName}。這種簡單的語法不足以為使用者提供有意義的 UI,因此我們在 launch.jsontasks.json 中引入了一個新的 inputs 部分,其中指定了額外的配置屬性。

使用 Angular CLI 的示例

Tasks input

這是支援的屬性列表

  • 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 在已安裝的擴充套件上提供了一個 安裝另一個版本 操作,該操作會顯示可用版本的下拉列表。

Downgrade Extension

無響應的擴充套件主機

VS Code 在一個單獨的 Node.js 程序中執行擴充套件 - 擴充套件主機。這會將擴充套件程式碼與 VS Code 本身隔離開來,但不會將不同的擴充套件相互隔離。由於 JavaScript 的單執行緒性質,一個擴充套件可能會(有意或無意地)獨佔擴充套件主機執行緒,阻止所有其他擴充套件,並使操作顯得無響應。

VS Code 現在會監視擴充套件主機,當它變得無響應時,VS Code 會開始分析擴充套件主機。當某個擴充套件被確定為導致無響應的原因時,會顯示一個最小化的通知,鼓勵使用者提交問題

Slow Extension Identified

作為使用者,請留意狀態列中的鈴鐺圖示,因為通知很小。作為擴充套件作者,如果你收到無響應問題,請檢視此 指南,其中解釋了發生的情況以及如何開啟附加到問題的 CPU 分析檔案。

預覽功能

預覽功能尚未準備好釋出,但已足夠實用。我們歡迎您在這些功能開發期間提供早期反饋。

HTML 自定義標籤/屬性支援

新的 html.experimental.custom.tagshtml.experimental.custom.attributes 設定允許你指定 VS Code 在啟動期間載入的標籤和屬性列表。當你編輯 HTML 檔案時,VS Code 將為這些標籤和屬性提供自動完成和懸停。這對於 Web Components 非常有效,例如

HTML custom tags and attributes

你可以開啟 octref/web-components-examples 儲存庫來測試此功能。此功能處於預覽階段,設定名稱和 JSON 格式都可能會更改

如果你有反饋或功能請求,請在 issue #62976 中跟進。

擴充套件的網路代理支援

有一個實驗性設定 Http: Proxy Support 用於為所有擴充套件啟用網路代理支援。雖然我們仍在研究一些細節,但我們邀請你試一試,並 告訴我們 它是否適合你。(請注意,啟用網路代理支援目前 會破壞 GitHub Pull-Request 擴充套件的登入。)

HTTP Proxy Support

將其設定為 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 的實際應用

The above signature help provider in action

配置貢獻的 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 pluginlit-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;

Tree Item Description

除錯 API

更豐富的 DebugSession

DebugSession API 現在公開了工作區資料夾和已解析的除錯配置。已解析意味著所有變數都已替換,並且特定於平臺的屬性部分已針對匹配的平臺“展平”,併為不匹配的平臺刪除。

斷點的唯一 ID

Breakpoint 類現在公開了一個在其整個生命週期內不會更改的唯一 ID (id)。

用於控制除錯介面卡建立的最終 API

在這個里程碑中,我們最終確定了用於控制除錯介面卡建立的擴充套件 API。該 API 使用一個新的 DebugAdapterDescriptorFactory,必須使用 vscode.debug.registerDebugAdapterDescriptorFactory 為特定的除錯型別註冊。工廠有一個方法 createDebugAdapterDescriptor,當需要除錯介面卡時,VS Code 會呼叫該方法。由於除錯會話作為引數傳入(並且會話現在公開了工作區資料夾和已解析的配置),因此實現可以在被要求建立除錯介面卡時訪問完整的上下文。createDebugAdapterDescriptor 必須返回一個描述如何建立和/或連線到除錯介面卡的物件

  • DebugAdapterExecutable 描述符使 VS Code 為每個會話將除錯介面卡作為外部程序啟動,並透過 stdin/stdout 與其通訊。選項屬性包可以指定工作目錄和環境變數。
  • DebugAdapterServer 使 VS Code 連線到處理多個會話並透過套接字通訊的伺服器程序。

請注意:隨著此 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 為除錯型別註冊。工廠有一個方法 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 已最終確定,現在可供所有擴充套件使用。它允許擴充套件將字串複製和貼上到作業系統剪貼簿。

完成項

插入跨多行的完成項時,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;

Tree View Message

智慧選擇和擴充套件

我們添加了一個提議的 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 月向內部版本使用者推送更新,以收集更多反饋。如果你有興趣提供幫助,請務必安裝 VS Code Insiders

社群問題跟蹤

社群在問題跟蹤方面為我們提供了很長時間的幫助。隨著我們看到越來越多的問題被提交(目前平均每天 70 個),我們開始邀請最活躍的社群成員為他們正在處理的問題 新增特定的標籤。由於 GitHub 沒有細粒度的許可權,我們正在使用我們的問題機器人來接收某些評論併為它們新增標籤。請參閱下面的 致謝 部分。

嚴格空檢查

我們對 VS Code 主程式碼庫進行嚴格空檢查 的工作仍在繼續。我們現在正在對大約 800 個檔案進行嚴格空檢查,並將繼續這項工作,直到整個程式碼庫都被覆蓋。

你可以在 issue #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 位失敗,錯誤“Cannot connect to runtime process, timeout after 10000ms”。但在 Electron 32 位上成功

感謝

最後但同樣重要的是,衷心感謝!以下幫助使 VS Code 變得更好的各位:

對我們問題跟蹤的貢獻

vscode 的貢獻

vscode-vsce 的貢獻

vscode-eslint 的貢獻

language-server-protocol 的貢獻

vscode-languageserver-node 的貢獻

vscode-html-languageservice 的貢獻

vscode-generator-code 的貢獻

debug-adapter-protocol 的貢獻

vscode-chrome-debug-core 的貢獻

  • @digeff: Don't send src changed events for storage sources PR #378
  • Shennie Yao (@Shenniey)
    • making sure bp.actual location is not null/undefined before trying to access its line number PR #381
    • cannonicalizing url so that it can find the matching script when resolving breakpoint PR #379

vscode-chrome-debug 的貢獻

vscode-azure-account 的貢獻

vscode-recipes 的貢獻

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