codemirror / dev

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

Initial view doesn't start from the first line when the document has long wrapped lines #1360

Closed mikecat closed 3 months ago

mikecat commented 3 months ago

Put this script to Try CodeMirror and press "Run":

import {basicSetup, EditorView} from "codemirror"

const text = `# Lorem ipsum

Lorem ipsum dolor sit amet fugiat labore do eu nostrud cupidatat sint dolore nisi dolore sunt elit. Aute voluptate excepteur sit et ullamco consequat incididunt est eu in Lorem minim laborum quis Lorem sunt Lorem deserunt. Nisi velit eiusmod tempor consectetur ad elit irure anim cillum quis reprehenderit non labore enim nisi est. Sint minim amet deserunt ut tempor ipsum et ullamco sunt consequat irure fugiat in quis esse voluptate fugiat laborum ea. Voluptate adipisicing eiusmod anim voluptate dolor veniam exercitation do dolor nostrud ad commodo incididunt aliquip officia ea culpa Lorem deserunt. Anim eu deserunt culpa aliquip id tempor.

Ut magna enim dolor velit aute adipisicing excepteur dolore cupidatat ea in nulla aliquip ipsum dolore veniam dolore deserunt. Minim, nisi pariatur eu cupidatat sit anim veniam velit cillum. Ullamco mollit veniam eiusmod reprehenderit non cillum incididunt consequat ea laboris reprehenderit enim reprehenderit duis enim ex dolore irure sit. Tempor enim aute laboris officia ipsum Lorem ipsum, nulla pariatur nostrud. Nisi sunt eu minim in ullamco minim non in, excepteur deserunt consequat dolore nostrud excepteur esse magna in consequat nulla magna.

Nulla sint duis dolor esse deserunt. Laborum mollit do nostrud Lorem reprehenderit ea minim fugiat aliqua quis. Quis magna velit laborum cillum pariatur quis consequat duis excepteur veniam eu sit, ea velit veniam. Magna consectetur do aute, ut. Cillum commodo sunt, ut laborum excepteur sint aute mollit. Exercitation enim sit fugiat pariatur tempor cupidatat ipsum consectetur aute reprehenderit eu esse officia ut commodo occaecat ea exercitation ex anim officia.

Labore incididunt aliqua deserunt aliqua pariatur laboris nostrud in quis ea magna. Id culpa, in ullamco do elit officia labore exercitation reprehenderit. Magna et Lorem duis excepteur nisi aliqua elit eu aliquip ea cillum magna esse officia cillum pariatur cupidatat aliquip ex do velit ex occaecat. Sint enim labore irure ea non exercitation mollit dolor minim laboris duis eu exercitation. Esse id consequat cillum adipisicing in aliquip dolor ea nostrud do sit veniam commodo ut cupidatat anim deserunt ea nulla pariatur ex. Laborum est ut excepteur ipsum adipisicing qui consequat elit sunt labore sit veniam aliqua et sunt. Nisi fugiat anim voluptate esse velit dolore anim nostrud ullamco.

Pariatur aliquip minim adipisicing excepteur Lorem ex tempor dolor amet enim. Tempor et, consequat do deserunt laboris do pariatur quis excepteur est laborum. Elit ullamco cillum fugiat elit veniam cillum irure duis consectetur sint velit ut nisi eiusmod in Lorem adipisicing ad velit excepteur. Occaecat deserunt nisi dolor officia reprehenderit labore ad magna id aliquip fugiat laborum quis do cupidatat ad voluptate dolor reprehenderit laborum excepteur. Voluptate duis pariatur est quis magna voluptate. Incididunt ut consectetur duis consectetur ullamco laboris dolor ea anim esse cupidatat sunt ipsum veniam.

Laborum minim deserunt pariatur nisi sunt eiusmod Lorem nisi excepteur anim irure cupidatat deserunt enim ex labore, adipisicing commodo culpa velit. Nostrud ut culpa ut nisi proident culpa eu consequat Lorem reprehenderit aliquip sint. Amet anim eiusmod esse consectetur elit esse quis duis amet mollit eiusmod aliqua exercitation id dolore incididunt aliquip. Aliquip aute esse cupidatat laboris cillum ipsum veniam ipsum officia ad mollit magna pariatur.

Reprehenderit sunt exercitation ullamco elit dolore minim velit incididunt dolore adipisicing cillum labore. Sit, non elit amet nisi amet esse quis ad et aliquip reprehenderit et labore fugiat cillum nulla. Aliquip voluptate id, do sit adipisicing exercitation excepteur sunt laborum nostrud culpa laborum nostrud.

Officia non do occaecat anim sit ut proident veniam ex qui adipisicing culpa aliquip occaecat proident labore sit. Excepteur ut sunt ea ipsum officia commodo est in est ullamco ut irure nostrud ad laboris. Sunt, ullamco id minim anim commodo reprehenderit et aliquip ex anim. Sit excepteur magna quis veniam culpa dolore eu elit qui eu occaecat labore sunt in eiusmod. Pariatur ea consectetur cillum adipisicing cillum irure amet commodo est nulla anim velit nulla fugiat quis ea culpa enim ad et incididunt reprehenderit esse. Magna consequat fugiat officia dolor tempor consequat commodo incididunt esse veniam nostrud commodo reprehenderit veniam aliqua. Consectetur excepteur veniam exercitation elit reprehenderit aliquip minim. Laborum elit incididunt proident id ex labore tempor incididunt eu consectetur, labore dolore consequat laboris culpa nostrud anim.

Non magna exercitation tempor sit aliqua occaecat. Id, pariatur sint consectetur ullamco tempor consectetur exercitation. Elit nisi amet sint pariatur magna nulla eiusmod officia ipsum proident anim nostrud. Deserunt do dolore cupidatat ut eu consequat eu ex cupidatat duis eu reprehenderit, eiusmod. Non amet incididunt nisi ad adipisicing cupidatat est duis culpa pariatur dolore mollit qui dolore veniam ea velit nisi non id anim. Incididunt esse veniam laboris eiusmod labore ullamco do sint sunt deserunt consequat in minim ut ullamco Lorem qui deserunt reprehenderit. Labore adipisicing minim eu reprehenderit aliquip aliqua eiusmod commodo consectetur deserunt qui eiusmod minim nostrud irure incididunt do excepteur velit sint.

Adipisicing nulla laboris aute consectetur fugiat duis cupidatat ut aliquip duis,. Nostrud ea sint, culpa aute quis exercitation non laboris veniam incididunt consequat.
`

new EditorView({
  doc: text,
  extensions: [basicSetup, EditorView.lineWrapping],
  parent: document.body
})

I expect that the 1st line is shown at the top of the editor, but actually the 3rd line is at the top.

screenshot

This happens on

on Windows 11 Home 23H2.

marijnh commented 3 months ago

Attached patch should help with this.