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) бы переместила точку.

Команда: 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-2022 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