Only end the preamble at MakeTitle if directly inside DocumentEnvironment (#14593)

GitOrigin-RevId: 3252a8260e02728c05b753433e3488b799b18de0
This commit is contained in:
Alf Eaton 2023-09-01 12:05:06 +01:00 committed by Copybot
parent e320473d05
commit aef9821e00
2 changed files with 27 additions and 1 deletions

View file

@ -186,7 +186,14 @@ export const atomicDecorations = (options: Options) => {
tree.iterate({
enter(nodeRef) {
if (nodeRef.node.type.is('Maketitle')) {
preamble.to = nodeRef.node.from
// end the preamble at \maketitle, if it's directly inside the document environment
const parentEnvironment = ancestorOfNodeWithType(
nodeRef.node,
'$Environment'
)
if (parentEnvironment?.type.is('DocumentEnvironment')) {
preamble.to = nodeRef.node.from
}
} else if (nodeRef.node.type.is('DocumentEnvironment')) {
// only count the first instance of DocumentEnvironment
if (!seenDocumentEnvironment) {

View file

@ -510,6 +510,25 @@ describe('<CodeMirrorEditor/> in Visual mode', function () {
cy.get('.ol-cm-preamble-line').eq(3).should('not.exist')
})
it('should exclude maketitle from preamble extents if nested in another environment', function () {
cy.get('@first-line').type(
[
'\\author{{}Author}',
'\\title{{}Document title}',
'\\begin{{}document}',
'\\begin{{}frame}{{}Foo}',
'\\maketitle',
'\\end{{}frame}',
'\\end{{}document}',
'',
].join('{Enter}')
)
cy.get('.ol-cm-preamble-widget').should('have.length', 1)
cy.get('.ol-cm-preamble-widget').click()
cy.get('.ol-cm-preamble-line').should('have.length', 3)
})
it('should show multiple authors', function () {
cy.get('@first-line').type(
[