DSH CodeCraft:把 CodeMirror 6 編輯器放進 DSH 原生文件標籤頁

前言

DSH 桌面端自身有代碼與純文本預覽,但定位是查看,不是編輯:沒有補全、摺疊、自動配對括號、保存衝突保護這些東西。想在 DSH 裏改代碼,要麼跳到外部編輯器,要麼忍受預覽面板。DSH CodeCraft 就是爲填這個缺口來的。

作者是 lllrunze,插件名 lllirunze/dsh-codecraft,npm 包名 dsh-codecraft,當前版本 0.2.2,許可證 MIT。它的做法不是另開一個窗口,而是在 DSH 原生的工作區瀏覽器和文件標籤頁裏掛一個 CodeMirror 6 編輯器,編輯和保存都走宿主的原生標籤頁流程。

下面按功能、安裝、用法、注意事項介紹。需要說明,該插件在 SkillHub 目錄的分類是「客戶端」,其 manifest 聲明的是 Web 客戶端側的注入與外部依賴,屬於客戶端型插件。

核心功能

編輯器基礎能力

  • 語法高亮、行號、摺疊、搜索、行註釋、縮進、撤銷/重做、補全。
  • 按回車時自動閉合常見括號和引號,包括選中後包裹、成對刪除,以及語言相關的反引號和 Python 三引號。
  • 回車時按 Python 語法上下文決定縮進:塊、分支、多行表達式、閉合定界符。
  • 縮進寬度可選兩個或四個空格,同一設置面板裏切換,改動隻影響打開的編輯器,不重寫已有文件內容。

Python 智能補全

  • Python 文件在 macOS 和 Windows 上默認開啓語義補全(v0.2.2)。
  • 使用插件自帶的 Pyright 服務,工作區範圍;優先選顯式解釋器或工作區的 .venv / venv,PATH 兜底時 macOS 用 python3,Windows 用 python。
  • 補全覆蓋 import、跨文件符號、推斷出的成員、所選環境中的包。
  • 在明確的調用上下文中接受方法、函數或構造函數補全時,會插入 () 並把光標放在括號內;賦值右側、回調參數、容器、import、裝飾器、已有片段和已有括號保持不變。
  • 狀態欄會顯示 Starting、Ready / Unavailable;服務不可用不影響正常編輯和保存。

Google Style Docstring 佔位

