31.2.2 Перемещение по словам

Функции для разбора слов, описанные ниже, используют таблицу синтаксиса и char-script-table для определения, является ли данный символ частью слова. См. Таблицы синтаксиса и см. Свойства символов.

Команда: forward-word &optional count

Эта функция перемещает точку вперед на count слов (или назад, если count отрицателен). Если count опущен или равен nil, по умолчанию используется 1. При интерактивном вызове count указывается с помощью числового префикса.

«Перемещение на одно слово» означает перемещение до тех пор, пока точка не пересечет символ, составляющий слово, который указывает на начало слова, а затем продолжение перемещения до конца слова. По умолчанию символы, начинающие и заканчивающие слова, известные как границы слов, определяются таблицей синтаксиса текущего буфера (см. Таблица классов синтаксиса), но режимы могут переопределить это, настроив подходящую find-word-boundary-function-table, описанную ниже. Символы, принадлежащие к разным скриптам (как определено в char-script-table), также определяют границу слова (см. Свойства символов). В любом случае эта функция не может переместить точку за пределы доступной части буфера или через границу поля (см. Определение и использование полей). Наиболее распространенный случай границы поля — это конец подсказки в миньюбуфере.

Если возможно переместить count слов, без преждевременной остановки из-за границы буфера или границы поля, возвращаемое значение равно t. В противном случае возвращаемое значение равно nil, и точка останавливается на границе буфера или границы поля.

Если inhibit-field-text-motion не равно nil, эта функция игнорирует границы полей.

Команда: backward-word &optional count

Эта функция аналогична forward-word, за исключением того, что она перемещается назад до обнаружения начала слова, а не вперед.

Пользовательский вариант: words-include-escapes

Эта переменная влияет на поведение forward-word и backward-word и на все, что их использует. Если она не равна nil, то символы в синтаксических классах экранирования и цитирования считаются частью слов. В противном случае они не считаются.

Переменная: inhibit-field-text-motion

Если эта переменная не равна nil, некоторые функции перемещения, включая forward-word, forward-sentence и forward-paragraph, игнорируют границы полей.

Переменная: find-word-boundary-function-table

Эта переменная влияет на поведение forward-word и backward-word и на все, что их использует. Ее значение — это таблица символов (см. Таблицы символов) функций для поиска границ слов. Если символ имеет не-nil запись в этой таблице, то когда слово начинается или заканчивается этим символом, будет вызвана соответствующая функция с 2 аргументами: pos и limit. Функция должна вернуть позицию другой границы слова. В частности, если pos меньше, чем limit, то pos находится в начале слова, и функция должна вернуть позицию после последнего символа слова; в противном случае pos находится в последнем символе слова, и функция должна вернуть позицию первого символа этого слова.

Функция: forward-word-strictly &optional count

Эта функция похожа на forward-word, но она не зависит от find-word-boundary-function-table. Программы Lisp, которые не должны менять свое поведение при изменении перемещения по словам режимами, которые устанавливают эту таблицу, например subword-mode, должны использовать эту функцию вместо forward-word.

Функция: backward-word-strictly &optional count

Эта функция похожа на backward-word, но она не зависит от find-word-boundary-function-table. Как и в случае с forward-word-strictly, используйте эту функцию вместо backward-word, когда перемещение по словам должно учитывать только таблицы синтаксиса.