Фрейми і X Windows – ЧАСТИНА 3

Зверніть увагу, це засіб автоматичного підняття реалізовано самим Emacs Деякі програми управління вікнами також реалізують автоподнятіе Якщо ви включите автоподнятіе для фреймів Emacs у вашій програмі управління X-вікнами, це буде працювати, але не під контролем Emacs, і отже, auto-raise-mode не буде відігравати ролі

M-x auto-lower-mode

Перемикає автоматичне опускання обраного кадру Автоматичне опускання означає, що всякий раз, коли ви пересуваєте мишу за межі цього фрейма, він переноситься вниз стека X-вікон

Команда auto-lower-mode не впливає на автоопусканіе, реалізоване програмою управління X-вікнами Щоб контролювати це, ви повинні використовувати відповідні кошти своєї програми управління вікнами

M-x set-frame-font hRETшрифт hRETi

Визначає шрифт як основний шрифт в обраному фреймі Основний шрифт використовується для всього відображуваного в цьому фреймі тексту, крім випадків, коли для якогось тексту за допомогою накреслення (див Розділ 1713 [Начертания], с 155) визначений інший шрифт Див Розділ A7 [Шрифт X], с 392, щоб дізнатися про способи перерахування доступних у вашій системі шрифтів

Ви також можете встановити основний шрифт фрейма через спливаюче ме-

ню Щоб викликати це меню, натисніть S-Mouse-1

У версіях Emacs, які використовують X toolkit, функції для установки кольору і шрифтів не впливають на меню, так як меню відображаються зі своїми власними класами віджетів Щоб змінити вигляд меню, ви повинні використовувати X-ресурси (див Розділ A13 [Ресурси X], с 396) Див Розділ A8 [Кольори X], с 393, відомості про квіти, а також Розділ A7 [Шрифт X], с 392, що стосується питань про вибір шрифту

Для отримання інформації про параметри і налаштуваннях фреймів дивіться розділ

“Frame Parameters в The Emacs Lisp Reference Manual

1711  Смужки прокрутки

При використанні X, Emacs зазвичай створює смужки прокрутки ліворуч від кожного вікна Смужка прокрутки проходить по всій висоті вікна, а усередині її є прямокутник, що представляє показану в даний момент частина буфера Повна висота смужки прокрутки представляє всю довжину буфера

Ви можете використовувати на смужці прокрутки Mouse-2 (зазвичай це середня кнопка), щоб пересунути або перетягнути внутрішній прямокутник вгору або вниз Якщо ви перемістіть його до верху смужки прокрутки, ви побачите початок буфера Якщо ви перемістіть його до низу смужки прокрутки, то побачите кінець буфера

Права і ліва кнопки миші прокручують на контрольоване число рядків Mouse-1 (зазвичай ліва кнопка) переміщує рядок, на рівні якої ви клацнули, до верхнього краю вікна Mouse-3 (зазвичай права кнопка) переміщує верхній рядок вікна вниз до того рівня, де ви клацнули Клацаючи послідовно на одному місці, ви можете прокручувати на одне і те ж відстань ще і ще

Крім прокрутки, ви також можете клацнути на смужці прокрутки за допомогою C-Mouse-2, щоб розбити вікно по горизонталі Розбиття робиться в тому рядку, де ви клацнули

Ви можете включити або виключити режим Scroll Bar командою Mx scroll-bar-mode Без аргументу, вона переключає використання смужок прокрутки З аргументом, вона включає використання смужок прокрутки тоді і тільки тоді, коли аргумент позитивний Ця команда застосовується до всіх фреймам, включаючи ті, що ще будуть створені

Для управління початковій установкою режиму Scroll Bar ви можете використовувати X-ресурс

‘VerticalScrollBars. Див Розділ A13 [Ресурси X], с 396

Щоб включити або виключити смужки прокрутки тільки для обраного фрейма,

скористайтеся командою Mx toggle-scroll-bar

1712  Смужки меню

Ви можете включити або виключити показ смужок меню за допомогою команди Mx menu-bar-mode Без аргументів, ця команда перемикає режим Menu Bar це другорядне режим З аргументом, ця команда включає режим Menu Bar, якщо аргумент позитивний, і вимикає, якщо аргумент неположітелен Для управління початковій установкою режиму Menu Bar ви можете використовувати X-ресурс menuBarLines. Див Розділ A13 [Ресурси X], с 396 Професійні користувачі часто вимикають смужку меню, особливо на текстових терміналах, де це звільняє одну додатковий рядок для тексту

