yjs / y-codemirror.next

Collaborative extensions for CodeMirror6
Other
159 stars 38 forks source link

Fix ribbon selection for full lines #26

Open jeffrafter opened 1 year ago

jeffrafter commented 1 year ago

https://github.com/yjs/y-codemirror.next/issues/8

This fixes the ribbon issue by opting to use marks even for each line (not full line styling) which allows a nested span to be used.

image

The only case this doesn't work is on blank lines (CM6 ignores decorations on content if the line is blank) which are still treated as line marks. To get these to show you'll need to style them:

 .cm-yLineSelection.cm-yLineSelection-empty {
  width: 12px;
}

I tried a couple of other approaches where you use only line decorations and style only the children using a color variable, but that led to these cases:

image

Which felt wrong for my app. So I use the line based approach instead. Note: the style variable --y-line-selection-color is declared at each line so you can approach this with CSS in your own app.