all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Robert Weiner <rsw@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 23794@debbugs.gnu.org, Richard Stallman <rms@gnu.org>,
	emacs-devel <emacs-devel@gnu.org>
Subject: bug#23794: Emacs bug #23794; sort-line behavior regressed from prior Emacs versions
Date: Sun, 19 Jun 2016 12:51:08 -0400	[thread overview]
Message-ID: <CA+OMD9jOBhas2Bt-7rc92UdLuPxWhJj2mEAc2KLgWAVdGFaOvw@mail.gmail.com> (raw)
In-Reply-To: <83oa6x87ky.fsf@gnu.org>

[-- Attachment #1: Type: text/plain, Size: 3184 bytes --]

On Sun, Jun 19, 2016 at 12:30 PM, Eli Zaretskii <eliz@gnu.org> wrote:

> Didn't think that far, but is it really clean for sort-lines to have
> special code for some major mode?  I thought a better way is to
> override the default behavior by having sort-lines call functions
> through funcall or somesuch, and then outline modes could set the
> appropriate variable to the function of their liking?
>

The problem with that approach is that each mode has to be aware of this
and add a setting, really not much different than each mode having its own
sort function or way of calling a sort function.  It is much more useful to
centralize the behavior within the sorting library, even if it adds some
conditional complexity to the code.  Here is the suggested patch to do it
this way.  -- Bob

*** sort-orig.el.gz 2016-06-19 12:42:12.000000000 -0400
--- sort.el.gz 2016-06-19 12:42:12.000000000 -0400
***************
*** 39,44 ****
--- 39,50 ----
    :type 'boolean)
  ;;;###autoload(put 'sort-fold-case 'safe-local-variable 'booleanp)

+ (defcustom sort-invisible-lines nil
+   "Non-nil if the buffer `sort-line' function should treat invisible
lines like visible ones."
+   :group 'sort
+   :type 'boolean)
+ ;;;###autoload(put 'sort-invisible-lines 'safe-local-variable 'booleanp)
+
  ;;;###autoload
  (defun sort-subr (reverse nextrecfun endrecfun
   &optional startkeyfun endkeyfun predicate)
***************
*** 210,216 ****
        (goto-char (point-min))
        (let ;; To make `end-of-line' and etc. to ignore fields.
   ((inhibit-field-text-motion t))
! (sort-subr reverse 'forward-line 'end-of-line)))))

  ;;;###autoload
  (defun sort-paragraphs (reverse beg end)
--- 216,228 ----
        (goto-char (point-min))
        (let ;; To make `end-of-line' and etc. to ignore fields.
   ((inhibit-field-text-motion t))
! (if (and (not sort-invisible-lines)
! (or (derived-mode-p 'outline-mode)
!     (and (boundp 'outline-minor-mode) outline-minor-mode)))
!    ;; In in an outline mode with sort-invisible-lines nil, sort
!    ;; only visible lines.
!    (sort-subr reverse 'forward-visible-line 'end-of-visible-line)
!  (sort-subr reverse 'forward-line 'end-of-line))))))

  ;;;###autoload
  (defun sort-paragraphs (reverse beg end)

*** simple-orig.el.gz 2016-06-18 11:29:58.000000000 -0400
--- simple.el.gz 2016-06-18 11:29:58.000000000 -0400
***************
*** 4909,4918 ****
  (kill-region (point)
       (progn (forward-visible-line arg) (point))))))

! (defun forward-visible-line (arg)
!   "Move forward by ARG lines, ignoring currently invisible newlines only.
  If ARG is negative, move backward -ARG lines.
  If ARG is zero, move to the beginning of the current line."
    (condition-case nil
        (if (> arg 0)
   (progn
--- 4909,4919 ----
  (kill-region (point)
       (progn (forward-visible-line arg) (point))))))

! (defun forward-visible-line (&optional arg)
!   "Move forward by optional ARG lines (default = 1), ignoring currently
invisible newlines only.
  If ARG is negative, move backward -ARG lines.
  If ARG is zero, move to the beginning of the current line."
+   (if (null arg) (setq arg 1))
    (condition-case nil
        (if (> arg 0)
   (progn

[-- Attachment #2: Type: text/html, Size: 7053 bytes --]

  reply	other threads:[~2016-06-19 16:51 UTC|newest]

Thread overview: 25+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-18 17:01 Emacs bug #23794; sort-line behavior regressed from prior Emacs versions Robert Weiner
2016-06-18 17:26 ` Eli Zaretskii
2016-06-18 17:42   ` Eli Zaretskii
2016-06-18 17:50     ` Robert Weiner
2016-06-18 18:15       ` Eli Zaretskii
2016-06-18 18:22         ` Stefan Monnier
2016-06-18 18:28           ` Eli Zaretskii
2016-06-18 18:37             ` Robert Weiner
2016-06-18 18:31         ` Robert Weiner
2016-06-18 21:28           ` Drew Adams
2016-06-18 22:41             ` Robert Weiner
2016-06-19  2:39             ` Eli Zaretskii
2016-06-19 13:31               ` Robert Weiner
2016-06-19 15:18                 ` Eli Zaretskii
2016-06-19 16:12                   ` Robert Weiner
2016-06-19 16:30                     ` Eli Zaretskii
2016-06-19 16:51                       ` Robert Weiner [this message]
2016-06-19 16:55                         ` Eli Zaretskii
2016-06-19 17:03                           ` Robert Weiner
2016-06-19 17:03                           ` bug#23794: " Robert Weiner
2016-06-19 16:55                         ` Eli Zaretskii
2016-06-19 20:59                         ` Drew Adams
2016-06-19 20:59                         ` bug#23794: " Drew Adams
2016-06-20  0:55                         ` Stefan Monnier
2016-06-19 18:16                       ` John Wiegley

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CA+OMD9jOBhas2Bt-7rc92UdLuPxWhJj2mEAc2KLgWAVdGFaOvw@mail.gmail.com \
    --to=rsw@gnu.org \
    --cc=23794@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=rms@gnu.org \
    --cc=rswgnu@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.