Див Розділ 14 [Смужка меню], с 26, для отримання інформації про те, як викликати команди за допомогою смужки меню

1713  Використання різних накреслень

Коли ви використовуєте Emacs з системою X, ви можете налаштувати декілька стилів відображення знаків Ви можете контролювати такі аспекти стилю: шрифт, колір тексту, колір фону і підкреслення Emacs частково підтримує накреслення в MS-DOS, дозволяючи вам контролювати для кожного накреслення кольору тексту і фону (див Додаток C [MS-DOS], с 403)

Ви керуєте стилем відображення шляхом визначення іменованих накреслень Кожне накреслення може задавати шрифт, колір тексту, колір фону і прапор підкреслення але вона не зобовязана здавати їх усі Потім, вказуючи накреслення або накреслення для заданої частини тексту в буфері, ви керуєте зовнішнім виглядом цього тексту

Використовуваний для кожного даного знаку стиль відображення визначається комбінацією декількох накреслень Будь аспект стилю, що не заданий перекриттями або властивостями тексту, надається самим фреймом

Режим Enriched, призначений для редагування форматованого тексту, включає кілька команд і меню для завдання накреслень Див Розділ 21114 [Начертания в форматованому тексті], с 200, щоб дізнатися, як вказати шрифт для тексту в буфері Див Розділ 21115 [Кольори в форматованому тексті], с 201, про завдання квітів тексту і фону

Для зміни зовнішнього вигляду начернанія використовуйте буфер настройки Див Розділ 31223 [Налаштування накреслень], с 347 Для визначення атрибутів конкретних накреслень ви також можете використовувати X-ресурси (див Розділ A13 [Ресурси X], с 396)

Щоб дізнатися, які накреслення визначені в даний момент, і як вони виглядають, наберіть Mx list-faces-display Одне накреслення може виглядати по-різному в різних фреймах дана команда показує його вигляд в тому фреймі, де ви її набрали Ось перелік стандартних певних накреслень:

default Це накреслення використовується для звичайного тексту, для якого не визначено інше накреслення

modeline Це накреслення використовується для рядків режиму За замовчуванням воно встановлюється як інверсія накреслення default Див Розділ 117 [Змінні зображення], с 84

highlight

Це накреслення використовується в різних режимах для підсвічування частин тек-

ста

region Це накреслення застосовується для відображення виділеної області (коли включений режим Transient Mark – дивіться нижче)

secondary-selection

Це накреслення використовується для відображення вторинного виділення (див Раз-

справ 172 [Вторинне виділення], с 149)

bold Це накреслення використовує жирний варіант шрифта, якщо він є

italic Це накреслення використовує курсивний варіант шрифта, якщо він є

bold-italic

Це накреслення використовує жирний курсивний варіант шрифту по умолча-

нію, якщо він є

underline

Це накреслення підкреслює текст

Якщо включений режим Transient Mark, текст області підсвічується, коли мітка активна Для цього використовується накреслення з імям region ви можете керувати стилем підсвічування, змінюючи стиль цього накреслення (Див Розділ 31223 [Налаштування накреслень], с 347) Див Розділ 82 [Transient Mark], с 64, для отримання більшої інформації про режим Transient Mark та активізації і деактивизации мітки

Один простий спосіб використовувати різні накреслення – включити режим Font Lock Цей другорядний режим, завжди локальний для конкретного буфера, підбирає накреслення відповідно до синтаксисом редагованого тексту Він може розпізнавати коментарі і рядки в більшості мов в деяких мовах він уміє навіть розпізнавати і правильно підсвічувати різні інші важливі конструкції Див Розділ 1714 [Font Lock], с 156, для отримання більшої інформації про режим Font Lock і синтаксичної підсвічуванню

Ви можете роздрукувати буфер з підсвічуванням, яку ви бачите на екрані, за допомогою команди ps-print-buffer-with-faces Див Розділ 305 [Postscript], с 332

1714  Режим Font Lock

