2023 年 4 月 (版本 1.78)
更新 1.78.1:此更新解決了此安全性問題。
更新 1.78.2:此更新解決了這些問題。
下載:Windows: x64 Arm64 | Mac: 通用 Intel silicon | Linux: deb rpm tarball Arm snap
歡迎使用 Visual Studio Code 2023 年 4 月發行版本。此版本包含許多更新,希望您會喜歡,其中一些主要重點包括
- 協助工具改進 - 更好的螢幕閱讀器支援、新的音訊提示。
- 新的色彩主題 - 「現代」淺色和深色色彩主題預設值。
- 設定檔範本 - 適用於 Python、Java、資料科學等的內建範本。
- 拖放選取器 - 選擇您希望項目連結放置到編輯器的方式。
- 獨立色彩選取器 - 色彩選取器 UI,用於插入或修改色彩格式。
- 原始碼控制輸入的快速修正 - 直接在輸入方塊中修正拼字和其他錯誤。
- Markdown 拖放影片 - 在 Markdown 檔案中輕鬆新增影片標籤。
- 筆記本將圖片插入為附件 - 在圖片連結、路徑或附件之間選擇。
- Git LFS 和適用於網頁的 VS Code - 將 vscode.dev 用於具有 Git Large File Storage 的存放庫。
- VS Code Day 2023 - 在 YouTube 播放清單中趕上會議進度。
如果您想在線上閱讀這些版本資訊,請前往 code.visualstudio.com 上的更新。
組建測試人員: 想要盡快試用新功能嗎?您可以下載每夜組建的 組建測試人員 版本,並在最新更新可用時立即試用。
協助工具
Aria 詳細程度設定
螢幕閱讀器使用者可以從功能的 aria-label
排除提示,以透過 "accessibility.verbosity.diff-editor"
和 "accessibility.verbosity.terminal"
設定來減少冗餘。
已改進並對齊快速選取體驗
先前,協助工具模式的使用者在使用命令選取區和其他快速選取時,體驗到不同的行為。在協助工具模式中,為了完全可存取,未選取快速選取的第一個項目。在此迭代中,我們導入了新的行為,讓您能夠兩全其美:可存取且快速的快速選取工作流程,讓您可以立即按下 Enter 鍵。
注意:此方法的一個權衡是,如果選取了快速選取中的項目,由於 ARIA 限制,您將無法聽到快速選取輸入方塊的 ARIA 變更。若要聽到這些變更,您可以按 Shift + Tab 鍵,直到未選取清單中的任何項目為止。
終端機
終端機可存取緩衝區改進
- 使用 ⌥↓ (Windows、Linux Alt+Down) 和 ⌥↑ (Windows、Linux Alt+Up) 在命令之間跳轉。
- 使用設定選取錨點、從錨點選取到游標,以及透過 ⇧PageUp (Windows、Linux Shift+PageUp) 和 ⇧PageDown (Windows、Linux Shift+PageDown) 進行頁面導覽。
- 在使用前往可存取檢視中的符號 (⇧⌘O (Windows、Linux Ctrl+Shift+O)) 之前,先預覽位置,然後再接受命令以移至新位置。
- 在發生動態更新時與輸出互動。
終端機協助工具說明功能表
現在可以使用方向鍵導覽終端機的協助工具說明功能表。
差異編輯器音訊提示改進
VS Code 現在會快取音訊提示,因此它們只需載入一次,從而提高回應速度,並改進用於差異編輯器的音調。
前往行/列公告
當叫用前往行/列... (⌃G (Windows、Linux Ctrl+G)) 時,螢幕閱讀器現在會讀取相關聯的行內容。
工作台
新的預設色彩主題
新的「深色現代」和「淺色現代」主題取代「深色+」和「淺色+」作為新的預設深色和淺色色彩主題。
設定檔範本
設定檔可讓您根據目前的專案或工作,快速切換編輯器擴充功能、設定和 UI 版面配置。為了協助您開始使用設定檔,我們正在發行設定檔範本,這些範本是針對不同程式設計語言和案例策劃的設定檔。您可以按原樣使用設定檔範本,或將其用作起點,以進一步自訂以符合您自己的工作流程。
您可以透過設定檔 > 建立設定檔... 下拉式選單選取設定檔範本
選取設定檔範本後,您可以檢閱設定、擴充功能和其他資料,並移除個別項目 (如果您不想將它們包含在新設定檔中)。
在您根據範本建立新的設定檔之後,對設定、擴充功能或 UI 所做的變更會持續保存到您的設定檔中。
字形邊界裝飾轉譯改進
本月,我們改進了編輯器邊界中顯示的裝飾轉譯。偵錯相關的裝飾 (例如中斷點和堆疊框架指標) 將始終轉譯在編輯器行號旁邊。其他裝飾會轉譯在任何偵錯相關裝飾的左側。即使同一行上有其他裝飾 (例如測試裝飾或書籤),您也可以檢視中斷點。請注意,按一下尚未限定於個別裝飾。
從影像預覽複製影像
您現在可以使用 ⌘C (Windows、Linux Ctrl+C) 或在預覽中按一下滑鼠右鍵並選取複製,從內建影像預覽複製影像。複製的影像資料可以貼回 VS Code 或其他應用程式。
編輯器
拖放選取器
VS Code 可讓您在拖放之前按住 Shift 鍵,將檔案和內容拖放到文字編輯器中。在此更新中,我們新增了 UI,可讓您變更此內容插入檔案的方式。例如,在您將影像拖放到 Markdown 檔案中之後,此控制項可讓您在插入 Markdown 影像、影像的工作區相對路徑和影像的完整路徑之間切換
每當您拖放內容且有超過一種可能的插入方式時,拖放選取器控制項就會出現。您可以按一下控制項或使用 ⌘. (Windows、Linux Ctrl+.) 來開啟控制項。當您開始輸入或將游標移到插入的文字外部時,拖放選取器就會消失。您也可以使用 "editor.dropIntoEditor.showDropSelector": "never"
完全停用拖放選取器控制項。
VS Code 包含一些內建方式來拖放常見的內容格式。擴充功能也可以使用 DocumentDropEditProvider
API 新增自己的拖放選項。
獨立色彩選取器
現在可以啟動獨立色彩選取器,以便插入和取代色彩。若要開啟色彩選取器,請從命令選取區選取顯示或焦點獨立色彩選取器。
當擴充功能未提供任何色彩或色彩格式時,色彩選取器會回復為 CSS 格式的色彩。現在也可以在所有檔案類型中視覺化 CSS 格式色彩的內嵌色彩裝飾器。若要顯示這些裝飾器,請啟用編輯器:預設色彩裝飾器 (editor.defaultColorDecorators
) 設定。
時區偏移的新程式碼片段變數
現在提供新的程式碼片段變數 CURRENT_TIMEZONE_OFFSET
。此變數會以 +HH:MM
或 -HH:MM
格式 (例如 -07:00
) 傳回目前的時區偏移。這補充了其他與時間相關的程式碼片段變數,例如 CURRENT_YEAR
、CURRENT_MONTH
、CURRENT_DAY_NAME
等。
差異演算法改進
我們繼續改進 VS Code 中的新差異演算法,並已淘汰舊的演算法。雖然舊的演算法仍然是差異編輯器的預設演算法,但我們將逐漸將預設值變更為新的演算法,並測量其效能。
您可以將 diffEditor.diffAlgorithm
設定為 advanced
(新的差異演算法) 或 legacy
(預設值) 來覆寫預設值。
新的演算法在許多情況下產生更好的差異,但對於某些文件而言可能會比較慢。
以下是一些範例 (舊版與進階版)
-
透過考量縮排來改進行插入差異
-
透過考量空格和分隔符號字元來改進文字插入差異
-
透過不僅最小化差異的長度,也最小化區塊的數量,來產生更自然的差異
-
如果單字的一部分發生顯著變更,則透過將字元層級差異延伸到整個單字,來減少雜訊
差異原始碼,甚至僅評估差異的品質都是困難的問題,而且仍有改進的空間。如果您遇到您認為演算法可以做得更好的差異,請試用我們的差異遊樂場,並在我們的問題追蹤器中分享您的意見反應和想法!
內嵌完成改進
此迭代我們重寫了內嵌完成功能,並修正了許多錯誤。
最值得注意的是,接受文字現在跨行運作,並且有一個新的命令接受行。為了支援此功能,接受下一個文字/行不會再次詢問擴充功能,因為內嵌完成提供者擴充功能在要求下一個行的內嵌完成時,通常會報告完全不同的建議。
擴充功能
改進的擴充功能建議通知
擴充功能建議通知現在會顯示建議擴充功能的發行者。這可協助您在安裝擴充功能之前做出更明智的決定。以下影像顯示當有單一擴充功能和多個擴充功能的建議時的新通知。
通知已安裝的已淘汰擴充功能
如果您已安裝已淘汰的擴充功能,您現在會收到通知,告知您此事並建議替代方案。每個已淘汰的擴充功能只會顯示一次。
原始碼控制
原始碼控制輸入中的快速修正
原始碼控制訊息方塊中現在支援程式碼動作和快速修正
例如,程式碼拼字檢查器擴充功能會將拼字修正新增至原始碼控制輸入。擴充功能可以貢獻其他修正和程式碼動作。
GitHub 存放庫規則集
VS Code 已經可讓您使用 git.branchProtection
設定來定義分支保護。在此里程碑中,我們新增了一項新的實驗性功能,該功能使用最近發布的GitHub 存放庫規則集來判斷分支是否受到保護。如果您使用 GitHub 存放庫規則集,您可以使用 github.branchProtection
設定來啟用此功能。
筆記本
將影像檔案拖放到筆記本中以建立附件
您現在可以將影像檔案拖放到筆記本 Markdown 儲存格中以建立附件。當您拖放影像時,請使用新的拖放選取器控制項來選取將影像插入為附件
這會將影像新增至筆記本作為附件,而不是僅新增影像的連結
切換筆記本輸出捲動
您現在可以切換個別儲存格,以在可捲動區域中顯示輸出,方法是透過命令筆記本:切換捲動儲存格輸出 (⌘K Y (Windows、Linux Ctrl+K Y)) 或截斷訊息中的連結。
尋找控制項改進
筆記本尋找控制項現在預設會在視覺呈現的內容上搜尋關鍵字。使用者可以透過設定 notebook.find.scope
來變更搜尋範圍 (Markdown 原始碼、Markdown 預覽、程式碼原始碼和程式碼輸出)。此外,在取代相符項目時,Markdown 儲存格會轉換為可編輯的儲存格,以便您可以進行取代。完成後,儲存格會轉換回 Markdown,並還原預覽。
語言
將影片拖放到 Markdown 檔案中
想要將影片插入 Markdown 中嗎?只需將其拖放到編輯器中,然後按住 Shift 鍵以將其拖放到檔案中
這會插入指向影片檔案的 <video>
標籤。您可以從 VS Code 的檔案總管或從本機作業系統拖曳影片。
HTML 中 JavaScript 腳本區塊的嚴格 Null 值
您現在可以使用 js/ts.implicitProjectConfig.strictNullChecks
設定,為 HTML 腳本區塊中的 JavaScript 啟用嚴格 Null 值
啟用嚴格 Null 值後,當類型可以是 Null 值時,hover 和其他 IntelliSense 功能會顯示。例如,請注意 el
現在具有 HTMLElement | null
類型。這是因為 document.getElementById
在找不到具有該 ID 的元素時會傳回 Null 值。
測試
持續執行現在可以針對個別測試開啟。這需要支援持續執行並採用上一次迭代中完成的 supportsContinuousRun
API 的測試擴充功能。
適用於網頁的 VS Code
將檔案認可至 Git Large File Storage
Git Large File Storage (LFS) 可讓您有效率地在 Git 存放庫中儲存大型檔案。github.dev 和 vscode.dev 現在支援將檔案認可至 GitHub 上託管的存放庫中的 Git LFS,讓您可以從瀏覽器輕鬆更新,而無需在本機為 Git 安裝 LFS 擴充功能。
當您的存放庫根目錄中已經有一個 .gitattributes
檔案,指定哪些檔案類型應與 Git LFS 一起儲存時,github.dev 和 vscode.dev 中的 LFS 認可支援可立即運作。若要首次設定存放庫以用於 Git LFS,請參閱 Git LFS 文件。
遠端開發
遠端開發擴充功能可讓您使用 開發容器、透過 SSH 或 遠端通道的遠端機器,或 適用於 Linux 的 Windows 子系統 (WSL) 作為全功能開發環境。
您可以在遠端開發版本資訊中瞭解新的擴充功能功能和錯誤修正。
並查看 使用 VS Code 隨處開發 VS Code Day 會議。
擴充功能貢獻
Python
Jupyter 擴充功能不再預設安裝
Jupyter 擴充功能不再與 Python 擴充功能一起預設自動安裝。此變更是為了回應 來自 開發容器 使用者的意見反應,他們希望容器建立過程更快,且預設不安裝 Jupyter 擴充功能。
如果您有僅列出 Python 擴充功能的開發容器定義,並希望繼續在容器中使用 Jupyter 筆記本功能,您可以將 Jupyter 擴充功能 ID 新增至您的 devcontainer.json
檔案
"customizations": {
"vscode": {
"extensions": ["ms-python.vscode-pylance", "ms-python.python", "ms-toolsai.jupyter"]
}
}
或者,您可以建立包含 Python 和 Jupyter 擴充功能,以及任何其他您喜愛的擴充功能的設定檔。
使用 microvenv 建立環境命令
當使用未安裝 venv
套件的 Python 發行版本叫用 Python:建立環境 命令時,Python 擴充功能現在會使用 microvenv 作為後備選項。這對於 Unix 型系統上預先安裝的 Python 環境來說可能是一個障礙。
Microvenv 是一個輕量型 Python 模組,提供建立 Python 專案虛擬環境的簡約方法。它未配備傳統的啟用腳本 (如虛擬環境),但當 venv
模組在您的 Python 發行版本中不可用時,它為建立隔離環境提供了一個很好的替代方案。
建立環境命令也會將 pip
安裝到透過 microvenv
建立的環境中。
格式器擴充功能建議
在先前的版本中,我們發布了 Black Formatter 和 autopep8 的新擴充功能,這些擴充功能透過 語言伺服器通訊協定 (LSP) 與 Python 擴充功能協同運作,以提供 Python 檔案的格式設定。在此版本中,如果您仍然使用 Python 擴充功能的內建格式設定功能,我們會顯示通知,提示您安裝這些新的擴充功能。
執行 Python 動作現在位於子功能表中
為了簡化在編輯器中按一下滑鼠右鍵時可用的 Python 命令,在終端機中執行 Python 檔案和在 Python 終端機中執行選取範圍/行命令現在是執行 Python 項目下的子功能表項目。
自動轉換 f-字串
有一個新的 "python.analysis.autoFormatStrings"
設定,可在使用 Pylance 時啟用 f-字串的自動轉換。啟用後,當您在引號內插入 {
時,Pylance 會自動在字串開頭插入 f
此設定的預設值目前已停用,但將在即將發行的版本中啟用,等待正面意見反應。如果您對此功能有任何意見或建議,請隨時在 Pylance GitHub 存放庫 上分享。
在包含路徑的字串上啟用程式碼導覽
還有另一個新的實驗性設定,稱為 "python.analysis.gotoDefinitionInStringLiteral"
,可從類似模組的字串常值啟用前往定義。如果您正在處理 Web 應用程式 (例如 Django 應用程式),並想要導覽至字串常值中定義的模組或路徑,這會很有幫助
與前面提到的 autoFormatStrings
設定一樣,此新設定目前預設為停用。但是,我們計劃根據意見反應在未來的版本中啟用此行為。最終,我們計劃完全移除此設定。
Jupyter
重新啟動命令
Jupyter 擴充功能現在包含兩個新命令,讓使用者可以直接重新啟動核心並執行儲存格。這些命令是重新啟動核心並執行所有儲存格和重新啟動核心並執行到選取的儲存格,並且可以透過命令 ID jupyter.restartkernelandrunallcells
和 jupyter.restartkernelandrunuptoselectedcell
分別存取。
重新連線到忙碌的遠端 Jupyter 核心
在先前的版本中,當連線到遠端 Jupyter 核心工作階段時,Jupyter 擴充功能會等待核心閒置後再連線。如果核心正忙於執行長時間運算的計算,這可能會花費很長時間。在此版本中,即使核心忙碌,Jupyter 擴充功能也會立即連線到核心。這可讓您在核心忙碌時中斷核心。
平台特定 Jupyter 擴充功能
Jupyter 擴充功能現在隨附平台特定擴充功能,每個 VSIX 都針對特定平台 (Windows 64 位元、Windows 32 位元、Linux x64、Alpine x64、macOS Intel、macOS Apple Silicon 等) 建置。個別平台的 Jupyter 擴充功能下載大小較小,從而縮短下載時間並減少磁碟空間使用量。
GitHub Pull Requests 和 Issues
在 GitHub Pull Requests 和 Issues 擴充功能方面取得了更多進展,可讓您處理、建立和管理提取要求和問題。重點包括
- 您可以將團隊檢閱者新增至提取要求。
- 所有您可以簽出預設分支的位置現在都遵循
git.pullBeforeCheckout
設定。 - 支援 GitHub 的檔案層級註解。
檢閱擴充功能的 0.64.0 版本變更記錄,以瞭解其他重點。
GitHub Copilot
注意:這些功能在 GitHub Copilot Chat 擴充功能中提供。
聊天編輯器
我們在 GitHub Copilot Chat 上的第一個迭代啟用了側邊欄中的聊天工作階段。現在,我們支援將相同的聊天檢視開啟為編輯器。這可讓您自訂聊天工作階段的位置,使其位於視窗版面配置中的任何位置。
您可以執行命令互動式工作階段:開啟編輯器來開啟聊天編輯器,然後就像對待任何其他編輯器一樣,在編輯器群組之間移動它。
其他程式碼區塊命令
程式碼區塊工具列中有兩個新命令:插入到新檔案和在終端機中執行。這些命令位於現有的命令複製和在游標處插入旁邊,並為您提供額外的選項,可快速對從 Copilot 傳回的程式碼建議採取動作。
程式碼動作和內嵌聊天
編輯器聊天工作階段現在已與快速修正整合。選取波浪線的燈泡,即可使用 Copilot 進行修正或說明。
除了程式碼動作之外,內嵌聊天現在也可以從編輯器內容功能表中使用。
內嵌聊天模式
現在有一個設定可以變更內嵌聊天的不同模式:inlineChat.editMode
。
選項包括
live
- 將 AI 建議的變更直接套用至編輯器 (預設值)。livePreview
- 套用變更,但在內嵌差異編輯器中轉譯它們。preview
- 在已中斷連線的內嵌差異編輯器中顯示變更。
命令選取區中類似的命令
憑藉 Copilot 的強大功能,命令選取區現在能夠顯示類似的命令結果。若要啟用此功能,您必須擁有有效的 Copilot 訂閱、處於聊天檢視的私人預覽中,並套用設定
"workbench.commandPalette.experimental.useSemanticSimilarity": true
以下是一些範例
-
「開啟自動儲存」被解譯為切換自動儲存
-
「新增函數」在底部包含來自擴充功能的其他結果
-
最後,如果您的結果沒有產生任何結果,您可以詢問 GitHub Copilot,這會將您的篩選方塊中的內容放入新的聊天中,以便 Copilot 處理。
我們將在此空間中迭代,敬請期待!
預覽功能
TypeScript 5.1 支援
此更新包含對即將推出的 TypeScript 5.1 版本的支援。閱讀 TypeScript 5.1 Beta 部落格文章 和 TypeScript 5.1 迭代計畫,以深入瞭解 TypeScript 團隊目前正在處理的內容。一些編輯器工具重點
- JSX 標籤的連結編輯支援。
@param
JSDoc 標籤的程式碼片段完成。
若要開始使用 TypeScript 5.1 每夜組建,請安裝 TypeScript Nightly 擴充功能。
使用 F2 重新命名相符的 JSX 標籤
當您在 JSX 標籤上觸發重新命名時,VS Code 現在只會重新命名相符的標籤,而不是嘗試更新標籤的所有參考
這需要 TypeScript 5.1+,並且符合重新命名在 HTML 中的運作方式。
您可以使用 javascript.preferences.renameMatchingJsxTags
和 typescript.preferences.renameMatchingJsxTags
停用此行為。
擴充功能撰寫
工作區編輯現在可以直接從 DataTransferFile 建立檔案
其中一個主要用途是拖放至編輯器 API,是將拖放的檔案/內容寫入工作區。然而,在先前的 VS Code 版本中,對於大型檔案來說,這可能會相當緩慢。這是因為檔案內容最終會在處理程序之間複製兩次:第一次是從渲染器到擴充功能主機以讀取檔案內容,然後再從擴充功能主機回到渲染器以寫入檔案。
class CreateFileDropProvider implements vscode.DocumentDropEditProvider {
async provideDocumentDropEdits(
_document: vscode.TextDocument,
_position: vscode.Position,
dataTransfer: vscode.DataTransfer,
_token: vscode.CancellationToken
): Promise<vscode.DocumentDropEdit | undefined> {
const pngFile = dataTransfer.get('image/png')?.asFile();
if (!pngFile) {
return;
}
// Read file
// This results in the entire file contents being copied over to the extension host.
const contents = await pngFile.data();
// Now create a workspace edit that writes the file into the workspace
// This results in the same file contents from above being copied back again.
const additionalEdit = new vscode.WorkspaceEdit();
const path = vscode.Uri.joinPath(
vscode.workspace.workspaceFolders![0].uri,
'image.png'
);
additionalEdit.createFile(path, { contents });
const edit = new vscode.DocumentDropEdit(path.fsPath);
edit.additionalEdit = additionalEdit;
return edit;
}
}
現在,您可以透過直接將 DataTransferFile
傳遞給 WorkspaceEdit.createFile
來避免這些額外的複製。
additionalEdit.createFile(path, { contents: pngFile });
這應該能顯著提升效能,尤其是在處理較大型檔案時。
在 resolveCodeAction 中解析程式碼動作命令
現在,CodeActionProvider
可以在 resolveCodeAction
中延遲解析 CodeAction
的命令。先前,只有程式碼動作的編輯操作可以延遲解析。
如果命令的計算成本很高,這允許 CodeActionProvider
將這項工作延遲到即將套用程式碼動作時才執行。
editor/lineNumber/context 選單
我們已完成 editor/lineNumber/context
選單的最終設計。這允許擴充功能作者將動作貢獻到錨定於編輯器行號和字形邊距的關聯式選單。貢獻到此選單的動作會在命令引數中接收行號,並可以在其 when 子句中參考 editorLineNumber
內容金鑰。
驗證 API 改善
驗證工作階段偏好設定現在能感知工作區
對於支援同時登入多個帳戶的驗證提供者(例如 Microsoft),當使用 createIfNone: true
呼叫 vscode.authentication.getSession
時,系統會提示使用者選取要使用的帳戶。
先前的行為
此偏好設定會被記住,直到使用 ClearSessionPreference
旗標呼叫 vscode.authentication.getSession
為止。
新的行為
此偏好設定會針對每個工作區記住,直到在該工作區中使用 ClearSessionPreference
旗標呼叫 vscode.authentication.getSession
為止。
引入此行為是為了允許擴充功能針對不同的工作區使用不同的帳戶,並允許記住這些偏好設定。
注意:偏好設定是擴充功能特定的。因此,如果一個擴充功能呼叫
vscode.authentication.getSession
,它不會影響另一個擴充功能呼叫vscode.authentication.getSession
的工作階段偏好設定。
桌面版中的 Microsoft Sovereign Cloud 支援
在此迭代中,我們在核心產品中引入了一個新的驗證提供者:Microsoft Sovereign Cloud
。此提供者用於驗證使用者到 Microsoft Sovereign Cloud(例如 Azure US Government、Azure China 等)。在底層,它的運作方式與 Microsoft
驗證提供者完全相同,只是 URL 不同。如果您想使用此驗證提供者,您可以引導使用者設定 microsoft-sovereign-cloud.endpoint
值,該值有一些預設值,但也支援自訂 Sovereign Cloud URL。
請記住,大多數使用者沒有 Sovereign Cloud 帳戶。我們的建議是,如果您想支援 Sovereign Cloud,您應該讓使用者可以透過 Sovereign Cloud 登入,但不要將其作為主要工作流程的一部分,以免混淆使用者。
建議的 API
每個里程碑都帶有新的建議 API,擴充功能作者可以試用它們。與往常一樣,我們希望收到您的意見反應。以下是試用建議 API 的步驟:
- 尋找您想要試用的建議,並將其名稱新增至
package.json#enabledApiProposals
。 - 使用最新的 vscode-dts 並執行
vscode-dts dev
。它會將對應的d.ts
檔案下載到您的工作區。 - 您現在可以針對建議進行程式設計。
您無法發布使用建議 API 的擴充功能。下一個版本中可能會出現重大變更,而我們絕不希望破壞現有的擴充功能。
格式化多個範圍
DocumentRangeFormattingEditProvider
API 有一個選用的建議函數,以支援一次格式化多個範圍。透過採用此 API,提供者可以改善格式化修改範圍的流程,因為只需要對語言服務發出單一請求。
文件拖放中繼資料
這個新的建議豐富了現有的拖放至編輯器 API,以支援新的拖放選取器。提供者可以使用它來提供更好的拖放至編輯器體驗。
此建議的第一部分為 DocumentDropEdit
新增了 label
屬性。這個人類可讀的標籤描述了編輯操作,並顯示在拖放選取器 UI 中。
第二部分為 registerDocumentDropEditProvider
新增了一個額外的 metadata
引數。這個中繼資料引數識別提供者,並告知 VS Code 它適用的內容類型。
vscode.languages.registerDocumentDropEditProvider(
'markdown',
new InsertBase64ImageProvider(),
{
// Unique id that identities this provider
id: 'insertBase64Image',
// Array of mime types, such as `image/png` or `text/plain`, that this provider supports.
// You can also use wildcards, such as `image/*` which matches any image content that is dropped.
dropMimeTypes: ['image/*']
}
);
dropMimeTypes
陣列可以幫助提高效能,因為您的提供者只會在相關的拖放內容時被呼叫。
工程
Electron 22 更新
在這個里程碑中,我們完成了使用自訂分配器來處理擴充功能主機的實驗,並準備將 Electron 22 捆綁到 VS Code Desktop 中。我們要感謝所有參與在 Insiders 組建上進行自我託管並提供早期意見反應的人員。此更新包含 Chromium 108.0.5359.215
和 Node.js 16.17.1
。
VS Code Day
您可以透過 VS Code Day 2023 YouTube 播放清單來了解 VS Code Day 的所有重點。您將在那裡找到關於諸如 GitHub Copilot、資料科學 和 TypeScript 等主題的會議,以及 Erich Gamma 和 Kai Maetzel 的 主題演講,他們在其中解釋了團隊如何建構和發布 VS Code。
感謝您
最後但同樣重要的是,衷心感謝 VS Code 的貢獻者。
問題追蹤
對我們問題追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @tamuratak (Takashi Tamura)
- @Kathund (Kath)
- @ArturoDent (ArturoDent)
提取請求
對 vscode
的貢獻
- @a-stewart (Anthony Stewart):支援複製非 png 檔案並等待焦點以避免競爭條件 PR #180322
- @andrewbranch (Andrew Branch):[typescript-language-features] 支援透過偏好設定將「前往定義」替換為「前往原始碼定義」 PR #178840
- @c-claeys (Cristopher Claeys):新增對 multiRange 格式化的支援 PR #163190
- @donaldnevermore (Donald33 Wang):支援自訂 switch-case 縮排 PR #179670
- @FlorentRevest (Florent Revest):偵錯工作階段:使用佇列以確保偵錯工具狀態以正確的順序處理 PR #180410
- @gjsjohnmurray (John Murray):設定註解的最大高度並新增垂直捲動 (#_174629) PR #180044
- @hermannloose (Hermann Loose):允許將個別註解標記為草稿 PR #173305
- @iliazeus (Ilia Pozdnyakov):在鍵盤快捷鍵中新增對 F20-F24 鍵的支援 PR #179591
- @jeanp413 (Jean Pierre):修正連線到遠端時未使用已設定的預設 Shell 的問題 PR #175844
- @jjaeggli (Jacob Jaeggli):協助工具說明對話方塊使用語意標記以用於輔助技術 PR #179726
- @KapitanOczywisty:從分支更新 PHP 文法 PR #180100
- @LakshyAAAgrawal (Lakshya A Agrawal):修正 vscode.d.ts 中的錯字 PR #177377
- @mahmoudsalah1993 (Mahmoud Salah):當只有單一 userDataProfileContentH… 時,正確傳回金鑰 PR #178517
- @Mai-Lapyst:修正執行任何工作時意外啟動所有 onTaskType 擴充功能的問題;修正 #175821 PR #178679
- @maxmmyron (Max):修正:差異編輯器箭頭點擊會啟用中斷點 PR #179130
- @mblout (Michael Blout):新增用於呼叫堆疊選取變更的偵錯 API (63943) PR #179132
- @MonadChains (MonadChains):問題 151220/新增目前時區偏移變數 PR #170518
- @simon04 (Simon Legner):terminalActions:「開啟上次使用的 URL」 PR #173217
- @SimonSiefke (Simon Siefke):修正:在 mainThreadExtensionService 中列印擴充功能 ID 的問題 PR #179553
- @spahnke (Sebastian Pahnke):[Monaco] 新增
monaco.editor.registerEditorOpener
方法,以便能夠攔截編輯器開啟操作 PR #177064 - @sumneko (最萌小汐):更新 Lua 文法 PR #177798
- @tisilent (xie jialong 努力鴨):修正 #159471 PR #177961
- @tomheaton (Tom Heaton):修正在未開啟任何資料夾時
collapseAll
命令的問題 PR #180330 - @weartist (Han)
- 支援同時開啟整合式終端機和外部終端機… PR #168879
- 新增對 breakpointWidget 的支援,以自動適應寬度… PR #179551
- 為 #173481 新增移除儲存格前的確認 PR #179776
- @Wundero (Sam Riddle):使用已定義的變數而不是內部屬性 PR #178701
- @yiliang114 (易良)
- 修正:關閉 #176763,修改載入 vscode-web-playground 的條件 PR #176771
- chore:重新命名錯誤的服務名稱 PR #177954
- 修正:錯字 PR #179581
- @YinDongFang (dongfang):修正在 Firefox 中將「Window」鍵視為「unknown」的問題 (#_175739) PR #175740
對 vscode-js-debug
的貢獻
對 vscode-json-languageservice
的貢獻
對 vscode-pull-request-github
的貢獻
- @Balastrong (Leonardo Montini)
- @eastwood (Clinton Ryan):優雅地處理 SSH 組態檔案損壞或格式錯誤的錯誤 PR #4644
- @kabel (Kevin Abel)
- @ypresto (Yuya Tanaka):修正在工作區中巢狀存放庫的錯誤存放庫 URL(修正複製永久連結) PR #4711
對 monaco-editor
的貢獻
- @dneto0 (David Neto):新增 WebGPU Shading Language 語法剖析器,附帶測試 PR #3884
- @kisstkondoros (Tamas Kiss):修復 OutlineAdapter 的 convert 方法中的參考錯誤 PR #3924
- @tamayika:將 moduleResolution 變更為 node16 並採用 TS 5.0 PR #3860
對 devcontainers/cli
的貢獻
- @aaronlehmann (Aaron Lehmann):新增對 Docker 認證協助程式的支援 PR #460