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

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

[elpa] externals/coterm 9d532fb 22/80: Refactor some more


From: ELPA Syncer
Subject: [elpa] externals/coterm 9d532fb 22/80: Refactor some more
Date: Wed, 13 Oct 2021 18:57:29 -0400 (EDT)

branch: externals/coterm
commit 9d532fb28056687254cdb53fe353006a96daf5d0
Author: m <>
Commit: m <>

    Refactor some more
---
 coterm.el | 43 ++++++++++++++++++++++++++++++-------------
 1 file changed, 30 insertions(+), 13 deletions(-)

diff --git a/coterm.el b/coterm.el
index d2329a0..92694d2 100644
--- a/coterm.el
+++ b/coterm.el
@@ -103,24 +103,41 @@ which case `point-max' is assumed"
         (setq row row2 col col2
               h (- row1 row2)))
       (delete-region p1 p2)
-      (coterm--t-open-space proc-filt process row col h (abs (- col2 col1)))
+      (coterm--t-open-space-at-point
+       proc-filt process
+       h (cond ((> row2 row1) col2)
+               ((< row2 row1) col1)
+               (t (abs (- col2 col1)))))
       (setq coterm--t-pmark-in-sync nil))))
 
+(defun coterm--t-open-space-at-point (proc-filt process newlines spaces)
+  "Insert NEWLINES newlines and SPECES spaces at point.
+Insert them using PROC-FILT and PROCESS.  Afterwards, remove
+characters that were moved after the column specified by
+`coterm--t-width'."
+  (unless (eobp)
+    (set-marker (process-mark process) (point))
+    (funcall
+     proc-filt process
+     (concat (make-string newlines ?\n)
+             (unless (eolp)
+               (make-string spaces ?\s))))
+    ;; Delete chars that are after the width of the terminal
+    (goto-char (process-mark process))
+    (move-to-column coterm--t-width)
+    (delete-region (point) (progn (forward-line 1) (1- (point))))
+    (setq coterm--t-pmark-in-sync nil)))
+
 (defun coterm--t-open-space (proc-filt process row col height width)
+  "Open spce at position ROW and COL, preserving point.
+Use PROC-FILT and PROCESS to insert spaces and newlines.
+Whitespace is inserted such that the character at position ROW
+and COL is moved by HEIGHT rows down and WIDTH cols to the
+right."
   (save-excursion
     (coterm--t-goto row col)
-    (unless (eobp)
-      (set-marker (process-mark process) (point))
-      (funcall
-       proc-filt process
-       (concat (make-string height ?\n)
-               (unless (eolp)
-                 (make-string (+ width (if (= height 0) 0 col)) ?\s))))
-      ;; Delete chars that are after the width of the terminal
-      (goto-char (process-mark process))
-      (move-to-column coterm--t-width)
-      (delete-region (point) (progn (forward-line 1) (1- (point))))
-      (setq coterm--t-pmark-in-sync nil))))
+    (coterm--t-open-space-at-point proc-filt process height
+                                   (+ width (if (= height 0) 0 col)))))
 
 (defun coterm--t-normalize-home-offset ()
   (save-excursion



reply via email to

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