Режим Font Lock – це другорядний режим, завжди локальний для кожного буфера, який підсвічує редагований вами текст, використовуючи різні накреслення відповідно до синтаксисом тексту Він може розпізнавати коментарі і рядки в більшості мов в деяких мовах він може також розпізнавати і правильно підсвічувати різні інші важливі конструкції – наприклад, імена обумовлених функцій і зарезервовані ключові слова

Команда Mx font-lock-mode включає і вимикає режим Font Lock відповідно до аргументом і перемикає, якщо аргумент не заданий Функція turn-on-font-lock безумовно включає режим Font Lock Це корисно у функціях-пастках режиму Наприклад, щоб задіяти режим Font Lock всякий раз, коли ви редагуєте файл на Сі, ви можете зробити так:

(add-hook  ’c-mode-hook  ’turn-on-font-lock)

Щоб включити режим Font Lock автоматично у всіх режимах, які його під-

витримують, використовуйте функцію global-font-lock-mode, як показано тут:

(global-font-lock-mode  1)

Коли ви редагуєте текст в режимі Font Lock, підсвічування в зміненій рядку оновлюється автоматично Найчастіше зміни не роблять впливу на підсвічування наступних рядків, але іноді все ж впливають Щоб оновити підсвічування кількох рядків, використовуйте команду Mg Mg (font-lock-fontify-block)

У деяких основних режимах Mg Mg оновлює підсвічування всієї поточної функції (Як саме можна знайти поточну функцію, вказує змінна font-lock-markblock-function) В інших основних режимах Mg Mg оновлює підсвічування 16-ти рядків над і під точкою

З числовим аргументом n, M-g M-g оновлює підсвічування n рядків над і під точкою,

незалежно від режиму

Щоб отримати всі переваги режиму Font Lock, вам доведеться вибрати такий шрифт за замовчуванням, у якого є жирний, курсивний і жирний курсивний варіанти або вам знадобиться кольоровий монітор або монітор, відображає багато градацій сірого

Мінлива font-lock-maximum-decoration задає переважний рівень оформлення для режимів, які надають кілька рівнів Рівень 1 – це мінімальне оформлення деякі режими підтримують до трьох рівнів Звичайне значення за замовчуванням позначає якомога більше. Ви можете вказати ціле число, яке застосовується до всіх режимів, або задати різні числа для конкретних режимів наприклад, щоб використовувати рівень 1 для режимів C / C + + і рівень за замовчуванням в інших випадках, напишіть так:

(setq font-lock-maximum-decoration

’((c-mode 1)  (c++-mode 1)))

У великих буферах підсвічування може бути занадто повільної, тому ви можете придушити її Мінлива font-lock-maximum-size задає розмір буфера, понад якого підсвічування не робиться

Підсвічування коментарів і рядків (або синтаксична підсвічування) грунтується на аналізі синтаксичної структури тексту буфера З метою збільшення швидкості деякі режими, включаючи режим C і режим Lisp покладаються на особливу угоду: відкриває дужка в самому лівому стовпчику завжди позначає початок визначення функції і, таким чином, завжди знаходиться поза будь-якого рядка або коментаря (Див Розділ 224 [Визначення функцій], с 208) Якщо ви не дотримуєтесь цієї угоди, режим Font Lock може зробити неправильну підсвічування тексту після відкриває дужки в лівому стовпчику, яка потрапляє в рядок або коментар

Мінлива font-lock-beginning-of-syntax-function (завжди локальна для буфера) вказує, яким чином режим Font Lock може знайти позицію, яка гарантовано знаходиться поза будь-якого коментаря або рядка У режимах, що використовують угоду про відкриває скобці в лівому стовпчику, значення цієї змінної за замовчуванням – це beginning-of-defun, що велить режиму Font Lock застосовувати цю угоду Якщо ви встановите цю змінну в nil, Font Lock більше не стане покладатися на цю угоду Це дозволяє уникнути невірних результатів, але ціною цього буде те, що в деяких випадках для підсвічування доведеться проходити текст буфера з самого початку

Зразки підсвічування Font Lock вже існують для багатьох режимів, але ви можете захотіти розфарбувати щось додатково Щоб додати свої власні зразки підсвічування для певного режиму, ви можете використовувати функцію font-lock-addkeywords Приміром, щоб виділити в коментарях Сі слова FIXME:, використовуйте це:

(font-lock-add-keywords

’c-mode

’((&quot\\&lt\\(FIXME\\):&quot 1 font-lock-warning-face t)))

