В этом разделе описываются простые функции перемещения по точкам, которые работают на основе парсинга выражений.
Эта функция сканирует вперед count сбалансированных парных группировок из позиции from. Она возвращает позицию, в которой останавливается сканирование. Если count отрицателен, сканирование происходит назад.
Если depth не равен нулю, исходная позиция рассматривается как находящаяся на глубине depth пар. Сканер перемещается вперед или назад по буферу до тех пор, пока глубина не изменится на ноль count раз. Таким образом, положительное значение depth имеет эффект перемещения на depth уровней пар от исходной позиции, в то время как отрицательное depth имеет эффект углубления на -depth уровней пар.
Сканирование игнорирует комментарии, если parse-sexp-ignore-comments
не равно nil.
Если сканирование достигает начала или конца доступной части буфера до того, как
оно просканирует count парных группировок, возвращаемое значение
является nil, если глубина в этой точке равна нулю; если глубина
не равна нулю, сигнализируется ошибка scan-error.
Эта функция сканирует вперед count сексов из позиции from. Она возвращает позицию, в которой останавливается сканирование. Если count отрицателен, сканирование происходит назад.
Сканирование игнорирует комментарии, если parse-sexp-ignore-comments
не равно nil.
Если сканирование достигает начала или конца (доступной части) буфера, находясь
в середине парной группировки, сигнализируется ошибка. Если оно достигает начала или
конца между группировками, но до того, как count исчерпано, возвращается
nil.
Эта функция перемещает точку вперед через count полных комментариев
(то есть, включая начальный и завершающий разделители, если таковые имеются), а также
любые пробелы, встреченные по пути. Она перемещается назад, если count
отрицателен. Если она встречает что-либо, кроме комментария или пробела, она останавливается,
оставляя точку в месте остановки. Это включает (например) поиск конца комментария при
перемещении вперед и ожидание начала комментария. Функция также немедленно останавливается
после прохождения указанного количества полных комментариев. Если найдено count
комментариев, как ожидалось, и между ними только пробелы, она возвращает t;
в противном случае возвращает nil.
Эта функция не может определить, находятся ли просматриваемые ею комментарии внутри строки. Если они выглядят как комментарии, она обрабатывает их как комментарии.
Чтобы переместиться вперед через все комментарии и пробелы после точки, используйте
(forward-comment (buffer-size)). (buffer-size) — это
хороший аргумент для использования, потому что количество комментариев в буфере не может
превышать это число.