From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Michal Nazarewicz Newsgroups: gmane.emacs.bugs Subject: bug#23843: [PATCH 2/3] Simplify =?UTF-8?Q?=E2=80=98delete-trailing-whitespace=E2=80=99?= by not treating \n as whitespace Date: Sat, 25 Jun 2016 00:14:44 +0200 Message-ID: <1466806485-15732-2-git-send-email-mina86@mina86.com> References: <1466806485-15732-1-git-send-email-mina86@mina86.com> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1466806528 29148 80.91.229.3 (24 Jun 2016 22:15:28 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 24 Jun 2016 22:15:28 +0000 (UTC) To: 23843@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jun 25 00:15:20 2016 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1bGZNc-0006dc-4t for geb-bug-gnu-emacs@m.gmane.org; Sat, 25 Jun 2016 00:15:16 +0200 Original-Received: from localhost ([::1]:47491 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bGZNb-0003Sn-E8 for geb-bug-gnu-emacs@m.gmane.org; Fri, 24 Jun 2016 18:15:15 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:39768) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bGZNS-0003Qa-C9 for bug-gnu-emacs@gnu.org; Fri, 24 Jun 2016 18:15:07 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bGZNO-0000zi-3D for bug-gnu-emacs@gnu.org; Fri, 24 Jun 2016 18:15:05 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:42365) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bGZNN-0000zY-VJ for bug-gnu-emacs@gnu.org; Fri, 24 Jun 2016 18:15:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1bGZNN-0000uN-OJ for bug-gnu-emacs@gnu.org; Fri, 24 Jun 2016 18:15:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michal Nazarewicz Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 24 Jun 2016 22:15:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 23843 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch Original-Received: via spool by 23843-submit@debbugs.gnu.org id=B23843.14668064953444 (code B ref 23843); Fri, 24 Jun 2016 22:15:01 +0000 Original-Received: (at 23843) by debbugs.gnu.org; 24 Jun 2016 22:14:55 +0000 Original-Received: from localhost ([127.0.0.1]:54696 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bGZNH-0000tU-7s for submit@debbugs.gnu.org; Fri, 24 Jun 2016 18:14:55 -0400 Original-Received: from mail-wm0-f53.google.com ([74.125.82.53]:37943) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1bGZNG-0000tG-7z for 23843@debbugs.gnu.org; Fri, 24 Jun 2016 18:14:54 -0400 Original-Received: by mail-wm0-f53.google.com with SMTP id r201so41796178wme.1 for <23843@debbugs.gnu.org>; Fri, 24 Jun 2016 15:14:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=sender:from:to:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=naU4u4tJ3xyryGL2UBlBuhHGHjBjRIi5Dj8TurMne8M=; b=j+ZnbwPPxvqij8OnSJrZ0TgeEwx7b7cDAZ+LM4bRHIxMGP16ZY8NVZo0V2mwrxumk6 U0JfmUbZjeJZU2FDVt/e5RaamvsRsWXEgeu87jyKaqutmbDL4sYwCvlnLQePiy3s7PW4 GCN71f0aHTouwjHATry7mbR9ZNbuv/13mXnum0UmIwlGD4Kpm/dd5QCltfCqJtquLz5O LxnmOXbmVd1t235tV0PEeymVn1zS+nOKaHh/DjBYGTFEfNbga38B7rBGH8TdCHFh2iO/ ApbqqfQ5dP44yDiJKwrgFn+yAoV8r3bei3YUbkuvzxpD+T1+EW53KcGIbNumixVHoVtf XHfA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:sender:from:to:subject:date:message-id :in-reply-to:references:mime-version:content-transfer-encoding; bh=naU4u4tJ3xyryGL2UBlBuhHGHjBjRIi5Dj8TurMne8M=; b=FHf0YQpju4HXlb9XmHLOpHGOA81L4dqfDZJlPsSt4KfAtvF/WRQL02REMFHYaCVW7A /a0pX/IAHrQr95/mTOhs5m8p894LZ5iIAD2c8LrBqUg7LtbcwwFxMvuynDz6e47lJyY7 4PEbHWmnJ0f5d7j9+hk5jmGESmd68ldV4qKCjttHsolakFkNDd69fCmtRW69rTTzGj0n 1eehvjaV4aked5OEfXj0LjKNaA8DCSTlBPgkjVE9k3//UikDU+vapOZ35ARPY7YEyiFX LD45G/0DHuYvceI3Az8O+xcsYkSGRCAsRiI7Y/ERDsDabacRzShhhb/4QKRh0KanAN4n D7Jg== X-Gm-Message-State: ALyK8tJoLuJHAeXYJCsf6B/pppbqdfQVANDXldmk1Ex0jg8GKj0SozlZWIzMm8v0Wo5KwLqF X-Received: by 10.194.97.201 with SMTP id ec9mr5578054wjb.117.1466806488570; Fri, 24 Jun 2016 15:14:48 -0700 (PDT) Original-Received: from mpn.zrh.corp.google.com ([2620:0:105f:301:b4f3:1658:396c:104e]) by smtp.gmail.com with ESMTPSA id vu10sm1045749wjb.27.2016.06.24.15.14.47 for <23843@debbugs.gnu.org> (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 24 Jun 2016 15:14:47 -0700 (PDT) Original-Received: by mpn.zrh.corp.google.com (Postfix, from userid 126942) id 452201E01F4; Sat, 25 Jun 2016 00:14:47 +0200 (CEST) X-Mailer: git-send-email 2.8.0.rc3.226.g39d4020 In-Reply-To: <1466806485-15732-1-git-send-email-mina86@mina86.com> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:120019 Archived-At: * lisp/simple.el (delete-trailing-whitespace): Set newline’s character syntax to non-whitespace so that ‘\s-’ regular expression does not match it. This simplifies the loop slightly since a simple ‘\s-+$’ can be used and as a consequence ‘line-beginning-position’ function does not need to be called any longer. Furthermore, when newline has whitespace syntax, ‘\s-$’ regular expression ends up matching empty lins since ‘\s-’ matches newline characetr of proceeding line. This leads to needless loop iterations. Since previous change to ‘delete-trailing-whitespace’ already introduced ‘with-syntax-table’, take advantage of it and also overwrite newline’s character syntax. --- lisp/simple.el | 7 ++++--- test/lisp/simple-tests.el | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index ffedbfa..fbeef9d 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -607,9 +607,10 @@ delete-trailing-whitespace (with-syntax-table (make-syntax-table (syntax-table)) ;; Don't delete formfeeds, even if they are considered whitespace. (modify-syntax-entry ?\f "_") - (while (re-search-forward "\\s-$" end-marker t) - (skip-syntax-backward "-" (line-beginning-position)) - (delete-region (point) (match-end 0)))) + ;; Treating \n as non-whitespace makes things easier. + (modify-syntax-entry ?\n "_") + (while (re-search-forward "\\s-+$" end-marker t) + (delete-region (match-beginning 0) (match-end 0)))) ;; Delete trailing empty lines. (goto-char end-marker) (when (and (not end) diff --git a/test/lisp/simple-tests.el b/test/lisp/simple-tests.el index 2722544..97b6c49 100644 --- a/test/lisp/simple-tests.el +++ b/test/lisp/simple-tests.el @@ -235,7 +235,8 @@ simple-test--transpositions (insert " \f \n \f \f \n\nlast\n") (delete-trailing-whitespace) (should (string-equal (buffer-string) " \f\n \f \f\n\nlast\n")) - (should (equal ?\s (char-syntax ?\f)))))) + (should (equal ?\s (char-syntax ?\f))) + (should (equal ?\s (char-syntax ?\n)))))) ;;; auto-boundary tests -- 2.8.0.rc3.226.g39d4020