1715  Режими підтримки Font Lock

Режими підтримки прискорюють режим Font Lock у великих буферах Є два режими підтримки: режим Fast Lock і режим Lazy Lock Вони використовують два різних методи прискорення режиму Font Lock

17151  Режим Fast Lock

Щоб зробити режим Font Lock більш швидким для буферів, що звертаються до великих файлів, ви можете використовувати режим Fast Lock Режим Fast Lock зберігає інформацію про шрифти для кожного файлу в окремому файлі кеша всякий раз, коли ви звертаєтеся до файлу, він заново прочитує інформацію про шрифти з файлу кеша замість того, щоб обчислювати шрифти для тексту з нуля

Команда Mx fast-lock-mode включає і вимикає режим Fast Lock відповідно до аргументом (без аргументу, режим перемикається) Ви також можете зробити так, щоб режим Fast Lock включався всякий раз, коли ви використовуєте режим Font Lock, наступним чином:

(setq  font-lock-support-mode ’fast-lock-mode)

Записувати файл кеша для маленьких буферів не має сенсу Тому є змінна, fast-lock-minimum-size, що задає найменший розмір файлу, для якого інформація про шрифти кешируєтся

Мінлива fast-lock-cache-directories вказує, де потрібно розміщувати файли кеша Її значення – це список каталогів, які будуть випробувані .” означає той же каталог, де файл редагується Значення за замовчуванням дорівнює (.” ~ / Emacs-flc), що велить використовувати той же каталог, якщо це можливо, інакше використовувати каталог

‘~/emacs-flc’

Мінлива fast-lock-save-others вказує, чи повинен режим Fast Lock зберігати файли кеша для файлів, чиїм власником є ​​не ви Відмінне від nil значення говорить, що повинен (і це значення за замовчуванням)

17152  Режим Lazy Lock

Щоб прискорити режим Font Lock для великих буферів, ви можете використовувати режим Lazy Lock, який зменшує кількість тексту, що підлягає підсвічуванню У режимі Lazy Lock підсвічування буфера робиться з потреби вона виготовляється тільки для тих частин буфера, які повинні зявитися на екрані І підсвічування ваших змін сповільнена вона виробляється, тільки коли Emacs не діяв певний невеликий проміжок часу

Команда Mx lazy-lock-mode включає і вимикає режим Lazy Lock відповідно до аргументом (без аргументу, режим перемикається) Ви також можете зробити так, щоб режим Lazy Lock включався всякий раз, коли ви використовуєте режим Font Lock, наступним чином:

(setq  font-lock-support-mode ’lazy-lock-mode)

Уникати підсвічування маленьких буферів не має сенсу Мінімальний розмір буфера, для якого підсвічування робиться по необхідності, визначається змінної lazy-lockminimum-size Менші буфери расцвечиваются відразу, як в простому режимі Font Lock

Коли ви змінюєте буфер, режим Lazy Lock відкладає підсвічування зміненого тексту Мінлива lazy-lock-defer-time задає число секунд, яке Emacs повинен залишатися незайнятим, перш ніж почати підсвічування ваших змін Якщо її значення дорівнює

0, зміни підсвічуються негайно, як в простому режимі Font Lock

Зазвичай режим Lazy Lock підсвічує стали видимими фрагменти буфера перед тим, як вони вперше показуються на екрані Однак, якщо значення lazy-lock-deferon-scrolling не дорівнює nil, знову видимий текст підсвічується тільки після того, як Emacs не діяв lazy-lock-defer-time секунд

У деяких режимах, включаючи режим C і режим Emacs Lisp, зміна вмісту одного рядка змінює контекст наступних рядків і, отже, ту підсвітку, яка повинна для них використовуватися Зазвичай ви повинні набрати Mg Mg, щоб оновити підсвічування наступних рядків Однак, якщо ви встановите змінну lazylock-defer-contextually не рівної nil, режим Lazy Lock робить це автоматично після закінчення lazy-lock-defer-time секунд

Коли Emacs не діє тривалий час, Lazy Lock підсвічує додаткові фрагменти буфера, які ще не показані, на випадок, якщо ви винесете їх на екран пізніше Це називається прихованою підсвічуванням

