Shire Sketch 是 Shire 提供的 IDE 画布功能,旨在通过其丰富的文本代码(源码、Patch、UML、架构图等)二次处理、渲染组件,进一步简化交互成本, 以提升开发者在 IDE 中的体验。 无论是单个文件的显示、渲染操作,还是多文件协作、修复,Shire Sketch 都能提供强大的支持。

  • 实时流式代码高亮:实时显示代码高亮的流式视图。
  • 内置差异(Patch 语言):显示代码差异的内置视图。
  • 实时流式差异(StreamDiff):实时显示代码差异的流式视图,基于 Continue 的 UI 修改。
  • Mermaid 流程图:支持 Mermaid 流程图的渲染,与双向绑定的代码编辑器。(要求启用 Mermaid 插件)
  • PlantUML 图表:支持 PlantUML 图表的渲染,与双向绑定的代码编辑器。(要求安装 PlantUML integration 插件)

Sketch 示例

Diff Sketch

示例:Prompt:

请使用 patch 的方式完成需求,并使用 markdown patch 代码格式返回。

Mermaid Sketch

示例 Prompt:

请使用 mermaid Code 格式,语言 `mermaid`,请根据用户故事绘制 mermaid 时序图,返回设计的 mermaid 代码。

PlantUml Sketch

示例 Prompt:

请使用 plantuml Code 格式,语言 `plantuml`,请根据用户故事绘制 PUML 时序图,返回设计的 PUML 代码。

创建新 Sketch

interface LanguageSketchProvider {
    fun isSupported(lang: String): Boolean

    fun create(project: Project, content: String): ExtensionLangSketch

    companion object {
        private val EP_NAME: ExtensionPointName<LanguageSketchProvider> =
            ExtensionPointName("com.phodal.shireLangSketchProvider")

        fun provide(language: String): LanguageSketchProvider? {
            return EP_NAME.extensionList.firstOrNull {
                it.isSupported(language)
            }
        }
    }
}

示例:

XML 声明:


<extensions defaultExtensionNs="com.phodal">
    <shireLangSketchProvider implementation="com.phodal.shirecore.sketch.patch.DiffLangSketchProvider"/>
</extensions>

实现代码:

class DiffLangSketchProvider : LanguageSketchProvider {
    override fun isSupported(lang: String): Boolean = lang == "diff" || lang == "patch"
    override fun create(project: Project, content: String): ExtensionLangSketch = DiffLangSketch(project, content)
}