emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[nongnu] elpa/popon 61b54bea8c 12/15: Fix popon breaking when long lines


From: ELPA Syncer
Subject: [nongnu] elpa/popon 61b54bea8c 12/15: Fix popon breaking when long lines aren't truncated
Date: Sun, 22 May 2022 12:59:19 -0400 (EDT)

branch: elpa/popon
commit 61b54bea8c59be176fb4259edf58d50b4dcaf97a
Author: Akib Azmain Turja <akib@disroot.org>
Commit: Akib Azmain Turja <akib@disroot.org>

    Fix popon breaking when long lines aren't truncated
---
 popon.el | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/popon.el b/popon.el
index fce57b0fde..ba9163fa11 100644
--- a/popon.el
+++ b/popon.el
@@ -290,16 +290,23 @@ when LINE-BEGINNINGS was calculated.")
 (defun popon--make-overlays (framebuffer)
   "Make overlays to display FRAMEBUFFER on window."
   (let ((line-map nil))
-    (let ((i 0))
-      (dolist (line framebuffer)
-        (when (nth 1 line)
-          (let* ((key (cons (nth 4 line) (nth 5 line)))
-                 (pair (assoc key line-map)))
-            (unless pair
-              (setq pair (list key nil nil))
-              (push pair line-map))
-            (setf (cadr pair) (or (cadr pair) (nth 2 line)))
-            (push (cons (- i (nth 3 line)) (car line)) (caddr pair))))
+    (let ((i 0)
+          (lines-left framebuffer))
+      (while lines-left
+        (let ((line (pop lines-left)))
+          (when (nth 1 line)
+            (when (and (/= (char-before (nth 4 line)) ?\n))
+              (let ((ov (make-overlay (nth 4 line) (nth 4 line))))
+                (push ov (window-parameter nil 'popon-overlays))
+                (overlay-put ov 'window (selected-window))
+                (overlay-put ov 'after-string "\n")))
+            (let* ((key (cons (nth 4 line) (nth 5 line)))
+                   (pair (assoc key line-map)))
+              (unless pair
+                (setq pair (list key nil nil))
+                (push pair line-map))
+              (setf (cadr pair) (or (cadr pair) (nth 2 line)))
+              (push (cons (- i (nth 3 line)) (car line)) (caddr pair)))))
         (setq i (1+ i))))
     (dolist (block line-map)
       (let ((ov (make-overlay (caar block) (cdar block))))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]