mirror of
https://github.com/overleaf/overleaf.git
synced 2024-11-21 20:47:08 -05:00
[visual] Move the cursor after leading whitespace when creating a new list item on Enter (#13828)
GitOrigin-RevId: 2f5941627b64fb53efce0bdd6f2d888986f45a9d
This commit is contained in:
parent
05adb9d14d
commit
b284434ad2
2 changed files with 28 additions and 1 deletions
|
@ -63,11 +63,22 @@ export const visualKeymap = Prec.highest(
|
||||||
const indent = indentString(state, columns)
|
const indent = indentString(state, columns)
|
||||||
const insert = `\n${indent}\\item `
|
const insert = `\n${indent}\\item `
|
||||||
|
|
||||||
|
const countWhitespaceAfterPosition = (pos: number) => {
|
||||||
|
const line = state.doc.lineAt(pos)
|
||||||
|
const followingText = state.sliceDoc(pos, line.to)
|
||||||
|
const matches = followingText.match(/^(\s+)/)
|
||||||
|
return matches ? matches[1].length : 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// move the cursor past any whitespace on the new line
|
||||||
|
const pos =
|
||||||
|
from + insert.length + countWhitespaceAfterPosition(from)
|
||||||
|
|
||||||
handled = true
|
handled = true
|
||||||
|
|
||||||
return {
|
return {
|
||||||
changes: { from, insert },
|
changes: { from, insert },
|
||||||
range: EditorSelection.cursor(from + insert.length),
|
range: EditorSelection.cursor(pos),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -231,4 +231,20 @@ describe('<CodeMirrorEditor/> lists in Rich Text mode', function () {
|
||||||
|
|
||||||
cy.get('.cm-content').should('have.text', [' first', ' second'].join(''))
|
cy.get('.cm-content').should('have.text', [' first', ' second'].join(''))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('positions the cursor after creating a new line with leading whitespace', function () {
|
||||||
|
const content = [
|
||||||
|
'\\begin{itemize}',
|
||||||
|
'\\item foo bar',
|
||||||
|
'\\end{itemize}',
|
||||||
|
].join('\n')
|
||||||
|
mountEditor(content)
|
||||||
|
|
||||||
|
cy.get('.cm-line').eq(0).as('line')
|
||||||
|
cy.get('@line').click()
|
||||||
|
cy.get('@line').type('{leftArrow}'.repeat(4))
|
||||||
|
cy.get('@line').type('{enter}baz')
|
||||||
|
|
||||||
|
cy.get('.cm-content').should('have.text', [' foo', ' bazbar'].join(''))
|
||||||
|
})
|
||||||
})
|
})
|
||||||
|
|
Loading…
Reference in a new issue