diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-03 06:56:10 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-03 06:56:10 -0500 |
| commit | 61ac489b00b26f8082806c28bfc7c6f1fd5573d8 (patch) | |
| tree | 07fb51785e575623d2c9f3ec90ed280540a9495b /modules/prog-shell.el | |
| parent | 73f4e98dceee4301b8962b202a126d0c8e132db8 (diff) | |
| download | dotemacs-61ac489b00b26f8082806c28bfc7c6f1fd5573d8.tar.gz dotemacs-61ac489b00b26f8082806c28bfc7c6f1fd5573d8.zip | |
fix(line-paragraph): join-line-or-region strands space on next line
The region branch's `(while (< (point) end) (join-line 1))` ran one iteration too many. After the final in-region join, point sat just before the end marker, so the loop fired once more. That extra `join-line 1` consumed the next line's preceding newline and replaced it with a space. Then `(goto-char end)` + `(newline)` reinserted a newline at the original end position, before the inserted space, so the space ended up stranded at BOL of the next line.
I replaced the position-based loop with `count-lines` + `dotimes` to do exactly the right number of joins. I also swapped the trailing `(newline)` for `(forward-line 1)`. The bullet-list use case now lands directly on the next existing line with no blank gap.
The trailing-newline change ripples to `cj/join-paragraph` (which delegates here), so paragraphs now also stop adding a trailing newline when the input lacks one. `require-final-newline` handles file-end discipline on save anyway.
I added 3 new tests that fail against the old loop and pass against the fix. I also updated 11 existing tests whose assertions baked in the old trailing-newline behavior. While in there I wrapped the `cj/custom-keymap` defvar stub in `eval-and-compile` in both test files. The bare defvar wasn't evaluated at byte-compile time, so the `require` of `custom-line-paragraph` would hit a void symbol when the validate-el hook ran.
Diffstat (limited to 'modules/prog-shell.el')
0 files changed, 0 insertions, 0 deletions
