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

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

Редактирование в одном фрейме затрагивает и другие фреймы.  К примеру, если вы поместите  текст в список уничтожений в одном фрейме,  вы можете  восстановить его в другом. Если вы выходите из Emacs через C-x C-c в одном фрейме, это удалит все фреймы. Чтобы удалить только один фрейм, используйте C-x 5 0.

Чтобы избежать путаницы, мы резервируем слово “окно” для тех окон, которые реали-

зует сам Emacs, и никогда не используем его для обозначения фрейма.

Emacs, скомпилированный  для MS-DOS, эмулирует некоторые аспекты оконной системы, так что вы сможете использовать многие возможности из описанных в этой главе. См. Раздел C.1 [MS-DOS Ввод], с. 403, для дальнейшей информации.

17.1  Команды мыши для редактирования

Команды мыши для выделения и копирования области в основном совместимы с командами программы xterm. Вы можете пользоваться одними и теми же командами мыши для обмена текстом между Emacs другими X-клиентами.

Если вы выделите область с помощью любой из этих команд и сразу же  после этого нажмете функциональную клавишу hDELETEi, она удалит выделенную область. Функциональная клавиша hBACKSPACEi  или ASCII-знак hDELi  не делают этого; и если вы нажмете между  командой мыши и hDELETEi  какую-то  другую  клавишу, hDELETEi  не  подействует таким образом.

Mouse-1    Перемещает  точку  туда,  где  вы щелкнули (mouse-set-point).   Обычно это левая кнопка.

Drag-Mouse-1

Устанавливает область вокруг  текста, по которому вы провели, и копирует этот текст в список уничтожений (mouse-set-region). С помощью этой команды вы можете указать оба конца области.

Если при проведении мышью вы переместите  ее за верхний или нижний предел окна, это окно непрерывно прокручивается, пока вы не вернете в него мышь. Таким  способом  вы можете  выделять области, не  умещающиеся  на экране. Число прокручиваемых за один шаг строк зависит от того, насколько далеко за край окна ушла мышь; минимальный  размер шага определяет переменная mouse-scroll-min-lines.

Mouse-2    Восстанавливает последний уничтоженный текст в том месте, где вы щелкнули

(mouse-yank-at-click). Обычно это средняя кнопка.

Mouse-3    Эта команда, mouse-save-then-kill, имеет несколько назначений в зависимо-

сти от того, где вы щелкнули, и от состояния области.

Самый основной случай — это когда вы щелкаете Mouse-1 в одном месте, а затем Mouse-3 в другом. Это выделяет текст между двумя этими позициями в качестве области. Это также копирует новую область в список уничтожений, чтобы вы могли скопировать его в другое место.

Если вы щелкните в тексте Mouse-1, прокрутите окно с помощью полоски прокрутки  и затем щелкните Mouse-3, Emacs запомнит, где была точка перед прокруткой (где вы поместили  ее с помощью Mouse-1), и использует эту позицию как другой конец области. Это сделано, чтобы вы могли выделять области, которые не умещаются полностью на экране.

В более общем  виде,  если у вас нет подсвеченной области, Mouse-3 выделяет в качестве области текст  между  точкой и местом щелчка.  Она делает это, устанавливая метку там, где  была точка, и перемещая точку  к той позиции, где вы щелкнули.

Если у вас есть подсвеченная область, или если область была установлена непосредственно  перед этим с помощью проведения кнопкой 1, Mouse-3 подстраивает ближайший конец области, перемещая его к месту щелчка. Также, текст подстроенной области замещает в списке уничтожений текст старой области.

Если вы изначально задали область, используя двойной или тройной щелчок Mouse-1, чтобы определить область как состоящую из целых слов или строк, то подстройка области с помощью Mouse-3 также проходит по целым словам или строкам.

Если вы примените  Mouse-3 два раз подряд на одном месте, вы уничтожите уже выделенную область.

Double-Mouse-1

Этот  ключ  устанавливает область вокруг  слова, на котором вы щелкнули. Если вы щелкнули на знаке с синтаксической категорией “symbol” (например, на подчерке в режиме C), он устанавливает область вокруг символа, которому принадлежит этот знак.

Если вы щелкнули на знаке с синтаксической категорией открывающей или закрывающей круглой  скобки,  область устанавливается вокруг  группы  (sвыражения), которая завершается  или начинается на этом знаке.   Если вы щелкнули на знаке с синтаксической категорией разделителя строк (таком как кавычка или двойные кавычки в Си), область будет установлена вокруг этой строковой константы (с использованием эвристики, чтобы выяснить, является ли этот знак начинающим или завершающим).