在 Python 函數、方法、異步函數或類的第一個語句位置輸入 """ 後回車,插件會生成 summary、Args、Returns / Yields 佔位內容。僅在語法上下文明確時生成;模塊作用域、賦值語句、嵌套塊、後續語句或帶前綴字符串中的三引號仍然是普通多行字符串。

保存與草稿

  • 手動保存 Cmd+S(macOS)或 Ctrl+S(Windows),也可點狀態欄的保存動作。保存路徑有衝突保護:能檢測外部改動並拒絕寫入過期內容。
  • 自動保存默認關閉,可在 Settings → CodeCraft 打開,間隔可選 10、30、60、120 秒。自動保存與手動保存共用同一條無衝突寫入路徑。
  • 切標籤頁、關標籤頁或刷新頁面後恢復未保存草稿。
  • 保留 LF / CRLF、UTF-8 BOM,並在支持的平臺保留 POSIX 文件權限位。

安全邊界

  • 文件只本地編輯,沒有模型調用、遙測或文件上傳。
  • 自動拒絕過大、二進制、非 UTF-8、行尾混合的文件。
  • 限制在 2 MiB 以內的 UTF-8 源碼和文本文件。

安裝與啓用

環境要求

組件 要求
基礎編輯器 macOS 或 Windows
Python Intelligence v0.2.2 僅 macOS 或 Windows
DSH Desktop 0.2.1-rc.5
Node.js 從源碼構建時需要 20 或更高

Linux 未做驗證,當前不支持。

從 npm 安裝

dsh plugin --profile desktop add dsh-codecraft@latest

裝完重啓 DSH Desktop。插件 manifest 會自動把 CodeCraft 加進所選 DSH profile,不需要手工改 profile。

從源碼安裝

git clone https://github.com/lllirunze/dsh-codecraft.git
cd dsh-codecraft
npm install
npm run check
dsh plugin --profile desktop add "$PWD"

npm run check 依次跑 typecheck、test、build、verify。裝完同樣需要重啓 DSH Desktop。

更新與卸載

dsh plugin --profile desktop update --latest dsh-codecraft

或者指定版本:

dsh plugin --profile desktop add dsh-codecraft@0.2.2

卸載:

dsh plugin --profile desktop remove dsh-codecraft

卸載後重啓 DSH Desktop,原生文件預覽會自動恢復。插件目前沒有應用內更新通知或後臺靜默更新,安裝與更新都由 DSH CLI 負責。

典型用法

  1. 在 DSH 工作區瀏覽器裏打開一個支持的源碼或文本文件。
  2. DSH 打開原生文件標籤頁,並選中 CodeCraft 渲染器。
  3. 直接編輯,按 Cmd+S 或 Ctrl+S,或點狀態欄保存動作。
  4. 需要看原始內容時,用標籤頁上方的 viewer 菜單切回 DSH 原生代碼或純文本預覽。

若要打開自動保存:進 Settings → CodeCraft,選擇 10 / 30 / 60 / 120 秒間隔。若要調整縮進寬度,在同一個設置區裏改;Python 文件額外享受語法感知的回車縮進。

快捷鍵(macOS 與 Windows 對照):

macOS Windows 作用
Cmd+S Ctrl+S 保存當前文件
Cmd+F Ctrl+F 文件內搜索
Cmd+/ Ctrl+/ 切換行註釋
Cmd+Z / Cmd+Shift+Z Ctrl+Z / Ctrl+Y 撤銷 / 重做
Tab / Shift+Tab Tab / Shift+Tab 增加 / 減少縮進
— Ctrl+Space 手動打開補全

macOS 未綁定 Option 組合鍵,因爲可能產生組合輸入字符。Ctrl+Space 在操作系統沒有佔用的環境下可用。

適用場景與注意

適合在 DSH 桌面端裏直接改 .py 或常見文本源碼、希望編輯動作保留在原生標籤頁和工作區流程裏的人。Mac 和 Windows 用戶可用 Python 語義補全;只做查看或純文本編輯的場景用原生預覽就夠了,不必裝。

按 DSH 的插件模型,插件以當前 DSH 進程權限運行,並可以通過 manifest 聲明注入客戶端模塊。本插件的 manifest 聲明瞭 inject 項(dsh-client-locale、dsh-client-ui-settings、dsh-client-ui-settings-plugins、dsh-client-ui-sidebar-right、dsh-client-ui-sidebar-documentpreview)和 external 依賴(dsh-client-ui-primitives、react、react/jsx-runtime)。安裝前建議檢查源碼與許可證(MIT),再決定是否裝入。

兩個已被文檔確認的兼容性注意點:

  1. 若同時裝了修改 DSH 側欄文件區的插件(例如 dsh-better-sidebar),它可能替換或攔截原生 Files 內容,導致 CodeCraft 拿不到正常的原生文件標籤頁流程。處理方式是進入該側欄插件的設置,關閉它對 Files 的作用,必要時重啓 DSH Desktop,再從原生 Files 側欄打開文件確認。
  2. 排查順序上的建議:先確認另一個插件替換或攔截了 DSH 的哪個原生界面,優先把那個插件配置成不干擾本插件需要的原生流程。

限制方面:符號鏈接只讀;Python 的 hover、簽名幫助、診斷、跨文件自動編輯、跳轉定義尚未提供;不支持 Linux;沒有跨窗口草稿同步。

結尾

DSH CodeCraft 把編輯能力放進 DSH 原生的文件標籤頁裏,靠原生工作區的權限和保存鏈路做衝突保護與草稿恢復,而不是另起一套編輯器界面。它的價值在於讓「在 DSH 裏改代碼」這件事不需要跳出宿主環境。目前維護在 0.2.2,Linux 和若干 Python 語義功能還缺位。

目錄頁:https://www.skillhub.cn/plugins/lllirunze/dsh-codecraft
GitHub:https://github.com/lllirunze/dsh-codecraft
文檔:https://github.com/lllirunze/dsh-codecraft/tree/master/docs

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