GNU bug report logs -
#30343
make transpose-regions interactive
Previous Next
Reported by: charles <at> aurox.ch (Charles A. Roelli)
Date: Sun, 4 Feb 2018 09:30:02 UTC
Severity: wishlist
Tags: patch
Found in version 27.0.50
Done: charles <at> aurox.ch (Charles A. Roelli)
Bug is archived. No further changes may be made.
Full log
Message #8 received at 30343 <at> debbugs.gnu.org (full text, mbox):
What follows is a patch to make transpose-regions interactive.
I also noticed that transpose-sentences/paragraphs are not documented,
so I'll add those in another commit.
From 8468059f55ea459dc56c3dae6c6667950c6767d2 Mon Sep 17 00:00:00 2001
From: "Charles A. Roelli" <charles <at> aurox.ch>
Date: Sun, 4 Feb 2018 10:41:00 +0100
Subject: [PATCH] Make transpose-regions interactive (Bug#30343)
* doc/emacs/fixit.texi (Transpose): Mention and explain the new
command.
* editfns.c (Ftranspose_regions): Add an interactive calling
specification, and add documentation for it.
---
doc/emacs/fixit.texi | 12 +++++++++++-
src/editfns.c | 11 +++++++++--
2 files changed, 20 insertions(+), 3 deletions(-)
diff --git a/doc/emacs/fixit.texi b/doc/emacs/fixit.texi
index ced1ef9..a35ef6b 100644
--- a/doc/emacs/fixit.texi
+++ b/doc/emacs/fixit.texi
@@ -146,6 +146,8 @@ Transpose
Transpose two balanced expressions (@code{transpose-sexps}).
@item C-x C-t
Transpose two lines (@code{transpose-lines}).
+@item M-x transpose-regions
+Transpose two regions.
@end table
@kindex C-t
@@ -183,7 +185,7 @@ Transpose
(@code{transpose-lines}) exchanges lines. They work like @kbd{M-t}
except as regards what units of text they transpose.
- A numeric argument to a transpose command serves as a repeat count: it
+ A numeric argument to most transpose commands serves as a repeat count: it
tells the transpose command to move the character (word, expression, line)
before or containing point across several other characters (words,
expressions, lines). For example, @kbd{C-u 3 C-t} moves the character before
@@ -198,6 +200,14 @@ Transpose
transpose the character (word, expression, line) ending after point
with the one ending after the mark.
+@findex transpose-regions
+ @kbd{M-x transpose-regions} transposes the text between point and
+mark with the text between the first two elements of the mark ring.
+Unlike the other transpose commands, it does not behave differently
+when given a prefix argument. This command is best used for
+transposing multiple units of text (words, sentences, paragraphs) in
+one go.
+
@node Fixing Case
@section Case Conversion
diff --git a/src/editfns.c b/src/editfns.c
index 96bb271..66dd2a4 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -5112,7 +5112,10 @@ transpose_markers (ptrdiff_t start1, ptrdiff_t end1,
}
}
-DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, 4, 5, 0,
+DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, 4, 5,
+ "(if (< (length mark-ring) 2)\
+ (error \"Mark ring must contain at least two elements\")\
+ (list (point) (mark) (car mark-ring) (cadr mark-ring)))",
doc: /* Transpose region STARTR1 to ENDR1 with STARTR2 to ENDR2.
The regions should not be overlapping, because the size of the buffer is
never changed in a transposition.
@@ -5120,7 +5123,11 @@ never changed in a transposition.
Optional fifth arg LEAVE-MARKERS, if non-nil, means don't update
any markers that happen to be located in the regions.
-Transposing beyond buffer boundaries is an error. */)
+Transposing beyond buffer boundaries is an error.
+
+Interactively, STARTR1 and ENDR1 are point and mark. STARTR2 and
+ENDR2 are the first and second markers in the mark ring.
+LEAVE-MARKERS is nil. */)
(Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers)
{
register ptrdiff_t start1, end1, start2, end2;
--
2.9.4
This bug report was last modified 7 years and 130 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.