codemirror / dev

Development repository for the CodeMirror editor project
https://codemirror.net/
Other
5.94k stars 376 forks source link

Very long line editor glitch #1448

Closed FFFFFFFXXXXXXX closed 1 month ago

FFFFFFFXXXXXXX commented 1 month ago

Describe the issue

If I set the content of the editor to a single line containing more than 1_245_526 characters in firefox or more than 1_877_171 characters in chrome the cursor disappears.

Additionally in firefox with enough characters the cursor gets placed in a different position in the text than was clicked.

Reproduce:

  1. Go to https://codemirror.net/try/?example=Minimal%20editor
  2. paste the text from firefox.txt or chrome.txt depending on browser
  3. add a single character => on firefox the whole line is suddenly blank and in chrome the cursor is invisible

Additionally:

  1. Go to https://codemirror.net/try/?example=Minimal%20editor on firefox
  2. paste the text from chrome.txt
  3. go to the start of the line and click somewhere in the line => the cursor doesn't get placed where you clicked

Tested on:

Browser and platform

No response

Reproduction link

No response

marijnh commented 1 month ago

What is happening here is that the browser's CSS engine, which internally uses fixed-precision numbers, starts falling apart at this scale. CodeMirror has some (gnarly) scaling logic to make documents higher than this limit work, but it doesn't currently have any such strategy for lines wider than the limit.

FFFFFFFXXXXXXX commented 1 month ago

Thanks for the quick answer. Since this is more of a browser limitation should I close this issue?

marijnh commented 1 month ago

Attached patch adds a kludge to try and keep the actual pixel size of such lines small enough for the browser to be able to lay them out.

marijnh commented 1 month ago

Err, ignore that first patch link. That was just me committing in the wrong directory. The second one is the actual patch.

FFFFFFFXXXXXXX commented 1 month ago

I just noticed there was already a release that includes the patch - works perfectly. Just wanted to let you know I really appreciate your work and the quick response :)