Фреймы и X Windows – ЧАСТЬ 2

17.4  Щелчки мыши для меню

Щелчки мыши, модифицированные с помощью клавиш hCTRLи hSHIFTi, выводят меню.

C-Mouse-1

C-Mouse-2

C-Mouse-3

S-mouse-1

Это меню для выбора буфера.

Это меню для задания начертаний и других свойств текста для редактирования форматированного текста. См. Раздел 21.11 [Форматированный  текст], с. 198.

Это меню определяется  режимом.  Для большинства режимов данное меню имеет те же пункты,  что содержатся во всех определяемых режимом меню из полоски меню.  Некоторые режимы могут определять для этой кнопки другое меню.1

Это меню для задания основного шрифта фрейма.

17.5  Команды мыши для строки режима

Вы можете  использовать мышь на строке  режима для выбора окон и манипуляций с ними.

Mouse-1    Mouse-1 на строке режима выбирает окно сверху. Проводя мышью с нажатой на строке режима Mouse-1, вы можете перемещать эту строку режима, изменяя таким образом высоту окон сверху и снизу.

Mouse-2    Mouse-2 на строке режима раскрывает окно на весь фрейм.

Mouse-3    Mouse-3 на строке режима удаляет окно сверху.

C-Mouse-2

C-Mouse-2 на строке режима разбивает окно сверху по вертикали в том месте,

где вы щелкнули.

C-Mouse-2 на полоске прокрутки разбивает соответствующее окно по горизонтали. См.

Раздел 16.2 [Разделение окон], с. 142.

1  В некоторых системах для определяемых режимом меню используется Mouse-3. Мы провели опрос среди пользователей и выяснили, что  они предпочитают  оставить Mouse-3 для выделения и  уничтожения областей. Отсюда решение использовать для этого меню C-Mouse-3.

17.6  Создание  фреймов

Префиксный ключ C-x 5 аналогичен C-x 4, и на них определены параллельные подкоманды.  Разница между  ними в том, что команды с C-x 5 создают новый фрейм,  а не просто новое окно в выбранном фрейме  (см.  Раздел 16.4 [Всплывающие окна], с. 143). Если запрошенный материал уже показывается в существующем видимом или минимизированном  фрейме, эти команды используют существующий фрейм после его поднимания или деминимизации по необходимости.

Команды на C-x 5 различаются по тому, как они находят или создают буфер для выбо-

ра:

C-x 5 2      Создает новый фрейм (make-frame-command).

C-x 5 b имябуфера hRETi

Выбирает буфер имябуфера  в другом  фрейме.    Это  запускает switch-tobuffer-other-frame.

C-x 5 f имяфайла hRETi

Обращается к файлу имяфайла и выбирает его буфер в другом фрейме.  Это запускает find-file-other-frame. См. Раздел 14.2 [Обращение], с. 106.

C-x 5 d каталог hRETi

Выбирает буфер Dired для каталога каталог в другом фрейме.  Это запускает

dired-other-frame. См. Глава 28 [Dired], с. 291.

C-x 5 m           Позволяет начать составление почтового сообщения в другом  фрейме  (mailother-frame). Это вариант C-x m, работающий в другом фрейме. См. Глава 26 [Посылка почты], с. 267.

C-x 5 .   Обращается к тегу из текущей таблицы тегов в другом фрейме. Это запускает find-tag-other-frame, вариант M-.,  работающий с  несколькими фреймами. См. Раздел 22.13 [Теги], с. 224.

C-x 5 r имяфайла hRETi

Обращается к файлу имяфайла в режиме только для чтения и выбирает его буфер в другом фрейме.    Это запускает find-file-read-only-other-frame. См. Раздел 14.2 [Обращение], с. 106.

Вы  можете  управлять видом вновь создаваемых  фреймов,  устанавливая параметры фрейма в default-frame-alist.  Для задания параметров, относящихся  только к начальному фрейму,  вы можете  использовать  переменную initial-frame-alist.   См.   раздел “Initial Parameters” в The Emacs Lisp Reference Manual, для дальнейшей информации.

Простейший  способ указать основной шрифт для всех фреймов Emacs — через X-ресурс (см.  Раздел A.7 [Шрифт X], с. 392), но вы также можете сделать это, изменив defaultframe-alist так, чтобы в нем задавался параметр font, как показано здесь:

(add-to-list ’default-frame-alist ’(font  . "10×20"))

17.7  Создание  и использование фрейма Speedbar

Фрейм Emacs может иметь speedbar, то есть вертикальное окно, служащее как меню с возможностью прокрутки  для файлов, к которым вы можете обратиться, и тегов внутри этих файлов. Чтобы создать speedbar, введите  M-x speedbar; это создает окно speedbar для выбранного фрейма.   После этого вы можете  щелкнуть в speedbar на имени файла, чтобы обратиться к нему в соответствующем фрейме Emacs, или щелкнуть на имени тега, чтобы перескочить к нему соответствующем фрейме.

Изначально  speedbar перечисляет непосредственное содержание текущего каталога по одному файлу на строке.  В каждой строке также есть кнопка, ‘[+]’ или ‘<+>’, на которой

вы можете  щелкнуть Mouse-2, чтобы “открыть” содержимое данного элемента. Если на этой строке перечислен каталог, то при открытии  к показанному в speedbar добавляется содержание этого каталога под его собственной строкой. Если на строке перечислен обычный файл, при его открытии  к содержимому  speedbar добавляется список тегов из этого файла. Когда файл открывается, ‘[+]’ заменяется на ‘[-]’; вы можете щелкнуть на этой кнопке, чтобы “закрыть” этот файл (скрыть его содержание).

