Эту функцию можно использовать для транспонирования участков текста:
Эта функция меняет местами две непересекающиеся части буфера (если они пересекаются, функция выдает ошибку). Аргументы start1 и end1 определяют границы одной части, а аргументы start2 и end2 определяют границы другой части.
Обычно transpose-regions перемещает маркеры вместе с транспонированным текстом; маркер, ранее находившийся в одной из двух транспонированных частей, перемещается вместе с этой частью, оставаясь между теми же двумя символами в новом положении. Однако, если leave-markers не равен nil, transpose-regions не делает этого — он оставляет все маркеры без перемещения.