From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: John Shahid Newsgroups: gmane.emacs.devel Subject: Re: Few enhancements to ansi-term Date: Tue, 30 Apr 2019 13:23:52 -0400 Message-ID: <87v9yvz9sn.fsf@gmail.com> References: <87wojbz9x9.fsf@gmail.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="95472"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: mu4e 1.1.0; emacs 27.0.50 To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Apr 30 19:30:31 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1hLWaM-000OiE-QO for ged-emacs-devel@m.gmane.org; Tue, 30 Apr 2019 19:30:31 +0200 Original-Received: from localhost ([127.0.0.1]:50732 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hLWaL-00072c-Px for ged-emacs-devel@m.gmane.org; Tue, 30 Apr 2019 13:30:29 -0400 Original-Received: from eggs.gnu.org ([209.51.188.92]:47371) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hLWU1-0002F9-55 for emacs-devel@gnu.org; Tue, 30 Apr 2019 13:23:58 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hLWTz-0001xE-TF for emacs-devel@gnu.org; Tue, 30 Apr 2019 13:23:57 -0400 Original-Received: from mail-qt1-x835.google.com ([2607:f8b0:4864:20::835]:34596) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hLWTz-0001wg-LA for emacs-devel@gnu.org; Tue, 30 Apr 2019 13:23:55 -0400 Original-Received: by mail-qt1-x835.google.com with SMTP id j6so17174885qtq.1 for ; Tue, 30 Apr 2019 10:23:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=references:user-agent:from:to:subject:in-reply-to:date:message-id :mime-version; bh=Ucuz2MjlQL7L/6lMN1oHMy0aQquwuk4SSj/r91rSKPM=; b=DfnHZO3wj2chlV9cyNw6c7LG233TZJXQ7qSkwU+04ei3n2lvm/fju8+njRZmIrdnRg Xg14SdbgynbfJ0O9FGbg/nd0n6q0xsjJYGelSImdfYrucy5TFcHLY6Hxix5f9G04jN0C vxJfSI7rZle3BHcht4yy3w+QXtIFTFERtEkxNg1bbKjcUEB8XXld+2UfIyRsMPEJDiKJ ZJK9P0vXTn22K4jrC2k0Y3ERmiDHjOe/YQ2w+cERe0MhHEp06rZJBAVJVsg5lUxClMj+ WC0wfMyegF8D2ChUCPnz00OAGkquj5JYu8V8swpErV6POt4Lady+SaD/ocPvb9oufWkd bqAA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:references:user-agent:from:to:subject :in-reply-to:date:message-id:mime-version; bh=Ucuz2MjlQL7L/6lMN1oHMy0aQquwuk4SSj/r91rSKPM=; b=SavBmiVrEGQHV5JLSKzB0nIKKVwqR55wMviIl28XpN+GXD0s9MYsBgECVNXl1FQMka 4vqjvr13xybNwe8be9qgwddzQqzbIzhkcGFRQqnxtoPbhvxPEzIKWzdyQRDsab4znwK9 JDDebjxHlVU28nf1aeyHVgKwraqgGq/44hc3CGiyuXn8fj8t/l7D2OApVs3uLZYP+i/d f1mUQlf1HduZDn2iglVy2wiJVdtLZuvL1t0YcxCrfOE+K8TYREiyxZ86EoQNNIgL+cdW mVTTob+tKEWksl4z9l6O6MGliF+S2kDTkVSvC/EximYUQs6ADBTUApbk7LmPlUfV3Gs7 B+QA== X-Gm-Message-State: APjAAAX9DRUyYhEstAgFjSIclwENtps40dqT/4aX+ov8k41Ge1AagyH2 GIkpaPplqecL+q8Auc9Ev0BnHjhw X-Google-Smtp-Source: APXvYqx6aU54ipsseDopb5j6vC/l/ZpYi7gMTgFkwU/u8Y/qqbKvk4vpXPHcevNvC09LpERZuTkw8g== X-Received: by 2002:ac8:2dc6:: with SMTP id q6mr31794115qta.7.1556645034761; Tue, 30 Apr 2019 10:23:54 -0700 (PDT) Original-Received: from amun (cpe-104-162-85-46.nyc.res.rr.com. [104.162.85.46]) by smtp.gmail.com with ESMTPSA id 62sm11463356qtf.89.2019.04.30.10.23.53 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 30 Apr 2019 10:23:53 -0700 (PDT) In-reply-to: <87wojbz9x9.fsf@gmail.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2607:f8b0:4864:20::835 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:236062 Archived-At: --=-=-= Content-Type: text/plain Apologies, I forgot to attach the patches I am using locally to fix those issues. --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Fix-setting-and-unsetting-scroll-with-delete.patch >From 174673f0d98b1042ef10a3307bc3956c17b41100 Mon Sep 17 00:00:00 2001 From: John Shahid Date: Mon, 29 Apr 2019 13:53:38 -0400 Subject: [PATCH] Fix setting and unsetting scroll-with-delete * lisp/term.el (term-set-scroll-region): Do not set term-scroll-with-delete when the region is set to the height of the terminal. * lisp/term.el (term-reset-terminal): Reset term-scroll-with-delete. * test/lisp/term-tests.el (term-scrolling-region): Add more tests to term mode handle scroll region properly. --- lisp/term.el | 5 +-- test/lisp/term-tests.el | 78 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 80 insertions(+), 3 deletions(-) diff --git a/lisp/term.el b/lisp/term.el index d69ab94b7a..1fe27da181 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -1174,7 +1174,7 @@ term-reset-size (setq term-start-line-column nil) (setq term-current-row nil) (setq term-current-column nil) - (term-set-scroll-region 0 height) + (term-set-scroll-region 0 (1- height)) ;; `term-set-scroll-region' causes these to be set, we have to ;; clear them again since we're changing point (Bug#30544). (setq term-start-line-column nil) @@ -3215,6 +3215,7 @@ term-reset-terminal (setq term-current-column 1) (setq term-scroll-start 0) (setq term-scroll-end term-height) + (setq term-scroll-with-delete nil) (setq term-insert-mode nil) ;; FIXME: No idea why this is here, it looks wrong. --Stef (setq term-ansi-face-already-done nil)) @@ -3439,7 +3440,7 @@ term-set-scroll-region (setq term-scroll-with-delete (or (term-using-alternate-sub-buffer) (not (and (= term-scroll-start 0) - (= term-scroll-end term-height))))) + (= term-scroll-end (1- term-height)))))) (term-move-columns (- (term-current-column))) (term-goto 0 0)) diff --git a/test/lisp/term-tests.el b/test/lisp/term-tests.el index 9f5dcd559e..b0b9a11974 100644 --- a/test/lisp/term-tests.el +++ b/test/lisp/term-tests.el @@ -119,7 +119,83 @@ term-test-screen-from-input line4\r line5\r line6\r -")))) +"))) + + ;; test reverse scrolling + (should (equal "line1 +line7 +line6 +line2 +line5" + (term-test-screen-from-input 40 5 + '("\e[0;0H" + "\e[J" + "line1\r +line2\r +line3\r +line4\r +line5" + "\e[2;4r" + "\e[2;0H" + "\e[2;0H" + "\eMline6" + "\e[2;0H" + "\eMline7")))) + + ;; test scrolling down + (should (equal "line1 +line3 +line4 +line7 +line5" + (term-test-screen-from-input 40 5 + '("\e[0;0H" + "\e[J" + "line1\r +line2\r +line3\r +line4\r +line5" + "\e[2;4r" + "\e[2;0H" + "\e[4;5H" + "\n\rline7")))) + + ;; setting the scroll region to the entire height should not turn on + ;; term-scroll-with-delete + (should (equal "line1 +line2 +line3 +line4 +line5 +line6" + (term-test-screen-from-input 40 5 + '("\e[1;5r" + "line1\r +line2\r +line3\r +line4\r +line5\r +line6")))) + + ;; reset should reset term-scroll-with-delete + (should (equal "line1 +line2 +line3 +line4 +line5 +line6 +line7" + (term-test-screen-from-input 40 5 + '("\e[2;5r" ;set the region + "\ec" ;reset + "line1\r +line2\r +line3\r +line4\r +line5\r +line6\r +line7"))))) (ert-deftest term-set-directory () (let ((term-ansi-at-user (user-real-login-name))) -- 2.21.0 --=-=-= Content-Type: text/x-patch Content-Disposition: attachment; filename=0001-Prevent-accidental-edits-in-the-ansi-term-buffer-fro.patch >From 6b490f9419e59adb7287b175c2bfca16acc8eb77 Mon Sep 17 00:00:00 2001 From: John Shahid Date: Sun, 28 Apr 2019 15:59:50 -0400 Subject: [PATCH] Prevent accidental edits in the ansi-term buffer from breaking resizing * lisp/term.el (term-unwrap-line, term-emulate-terminal): Add rear-nonsticky text property to the newlines used for line wrapping. --- lisp/term.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/lisp/term.el b/lisp/term.el index b5949c4600..d69ab94b7a 100644 --- a/lisp/term.el +++ b/lisp/term.el @@ -2935,7 +2935,8 @@ term-emulate-terminal (delete-region (point) (line-end-position)) (term-down 1 t) (term-move-columns (- (term-current-column))) - (put-text-property (1- (point)) (point) 'term-line-wrap t) + (add-text-properties (1- (point)) (point) + '(term-line-wrap t rear-nonsticky t)) (setq decoded-substring (substring decoded-substring (- term-width old-column))) (setq old-column 0))) @@ -3754,7 +3755,8 @@ term-unwrap-line (when (not (bolp)) (let ((old-point (point))) (insert-before-markers ?\n) - (put-text-property old-point (point) 'term-line-wrap t)))) + (add-text-properties old-point (point) + '(term-line-wrap t rear-nonsticky t))))) (defun term-erase-in-line (kind) (when (= kind 1) ;; erase left of point -- 2.21.0 --=-=-=--