Spec-Zone.ru › Elisp

Окна и точка

У каждого окна есть собственное значение точки (см. Точка), не зависящее от значения точки в других окнах, отображающих тот же буфер. Это делает полезным одновременное отображение одного буфера в нескольких окнах.

  • Точка окна задаётся при первом создании окна; она инициализируется значением точки буфера или значением точки другого окна, открытого для этого буфера, если такое окно существует.
  • При выборе окна значение точки в его буфере устанавливается равным значению точки окна. И наоборот, при снятии выбора с окна значение точки окна устанавливается равным значению точки буфера. Таким образом, когда вы переключаетесь между окнами, отображающими заданный буфер, в буфере действует значение точки выбранного окна, а значения точек остальных окон хранятся в этих окнах.
  • Пока выбранное окно отображает текущий буфер, точка окна и точка буфера всегда перемещаются вместе; они остаются равными.
  • Многие функции 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

Spec-Zone.ru

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