The renderer (shared by both engines) is now lossless: synthesized glue carries the original text it replaced (ekp-glue), soft line breaks carry the whitespace swallowed around the break (ekp-soft-break), break hyphens are marked (ekp-soft-hyphen), and paragraph-edge whitespace survives as zero-display ekp-hidden text. Orphaned ekp--combine-glues-and-boxes / ekp--interleave removed. New ekp-region.el: - ekp-justify-region / ekp-unjustify-region: in-place justification with exact structural restore (character- and property-exact), robust to edits made while justified - ekp-auto-justify-mode: keeps the buffer justified at the window width; debounced re-flow on window resize, incremental per-paragraph re-justification after edits (served by the paragraph cache) - fix found in live GUI testing: buffer-local members of window-size-change-functions receive the WINDOW as argument and may run with an unrelated buffer current; the handler now resolves window and buffer explicitly (regression test included) Tests: 47 ERT (36 core + 11 region) passing; 300-case fuzz 0 failures (C/elisp parity unchanged); byte-compile clean with error-on-warn. Verified interactively in GUI Emacs: justified at 1403px maximized, auto-reflowed to 614px on frame resize. docs: interactive-use section in readme.md / readme_zh.md ci: byte-compile list includes ekp-region.el Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| ekp-bench.el | ||
| ekp-demo.el | ||
| ekp-fuzz.el | ||
| ekp-region-tests.el | ||
| ekp-tests.el | ||
| run-tests.sh | ||
| text-de_DE.txt | ||
| text-en_US.txt | ||
| text-fr.txt | ||
| text-zh2-en_US.txt | ||
| text-zh-en_US.txt | ||
| text-zh.txt | ||