branch: externals/coterm
commit e268359ffc70d7fcbce6e55b00d15d857850ee6f
Author: m <>
Commit: m <>
Account for home marker reposition when clearing screen
---
coterm.el | 22 ++++++++++++++++------
1 file changed, 16 insertions(+), 6 deletions(-)
diff --git a/coterm.el b/coterm.el
index abb3c83..4e0b424 100644
--- a/coterm.el
+++ b/coterm.el
@@ -519,12 +519,22 @@ region."
(if row2
(progn (coterm--t-goto row2 col2) (point))
(point-max)))
- (when (eolp)
- (let ((opoint (point)))
- (skip-chars-backward " ") (delete-region (point) opoint)))
- (when (eobp)
- (let ((opoint (point)))
- (skip-chars-backward "\n") (delete-region (point) opoint)))
+ ;; Delete resulting trailing whitespace. This may move the home marker under
+ ;; some circumstances ((coterm--t-delete-region 0 0), for example), so adjust
+ ;; it afterwards.
+ (let* ((home coterm--t-home-marker)
+ (old-home (marker-position home)))
+ (when (eolp)
+ (let ((opoint (point)))
+ (skip-chars-backward " ") (delete-region (point) opoint)))
+ (when (eobp)
+ (let ((opoint (point)))
+ (skip-chars-backward "\n") (delete-region (point) opoint)))
+ (unless (= old-home home)
+ (cl-incf coterm--t-home-offset (- old-home home))
+ (goto-char home)
+ (forward-line 0)
+ (set-marker home (point))))
(setq coterm--t-pmark-in-sync nil))
(defun coterm--t-open-space (proc-filt process newlines spaces)