Некоторые основные режимы, включая режим Rmail, Info и GUD, имеют специализированные способы поместить в speedbar другие полезные вещи. Например, в режиме Rmail speedbar показывает перечень Rmail-файлов и позволяет вам перенести текущее сообщение в другой Rmail-файл, щелкнув на кнопке ‘<M>’.

Speedbar принадлежит одному фрейму Emacs и всегда работает с этим фреймом. Если вы используете несколько фреймов, вы можете  сделать speedbar для некоторых или для всех из них;  чтобы сделать speedbar  для любого данного фрейма,  наберите  в нем M-x speedbar.

17.8  Множество дисплеев

Один Emacs может общаться более  чем с одним дисплеем X  Windows.  Изначально Emacs использует только один дисплей — тот,  что указан в переменной среды DISPLAY или с помощью ключа ‘-display’ (см. Раздел A.2 [Ключи запуска], с. 386). Чтобы подсоединиться к другому дисплею, воспользуйтесь командой make-frame-on-display:

M-x make-frame-on-display hRETдисплей hRETi

Создает новый фрейм на дисплее дисплей.

Один X-сервер может обрабатывать  более одного экрана. Когда вы открываете фреймы на экранах, принадлежащих  одному серверу,  Emacs знает, что они разделяют одну клавиатуру и воспринимает все команды, приходящие с этих экранов, как  один поток ввода.

Когда вы открываете фреймы на разных X-серверах,  Emacs создает для каждого сервера отдельный  поток ввода. Поэтому два пользователя могут одновременно печатать на двух дисплеях, и Emacs не смешивает их ввод. Каждый сервер имеет также собственный выбранный  фрейм.  Команды, которые вы вводите на конкретном X-сервере, относятся к выбранному фрейму этого сервера.

Несмотря на это, люди, использующие одно и то же задание Emacs с разных дисплеев, все же могут вмешиваться в дела друг друга, если будут неосторожны. Например, если любой их них напечатает C-x C-c, это прекратит задание Emacs для всех!

17.9  Фреймы специальных буферов

Вы можете сделать так, чтобы определенные буферы, для которых Emacs обычно создает второе окно, если у вас есть только одно, появлялись в особых собственных фреймах. Чтобы сделать это, установите переменную special-display-buffer-names равной списку имен буферов; любой буфер, чье имя содержится в этом списке, автоматически получает специальный  фрейм, когда какая-нибудь команда Emacs хочет показать его “в другом окне”.

Например, если вы установите эту переменную таким образом:

(setq special-display-buffer-names

’("*Completions*" "*grep*" "*tex-shell*"))

то списки завершений, вывод grep и буфер оболочки  режима TEX получат свои собственные фреймы.   Эти  фреймы  и окна в них никогда не  разбиваются автоматически и не используются для других  буферов. Они продолжают показывать буферы, для которых

были созданы, пока вы не измените их вручную. Уничтожение специального  буфера авто-

матически удаляет его фрейм.

В более общем случае вы можете установить special-display-regexps равной списку регулярных выражений; тогда буфер получает  собственный фрейм, если его имя совпадает в любым из них. (Еще раз, это относится только к буферам, которые обычно отображаются в отдельном окне.)

Переменная special-display-frame-alist задает параметры для этих фреймов. У нее есть значение по умолчанию, поэтому вам необязательно устанавливать  ее.

Те, кто знает Лисп, могут также сделать элемент special-display-buffer-names или special-display-regexps списком.  Тогда  первый элемент — это имя буфера  или регулярное выражение, а остальные указывают, как  создавать фрейм.   Это может быть ассоциативный список, задающий значения параметров фрейма; эти значения имеют приоритет перед значениями параметров, указанных в special-display-frame-alist.   Или же остальные элементы могут иметь такую форму:

(функция  аргументы…)

где функция — это символ. Тогда фрейм конструируется путем вызова функции; ее пер-

вым аргументом является буфер, а остальными аргументами — аргументы.

Аналогичными средствами вы можете указать буферы, которые должны отображаться в выбранном окне.   См.  Раздел 16.5 [Использование того же  окна], с. 143. Показ в том же окне обладает приоритетом перед показом в специальном фрейме; следовательно, если вы добавили имя буфера к special-display-buffer-names, но это не возымело  никакого эффекта, проверьте, не используется  ли для этого же имени буфера средство показа в том же окне.

17.10  Установка параметров фрейма

Этот раздел описывает команды для изменения стиля отображения выбранного фрейма и его поведения в оконной среде.

M-x set-foreground-color hRETцвет hRETi

Задает цвет для текста в выбранном фрейме.

M-x set-background-color hRETцвет hRETi

Задает цвет для фона в выбранном фрейме.   Также  изменяет цвет текста в начертании modeline, чтобы оно оставалось инверсией начертания  по умолчанию.

M-x set-cursor-color hRETцвет hRETi

Задает цвет курсора в выбранном фрейме.

M-x set-mouse-color hRETцвет hRETi

Задает цвет указателя мыши, когда он находится над выбранным фреймом.

M-x set-border-color hRETцвет hRETi

Задает цвет рамки выбранного фрейма.

M-x list-colors-display

Выводит определенные имена цветов и показывает, как эти цвета выглядят.

Это несколько медленная команда.

M-x auto-raise-mode

Переключает автоматическое  поднятие выбранного фрейма.   Автоматическое поднятие означает, что всякий раз, когда вы передвигаете мышь в этот фрейм, он поднимается.

Источник: Ричард Столмен, Руководство по GNU Emacs

Похожие посты:

Вы можете оставить комментарий, или ссылку на Ваш сайт.

Оставить комментарий