diff options
| author | Craig Jennings <c@cjennings.net> | 2026-07-18 16:00:11 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-07-18 16:00:11 -0500 |
| commit | d2742cead6539aa343fe2564fd8753ce2671345f (patch) | |
| tree | 0f546a6f2a634b139d2cc53808d2326de32242a1 /modules | |
| parent | 18dbd316ef55bed3418bd94407426f18ef1b01a0 (diff) | |
| download | dotemacs-d2742cead6539aa343fe2564fd8753ce2671345f.tar.gz dotemacs-d2742cead6539aa343fe2564fd8753ce2671345f.zip | |
fix(music): unstick arrows and number placement at the playlist top
The playlist header is a multi-line overlay string anchored at buffer position 1. With point on the top row, next-line's visual motion stepped through the header's screen lines. Those all map back to position 1, so arrows never moved point. The buffer now moves by logical lines (each row is one), which skips the header display entirely.
The same shared anchor put row 1's number above the header instead of beside its track: both overlay strings sit at position 1 and the number rendered first. Number overlays now outrank the header's priority, so the number lands next to its own row.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/music-config.el | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/modules/music-config.el b/modules/music-config.el index e9f7c2bb..10aa1019 100644 --- a/modules/music-config.el +++ b/modules/music-config.el @@ -394,6 +394,11 @@ debounce timer can outlive the playlist buffer." (let ((ov (make-overlay (line-beginning-position) (1+ (line-beginning-position))))) (overlay-put ov 'cj-music-row-number t) + ;; Outrank the header overlay (priority 100): both anchor + ;; strings at position 1 on row 1, and without this the + ;; row's number renders above the header block instead of + ;; beside its own track. + (overlay-put ov 'priority 200) ;; The cursor property makes redisplay draw the cursor ON ;; the number when point sits at the row start; without it ;; the cursor lands after the before-string, on the @@ -460,7 +465,13 @@ inserts or kills into one renumber pass." ;; album art (pairs with the row-number prefixes). (hl-line-mode 1) ;; Gutter cursor: point lives at the row start (the number column). - (add-hook 'post-command-hook #'cj/music--pin-point-to-bol nil t)) + (add-hook 'post-command-hook #'cj/music--pin-point-to-bol nil t) + ;; Logical-line motion: the multi-line header overlay string at + ;; position 1 otherwise absorbs next-line from the top row (vertical + ;; motion walks the header's screen lines, which all map back to the + ;; same buffer position, so arrows look dead). Rows are one logical + ;; line each; visual movement buys nothing here. + (setq-local line-move-visual nil)) (cj/music--renumber-rows buffer) ;; Set this as the current EMMS playlist buffer (setq emms-playlist-buffer buffer) |
