branch: externals/coterm commit cf9217d0e0b38262bd9c1dddf1755555ed6582e0 Author: m <> Commit: m <>
Support \e[P and \e[@ --- coterm.el | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/coterm.el b/coterm.el index 1576873..46a5ff5 100644 --- a/coterm.el +++ b/coterm.el @@ -88,7 +88,11 @@ In sync with variables `coterm--t-home-marker', proc-filt process (concat (make-string height ?\n) (unless (eolp) - (make-string (+ width (if (= row 0) 0 col)) ?\s)))) + (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)))) (defun coterm--t-normalize-home-offset () @@ -391,7 +395,20 @@ initialize it sensibly." ;; Remove at position (coterm--t-delete-region coterm--t-row 0 - (+ coterm--t-row (car ctl-params)) 0)))))))))) + (+ coterm--t-row (car ctl-params)) 0)) + (?P ;; \E[P - delete chars (terminfo: dch, dch1) + (coterm--t-delete-region + coterm--t-row coterm--t-col + coterm--t-row (+ coterm--t-col + (max 1 (car ctl-params))))) + (?@ ;; \E[@ - insert spaces (terminfo: ich) + (let ((width (max 1 (car ctl-params)))) + (coterm--t-open-space + proc-filt process + coterm--t-row coterm--t-col + 0 width) + (cl-incf coterm--t-col width) + (dirty))))))))))) (cond ((setq match (string-match coterm-t-control-seq-prefix-regexp