[英]How can I automatically trigger the rename flow after extracting into a variable (LSP)?
我正在使用語言服務器協議實現對一種語言的 IDE 支持。
我想在提取一個變量到當前scope后觸發重命名。也就是說,我已經實現了當前流程的步驟1到2,想知道如何實現3和4
當用戶選擇一個表達式時,會出現一個黃色燈泡。 示例: z = 3 + /*selection-start*/5000/*selection-end*/
當用戶選擇“提取到變量”時,將在當前 scope 中創建一個名為“占位符”的新變量,並將原始表達式分配給它。 示例: placeholder = 5000; z = 3 + placeholder
placeholder = 5000; z = 3 + placeholder
placeholder
的第一個實例高亮顯示,並彈出重命名文本框。 當用戶鍵入“the_new_name”並按下Return
時,文本為: the_new_name = 5000; z = 3 + the_new_name
the_new_name = 5000; z = 3 + the_new_name
是否可以使用 LSP 實現此流程? 如果是這樣,如何? 我檢查了 LSP 規范,聽起來我正在尋找一個Command
,但我沒有看到用於重命名的內置Command
TypeScript 的語言服務器具有我試圖復制的行為(在這里實現),但是 TypeScript 沒有實現語言服務器協議,所以查看它的源代碼對我沒有幫助。 以上截圖來自VSCode內置的TypeScript插件
似乎編輯們必須要求自己重新命名。 服務器可以根據代碼操作請求發送編輯列表,但是此時它們無法請求用戶輸入: https://github.com/microsoft/language-server-protocol/issues/1641
LSP 不支持此流程,但可以使用自定義命令完成。 這是一種技術:
WorkspaceEdit
中包含片段文本,例如“${0: placeholder}”。 片段語法在此處記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.