diff --git a/kernel/api/setting.go b/kernel/api/setting.go index b6f888d45..029b6e4b7 100644 --- a/kernel/api/setting.go +++ b/kernel/api/setting.go @@ -79,7 +79,7 @@ func setConfSnippet(c *gin.Context) { model.Conf.Save() ret.Data = snippet - util.BroadcastByType("main", "setSnippet", 0, "", snippet) + model.PushReloadSnippet(snippet) } func addVirtualBlockRefExclude(c *gin.Context) { diff --git a/kernel/model/push_reload.go b/kernel/model/push_reload.go index 08dae774d..d0ba464ca 100644 --- a/kernel/model/push_reload.go +++ b/kernel/model/push_reload.go @@ -31,6 +31,7 @@ import ( "github.com/emirpasic/gods/sets/hashset" "github.com/siyuan-note/logging" "github.com/siyuan-note/siyuan/kernel/av" + "github.com/siyuan-note/siyuan/kernel/conf" "github.com/siyuan-note/siyuan/kernel/filesys" "github.com/siyuan-note/siyuan/kernel/sql" "github.com/siyuan-note/siyuan/kernel/task" @@ -38,6 +39,10 @@ import ( "github.com/siyuan-note/siyuan/kernel/util" ) +func PushReloadSnippet(snippet *conf.Snpt) { + util.BroadcastByType("main", "setSnippet", 0, "", snippet) +} + func PushReloadPlugin(upsertCodePluginSet, upsertDataPluginSet, unloadPluginNameSet, uninstallPluginNameSet *hashset.Set, excludeApp string) { // 集合去重 if nil != uninstallPluginNameSet { diff --git a/kernel/model/repository.go b/kernel/model/repository.go index e7486ac18..8c7960a81 100644 --- a/kernel/model/repository.go +++ b/kernel/model/repository.go @@ -1595,7 +1595,7 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, var upserts, removes []string var upsertTrees int // 可能需要重新加载部分功能 - var needReloadFlashcard, needReloadOcrTexts, needReloadPlugin bool + var needReloadFlashcard, needReloadOcrTexts, needReloadPlugin, needReloadSnippet bool upsertCodePluginSet := hashset.New() // 插件代码变更 data/plugins/ upsertDataPluginSet := hashset.New() // 插件存储数据变更 data/storage/petal/ needUnindexBoxes, needIndexBoxes := map[string]bool{}, map[string]bool{} @@ -1640,6 +1640,10 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, absPath := filepath.Join(util.DataDir, file.Path) HandleAssetsChangeEvent(absPath) } + + if file.Path == "/snippets/conf.json" { + needReloadSnippet = true + } } removeWidgetDirSet, unloadPluginSet, uninstallPluginSet := hashset.New(), hashset.New(), hashset.New() @@ -1686,6 +1690,10 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, absPath := filepath.Join(util.DataDir, file.Path) HandleAssetsRemoveEvent(absPath) } + + if file.Path == "/snippets/conf.json" { + needReloadSnippet = true + } } for _, upsertPetal := range mergeResult.UpsertPetals { @@ -1710,6 +1718,10 @@ func processSyncMergeResult(exit, byHand bool, mergeResult *dejavu.MergeResult, PushReloadPlugin(upsertCodePluginSet, upsertDataPluginSet, unloadPluginSet, uninstallPluginSet, "") } + if needReloadSnippet { + PushReloadSnippet(Conf.Snippet) + } + for _, widgetDir := range removeWidgetDirSet.Values() { widgetDirPath := filepath.Join(util.DataDir, "widgets", widgetDir.(string)) gulu.File.RemoveEmptyDirs(widgetDirPath)