[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/coterm 753fba8 21/80: Refactor line deletion and insert
From: |
ELPA Syncer |
Subject: |
[elpa] externals/coterm 753fba8 21/80: Refactor line deletion and insertion |
Date: |
Wed, 13 Oct 2021 18:57:28 -0400 (EDT) |
branch: externals/coterm
commit 753fba82e630eb2ece5cb603e3ec9b91a85a4219
Author: m <>
Commit: m <>
Refactor line deletion and insertion
---
coterm.el | 67 +++++++++++++++++++++++++++++++++++----------------------------
1 file changed, 37 insertions(+), 30 deletions(-)
diff --git a/coterm.el b/coterm.el
index e734035..d2329a0 100644
--- a/coterm.el
+++ b/coterm.el
@@ -62,26 +62,40 @@ In sync with variables `coterm--t-home-marker',
(setq coterm--t-row (1- coterm--t-height))
(coterm--t-normalize-home-offset))))
-(defun coterm--t-point (row col)
- "Return position that approximates ROW and COL."
+(defun coterm--t-goto (row col)
+ "Move point to a position that approximates ROW and COL.
+Return non-nil if the position was actually reached."
+ (goto-char coterm--t-home-marker)
+ (and
+ (zerop (forward-line
+ (+ coterm--t-home-offset row)))
+ (not (eobp))
+ (<= col (move-to-column col))))
+
+(defun coterm--t-delete-region (row1 col1 &optional row2 col2)
+ "Delete text betewwn two positions.
+Deletes resulting trailing whitespace as well. ROW1, COL1, ROW2
+and COL2 specify the two positions. ROW2 and COL2 can be nil, in
+which case `point-max' is assumed"
(save-excursion
- (goto-char coterm--t-home-marker)
- (and
- (zerop (forward-line
- (+ coterm--t-home-offset row)))
- (not (eobp))
- (move-to-column col))
- (point)))
-
-(defun coterm--t-delete-region (row1 col1 row2 col2)
- (delete-region (coterm--t-point row1 col1)
- (coterm--t-point row2 col2))
+ (coterm--t-goto row1 col1)
+ (let ((opoint (point)))
+ (delete-region opoint
+ (if row2
+ (progn (coterm--t-goto row2 col2) (point))
+ (point-max)))
+ (when (eolp)
+ (skip-chars-backward " ")
+ (delete-region opoint (setq opoint (point))))
+ (when (eobp)
+ (skip-chars-backward "\n")
+ (delete-region (point) opoint))))
(setq coterm--t-pmark-in-sync nil))
(defun coterm--t-clear-region (proc-filt process row1 col1 row2 col2)
(save-excursion
- (let ((p1 (coterm--t-point row1 col1))
- (p2 (coterm--t-point row2 col2))
+ (let ((p1 (progn (coterm--t-goto row1 col1) (point)))
+ (p2 (progn (coterm--t-goto row2 col2) (point)))
row col h)
(if (> p2 p1)
(setq row row1 col col1
@@ -94,7 +108,7 @@ In sync with variables `coterm--t-home-marker',
(defun coterm--t-open-space (proc-filt process row col height width)
(save-excursion
- (goto-char (coterm--t-point row col))
+ (coterm--t-goto row col)
(unless (eobp)
(set-marker (process-mark process) (point))
(funcall
@@ -206,15 +220,9 @@ point to an unreachable location, locate PMARK as close to
it as
possible and return nil. Otherwise, locate PMARK exactly and
return t."
(or coterm--t-pmark-in-sync
- (save-excursion
- (goto-char coterm--t-home-marker)
- (setq coterm--t-pmark-in-sync
- (prog1
- (and
- (zerop (forward-line
- (+ coterm--t-home-offset coterm--t-row)))
- (bolp)
- (<= coterm--t-col (move-to-column coterm--t-col)))
+ (setq coterm--t-pmark-in-sync
+ (save-excursion
+ (prog1 (coterm--t-goto coterm--t-row coterm--t-col)
(set-marker pmark (point)))))))
;; Moves pmark and inserts
@@ -386,7 +394,7 @@ initialize it sensibly."
(?\[
(pcase (aref string (1- ctl-end))
(?m ; Let `comint-output-filter-functions' handle this
- (pass-through))
+ (ins))
(char
(setq ctl-params (mapcar #'string-to-number
(split-string ctl-params ";")))
@@ -416,15 +424,14 @@ initialize it sensibly."
(dirty))
;; \E[J - clear to end of screen (terminfo: ed, clear)
((and ?J (guard (eq 0 (car ctl-params))))
- (delete-region
- (coterm--t-point coterm--t-row coterm--t-col)
- (point-max))
+ (coterm--t-delete-region coterm--t-row coterm--t-col)
(dirty))
((and ?J (guard (eq 1 (car ctl-params))))
(coterm--t-clear-region
proc-filt process 0 0 coterm--t-row coterm--t-col))
(?J
- (delete-region (coterm--t-point 0 0) (point-max))
+ ;; TODO
+ (coterm--t-delete-region 0 0)
(dirty))
(?K ;; \E[K - clear to end of line (terminfo: el, el1)
(coterm--t-clear-region
- [elpa] externals/coterm e22fe83 17/80: Adjust column after resizing window, (continued)
- [elpa] externals/coterm e22fe83 17/80: Adjust column after resizing window, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 586ce4e 20/80: Delete off-screen rows when scrolling up, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 7b1e001 01/80: Initial commit, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm a983b5e 02/80: New function for approximately moving pmark, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 0647615 04/80: Plug marker leak, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 044b03e 06/80: Simplify, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm c48515c 11/80: Support \e[4h and \e[4l for insert mode, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm ab1dcd4 14/80: Fix typo, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm ba651c6 15/80: Fix negative and too high column positions, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 2403460 16/80: Make all coterm-t-* variables private, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 753fba8 21/80: Refactor line deletion and insertion,
ELPA Syncer <=
- [elpa] externals/coterm 9d532fb 22/80: Refactor some more, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm e21bb54 18/80: Major refactor and started scroll region, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 4a23ae2 23/80: Further refactor some more, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 08cf379 19/80: Minor fixes, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 9e7720b 37/80: Use save-excursion more sparingly, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 4943e16 41/80: Footer and header, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm d6912da 42/80: Support sequences \eE[E, F and G (pacman uses them), ELPA Syncer, 2021/10/13
- [elpa] externals/coterm 71d2dc1 30/80: Implement user-facing variables and minor mode, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm dfebb62 46/80: Add comint output filter function buffer locally, ELPA Syncer, 2021/10/13
- [elpa] externals/coterm bd103f9 56/80: [auto-char] Fix searching in less, ELPA Syncer, 2021/10/13