翻譯|產品更新|編輯:陳津勇|2019-09-10 14:20:46.590|閱讀 830 次
概述:Visual Studio Code每月更新一次,現已更新至v1.38。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
VS Code(Visual Studio Code)已成為多語言開發人員的首選文本編輯器。 大量 Javascript、TypeScript、Go、Python 和其它語言的開發人員都在使用 VS Code 進行編碼,這部分歸功于 VS Code 擴展形成的龐大生態系統。這些擴展增強和豐富了 VS Code 的體驗,使其成為類 IDE 的超級智能文本編輯器,同時它又極其快速和輕量級。現已更新至v1.38。以下是最新版更新/修復的內容。(有關本次更新的更多內容,請點擊此處查看>>>)
語言
HTML和CSS的MDN參考
VS Code現在顯示一個指向HTML和CSS實體完成和懸停時相關MDN參考的URL:
我們感謝MDN文檔團隊努力策劃mdn-data/mdn-browser-compat-data并使VS Code能夠輕松訪問MDN資源。
改善較少的支持
VS Code現在支持許多新的Less.js功能,包括根函數,地圖查找和匿名混合。
非標準和過時CSS屬性的棄用標記
CSS語言服務器采用了Deprecation標簽實驗API,并為自動補全中標記為非標準或過時的CSS屬性顯示了一個Deprecation標記。
TypeScript 3.6
VS Code現在附帶TypeScript 3.6.2。這個主要更新帶來了一些TypeScript語言改進——包括更嚴格的生成器和對導入的支持。以及JavaScript和TypeScript的一些新工具特性。與往常一樣,這個版本還包含了許多重要的bug修復。
添加缺失等待快速修復
你的代碼是否領先一步?新增的“等待”快速修復功能可以幫助您等待在異步代碼中可能忽略的值:
此快速修復程序適用于啟用了類型檢查的 TypeScript和JavaScript源代碼。
以分號識別的JavaScript和TypeScript編輯
當您在JavaScript或Typescript源代碼中添加導入或應用重構時,VS Code現在會嘗試推斷是否在文件中包含現有代碼的分號:
您可以在添加此功能的pull請求中找到此分號檢測的工作原理的詳細信息。一些快速修復和重構仍然不能用分號識別,但我們將在未來的更新中努力解決這個問題。
JSDoc注釋不再為IntelliSense合并
以前,我們的JavaScript和TypeScript IntelliSense會將多個JSDoc注釋組合在一個定義之前。在下面的示例中,請注意該User類型的文檔如何與getUser函數的文檔合并:
使用TypeScript 3.6,我們的IntelliSense現在只使用前面的JSDoc注釋來獲取文檔和輸入信息:
源控制
Git:提交輸入上的分支名稱
現在,當前的Git分支名稱出現在提交輸入框中,以避免在錯誤的分支上提交:
Git:按字母順序對分支列表進行排序
使用Git:Checkout to ...命令檢出分支時,有一個新設置git.branchSortOrder可以更改分支的順序。
Git:支持pull cancel
當啟用git時,通過設置supportcancel,您將有機會取消正在進行的Git拉請求,這在從較慢的遠程拉取時非常有用。
調試
價值變化時突破(數據斷點)
從“變量”視圖中,現在可以創建在基礎變量的值更改時將被命中的數據斷點。與其他斷點一樣,可以在“斷點”視圖中禁用/啟用和刪除數據斷點。
請注意,數據斷點需要底層運行時或調試器的特定支持,我們希望將來只有少數調試擴展(如C ++和C#,而不是Node.js)可以選擇加入此功能。對于此版本,只有我們的示例調試器模擬調試 “ 模擬 ”數據斷點。
調用堆棧視圖改進
我們對Call Stack視圖做了一些改進,最值得注意的是:
當調試會話只有一個線程時,我們將始終隱藏線程并直接顯示調用堆棧。
單擊“調用堆棧”視圖中的線程和調試會話不再展開/折疊它們。只有明確點擊twistie才會進行擴展。這種變化的原因在于,在不進行不必要的擴展的情況下更改焦點會話非常繁瑣。在Outline視圖中可以看到相同的行為。
以前,當有一個新的調試會話時,Debug視圖將獲得焦點。現在,只有會話實際中斷時,Debug視圖才會獲得焦點。
當實際存在該會話的線程時,調試會話元素僅顯示兩次。
啟動調試目標的新shell設置
當在集成終端中啟動調試目標時,VS Code現在考慮了新的“自動化shell”設置(Terminal.Integrated.automationshell…)。如果在啟動調試目標時使用集成終端的特定默認shell(例如,tmux),則該設置非常有用。
"terminal.integrated.shell.osx": "/Users/user/bin/tmux_script" "terminal.integrated.automationShell.osx": "bash", |
對擴展的貢獻
幫助webview擴展添加內容安全策略
我們已經確定了一些創建沒有內容安全策略的webview的擴展。雖然這并不是一個迫在眉睫的問題,但所有webview都應該將內容安全策略作為一種良好的安全性最佳實踐。在這次迭代中,我們已經開始針對這些擴展展開討論。
GitHub拉請求
這個里程碑我們繼續致力于改進GitHub Pull Requests擴展,包括錯誤修復和合并拉取請求后刪除分支和遠程等功能。
遠程開發(預覽)
遠程開發擴展的工作仍在繼續,它允許您將容器,遠程計算機或Windows子系統Linux(WSL)用作功能齊全的開發環境。
為了幫助您開始使用遠程開發擴展,有三個分步教程:
Containers——在Docker容器中運行Visual Studio Code。
通過SSH遠程——使用Visual Studio Code通過SSH連接到遠程和虛擬機。
在WSL中工作——在Windows子系統Linux中運行Visual Studio Code。
擴展創作
VS Code圖標存儲庫
我們已經發布了所有VS代碼圖標的存儲庫,供擴展作者使用。每個圖標都有深色/淺色版本,我們還鏈接到Figma設計文件。
Webview.asWebviewUri和Webview.cspSource
網絡視圖有兩個新屬性:
Webview.asWebviewUri——將本地文件系統的URI轉換為可在webview中使用的URI。
對于桌面VS Code,這會將file:URI轉換為vscode-resource:URI。
Webview.cspSource——webview資源的內容安全策略源。
對于桌面VS Code,這將是字符串vscode-resource:。
const panel = vscode.window.createWebviewPanel(CatCodingPanel.viewType, 'Cat Coding', vscode.ViewColumn.One, { // Restrict the webview to only loading local content from our extension's `media` directory. localResourceRoots: [vscode.Uri.file(path.join(extensionPath, 'media'))] }); const imagePath = vscode.Uri.file(path.join(extensionPath, 'media')); panel.html = ` Cat Coding `
在沒有內容安全策略的情況下創建webview時發出警告
現在,在開發使用Webview API的擴展時,我們會在您創建未設置內容安全策略的Web視圖時記錄警告。
所有webview(即使是非常簡單的)都應該設置一個內容安全策略。這有助于限制內容注入的潛在影響,通常是深入防御的好方法。
特定機器的重寫的設置
現在,您可以使用范圍machine-overridable定義一個特定于機器的設置,該設置可以在工作區和文件夾級別上覆蓋。
"configuration": { "title": "My Extension Settings", "properties": { "myextension.libPath": { "type": [ "string", "null" ], "markdownDescription": "Specify the path to the library.", "default": null, "scope": "machine-overridable" } } }
在自定義樹視圖中進行多選
通過createTreeView生成的樹現在可以將canSelectMany選項添加到TreeViewOptions。這允許在貢獻的樹視圖中進行多選,并使運行在樹元素上的命令在第二個命令參數中以數組的形式接收所有選中的樹元素。
markdown.api.render
markdown.api.render來自VS Code的內置Markdown擴展的新命令采用stringMarkdown或a vscode.TextDocument并將呈現的Markdown作為HTML返回:
import * as vscode from 'vscode'; export function activate(context: vscode.ExtensionContext) { vscode.commands.executeCommand('markdown.api.render', '# Hello Markdown').then(result => { console.log(`rendered markdown: ${result}`); }); }
日志:
rendered markdown: Hello Markdown
自定義數據標記為穩定
在2019年1月1.31版本中作為實驗性功能引入的自定義數據格式現在標記為穩定。
html.experimental.customData- 此設置已棄用并被html.customData取代。
css.experimental.customData- 此設置已棄用并被css.customData取代。
contributes.html.experimental.customData- 此貢獻點已棄用并被contributes.html.customData取代。
contributes.css.experimental.customData- 此貢獻點已棄用并被contributes.css.customData取代。
不推薦使用的workspace.rootPath
很久以前,我們添加了對多根工作空間的支持,并棄用了API workspace.rootPath,并支持workspace.workspaceFolders和workspace.getWorkspaceFolder。我們注意到許多擴展仍然使用此API,即使它在多根工作空間中無法正常工作。如果您擁有使用此API的擴展程序,請更新它,因為將來此API可能被刪除。
語言服務器協議
流媒體和進度報告支持已添加到語言服務器協議的下一版本中。擬議實現服務器和客戶端都可以作為vscode-languageserver@5.3.0-next.10和vscode-languageclient@5.3.0-next.9分別。
調試適配器協議
完成提案的改進
調試適配器現在可以使用新功能completionTriggerCharacters來通知前端UI應該使用的字符來觸發REPL或調試控制臺中的完成提議UI。如果未指定,則前端UI應使用“.” 用于觸發提案UI的字符。
此外,我們還向CompletionItem類型添加了一個可選的sortText屬性。使用此屬性,調試適配器可以控制前端UI如何對適配器返回的完成建議進行排序。如果缺少屬性,前端可以根據label屬性對項進行排序。
修正了DAP JSON模式中的一個類型問題
在調試適配器協議JSON模式中,我們將類型說明符number的使用更改為integer,用于那些浮點類型沒有意義的地方,例如對于id。
建議的擴展API
每個里程碑都附帶新的API,擴展作者可以試用它們。一如既往,我們熱衷于您的反饋。這是您提出的API所必須做的事情:
必須使用Insiders,因為建議的API經常更改。
必須在package.json擴展程序的文件中包含以下行:"enableProposedApi": true。
將最新版本的vscode.proposed.d.ts文件復制到項目中。
請注意,您無法發布使用建議API的擴展程序。我們可能會在下一個版本中進行重大更改,但絕不會破壞現有的擴展。
符號和完成的棄用標簽
完成和文檔/工作區符號的API現在支持將項目標記為已棄用。完成和符號具有一個新的可選屬性tags,它是一組CompletionItemTags或SymbolTags。今天,僅支持棄用,但有計劃添加更多標簽,例如訪問修飾符和其他修飾符的標簽。
下面的代碼段顯示了一個最小完成項提供程序,該提供程序呈現標記為已棄用的項。
vscode.languages.registerCompletionItemProvider('plaintext', { provideCompletionItems() { const item = new vscode.CompletionItem("deprecated_completion"); item.tags = [vscode.CompletionItemTag.Deprecated]; return [item]; } });
顯示已棄用的完成符號或符號時,會在名稱中呈現刪除線,項目會略微變暗,并且不會突出顯示:
Pseudoterminal.onDidClose現在接受一個數字
建議Pseudoterminal.onDidClose已從a Event
已棄用的建議終端API已刪除
不推薦使用的TerminalOptions.runInBackground和createTerminalRendererAPI已經被刪除。如果你需要遷移它們,應該分別使用TerminalOptions.hideFromUser(穩定)和ExtensionTerminalOptions(建議)。
新命令
我們現在公開了用于在編輯器、集成終端、擴展詳細信息視圖和Web視圖中在“查找”控件中導航搜索結果的命令。
值得注意的修復
26012:自動插入parens與完成不能很好地交互,導致重復的字符
47292:擴展無法訪問由任務創建的診斷
73884:Linux:從FTP連接打開文件顯示為空
75054:macOS簡單全屏再次正常工作
77293:在提供的debugconfigurations和resolveDebugConfigurations中使用CancelationToken來取消調試
77735:如果稍后存在RenameFile,則 workspace.applyEdit將刪除TextEdit
77747:文件名$(xx)視圖中顯示不正確的文件名
77990:從TS / JS文件開始,文件比打開其他文件慢得多
77996:文件>另存為將光標移動到文件的開頭
78147:配置任務操作應顯示新添加的任務并將光標定位在那里
78179:使用類型過濾器調用'tasks.fetchTask()'可以獲取所有任務
79478:在markdown文件中突出顯示自定義html標記
79704:@example <caption>JSDoc 支持
79763:編輯:可以關閉所有編輯
79798:編輯器:未使用workbench.editor.revealIfOpen激活組:true
78046:SCM:支持為新文件暫存所選更改
79625:為“preLaunchTask”結構提供代碼補全
想要獲得 Visual Studio 更多資源的伙伴,請點這里。
想要獲取 Visual Studio 正版授權的伙伴,
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn
文章轉載自: