GNU bug report logs -
#20698
25.0.50; REGRESSION in `transpose-sexps' introduced in Emacs 24.4
Previous Next
Reported by: Drew Adams <drew.adams <at> oracle.com>
Date: Sat, 30 May 2015 17:13:01 UTC
Severity: normal
Merged with 14037,
21885
Found in versions 24.3.50, 24.5, 25.0.50
Fixed in version 25.1
Done: Eli Zaretskii <eliz <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 20698 in the body.
You can then email your comments to 20698 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#20698
; Package
emacs
.
(Sat, 30 May 2015 17:13:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Drew Adams <drew.adams <at> oracle.com>
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Sat, 30 May 2015 17:13:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
I say regression, but perhaps there was a good reason for the change in
behavior. I couldn't find anything about it, checking NEWS and looking
through some bug reports.
In all Emacs versions prior to 24.4 (back through Emacs 20, at least),
when you use a negative prefix arg with `transpose-sexps' point ends up
after the sexp that moved. Starting with 24.4, point does not move.
For example:
((s1) (s2) (s3) (s4) | (s5))
With point at |, `C-- C-M-t' gives you this prior to 24.4:
((s1) (s2) (s4) | (s3) (s5))
For 24.4+ it gives you this:
((s1) (s2) (s4) (s3) | (s5))
With `C-- 2', you get this:
< 24.4:
((s1) (s4) | (s2) (s3) (s5))
24.4+:
((s1) (s4) (s2) (s3) | (s5))
Is this by design or a mistake (regression)? There is no change in the
code of `transpose-sexps' itself. Perhaps that is a sign that this is
an unplanned side effect (bug)? Or perhaps it was planned (why?).
It would be good, I think, if the doc mentioned what happens to point.
It would be good, I think - unless there is some great reason for this
change in behavior, to fix this bug.
As an example, the bug interferes with using repetition with a negative
prefix arg. With the change (bug), repeating a negative prefix arg just
reverses the prefix transposition.
E.g., prior to this bug, you can effectively use `C-- C-M-t' repeatedly
to move a sexp backward:
((s1) (s2) (s3) (s4) | (s5))
C-- C-M-t
((s1) (s2) (s4) | (s3) (s5))
C-- C-M-t
((s1) (s4) | (s2) (s3) (s5))
After this bug:
((s1) (s2) (s3) (s4) | (s5))
C-- C-M-t
((s1) (s2) (s4) (s3) | (s5))
C-- C-M-t ; Back to where we started.
((s1) (s2) (s3) (s4) | (s5))
Here is a command I use, for example, that lets you repeatedly
transpose and use a negative arg to reverse the direction.
Note the hack to compensate for this bug (I don't claim it is
the best hack for this).
(defun reversible-transpose-sexps (arg)
"Reversible and repeatable `transpose-sexp'.
Like `transpose-sexps', but:
1. Leaves point after the moved sexp.
2. When repeated, a negative prefix arg flips the direction."
(interactive "p")
(when (eq last-command 'rev-transp-sexps-back) (setq arg (- arg)))
(transpose-sexps arg)
(unless (natnump arg)
(when (or (> emacs-major-version 24)
(and (= emacs-major-version 24) (> emacs-minor-version 3))) ; Emacs 24.4+
(backward-sexp (abs arg))
(skip-syntax-backward " ."))
(setq this-command 'rev-transp-sexps-back)))
In GNU Emacs 25.0.50.1 (i686-pc-mingw32)
of 2014-10-20 on LEG570
Bzr revision: 118168 rgm <at> gnu.org-20141020195941-icp42t8ttcnud09g
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
`configure --enable-checking=yes,glyphs CPPFLAGS=-DGLYPH_DEBUG=1'
Merged 20698 21885.
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Thu, 12 Nov 2015 19:46:02 GMT)
Full text and
rfc822 format available.
Merged 14037 20698 21885.
Request was from
Ivan Andrus <darthandrus <at> gmail.com>
to
control <at> debbugs.gnu.org
.
(Fri, 13 Nov 2015 15:30:05 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sat, 12 Dec 2015 12:24:03 GMT)
Full text and
rfc822 format available.
This bug report was last modified 9 years and 195 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.