Spec-Zone.ru › Elisp

Перемещение по текстовым строкам

Текстовые строки — это части буфера, разделённые символами новой строки, которые считаются частью предыдущей строки. Первая текстовая строка начинается в начале буфера, а последняя текстовая строка заканчивается в конце буфера независимо от того, является ли последний символ символом новой строки. Разбиение буфера на текстовые строки не зависит от ширины окна, переноса строк при отображении или способа отображения табуляции и управляющих символов.

Команда: beginning-of-line &optional count

Эта функция перемещает точку в начало текущей строки. Если аргумент count не равен nil или 1, она перемещает точку вперёд на count−1 строк, а затем в начало строки.

Эта функция не перемещает точку через границу поля (см. Определение и использование полей), если только такое перемещение не перенесёт её дальше, в другую строку; поэтому, если count равен nil или 1 и точка находится на границе поля, она не перемещается. Чтобы игнорировать границы полей, либо привяжите inhibit-field-text-motion к t, либо используйте вместо этого функцию forward-line. Например, (forward-line 0) выполняет то же действие, что и (beginning-of-line), но игнорирует границы полей.

Если эта функция достигает конца буфера (или доступной части, если действует сужение), она устанавливает точку в это место. Ошибка не сигнализируется.

Функция: line-beginning-position &optional count

Возвращает позицию, в которую переместилась бы функция (beginning-of-line count).

Команда: end-of-line &optional count

Эта функция перемещает точку в конец текущей строки. Если аргумент count не равен nil или 1, она перемещает точку вперёд на count−1 строк, а затем в конец строки.

Эта функция не перемещает точку через границу поля (см. Определение и использование полей), если только такое перемещение не перенесёт её дальше, в другую строку; поэтому, если count равен nil или 1 и точка находится на границе поля, она не перемещается. Чтобы игнорировать границы полей, привяжите inhibit-field-text-motion к t.

Если эта функция достигает конца буфера (или доступной части, если действует сужение), она устанавливает точку в это место. Ошибка не сигнализируется.

Функция: line-end-position &optional count

Возвращает позицию, в которую переместилась бы функция (end-of-line count).

Функция: pos-bol &optional count

Подобна функции line-beginning-position, но игнорирует поля (и работает эффективнее).

Функция: pos-eol &optional count

Подобна функции line-end-position, но игнорирует поля (и работает эффективнее).

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

Эта функция перемещает точку вперёд на count строк, в начало следующей за ними строки. Если count отрицателен, она перемещает точку назад на −count строк, в начало предшествующей строки. Если count равен нулю, функция перемещает точку в начало текущей строки. Если count равен nil, это означает 1.

Если функция forward-line встречает начало или конец буфера (или доступной части) прежде, чем найдёт указанное число строк, она устанавливает точку в это место. Ошибка не сигнализируется.

Функция forward-line возвращает разность между count и фактическим числом перемещённых строк. Если попытаться переместиться вниз на пять строк от начала буфера, содержащего всего три строки, точка остановится в конце последней строки, а возвращаемое значение будет равно 2. В качестве явного исключения, если последняя доступная строка не пуста, но не заканчивается символом новой строки (например, если буфер заканчивается без символа новой строки), функция устанавливает точку в конец этой строки, а возвращаемое значение учитывает эту строку как успешно пройденную.

При интерактивном вызове count — это числовой префиксный аргумент.

Функция: count-lines start end &optional ignore-invisible-lines

Эта функция возвращает число строк между позициями start и end в текущем буфере. Если start и end равны, она возвращает 0. В противном случае она возвращает не менее 1, даже если start и end находятся в одной строке. Это связано с тем, что текст между ними, рассматриваемый отдельно, должен содержать как минимум одну строку, если только он не пуст.

Если необязательный аргумент ignore-invisible-lines не равен nil, невидимые строки не будут учитываться.

Команда: count-words start end

Эта функция возвращает число слов между позициями start и end в текущем буфере.

Эту функцию также можно вызвать интерактивно. В этом случае она выводит сообщение с числом строк, слов и символов в буфере или в области, если она активна.

Функция: line-number-at-pos &optional pos absolute

Эта функция возвращает номер строки в текущем буфере, соответствующий позиции pos в буфере. Если pos равен nil или не указан, используется текущая позиция в буфере. Если absolute равен nil, значению по умолчанию, отсчёт начинается с (point-min), поэтому возвращаемое значение относится к содержимому доступной части (возможно, суженного) буфера. Если absolute не равен nil, сужение игнорируется и возвращается абсолютный номер строки.

См. также функции bolp и eolp в разделе Исследование текста рядом с точкой. Эти функции не перемещают точку, а проверяют, находится ли она уже в начале или конце строки.

Copyright © 1990-1996, 1998-2026 Free Software Foundation, Inc.
Licensed under the GNU GPL license.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Text-Lines.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API