He probado tanto Chrome 96.0.4664.55 como Firefox 94.0.1. CodeMirror 5.48.2
La situación que encontré:
Establezca la altura de CodeMirror, como:
.CodeMirror { height: 200px; }
luego agregue widgets en el bucle:
let addLineWidgetWithType = (line, addType) => { let widgets = cm.lineInfo(line).widgets if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].node.className.includes(addType)) return false } } let node = document.createElement('hr') node.className = addType let lineWidget = cm.addLineWidget(line, node, { above: true }) lineWidget.changed() } let removeLineWidgets = (line) => { let widgets = cm.lineInfo(line).widgets if (!widgets) return for (var i = 0; i < widgets.length; ++i) { widgets[i].clear() } } let checkLine = (cm) => { for (var line = 0; line <= cm.lastLine(); line++) { removeLineWidgets(line) if (line % 2 === 0) { addLineWidgetWithType(line, 'test') } } } const content = ` test test test test test ` var cm = CodeMirror(document.querySelector('.editorContainer'), { theme:'default', lineNumbers: true, gutters: ['CodeMirror-linenumbers','CodeMirror-other-make'], value: content, }) cm.on('change', (cm, change) => { checkLine(cm) }) checkLine(cm) cm.focus() cm.setCursor(cm.lastLine(), 0)
Luego, cada edición en la parte inferior del documento se desplazará hacia arriba, haciendo que la línea donde el cursor sea invisible.
Aquí hay una pequeña demostración . Simplemente coloque el cursor después del último símbolo, presione Entrar y comience a escribir.