elisp: Transposition

 
 31.22 Transposition of Text
 ===========================
 
 This function can be used to transpose stretches of text:
 
  -- Function: transpose-regions start1 end1 start2 end2 &optional
           leave-markers
      This function exchanges two nonoverlapping portions of the buffer.
      Arguments START1 and END1 specify the bounds of one portion and
      arguments START2 and END2 specify the bounds of the other portion.
 
      Normally, ‘transpose-regions’ relocates markers with the transposed
      text; a marker previously positioned within one of the two
      transposed portions moves along with that portion, thus remaining
      between the same two characters in their new position.  However, if
      LEAVE-MARKERS is non-‘nil’, ‘transpose-regions’ does not do this—it
      leaves all markers unrelocated.