aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorCharles A. Roelli2018-03-11 11:59:01 +0100
committerCharles A. Roelli2018-03-11 11:59:01 +0100
commitb88e7c8bcd523f1f503f87a1734679405322b5ec (patch)
tree7d02b0d403774f2ba8c6ed758be1955dd979bf1b /src
parent806a0c77490e2f997b3498829c8d63a00e504b6b (diff)
downloademacs-b88e7c8bcd523f1f503f87a1734679405322b5ec.tar.gz
emacs-b88e7c8bcd523f1f503f87a1734679405322b5ec.zip
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.
Diffstat (limited to 'src')
-rw-r--r--src/editfns.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/editfns.c b/src/editfns.c
index debe10572dc..6ecc83fc302 100644
--- a/src/editfns.c
+++ b/src/editfns.c
@@ -5100,7 +5100,16 @@ transpose_markers (ptrdiff_t start1, ptrdiff_t end1,
5100 } 5100 }
5101} 5101}
5102 5102
5103DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, 4, 5, 0, 5103DEFUN ("transpose-regions", Ftranspose_regions, Stranspose_regions, 4, 5,
5104 "(if (< (length mark-ring) 2)\
5105 (error \"Other region must be marked before transposing two regions\")\
5106 (let* ((num (if current-prefix-arg\
5107 (prefix-numeric-value current-prefix-arg)\
5108 0))\
5109 (ring-length (length mark-ring))\
5110 (eltnum (mod num ring-length))\
5111 (eltnum2 (mod (1+ num) ring-length)))\
5112 (list (point) (mark) (elt mark-ring eltnum) (elt mark-ring eltnum2))))",
5104 doc: /* Transpose region STARTR1 to ENDR1 with STARTR2 to ENDR2. 5113 doc: /* Transpose region STARTR1 to ENDR1 with STARTR2 to ENDR2.
5105The regions should not be overlapping, because the size of the buffer is 5114The regions should not be overlapping, because the size of the buffer is
5106never changed in a transposition. 5115never changed in a transposition.
@@ -5108,7 +5117,14 @@ never changed in a transposition.
5108Optional fifth arg LEAVE-MARKERS, if non-nil, means don't update 5117Optional fifth arg LEAVE-MARKERS, if non-nil, means don't update
5109any markers that happen to be located in the regions. 5118any markers that happen to be located in the regions.
5110 5119
5111Transposing beyond buffer boundaries is an error. */) 5120Transposing beyond buffer boundaries is an error.
5121
5122Interactively, STARTR1 and ENDR1 are point and mark; STARTR2 and ENDR2
5123are the last two marks pushed to the mark ring; LEAVE-MARKERS is nil.
5124If a prefix argument N is given, STARTR2 and ENDR2 are the two
5125successive marks N entries back in the mark ring. A negative prefix
5126argument instead counts forward from the oldest mark in the mark
5127ring. */)
5112 (Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers) 5128 (Lisp_Object startr1, Lisp_Object endr1, Lisp_Object startr2, Lisp_Object endr2, Lisp_Object leave_markers)
5113{ 5129{
5114 register ptrdiff_t start1, end1, start2, end2; 5130 register ptrdiff_t start1, end1, start2, end2;