From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.bugs Subject: bug#21785: 25.0.50; sort-fields fails if region ends in a newline and sort-paragraph fails if it doesn't Date: Thu, 01 Aug 2019 20:38:31 +0200 Message-ID: <87zhkshgt4.fsf@mouse.gnus.org> References: Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="160773"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 21785@debbugs.gnu.org To: Artur Malabarba Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Aug 01 20:39:57 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htFzX-000fcI-Ud for geb-bug-gnu-emacs@m.gmane.org; Thu, 01 Aug 2019 20:39:56 +0200 Original-Received: from localhost ([::1]:58378 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htFzW-0007kw-S6 for geb-bug-gnu-emacs@m.gmane.org; Thu, 01 Aug 2019 14:39:54 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60917) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htFyi-0006kz-I6 for bug-gnu-emacs@gnu.org; Thu, 01 Aug 2019 14:39:05 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htFyg-000806-L4 for bug-gnu-emacs@gnu.org; Thu, 01 Aug 2019 14:39:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:46377) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htFyf-0007zi-Oa for bug-gnu-emacs@gnu.org; Thu, 01 Aug 2019 14:39:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1htFyf-0000xr-L1 for bug-gnu-emacs@gnu.org; Thu, 01 Aug 2019 14:39:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 01 Aug 2019 18:39:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 21785 X-GNU-PR-Package: emacs Original-Received: via spool by 21785-submit@debbugs.gnu.org id=B21785.15646847193663 (code B ref 21785); Thu, 01 Aug 2019 18:39:01 +0000 Original-Received: (at 21785) by debbugs.gnu.org; 1 Aug 2019 18:38:39 +0000 Original-Received: from localhost ([127.0.0.1]:55195 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1htFyI-0000x1-TE for submit@debbugs.gnu.org; Thu, 01 Aug 2019 14:38:39 -0400 Original-Received: from quimby.gnus.org ([80.91.231.51]:44034) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1htFyG-0000wr-W9 for 21785@debbugs.gnu.org; Thu, 01 Aug 2019 14:38:37 -0400 Original-Received: from 77.18.62.220.tmi.telenormobil.no ([77.18.62.220] helo=sandy) by quimby.gnus.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htFyC-0002ps-53; Thu, 01 Aug 2019 20:38:34 +0200 In-Reply-To: (Artur Malabarba's message of "Thu, 29 Oct 2015 12:38:26 +0000") 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: 209.51.188.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:164249 Archived-At: (I'm going through old bug reports that have unfortunately not gotten any responses.) Artur Malabarba writes: > I noticed this while writing tests for sort.el > > With the following buffer contents (the text between the dashes, > including a final newline), issue `C-x h M-x sort-numeric-fields'. > You'll get the error that the last line doesn't have enough fields. I > think that error should not be thrown because of a final newline. > > --------------------- > 1 hi > 2 bye > > ---------------------- > > Meanwhile take the following buffer contents, > -------------------- > paragraph 2 > > paragraph 1 > -------------------- > > If you issue `sort-paragraphs' on the whole buffer, you'll get this: > -------------------- > paragraph 1 > paragraph 2 > > ------------------- > > In my opinion both behavior are bugs. But surely one of them is, as > the functions should be somewhat consistent on demanding final > newlines. I don't really think this first is a bug. You've asked Emacs to sort numeric fields, and one of the lines in question doesn't have a numeric field, so bugging out seems like what's required. The second does seem like a bug. If the final paragraph doesn't end in a newline, it's squashed into the following paragraph after sorting. The following patch fixes the problem (by adding a newline in these cases). Does this seems like the correct approach for everybody? diff --git a/lisp/sort.el b/lisp/sort.el index 6ea1c44060..6ceda8e448 100644 --- a/lisp/sort.el +++ b/lisp/sort.el @@ -225,11 +225,17 @@ sort-paragraphs (narrow-to-region beg end) (goto-char (point-min)) (sort-subr reverse - (function - (lambda () - (while (and (not (eobp)) (looking-at paragraph-separate)) - (forward-line 1)))) - 'forward-paragraph)))) + (lambda () + (while (and (not (eobp)) (looking-at paragraph-separate)) + (forward-line 1))) + (lambda () + (forward-paragraph) + ;; If the buffer doesn't end with a newline, add a + ;; newline to avoid having paragraphs being + ;; concatenated after sorting. + (when (and (eobp) + (not (bolp))) + (insert "\n"))))))) ;;;###autoload (defun sort-pages (reverse beg end) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no