Files
voidraft/internal/models/extension.go

117 lines
3.0 KiB
Go

package models
// ExtensionConfig 扩展配置项
type ExtensionConfig map[string]interface{}
// ExtensionName 扩展标识符
type ExtensionName string
// Extension 扩展配置
type Extension struct {
Name ExtensionName `json:"key"`
Enabled bool `json:"enabled"`
Config ExtensionConfig `json:"config"`
}
const (
RainbowBrackets ExtensionName = "rainbowBrackets" // 彩虹括号
Hyperlink ExtensionName = "hyperlink" // 超链接
ColorSelector ExtensionName = "colorSelector" // 颜色选择器
Fold ExtensionName = "fold" // 代码折叠
Translator ExtensionName = "translator" // 划词翻译
Markdown ExtensionName = "markdown" // Markdown渲染
HighlightWhitespace ExtensionName = "highlightWhitespace" // 显示空白字符
HighlightTrailingWhitespace ExtensionName = "highlightTrailingWhitespace" // 高亮行尾空白
Minimap ExtensionName = "minimap" // 小地图
LineNumbers ExtensionName = "lineNumbers" // 行号显示
ContextMenu ExtensionName = "contextMenu" // 上下文菜单
Search ExtensionName = "search" // 搜索功能
HttpClient ExtensionName = "httpClient" // HTTP 客户端
BlockImage ExtensionName = "blockImage" // 代码块导出图片
)
// NewDefaultExtensions 创建默认扩展配置
func NewDefaultExtensions() []Extension {
return []Extension{
// 编辑增强扩展
{
Name: RainbowBrackets,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: Hyperlink,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: ColorSelector,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: Fold,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: Translator,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: Markdown,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: HighlightWhitespace,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: HighlightTrailingWhitespace,
Enabled: true,
Config: ExtensionConfig{},
},
// UI增强扩展
{
Name: Minimap,
Enabled: true,
Config: ExtensionConfig{
"displayText": "characters",
"showOverlay": "always",
"autohide": false,
},
},
{
Name: LineNumbers,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: ContextMenu,
Enabled: true,
Config: ExtensionConfig{},
},
// 工具扩展
{
Name: Search,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: HttpClient,
Enabled: true,
Config: ExtensionConfig{},
},
{
Name: BlockImage,
Enabled: true,
Config: ExtensionConfig{},
},
}
}