diff --git a/xwiki-rendering-integration-tests/src/test/resources/simple/misc/misc7.test b/xwiki-rendering-integration-tests/src/test/resources/simple/misc/misc7.test index 539b9e5fab..8f1f2dd015 100644 --- a/xwiki-rendering-integration-tests/src/test/resources/simple/misc/misc7.test +++ b/xwiki-rendering-integration-tests/src/test/resources/simple/misc/misc7.test @@ -24,6 +24,10 @@ paragraph1\\ paragraph2 [[Caption\\>>image:img.png]] + +(% border="1" %) +|var|(%%)(% style="color: #0000ff;" %)asdf\\ +|bar|function .#----------------------------------------------------- .expect|event/1.0 .#----------------------------------------------------- @@ -105,5 +109,26 @@ onNewLine endParagraph endFigureCaption endFigure [[class]=[image]] +beginTable [[border]=[1]] +beginTableRow +beginTableCell +onWord [var] +endTableCell +beginTableCell +beginFormat [NONE] [[style]=[color: #0000ff;]] +onWord [asdf] +onNewLine +endFormat [NONE] [[style]=[color: #0000ff;]] +endTableCell +endTableRow +beginTableRow +beginTableCell +onWord [bar] +endTableCell +beginTableCell +onWord [function] +endTableCell +endTableRow +endTable [[border]=[1]] endSection endDocument diff --git a/xwiki-rendering-syntaxes/xwiki-rendering-syntax-xwiki20/src/main/java/org/xwiki/rendering/internal/renderer/xwiki20/XWikiSyntaxChainingRenderer.java b/xwiki-rendering-syntaxes/xwiki-rendering-syntax-xwiki20/src/main/java/org/xwiki/rendering/internal/renderer/xwiki20/XWikiSyntaxChainingRenderer.java index 5f8ff5f8a2..fcc4defbf4 100644 --- a/xwiki-rendering-syntaxes/xwiki-rendering-syntax-xwiki20/src/main/java/org/xwiki/rendering/internal/renderer/xwiki20/XWikiSyntaxChainingRenderer.java +++ b/xwiki-rendering-syntaxes/xwiki-rendering-syntax-xwiki20/src/main/java/org/xwiki/rendering/internal/renderer/xwiki20/XWikiSyntaxChainingRenderer.java @@ -355,12 +355,21 @@ public void onNewLine() if (getBlockState().isInLine()) { if (getXWikiSyntaxListenerChain().getConsecutiveNewLineStateChainingListener().getNewLineCount() > 1) { print("\\\\"); - } else if (getXWikiSyntaxListenerChain().getLookaheadChainingListener().getNextEvent().eventType - .isInlineEnd()) - { - print("\\\\"); } else { - print("\n"); + LookaheadChainingListener lookaheadListener = + getXWikiSyntaxListenerChain().getLookaheadChainingListener(); + QueueListener.Event nextEvent = lookaheadListener.getNextEvent(); + if (nextEvent.eventType.isInlineEnd() + // Format end events don't print anything for the none format at the end of inline elements as + // the format is automatically reset. So consider that we're already at the end of an inline + // element in that case. + || (nextEvent.eventType == EventType.END_FORMAT && nextEvent.eventParameters[0] == Format.NONE + && lookaheadListener.getNextEvent(2).eventType.isInlineEnd())) + { + print("\\\\"); + } else { + print("\n"); + } } } else { print("\n");