Мінлива lazy-lock-stealth-time визначає, скільки хвилин Emacs повинен залишатися незайнятим, перш ніж почати приховане освітлення Значення nil означає відсутність прихованого підсвічування Змінні lazy-lock-stealth-lines і lazy-lock-stealthverbose задають діапазон і подробиця прихованого підсвічування

17153  Fast Lock або Lazy Lock

Ось прості вказівки, які допоможуть вам вибрати один з режимів підтримки Font

Lock

Режим Fast Lock грає роль тільки при зверненні до файлів і знищенні буферів (і повязаних подій) отже, редагування буфера і прокрутка вікна не швидше і не повільніше, ніж в простому режимі Font Lock

Режим Fast Lock повільніше при зчитуванні файлів кеша, ніж режим Lazy Lock при підсвічуванні буфера отже, режим Fast Lock повільніше при зверненні до файлів, ніж режим Lazy Lock

Режим Lazy Lock працює під час прокрутки вікна, щоб розфарбувати текст, що виноситься на екран отже, прокрутка повільніше, ніж в простому режимі Font Lock

Режим Lazy Lock не підсвічується буфер в процесі редагування (він відкладає підсвічування змін) отже, редагування в ньому швидше, ніж в простому режимі Font Lock

Режим Fast Lock може бути збитий з пантелику файлом, що знаходяться під контролем системи управління версіями отже, підсвічування буфера може проводитися, навіть якщо для цього файлу є файл кеша

Режим Fast Lock працює тільки з буферами, що звертаються до файлів режим Lazy

Lock працює з будь-якими буферами

Режим Fast Lock створює файли кеша режим Lazy Lock не створює

Мінлива font-lock-support-mode вказує, який з цих режимів підтримки слід використовувати наприклад, щоб сказати, що в режимах C / C + + використовується режим Fast Lock, а в інших випадках – режим Lazy Lock, встановіть цю змінну так:

(setq font-lock-support-mode

’((c-mode fast-lock-mode)  (c++-mode  fast-lock-mode) (t lazy-lock-mode)))

1716  Режим Highlight Changes

Використовуйте Mx highlight-changes-mode, щоб включити другорядний режим, який показує за допомогою різних накреслень (в основному кольорів), які частини тексту буфера змінювалися недавно

1717  Інші можливості X Windows

Наступні команди дозволяють вам створювати і видаляти фрейми, а також робити дру-

Гії операції над ними:

Cz Мінімізує вибраний фрейм (iconify-or-deiconify-frame) Звичайне значення Cz, призупинення Emacs, марно під віконною системою, тому в даному випадку у цього ключа інша привязка

Якщо ви введете цю команду в піктограмі фрейма Emacs, вона демінімізі-

рует цей фрейм

Cx 5 0 Видаляє вибраний фрейм (delete-frame) Це не допускається, якщо є тільки один фрейм

Cx 5 o Вибирає інший фрейм, піднімає його і переносить в нього мишу, щоб він залишався обраним Якщо ви повторюєте цю команду, вона циклічно проходить по всіх фреймам на вашому терміналі

1718  Неоконів термінали

Якщо ваш термінал не володіє віконною системою, яку підтримує Emacs, то він може показувати тільки один фрейм Emacs в один момент часу Однак, ви все ж можете створювати кілька фреймів Emacs і перемикатися між ними На таких терміналах перемикання фреймів в чому схоже на перемикання між різними конфігураціями вікон

Щоб створити новий фрейм і переключитися в нього, використовуйте Cx 5 лютого для кругового проходу по існуючих фреймам використовуйте Cx 5 o щоб видалити поточний фрейм, використовуйте Cx 5 0

Кожен фрейм має відмітний номер Якщо ваш термінал може показувати в один час тільки один фрейм, то близько початку рядка режиму зявляється номер n поточного фрейма у формі Fn

‘FnНасправді – це імя фрейма Ви також можете вказати інше імя, якщо хочете, і ви можете вибирати фрейми по іменах Щоб задати нове імя для поточного фрейма, використовуйте команду Mx set-frame-name hRETімя hRETi, А для вибору фрейма відповідно з його імям використовуйте Mx select-frame-by-name hRETімя hRETi Зазначене вами імя зявляється в рядку режиму, коли цей фрейм стає обраним

Джерело: Річард Столмен, Керівництво по GNU Emacs

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*