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。
Insiders: 想要盡快試用新功能嗎?您可以下載每晚組建的 Insiders 組建,並在最新更新可用時立即試用。
協助工具
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 值時,浮動式預覽和其他 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 或 遠端通道 的遠端機器,或 Windows Subsystem for Linux (WSL) 作為功能完整的開發環境。
您可以在 遠端開發發行說明中瞭解新的擴充功能功能和錯誤修正。
並查看 使用 VS Code 隨處開發 VS Code Day 會議。
擴充功能貢獻
Python
不再預設安裝 Jupyter 擴充功能
預設情況下,Jupyter 擴充功能不再與 Python 擴充功能一起自動安裝。此變更是根據 意見反應,來自 開發容器 使用者,他們希望容器建立過程更快,且預設未安裝 Jupyter 擴充功能。
如果您的開發容器定義僅列出 Python 擴充功能,並且希望繼續在容器中使用 Jupyter 筆記本功能,您可以將 Jupyter 擴充功能識別碼新增至您的 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 專案建立虛擬環境。它沒有配備像虛擬環境這樣的傳統啟動指令碼,但當您的 Python 發行版本中沒有 venv
模組時,它提供了建立隔離環境的良好替代方案。
建立環境命令也會將 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 擴充功能現在包含兩個新命令,讓使用者可以直接重新啟動核心並執行儲存格。命令為重新啟動核心並執行所有儲存格和重新啟動核心並執行到選取的儲存格,並且可以分別透過命令識別碼 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 and Issues
在 GitHub Pull Requests and 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 的貢獻者。
Issue 追蹤
對我們的 Issue 追蹤的貢獻
- @gjsjohnmurray (John Murray)
- @IllusionMH (Andrii Dieiev)
- @starball5 (starball)
- @tamuratak (Takashi Tamura)
- @Kathund (Kath)
- @ArturoDent (ArturoDent)
Pull Request
對 vscode
的貢獻
- @a-stewart (Anthony Stewart): 支援複製非 png 檔案並等待焦點以避免競爭條件 PR #180322
- @andrewbranch (Andrew Branch): [typescript-language-features] 支援透過偏好設定將「前往定義」替換為「前往原始碼定義」 PR #178840
- @c-claeys (Cristopher Claeys): 新增對多範圍格式化的支援 PR #163190
- @donaldnevermore (Donald33 Wang): 支援自訂 switch-case 縮排 PR #179670
- @FlorentRevest (Florent Revest): debug session: 使用佇列以確保除錯工具狀態以正確的順序處理 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: 從 fork 更新 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): Issue 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 (易良)
- fix: close #176763, 修改條件以載入 vscode-web-playground PR #176771
- chore: 重新命名錯誤的服務名稱 PR #177954
- fix: typos PR #179581
- @YinDongFang (dongfang): 修正 'Window' 鍵在 Firefox 中被視為 '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