Skip to content

[Feature]: 插件系统 #465

Description

@MountLynx

Pre-flight checks

  • I have searched existing issues and discussions for a similar request.
  • This request is about Markra itself, not a provider-specific support question.

Problem

我自己参考zettlr加了点学术写作(主要是插入引文、导出docx增强)相关的功能。

Image Image

但是感觉应用环境太特化了,而且对其他package中的代码有很多小改动,不适合并入项目,所以希望能有个插件系统,把这个功能做成插件。

Proposed solution

就插入引文和pandoc增强功能论的话,需要向外暴露的API主要涉及侧边栏、设置、和编辑器(点击插入引文)以及AI(保护引文格式的prompt)。目前 Markra 已经是高度模块化的,各功能以独立的 package 组织,这种架构非常适合直接改造为插件系统。新的插件同样可以以 @markra/ 下的 package 形式注册。

一些供参考的设想

  • 将 MarkdownPaperSurface.tsx 中的静态 import 重构为动态注册表,开放外部 ProseMirror 插件接入。

  • 将设置模块 SettingsShell.tsx 和 SettingsWindow.tsx 中硬编码的数组和 if/else 分支,替换为注册表加字典的动态配置,以便插件注册自己的设置页签。

总体思路

把需要对外开放的接入点改为动态注册机制,并在此基础上暴露稳定的 API,供插件扩展。

如果认可这个方案,我可以提交侧边栏、设置、编辑器和AI这几部分的PR,这些都是实现引文功能插件化所需的改动。最终目标是将所有 引文功能 相关代码都放到 package/reference 目录下,并做到可插拔,不耦合其他package。

Product area

Other

Alternatives considered

No response

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions