branch: externals/coterm commit f48ef18d1c26558e185d33984004a29767953639 Author: m <> Commit: m <>
Fix \e[M and \e[L outside scrolling region --- coterm.el | 44 ++++++++++++++++++++++++-------------------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/coterm.el b/coterm.el index 75b343e..2e0029e 100644 --- a/coterm.el +++ b/coterm.el @@ -426,27 +426,31 @@ initialize it sensibly." coterm--t-row coterm--t-col coterm--t-row coterm--t-width)) (?L ;; \E[L - insert lines (terminfo: il, il1) - (let* - ((where (max coterm--t-row coterm--t-scroll-beg)) - (lines (+ (- coterm--t-row where) (car-or-1)))) - ;; Remove from bottom - (coterm--t-delete-region - (- coterm--t-scroll-end lines) 0 - coterm--t-scroll-end 0) - ;; Insert at position - (coterm--t-goto where 0) - (coterm--t-open-space proc-filt process lines 0))) + (when (<= coterm--t-scroll-beg coterm--t-row + (1- coterm--t-scroll-end)) + (let ((lines + (min (- coterm--t-scroll-end coterm--t-row) + (car-or-1)))) + ;; Remove from bottom + (coterm--t-delete-region + (- coterm--t-scroll-end lines) 0 + coterm--t-scroll-end 0) + ;; Insert at position + (coterm--t-goto coterm--t-row 0) + (coterm--t-open-space proc-filt process lines 0)))) (?M ;; \E[M - delete lines (terminfo: dl, dl1) - (let ((lines - (min (car-or-1) - (max 0 (- coterm--t-scroll-end coterm--t-row))))) - ;; Insert at bottom - (coterm--t-goto coterm--t-scroll-end 0) - (coterm--t-open-space proc-filt process lines 0) - ;; Remove at position - (coterm--t-delete-region - coterm--t-row 0 - (+ coterm--t-row lines) 0))) + (when (<= coterm--t-scroll-beg coterm--t-row + (1- coterm--t-scroll-end)) + (let ((lines + (min (- coterm--t-scroll-end coterm--t-row) + (car-or-1)))) + ;; Insert at bottom + (coterm--t-goto coterm--t-scroll-end 0) + (coterm--t-open-space proc-filt process lines 0) + ;; Remove at position + (coterm--t-delete-region + coterm--t-row 0 + (+ coterm--t-row lines) 0)))) (?P ;; \E[P - delete chars (terminfo: dch, dch1) (coterm--t-delete-region coterm--t-row coterm--t-col