Double-Drag-Mouse-1

Этот ключ выделяет область, состоящую из слов, по которым вы провели.

Triple-Mouse-1

Этот ключ устанавливает область вокруг строки, на которой вы щелкнули.

Triple-Drag-Mouse-1

Этот ключ выделяет область, состоящую из строк, по которым вы провели.

Простейший способ уничтожить  текст  с помощью мыши — нажать  Mouse-1 в одном конце,  а затем дважды нажать Mouse-3 на другом.  См.  Раздел 9.1 [Уничтожение], с. 69. Чтобы скопировать текст в список уничтожений, не удаляя его из буфера, нажмите Mouse-3 только один раз или просто проведите по этому тексту с прижатой Mouse-1. Потом вы можете скопировать этот текст в другое место восстановлением.

Чтобы восстановить уничтоженный или скопированный текст в другое место, переведите  туда мышь и нажмите  Mouse-2. См.  Раздел 9.2 [Восстановление],  с. 71.  Однако, если mouse-yank-at-point не равна nil, Mouse-2 восстанавливает в точке.  Тогда не имеет значения, где вы щелкаете, или даже в каком из окон фрейма вы щелкаете.  Значение по умолчанию равно nil.   Эта переменная влияет также  на восстановление  вторичного выделения.

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

те  в программе,  работающей в другом окне,  команду “вставить”,  чтобы вставить текст выделения.

Чтобы скопировать текст из другого X-окна, используйте в программе, работающей в другом окне,  команды “вырезать” или “копировать”,  чтобы выделить нужный вам текст. Затем восстановите его в Emacs с помощью C-y или Mouse-2.

Эти команды вырезания и вставки работают также и в MS-Windows.

Когда Emacs помещает текст в список уничтожений или перекладывает текст на вершину списка уничтожений, он устанавливает первичное  выделение X-сервера. Именно таким образом другие X-клиенты могут получить доступ к этому тексту.  Emacs также сохраняет текст в буфере  вырезок, но только если этот текст достаточно короткий  (xcut-buffer-max задает максимальное число знаков); помещение в буфер вырезок длинных строк может быть медленным.

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

17.2  Вторичное выделение

Вторичное выделение — это другой способ выделения текста с использованием X Windows.  Оно не  использует точку  или метку,  поэтому вы можете  использовать его для уничтожения текста без установки точки или метки.

M-Drag-Mouse-1

Устанавливает вторичное выделение с одним концом в том месте, где вы нажали кнопку, и другим — в том, где вы ее отпустили (mouse-set-secondary). Когда вы проводите мышью, появляется и изменяется подсветка.

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

M-Mouse-1

M-Mouse-3

M-Mouse-2

Устанавливает одну из граничных точек вторичного выделения (mouse-startsecondary).

Создает  вторичное  выделение, используя  место,  указанное  с  помощью M-Mouse-1  как его второй конец (mouse-secondary-save-then-kill).   Второй щелчок  на  этом  же   месте  уничтожает  только  что  сделанное вторичное выделение.

Вставляет в месте щелчка вторичное выделение (mouse-yank-secondary). Это помещает точку в конец восстановленного текста.

Двойные и тройные щелчки M-Mouse-1 действуют на слова и строки, во многом как для

Mouse-1.

Если mouse-yank-at-point не равна nil,  M-Mouse-2 восстанавливает в точке.   Тогда не имеет значения, где вы щелкнули; главное, в каком окне.  См.  Раздел 17.1 [Команды мыши], с. 147.

17.3  Следование по ссылкам с помощью мыши

Некоторые буферы Emacs показывают различного рода перечни. Это перечни файлов,

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

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

Например, если вы щелкните  Mouse-2 на имени файла в буфере  Dired,  вы обрати-

тесь к  этому файлу.   Если вы щелкните  Mouse-2 на сообщении  об ошибке  в буфере

‘*Compilation*’, вы перейдете к исходному коду для этого сообщения. Если вы щелкните

Mouse-2 на завершении в буфере ‘*Completions*’, вы выберете это завершение.

Обычно вы можете  судить о том, имеет ли Mouse-2 особое  значение, по тому,  что чувствительный текст подсвечивается, когда вы проводите над ним мышь.

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

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

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

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