Only decorate itemize end line when no other text on line (#27601)

GitOrigin-RevId: 6c6b3cfe99cfec4b09476e15adc2f0758b033865
This commit is contained in:
Alf Eaton
2025-08-06 12:06:44 +01:00
committed by Copybot
parent 79adb3a9d2
commit 9dd5eda171
2 changed files with 21 additions and 12 deletions

View File

@@ -86,6 +86,7 @@ import {
mathAncestorNode,
parseMathContainer,
} from '../../utils/tree-operations/math'
import { lineContainsOnlyNode } from './utils/line'
type Options = {
previewByPath: (path: string) => PreviewPath | null
@@ -325,14 +326,20 @@ export const atomicDecorations = (options: Options) => {
!selectionIntersects(state.selection, end) &&
getListItems(nodeRef.node).length > 0 // not empty
) {
decorations.push(
Decoration.replace({
block: true,
}).range(begin.from, begin.to),
Decoration.replace({
block: true,
}).range(end.from, end.to)
)
if (lineContainsOnlyNode(beginLine, beginNode)) {
decorations.push(
Decoration.replace({
block: true,
}).range(begin.from, begin.to)
)
}
if (lineContainsOnlyNode(endLine, endNode)) {
decorations.push(
Decoration.replace({
block: true,
}).range(end.from, end.to)
)
}
}
}
} else if (nodeRef.type.is('TabularEnvironment')) {
@@ -904,10 +911,7 @@ export const atomicDecorations = (options: Options) => {
const line = state.doc.lineAt(nodeRef.from)
const lineContainsOnlyNode =
line.text.trim().length === nodeRef.to - nodeRef.from
if (lineContainsOnlyNode) {
if (lineContainsOnlyNode(line, nodeRef)) {
const Widget = state.readOnly
? GraphicsWidget
: EditableGraphicsWidget

View File

@@ -0,0 +1,5 @@
import { Line } from '@codemirror/state'
import { SyntaxNodeRef } from '@lezer/common'
export const lineContainsOnlyNode = (line: Line, nodeRef: SyntaxNodeRef) =>
line.text.trim().length === nodeRef.to - nodeRef.from