From 3c7e42ef3e6bdc17d739243d4069f36f7ece02b2 Mon Sep 17 00:00:00 2001 From: Liang Ding Date: Wed, 27 Jul 2022 00:58:53 +0800 Subject: [PATCH] =?UTF-8?q?:bug:=20=E4=BC=98=E5=8C=96=E6=8E=92=E7=89=88?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E5=AF=BC=E8=87=B4=E6=96=87=E6=A1=A3=E9=83=A8?= =?UTF-8?q?=E5=88=86=E5=86=85=E5=AE=B9=E4=B8=A2=E5=A4=B1=20Fix=20https://g?= =?UTF-8?q?ithub.com/siyuan-note/siyuan/issues/5515?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- kernel/model/format.go | 26 ++++++-------------------- 1 file changed, 6 insertions(+), 20 deletions(-) diff --git a/kernel/model/format.go b/kernel/model/format.go index 6addbb25a..a7e1b9c8e 100644 --- a/kernel/model/format.go +++ b/kernel/model/format.go @@ -40,7 +40,6 @@ func AutoSpace(rootID string) (err error) { defer util.ClearPushProgress(100) generateFormatHistory(tree) - luteEngine := NewLute() // 合并相邻的同类行级节点 ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { @@ -53,31 +52,18 @@ func AutoSpace(rootID string) (err error) { return ast.WalkContinue }) - // 合并相邻的文本节点 - for { - var unlinks []*ast.Node - ast.Walk(tree.Root, func(n *ast.Node, entering bool) ast.WalkStatus { - if entering && ast.NodeText == n.Type && nil != n.Next && ast.NodeText == n.Next.Type { - n.Tokens = append(n.Tokens, n.Next.Tokens...) - unlinks = append(unlinks, n.Next) - } - return ast.WalkContinue - }) - for _, n := range unlinks { - n.Unlink() - } - if 1 > len(unlinks) { - break - } - } - rootIAL := tree.Root.KramdownIAL addBlockIALNodes(tree, false) - luteEngine.SetAutoSpace(true) + // 第一次格式化为了合并相邻的文本节点 formatRenderer := render.NewFormatRenderer(tree, luteEngine.RenderOptions) md := formatRenderer.Render() newTree := parseKTree(md) + // 第二次格式化启用自动空格 + luteEngine.SetAutoSpace(true) + formatRenderer = render.NewFormatRenderer(newTree, luteEngine.RenderOptions) + md = formatRenderer.Render() + newTree = parseKTree(md) newTree.Root.ID = tree.ID newTree.Root.KramdownIAL = rootIAL newTree.ID = tree.ID