Skip to content

Commit

Permalink
🐛 IR Block 列表项行级排版自动换行问题
Browse files Browse the repository at this point in the history
  • Loading branch information
88250 committed Oct 31, 2020
1 parent 1c11762 commit 8263b34
Show file tree
Hide file tree
Showing 5 changed files with 8 additions and 6 deletions.
2 changes: 1 addition & 1 deletion javascript/lute.min.js

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion javascript/lute.min.js.map

Large diffs are not rendered by default.

5 changes: 3 additions & 2 deletions test/spinv_ir_block_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ import (

var spinVditorIRBlockDOMTests = []*parseTest{

//{"46", "<ul data-marker=\"*\" data-block=\"0\" data-node-id=\"20201031111606-dnr4430\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201031111609-mu6pg96\"><p data-block=\"0\" data-node-id=\"20201031112843-c73mzz2\" data-type=\"p\">foo</p><p data-block=\"0\" data-node-id=\"20201031112843-xgtap3z\" data-type=\"p\">bar</p></li><li data-marker=\"*\" data-node-id=\"20201031111609-mu6pg96\"><p data-block=\"0\" data-node-id=\"20201031112843-xgtap3z\" data-type=\"p\"><wbr><br></p></li></ul>", "<ul data-marker=\"*\" data-block=\"0\" data-node-id=\"20201031111606-dnr4430\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201031111609-mu6pg96\"><p data-block=\"0\" data-node-id=\"20201031112843-c73mzz2\" data-type=\"p\">foo</p><p data-block=\"0\" data-node-id=\"20201031112843-xgtap3z\" data-type=\"p\">bar</p></li><li data-marker=\"*\" data-node-id=\"20060102150405-1a2b3c4\"><p data-block=\"0\" data-node-id=\"20060102150405-1a2b3c4\" data-type=\"p\"><wbr></p></li></ul>"},
{"45", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201030112511-s9z0ibi\" data-type=\"ul\"><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20201030112519-3hubfjf\"><input type=\"checkbox\"><div data-block=\"0\" data-node-id=\"20201030112609-kz3a89c\" data-type=\"block-ref-embed\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201030105933-s0ablor</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><div data-block-def-id=\"20201030105933-s0ablor\" data-render=\"1\" data-type=\"block-render\"><div class=\"block__icons\" data-url=\"http%3A%2F%2F127.0.0.1%3A6806%2Fsiyuan%2F1602224134353%2F%E6%88%91%E7%9A%84%E5%9D%9A%E6%9E%9C%E4%BA%91%2F\" data-path=\"%2F1_20201029165951-gcfwqb6\" data-id=\"20201030105933-s0ablor\"><span class=\"block__icon\"><svg><use xlink:href=\"#iconLink\"></use></svg></span></div>\n<div class=\"block__content\"><p id=\"20201030105933-s0ablor\">foo</p></div></div></div><p data-block=\"0\">​</p></li><li class=\"vditor-task\" data-marker=\"*\"><input type=\"checkbox\"> f<wbr><p data-block=\"0\">\n</p></li></ul>", "<ul data-marker=\"*\" data-block=\"0\" data-node-id=\"20201030112511-s9z0ibi\" data-type=\"ul\"><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20201030112519-3hubfjf\"><input type=\"checkbox\" /><div data-block=\"0\" data-node-id=\"20201030112609-kz3a89c\" data-type=\"block-ref-embed\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201030105933-s0ablor</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><div data-block-def-id=\"20201030105933-s0ablor\" data-render=\"2\" data-type=\"block-render\"></div></div></li><li data-marker=\"*\" data-node-id=\"20060102150405-1a2b3c4\"><p data-block=\"0\" data-node-id=\"20060102150405-1a2b3c4\" data-type=\"p\">[ ]</p><p data-block=\"0\" data-node-id=\"20060102150405-1a2b3c4\" data-type=\"p\">f<wbr></p></li></ul>"},
{"47", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201031143107-zrt7hxm\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201031143110-pnxlq5h\">foo</li><li data-marker=\"*\" data-node-id=\"20201031143402-nsuhkoq\"><span data-type=\"em\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--em\">*</span><em data-newline=\"1\">bar</em><span class=\"vditor-ir__marker vditor-ir__marker--em\">*</span></span>ba<wbr></li></ul>", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201031143107-zrt7hxm\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201031143110-pnxlq5h\">foo</li><li data-marker=\"*\" data-node-id=\"20201031143402-nsuhkoq\"><span data-type=\"em\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--em\">*</span><em data-newline=\"1\">bar</em><span class=\"vditor-ir__marker vditor-ir__marker--em\">*</span></span>ba<wbr></li></ul>"},
{"46", "<ul data-marker=\"*\" data-block=\"0\" data-node-id=\"20201031111606-dnr4430\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201031111609-mu6pg96\"><p data-block=\"0\" data-node-id=\"20201031112843-c73mzz2\" data-type=\"p\">foo</p><p data-block=\"0\" data-node-id=\"20201031112843-xgtap3z\" data-type=\"p\">bar</p></li><li data-marker=\"*\" data-node-id=\"20201031111609-mu6pg96\"><p data-block=\"0\" data-node-id=\"20201031112843-xgtap3z\" data-type=\"p\"><wbr><br></p></li></ul>", "<ul data-marker=\"*\" data-block=\"0\" data-node-id=\"20201031111606-dnr4430\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201031111609-mu6pg96\"><p data-block=\"0\" data-node-id=\"20201031112843-c73mzz2\" data-type=\"p\">foo</p><p data-block=\"0\" data-node-id=\"20201031112843-xgtap3z\" data-type=\"p\">bar</p></li><li data-marker=\"*\" data-node-id=\"20060102150405-1a2b3c4\"><p data-block=\"0\" data-node-id=\"20060102150405-1a2b3c4\" data-type=\"p\"><wbr></p></li></ul>"},
{"45", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201030112511-s9z0ibi\" data-type=\"ul\"><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20201030112519-3hubfjf\"><input type=\"checkbox\"><div data-block=\"0\" data-node-id=\"20201030112609-kz3a89c\" data-type=\"block-ref-embed\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201030105933-s0ablor</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><div data-block-def-id=\"20201030105933-s0ablor\" data-render=\"1\" data-type=\"block-render\"><div class=\"block__icons\" data-url=\"http%3A%2F%2F127.0.0.1%3A6806%2Fsiyuan%2F1602224134353%2F%E6%88%91%E7%9A%84%E5%9D%9A%E6%9E%9C%E4%BA%91%2F\" data-path=\"%2F1_20201029165951-gcfwqb6\" data-id=\"20201030105933-s0ablor\"><span class=\"block__icon\"><svg><use xlink:href=\"#iconLink\"></use></svg></span></div>\n<div class=\"block__content\"><p id=\"20201030105933-s0ablor\">foo</p></div></div></div><p data-block=\"0\">​</p></li><li class=\"vditor-task\" data-marker=\"*\"><input type=\"checkbox\"> f<wbr><p data-block=\"0\">\n</p></li></ul>", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201030112511-s9z0ibi\" data-type=\"ul\"><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20201030112519-3hubfjf\"><input type=\"checkbox\" /><div data-block=\"0\" data-node-id=\"20201030112609-kz3a89c\" data-type=\"block-ref-embed\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201030105933-s0ablor</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><div data-block-def-id=\"20201030105933-s0ablor\" data-render=\"2\" data-type=\"block-render\"></div></div></li><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20060102150405-1a2b3c4\"><input type=\"checkbox\" /> f<wbr></li></ul>"},
{"44", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201029232316-c89az3l\" data-type=\"ul\"><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20201029232259-vnhyszf\"><input checked=\"\" type=\"checkbox\"> !((20201029225934-4ew528z \"foo\"))<wbr></li></ul>", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201029232316-c89az3l\" data-type=\"ul\"><li data-marker=\"*\" class=\"vditor-task\" data-node-id=\"20201029232259-vnhyszf\"><input checked=\"\" type=\"checkbox\" /><div data-block=\"0\" data-node-id=\"20060102150405-1a2b3c4\" data-type=\"block-ref-embed\" class=\"vditor-ir__node vditor-ir__node--expand\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201029225934-4ew528z</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><wbr><div data-block-def-id=\"20201029225934-4ew528z\" data-render=\"2\" data-type=\"block-render\"></div></div></li></ul>"},
{"43", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201029230223-a64el2s\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201029230226-nva92wg\">!<span data-type=\"block-ref\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201029225934-4ew528z</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)<wbr></span></span></li></ul>", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201029230223-a64el2s\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201029230226-nva92wg\"><div data-block=\"0\" data-node-id=\"20060102150405-1a2b3c4\" data-type=\"block-ref-embed\" class=\"vditor-ir__node vditor-ir__node--expand\"><span class=\"vditor-ir__marker\">!</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">(</span><span class=\"vditor-ir__marker vditor-ir__marker--link\">20201029225934-4ew528z</span><span class=\"vditor-ir__marker\"> </span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__blockref\">foo</span><span class=\"vditor-ir__marker\">\"</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><span class=\"vditor-ir__marker vditor-ir__marker--paren\">)</span><wbr><div data-block-def-id=\"20201029225934-4ew528z\" data-render=\"2\" data-type=\"block-render\"></div></div></li></ul>"},
{"42", "<p data-block=\"0\" data-node-id=\"20201029214441-90qubxk\" data-type=\"p\"><f><span data-type=\"html-inline\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker\">&lt;<wbr>&gt;</span></span></f></p>", "<p data-block=\"0\" data-node-id=\"20201029214441-90qubxk\" data-type=\"p\"><span data-type=\"html-inline\" class=\"vditor-ir__node vditor-ir__node--expand\"><span class=\"vditor-ir__marker\">&lt;<wbr>&gt;</span></span></p>"},
Expand Down
2 changes: 1 addition & 1 deletion test/v2m_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,7 @@ func TestVditorIRDOM2Md(t *testing.T) {
var vditorIRBlockDOM2MdTests = []parseTest{

{"4", "<p data-block=\"0\" data-node-id=\"20201024165528-n88b4e2\" data-type=\"p\"><span data-type=\"strong\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--strong\">**</span><strong data-newline=\"1\">foo</strong><span class=\"vditor-ir__marker vditor-ir__marker--strong\">**</span></span>\nba<wbr></p>", "**foo**\nba\n{: id=\"20201024165528-n88b4e2\"}\n"},
{"3", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201024153454-bqqcbc1\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201024153456-ktna8mm\">foo<span data-type=\"strong\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--strong\">**</span><strong data-newline=\"1\">bar</strong><span class=\"vditor-ir__marker vditor-ir__marker--strong\">**</span></span></li><li data-marker=\"*\" data-node-id=\"20201024153456-ktna8mm\"><span data-type=\"strong\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--strong\"><wbr><br></span></span></li></ul>", "* {: id=\"20201024153456-ktna8mm\"}foo**bar**\n* {: id=\"20060102150405-1a2b3c4\"}\n {: id=\"20060102150405-1a2b3c4\"}\n{: id=\"20201024153454-bqqcbc1\"}\n"},
{"3", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"20201024153454-bqqcbc1\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"20201024153456-ktna8mm\">foo<span data-type=\"strong\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--strong\">**</span><strong data-newline=\"1\">bar</strong><span class=\"vditor-ir__marker vditor-ir__marker--strong\">**</span></span></li><li data-marker=\"*\" data-node-id=\"20201024153456-ktna8mm\"><span data-type=\"strong\" class=\"vditor-ir__node\"><span class=\"vditor-ir__marker vditor-ir__marker--strong\"><wbr><br></span></span></li></ul>", "* {: id=\"20201024153456-ktna8mm\"}foo**bar**\n* {: id=\"20060102150405-1a2b3c4\"}\n{: id=\"20201024153454-bqqcbc1\"}\n"},
{"2", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"ul1\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"fooid\">foo<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"ul2\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"barid\">bar</li></ul></li></ul>", "* {: id=\"fooid\"}foo\n * {: id=\"barid\"}bar\n {: id=\"ul2\"}\n{: id=\"ul1\"}\n"},
{"1", "<ul data-tight=\"true\" data-marker=\"*\" data-block=\"0\" data-node-id=\"id\" data-type=\"ul\"><li data-marker=\"*\" data-node-id=\"fooid\">foo</li></ul>", "* {: id=\"fooid\"}foo\n{: id=\"id\"}\n"},
{"0", "<ul data-tight=\"true\" data-marker=\"-\" data-block=\"0\" data-node-id=\"20200910154204-c4bobg8\"><li data-marker=\"-\" class=\"vditor-task\" data-node-id=\"\"><input checked=\"\" type=\"checkbox\"></li></ul>", "- [X]\n{: id=\"20200910154204-c4bobg8\"}\n"},
Expand Down
3 changes: 2 additions & 1 deletion vditor_wysiwyg.go
Original file line number Diff line number Diff line change
Expand Up @@ -305,7 +305,8 @@ func (lute *Lute) adjustVditorDOMListItemInP(n *html.Node) {
}
// 松散 li 换行时和上一个 li.last id 重复
if nil != n.PrevSibling && nil != n.FirstChild {
if nil != n.PrevSibling.LastChild && lute.domAttrValue(n.PrevSibling.LastChild, "data-node-id") == lute.domAttrValue(n.FirstChild, "data-node-id") {
id := lute.domAttrValue(n.FirstChild, "data-node-id") // id 为空的话是行级节点,列表项行级排版自动换行问题 https://github.com/siyuan-note/siyuan/issues/379
if "" != id && nil != n.PrevSibling.LastChild && lute.domAttrValue(n.PrevSibling.LastChild, "data-node-id") == id {
lute.setDOMAttrValue(n.FirstChild, "data-node-id", ast.NewNodeID())
}
}
Expand Down

0 comments on commit 8263b34

Please sign in to comment.