33.17.3 Отступ всего региона

В этом разделе описываются команды, которые отступают все строки в регионе. Они возвращают непредсказуемые значения.

Команда: indent-region start end &optional to-column

Эта команда отступает каждую непустую строку, начиная между start (включительно) и end (исключительно). Если to-column равен nil, indent-region отступает каждую непустую строку, вызывая функцию отступа текущего режима, то есть indent-line-function.

Если to-column не равен nil, это должно быть целое число, указывающее количество столбцов отступа; тогда эта функция придает каждой строке точно такое количество отступа, добавляя или удаляя пробелы.

Если есть префикс заполнения, indent-region отступает каждую строку, заставляя ее начинаться с префикса заполнения.

Переменная: indent-region-function

Значение этой переменной — это функция, которую можно использовать indent-region в качестве ярлыка. Она должна принимать два аргумента: начало и конец региона. Вы должны разработать функцию таким образом, чтобы она давала те же результаты, что и поочередный отступ строк региона, но, предположительно, быстрее.

Если значение равно nil, ярлыка нет, и indent-region фактически работает построчно.

Функция-ярлык полезна в таких режимах, как C-режим и Lisp-режим, где indent-line-function должен сканировать от начала определения функции: применение его к каждой строке было бы квадратичным по времени. Ярлык может обновлять информацию о сканировании по мере прохода по строкам, отступая их; это занимает линейное время. В режиме, где отступление строки отдельно происходит быстро, ярлык не нужен.

indent-region с не-nil аргументом to-column имеет другое значение и не использует эту переменную.

Команда: indent-rigidly start end count

Эта функция отступает все строки, начинающиеся между start (включительно) и end (исключительно), вбок на count столбцов. Это сохраняет форму затронутого региона, перемещая его как жесткий блок.

Это полезно не только для отступа регионов неотформатированного текста, но и для отступа регионов отформатированного кода. Например, если count равно 3, эта команда добавляет 3 столбца отступа к каждой строке, начинающейся в указанном регионе.

При интерактивном вызове без аргумента префикса эта команда вызывает временный режим для жесткой корректировки отступа. См. Команды отступа в Руководство GNU Emacs.

Команда: indent-code-rigidly start end columns &optional nochange-regexp

Это похоже на indent-rigidly, за исключением того, что она не изменяет строки, начинающиеся внутри строк или комментариев.

Кроме того, она не изменяет строку, если nochange-regexp совпадает в начале строки (если nochange-regexp не равен nil).