Окна и точка
У каждого окна есть собственное значение точки (см. Точка), не зависящее от значения точки в других окнах, отображающих тот же буфер. Это делает полезным одновременное отображение одного буфера в нескольких окнах.
- Точка окна задаётся при первом создании окна; она инициализируется значением точки буфера или значением точки другого окна, открытого для этого буфера, если такое окно существует.
- При выборе окна значение точки в его буфере устанавливается равным значению точки окна. И наоборот, при снятии выбора с окна значение точки окна устанавливается равным значению точки буфера. Таким образом, когда вы переключаетесь между окнами, отображающими заданный буфер, в буфере действует значение точки выбранного окна, а значения точек остальных окон хранятся в этих окнах.
- Пока выбранное окно отображает текущий буфер, точка окна и точка буфера всегда перемещаются вместе; они остаются равными.
- Многие функции Emacs временно выбирают окно, чтобы работать с его содержимым. Это перемещает точку (см. Точка) буфера этого окна в позицию точки окна и не восстанавливает прежнюю позицию точки буфера после завершения временного выбора. Это означает, что если один и тот же буфер одновременно отображается в нескольких окнах, точка буфера может непредсказуемым образом перемещаться в позицию точки любого из этих окон вследствие таких действий, как перерисовка, вызов
with-selected-window(см. Выбор окон) или выполнениеwindow-configuration-change-hook(см. Перехватчики прокрутки и изменения окон).
По умолчанию Emacs отображает курсор в виде прямоугольного блока в каждом окне в позиции точки этого окна. Когда пользователь переключается на другой буфер в окне, Emacs перемещает курсор этого окна в позицию точки в этом буфере. Если точка находится за каким-либо элементом отображения, например строкой отображения или изображением, Emacs отображает курсор непосредственно перед этим элементом или после него.
- Функция: window-point &optional window
-
Эта функция возвращает текущую позицию точки в window. Для невыбранного окна это значение, которое имела бы точка (в буфере этого окна), если бы это окно было выбрано. По умолчанию window — выбранное окно.
Если window — выбранное окно, возвращаемое значение является значением точки в буфере этого окна. Строго говоря, правильнее было бы возвращать внешнее значение точки, вне любых форм
save-excursion. Но это значение сложно найти.
- Функция: set-window-point window position
-
Эта функция устанавливает точку в window в позицию position в буфере window. Она возвращает position.
Если window выбрано, эта функция просто выполняет
goto-charв буфере window.
- Переменная: window-point-insertion-type
Эта переменная задаёт тип вставки маркера (см. Типы вставки маркера) для
window-point. По умолчанию этоnil, поэтомуwindow-pointостаётся перед вставленным здесь текстом.
- Функция: set-window-cursor-type window type
-
Эта функция задаёт форму курсора для window. Эта настройка имеет приоритет над переменной
cursor-type, а формат type совпадает с форматом значения этой переменной. См. Параметры курсора. Если window равноnil, это означает, что тип курсора задаётся для выбранного окна.Начальное значение для новых окон —
t, которое означает, что следует учитывать локальное для буфера значениеcursor-type. Значение, заданное этой функцией, сохраняется при смене буферов, отображаемых в window, поэтомуset-window-bufferне сбрасывает его. См. Буферы и окна.
- Функция: window-cursor-type &optional window
Эта функция возвращает тип курсора для window; по умолчанию используется выбранное окно.
- Функция: window-cursor-info &optional window
-
Эта функция возвращает сведения о курсоре window; по умолчанию используется выбранное окно.
Возвращаемое функцией значение — вектор вида
[type x y width height ascent]. Ниже описан каждый компонент этого вектора:- type
-
Тип курсора, символ. Это то же значение, которое возвращает
window-cursor-type. - x
- y
-
Координаты курсора в пикселях, соответствующие его верхнему левому углу относительно верхнего левого угла текстовой области window.
- width
- height
-
Размеры курсора в пикселях.
- ascent
Количество пикселей, на которое курсор выступает над базовой линией.
Если курсор в данный момент не отображается для window, эта функция возвращает
nil.Любой компонент возвращаемого вектора, кроме первого, может быть равен
-1, что означает, что его фактическое значение в данный момент недоступно.
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/Window-Point.html