Quellcode durchsuchen

:bug: 重命名父标签误修改子标签 https://github.com/siyuan-note/siyuan/issues/7498

Liang Ding vor 2 Jahren
Ursprung
Commit
7c11b2ec9b
1 geänderte Dateien mit 5 neuen und 7 gelöschten Zeilen
  1. 5 7
      kernel/model/tag.go

+ 5 - 7
kernel/model/tag.go

@@ -22,7 +22,6 @@ import (
 	"sort"
 	"strings"
 
-	"github.com/88250/gulu"
 	"github.com/88250/lute/ast"
 	"github.com/emirpasic/gods/sets/hashset"
 	"github.com/facette/natsort"
@@ -155,12 +154,11 @@ func RenameTag(oldLabel, newLabel string) (err error) {
 					docTags := strings.Split(docTagsVal, ",")
 					var tmp []string
 					for _, docTag := range docTags {
-						if docTag != oldLabel {
+						if strings.HasPrefix(docTag, oldLabel+"/") || docTag == oldLabel {
+							docTag = strings.Replace(docTag, oldLabel, newLabel, 1)
+							tmp = append(tmp, docTag)
+						} else {
 							tmp = append(tmp, docTag)
-							continue
-						}
-						if !gulu.Str.Contains(newLabel, tmp) {
-							tmp = append(tmp, newLabel)
 						}
 					}
 					node.SetIALAttr("tags", strings.Join(tmp, ","))
@@ -172,7 +170,7 @@ func RenameTag(oldLabel, newLabel string) (err error) {
 			for _, nodeTag := range nodeTags {
 				if nodeTag.IsTextMarkType("tag") {
 					if strings.HasPrefix(nodeTag.TextMarkTextContent, oldLabel+"/") || nodeTag.TextMarkTextContent == oldLabel {
-						nodeTag.TextMarkTextContent = strings.ReplaceAll(nodeTag.TextMarkTextContent, oldLabel, newLabel)
+						nodeTag.TextMarkTextContent = strings.Replace(nodeTag.TextMarkTextContent, oldLabel, newLabel, 1)
 					}
 				}
 			}