Line up the wrapped lines of a quote #340

Merged
robbertbos merged 1 commit from worktree-text-editor-verbeteren into main 2026-09-19 14:28:05 +00:00
Owner

The second line of a wrapped quote sat 19.2px to the right of the first, and the first line jumped by that same amount the moment the caret left it.

NLDD reserves the width of the > with padding-left and pulls the first line back over it with a negative text-indent, so the marker hangs in a gutter. We hide that marker, so the pull-back has nothing to hang and only the first visual row moves left. Dropping the pull-back where the marker is hidden, while keeping the reserved padding, puts every row where the revealed state already put the text.

Measured on the built bundle, x of each visual row of a wrapping quote line:

before after
marker hidden 187 / 187 / 206.2 206.2 / 206.2 / 206.2
marker revealed 187 / 206.2 / 206.2 187 / 206.2 / 206.2

So the wrapped row lines up, and the jump on caret entry/exit is gone too.

!important is load-bearing here: NLDD writes the indent as an inline style, and author !important is the one thing that outranks it. The view plugin now rebuilds on selectionSet as well, because the caret decides whether the marker is on screen.

The second line of a wrapped quote sat 19.2px to the right of the first, and the first line jumped by that same amount the moment the caret left it. NLDD reserves the width of the `> ` with `padding-left` and pulls the first line back over it with a negative `text-indent`, so the marker hangs in a gutter. We hide that marker, so the pull-back has nothing to hang and only the first visual row moves left. Dropping the pull-back where the marker is hidden, while keeping the reserved padding, puts every row where the revealed state already put the text. Measured on the built bundle, x of each visual row of a wrapping quote line: | | before | after | | --- | --- | --- | | marker hidden | 187 / 187 / 206.2 | 206.2 / 206.2 / 206.2 | | marker revealed | 187 / 206.2 / 206.2 | 187 / 206.2 / 206.2 | So the wrapped row lines up, and the jump on caret entry/exit is gone too. `!important` is load-bearing here: NLDD writes the indent as an inline style, and author `!important` is the one thing that outranks it. The view plugin now rebuilds on `selectionSet` as well, because the caret decides whether the marker is on screen.
robbertbos force-pushed worktree-text-editor-verbeteren from 9a8c33c1bf
Some checks failed
CI / pre-commit (pull_request) Successful in 2m3s
CI / release-scripts (pull_request) Successful in 8s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 50s
security-scan / Python SAST (bandit) (pull_request) Successful in 29s
security-scan / JS SCA (npm audit) (pull_request) Successful in 33s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 22s
CI / frontend-test (pull_request) Successful in 4m42s
security-scan / SBOM (trivy) (pull_request) Successful in 15s
test-build / build (frontend) (pull_request) Successful in 2m8s
test-build / build (backend) (pull_request) Successful in 2m17s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 14m16s
CI / e2e (pull_request) Failing after 14m43s
to a6e0882534
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 13s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 18s
security-scan / JS SCA (npm audit) (pull_request) Successful in 20s
security-scan / Python SAST (bandit) (pull_request) Successful in 23s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 42s
test-build / build (frontend) (pull_request) Successful in 1m8s
CI / pre-commit (pull_request) Successful in 1m11s
CI / frontend-test (pull_request) Successful in 1m16s
test-build / build (backend) (pull_request) Successful in 1m16s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 2m51s
CI / e2e (pull_request) Successful in 4m55s
2026-09-05 11:32:48 +00:00
Compare
robbertbos force-pushed worktree-text-editor-verbeteren from a6e0882534
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 13s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 18s
security-scan / JS SCA (npm audit) (pull_request) Successful in 20s
security-scan / Python SAST (bandit) (pull_request) Successful in 23s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 42s
test-build / build (frontend) (pull_request) Successful in 1m8s
CI / pre-commit (pull_request) Successful in 1m11s
CI / frontend-test (pull_request) Successful in 1m16s
test-build / build (backend) (pull_request) Successful in 1m16s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 2m51s
CI / e2e (pull_request) Successful in 4m55s
to aa1edfec9e
Some checks failed
test-build / build (backend) (pull_request) Successful in 2m14s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Successful in 14m18s
CI / release-scripts (pull_request) Successful in 36s
CI / frontend-test (pull_request) Failing after 5m9s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 39s
security-scan / JS SCA (npm audit) (pull_request) Successful in 44s
security-scan / SBOM (trivy) (pull_request) Successful in 42s
CI / pre-commit (pull_request) Successful in 4m32s
security-scan / Python SAST (bandit) (pull_request) Successful in 45s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m2s
CI / backend-test (pull_request) Successful in 13m22s
test-build / build (frontend) (pull_request) Successful in 1m42s
2026-09-19 12:41:35 +00:00
Compare
robbertbos force-pushed worktree-text-editor-verbeteren from aa1edfec9e
Some checks failed
test-build / build (backend) (pull_request) Successful in 2m14s
test-build / build (pull_request) Successful in 0s
CI / e2e (pull_request) Successful in 14m18s
CI / release-scripts (pull_request) Successful in 36s
CI / frontend-test (pull_request) Failing after 5m9s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 39s
security-scan / JS SCA (npm audit) (pull_request) Successful in 44s
security-scan / SBOM (trivy) (pull_request) Successful in 42s
CI / pre-commit (pull_request) Successful in 4m32s
security-scan / Python SAST (bandit) (pull_request) Successful in 45s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 1m2s
CI / backend-test (pull_request) Successful in 13m22s
test-build / build (frontend) (pull_request) Successful in 1m42s
to 167b7a89b3
Some checks failed
CI / release-scripts (pull_request) Successful in 6s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 19s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / JS SCA (npm audit) (pull_request) Successful in 21s
security-scan / Python SAST (bandit) (pull_request) Successful in 28s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 48s
CI / frontend-test (pull_request) Failing after 1m13s
CI / pre-commit (pull_request) Successful in 1m27s
test-build / build (frontend) (pull_request) Successful in 1m10s
test-build / build (backend) (pull_request) Successful in 1m26s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 3m48s
CI / e2e (pull_request) Successful in 5m10s
2026-09-19 13:35:08 +00:00
Compare
robbertbos force-pushed worktree-text-editor-verbeteren from 167b7a89b3
Some checks failed
CI / release-scripts (pull_request) Successful in 6s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 19s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / JS SCA (npm audit) (pull_request) Successful in 21s
security-scan / Python SAST (bandit) (pull_request) Successful in 28s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 48s
CI / frontend-test (pull_request) Failing after 1m13s
CI / pre-commit (pull_request) Successful in 1m27s
test-build / build (frontend) (pull_request) Successful in 1m10s
test-build / build (backend) (pull_request) Successful in 1m26s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 3m48s
CI / e2e (pull_request) Successful in 5m10s
to 9a6650e0b8
All checks were successful
CI / release-scripts (pull_request) Successful in 6s
security-scan / SBOM (trivy) (pull_request) Successful in 11s
security-scan / Filesystem scan (trivy fs) (pull_request) Successful in 15s
security-scan / JS SCA (npm audit) (pull_request) Successful in 16s
security-scan / Python SAST (bandit) (pull_request) Successful in 21s
security-scan / Python SCA (pip-audit) (pull_request) Successful in 39s
test-build / build (frontend) (pull_request) Successful in 59s
CI / pre-commit (pull_request) Successful in 59s
CI / frontend-test (pull_request) Successful in 1m1s
test-build / build (backend) (pull_request) Successful in 1m9s
test-build / build (pull_request) Successful in 0s
CI / backend-test (pull_request) Successful in 2m25s
CI / e2e (pull_request) Successful in 4m24s
CI / release-scripts (push) Successful in 6s
security-scan / SBOM (trivy) (push) Successful in 9s
security-scan / Filesystem scan (trivy fs) (push) Successful in 16s
security-scan / JS SCA (npm audit) (push) Successful in 18s
security-scan / Python SAST (bandit) (push) Successful in 19s
security-scan / Python SCA (pip-audit) (push) Successful in 39s
CI / pre-commit (push) Successful in 1m2s
CI / frontend-test (push) Successful in 1m7s
publish-and-stage / build (frontend) (push) Successful in 1m10s
publish-and-stage / build (backend) (push) Successful in 1m25s
publish-and-stage / build (push) Successful in 0s
CI / backend-test (push) Successful in 2m34s
publish-and-stage / deploy-staging (push) Successful in 2m11s
CI / e2e (push) Successful in 4m29s
2026-09-19 13:48:07 +00:00
Compare
robbertbos deleted branch worktree-text-editor-verbeteren 2026-09-19 14:28:05 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
robbertbos/waggle!340
No description provided.