Аргументы командной строки

GNU Emacs обрабатывает аргументы командной строки, которые запрашивают различные действия при вызове Emacs. Они существуют для совместимости с другими редакторами и для сложных процедур. Мы не рекомендуем использовать их для обычного редактирования.

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

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

Есть два способа записи ключей: короткие формы, начинающиеся с одного знака `-', и длинные формы, начинающиеся с `--'. Например, `-d' -- это короткая форма, а `--display' -- соответствующая длинная форма.

Длинные формы с `--' легче запомнить, но дольше печатать. Однако, вы не обязаны писать имя ключа полностью, достаточно любого однозначного сокращения. Когда длинный ключ принимает аргумент, вы можете использовать для разделения имени ключа и аргумента либо пробел, либо знак равенства. Таким образом, вы можете написать как `--display sugar-bombs:0.0', так и `--display=sugar-bombs:0.0'. Мы рекомендуем использовать знак равенства, так как он более четко показывает взаимосвязь, и в приведенных ниже таблицах всегда используется знак равенства.

Большинство ключей указывают, как инициализировать Emacs, или устанавливают параметры для всего сеанса Emacs. Мы называем их ключами запуска. Немногие ключи указывают, что нужно сделать: например, загрузить библиотеки, вызвать функции или выйти из Emacs. Такие ключи называют ключами действия. Их и имена файлов вместе называют аргументами действия. Emacs обрабатывает все аргументы действия в том порядке, в котором они были записаны.

Аргументы действия

Вот таблица аргументов и ключей действия:

`файл'
Обратиться к файлу с помощью find-file. Смотрите раздел Обращение к файлам.
`+номер-строки файл'
Обратиться к файлу с помощью find-file, а затем перейти в нем к строке с номером номер-строки.
`-l файл'
`--load=файл'
Загрузить лисповскую библиотеку с именем файл с помощью функции load. Смотрите раздел Библиотеки Лисп-программ для Emacs. Библиотека может находиться либо в текущем каталоге, либо в пути поиска библиотек Emacs, как он задан переменной EMACSLOADPATH (смотрите раздел Общие переменные).
`-f функция'
`--funcall=функция'
Вызвать лисповскую функцию без аргументов.
`--eval выражение'
Вычислить лисповское выражение.
`--insert=файл'
Вставить содержимое файла в текущий буфер. Это похоже на действие M-x insert-file. Смотрите раздел Разнообразные действия над файлами.
`--kill'
Прекратить работу Emacs без подтверждения.

Файл инициализации может получить доступ к значениям аргументов действия через список в переменной command-line-args. Файл инициализации может перекрыть обычную обработку аргументов действия или определить новые путем чтения и установки этой переменной.

Ключи запуска

Ключи запуска задают параметры для данного сеанса Emacs. В этом разделе описаны более общие ключи запуска; некоторые другие ключи, относящиеся к X Windows, вводятся в следующих разделах.

Некоторые ключи запуска влияют на процесс загрузки файлов инициализации. Обычно Emacs загружает `site-start.el', если он существует, затем ваш собственный файл инициализации `~/.emacs', если он существует, и наконец, `default.el', если он существует; определенные ключи запрещают загрузку некоторых из этих файлов или заменяют их другими файлами.

`-t устройство'
`--terminal=устройство'
Использовать устройство в качестве терминала для ввода и вывода.
`-d дисплей'
`--display=дисплей'
Использовать систему X Windows и открыть начальный фрейм Emacs на дисплее с заданным именем.
`-nw'
`--no-windows'
Не общаться непосредственно с X Windows, не обращая внимания на переменную среды DISPLAY, даже если она установлена.
`-batch'
`--batch'
Запустить Emacs пакетном режиме, что означает, что редактируемый текст не отображается, а стандартные команды терминала для прерывания, такие как C-z и C-c, продолжают иметь свое обычное значение. Emacs в пакетном режиме выводит в стандартный поток ошибок stderr только то, что в нормальном режиме выводилось бы программами в эхо-область. Пакетный режим используется для запуска программ, написанных на языке Emacs Lisp, из сценариев командного интерпретатора, Make-файлов и так далее. Обычно при этом также используются ключи `-l' или `-f', чтобы запустить Лисп-программу для пакетной обработки. Ключ `-batch' подразумевает `-q' (не загружать файл инициализации). Он также заставляет Emacs прекратить работу после того, как обработаны все командные ключи. Кроме того, самосохранение производится только в тех буферах, в которых оно было затребовано явно.
`-q'
`--no-init-file'
Не загружать ваш файл инициализации Emacs, `~/.emacs', а также `default.el'.
`--no-site-file'
Не загружать файл `site-start.el'. Ключи `-q', `-u' и `-batch' не влияют на загрузку этого файла -- только этот ключ блокирует её.
`-u пользователь'
`--user=пользователь'
Загрузить файл инициализации Emacs, принадлежащий пользователю, `~пользователь/.emacs', вместо вашего собственного.
`--debug-init'
Включить отладчик Emacs Lisp для обработки ошибок в файле инициализации.
`--unibyte'
Делать практически все с использованием однобайтных буферов и строк. Все буферы и строки будут однобайтными, если вы (или Лисп-программа) явно не запросите многобайтный буфер или строку. Установка переменной среды `EMACS_UNIBYTE' имеет тот же эффект.
`--multibyte'
Подавить действие переменной `EMACS_UNIBYTE', чтобы Emacs по умолчанию использовал многобайтные знаки, как обычно.

Пример аргументов командной строки

Здесь приведен пример использования Emacs с аргументами и ключами. Он предполагает, что у вас есть программа на Лиспе, называемая `hack-c.el', которая будучи загруженной выполняет некоторые полезные действия над текущим буфером, предположительно программой на Си.

emacs -batch foo.c -l hack-c -f save-buffer >& log

Это говорит Emacs обратиться к файлу `foo.c', загрузить `hack-c.el' (которая производит изменения в файле, к которому вы обратились), сохранить `foo.c' (заметьте, что save-buffer --- это функция, которая привязана к C-x C-s), а затем вернуться в оболочку (из-за `-batch'). Ключ `-batch' также гарантирует, что не будет проблем с перенаправлением вывода в файл `log', так как Emacs не будет предполагать, что он должен работать с терминалом.

Возврат в Emacs с аргументами

Вы можете задать для Emacs аргументы действия, когда вы возвращаетесь в него после приостановки. Чтобы подготовиться к этому, поместите в ваш файл `.emacs' следующий код (смотрите раздел Ловушки):

(add-hook 'suspend-hook 'resume-suspend-hook)
(add-hook 'suspend-resume-hook 'resume-process-args)

Для дальнейшей подготовки вы должны выполнить сценарий оболочки, `emacs.csh' (если вы используете в качестве оболочки csh) или `emacs.bash' (если вы пользуетесь bash). Эти сценарии определяют псевдоним с именем edit, который будет возвращать в Emacs, передавая ему новые аргументы командной строки, например файлы для редактирования.

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

Обратите внимание, возврат в Emacs (с аргументами или без) должен производиться из оболочки, являющейся родительским процессом задания Emacs. Именно поэтому edit -- это псевдоним, а не программа или сценарий. Невозможно реализовать команду возврата, которую можно было бы запускать из подзадач этой оболочки; например, невозможно определить команду, которую можно было бы сделать значением переменной EDITOR. Следовательно, команда возврата не эквивалентна по возможностям серверу Emacs (смотрите раздел Использование Emacs в качестве сервера).

Эти псевдонимы используют сервер Emacs, если оказалось, что он уже запущен. Однако, они не могут определить это абсолютно точно. Они могут полагать, что сервер всё ещё запущен, Emacs, потому что файл `/tmp/.esrv...' все так же существует, тогда как в действительности вы уничтожили тот Emacs. Если такое происходит, найдите этот файл и удалите его.

Переменные среды

В этом приложении описано, как Emacs использует переменные среды. Переменная среды -- это строка, передаваемая операционной системой в Emacs, а все множество переменных среды называется средой. Имена переменных среды регистрозависимы, и для них принято использовать только заглавные буквы.

Так как переменные среды исходят от операционной системы, общего способа для их установки нет; он зависит от используемой вами операционной системы и в особенности от оболочки. Например, так можно установить переменную среды `ORGANIZATION' в значение `не особая' с использованием bash:

export ORGANIZATION="не особая"

а так это можно сделать в csh или tcsh:

setenv ORGANIZATION "не особая"

Когда Emacs настроен для использования оконной системы X, он наследует большое число переменных среды из библиотеки X. Для дальнейшей информации смотрите документацию по X Windows.

Общие переменные

`AUTHORCOPY'
Имя файла, используемое для архива статей, посланных с помощью пакета GNUS.
`CDPATH'
Используется командой cd для поиска указанного вами каталога, если вы задали относительное имя.
`DOMAINname'
Имя домена Internet, где находится машина, на которой запускается Emacs. Используется пакетом GNUS.
`EMACS_UNIBYTE'
Определение этой переменной среды указывает Emacs производить почти все процедуры над однобайтными буферами и строками. Это эквивалентно использованию в командной строке ключа --unibyte при каждом вызове. Смотрите раздел Ключи запуска.
`EMACSDATA'
Используется для начальной установки переменной data-directory, необходимой для нахождения не зависящих от архитектуры компьютера файлов, поставляемых с Emacs. Установка этой переменной перекрывает значение, заданное в файле `paths.h' во время сборки Emacs.
`EMACSLOADPATH'
Разделенный двоеточиями перечень каталогов, из которых будут загружаться файлы Emacs Lisp. Установка этой переменной перекрывает значение, заданное в файле `paths.h' во время сборки Emacs.
`EMACSLOCKDIR'
Каталог, в котором Emacs будет помещать файлы блокировки; эти файлы используются для защиты от одновременного редактирования одних и тех же файлов разными пользователями. Установка этой переменной перекрывает значение, заданное в файле `paths.h' во время сборки Emacs.
`EMACSPATH'
Каталог, где находятся бинарные файлы, необходимые только Emacs. Установка этой переменной перекрывает значение, заданное в файле `paths.h' во время сборки Emacs.
`ESHELL'
Используется для режима shell, перекрывает переменную среды `SHELL'.
`HISTFILE'
Имя файла, в котором сохраняются команды оболочки от одного входа в систему до другого. По умолчанию эта переменная равна `~/.history', если вы используете в качестве оболочки (t)csh, `~/.bash_history', если вы пользуетесь bash, `~/.sh_history', если вы пользуетесь ksh, и `~/.history' в остальных случаях.
`HOME'
Положение файлов пользователя в дереве каталогов; используется для раскрытия имён файлов, начинающихся с тильды (`~'). В MS-DOS это по умолчанию каталог, откуда Emacs был запущен, исключая завершающий `/bin', если он присутствует.
`HOSTname'
Имя машины, на которой запущен Emacs.
`INCPATH'
Разделенный двоеточиями перечень каталогов. Используется пакетом complete для поиска файлов.
`INFOPATH'
Разделенный двоеточиями перечень каталогов, содержащих Info-файлы. Установка этой переменной перекрывает значение, заданное в файле `paths.el' во время сборки Emacs.
`LANG'
`LC_ALL'
`LC_CTYPE'
Предпочитаемый пользователем регион. Имя региона, содержащее `8859-n', `8859_n' или `8859n' автоматически задаёт при запуске Emacs языковую среду `Latin-n'.
`LOGname'
Имя пользователя. Смотрите также `USER'.
`MAIL'
Имя системного входного почтового ящика для этого пользователя.
`MAILRC'
Имя файла почтовых псевдонимов. По умолчанию это `~/.mailrc'.
`MH'
Имя файла установок системы mh. По умолчанию это `~/.mh_profile'.
`name'
Действительное имя пользователя.
`NNTPSERVER'
Имя сервера новостей. Используется пакетами mh и GNUS.
`ORGANIZATION'
Название организации, к которой вы принадлежите. Используется пакетом GNUS для установки поля `Organization:' в заголовках ваших сообщений.
`PATH'
Разделенный двоеточиями перечень каталогов, в которых находятся исполняемые файлы. (В MS-DOS этот перечень разделяется точками с запятой.) Это значение используется для установки переменной Emacs Lisp exec-path; лучше использовать именно эту переменную.
`PWD'
Если эта переменная установлена, то она задаёт каталог по умолчанию при запуске Emacs.
`REPLYTO'
Если эта переменная установлена, то она задаёт первоначальное значение переменной mail-default-reply-to. Смотрите раздел Поля заголовка сообщения.
`SAVEDIR'
Имя каталога, в котором по умолчанию сохраняются статьи новостей. Используется пакетом GNUS.
`SHELL'
Имя интерпретатора, используемого для разбора и выполнения программ, запускаемых из Emacs.
`TERM'
Название терминала, на котором запущен Emacs. Вы обязаны установить эту переменную, если Emacs запускается не в пакетном режиме. В MS-DOS по умолчанию принимается значение `internal', что означает встроенную эмуляцию терминала, которая управляет собственным дисплеем данной машины.
`TERMCAP'
Имя файла библиотеки termcap, описывающей, каким образом можно программировать терминал, заданный переменной `TERM'. По умолчанию это `/etc/termcap'.
`TMPDIR'
Используется пакетом Emerge в качестве префикса для временных файлов.
`TZ'
Задает текущий часовой пояс и, возможно, информацию о сезонном переводе времени. В MS-DOS значение по умолчанию основывается на коде страны; подробности смотрите в файле `msdos.c'.
`USER'
Имя пользователя. Смотрите также `LOGname'. В MS-DOS, значением по умолчанию считается `root'.
`VERSION_CONTROL'
Используется для первоначальной установки переменной version-control (смотрите раздел Одиночные или нумерованные резервные файлы).

Другие различные переменные

Следующие переменные используются лишь в определённых конфигурациях:

`COMSPEC'
В MS-DOS, имя используемого командного интерпретатора. Эта переменная задаёт значение по умолчанию для переменной среды `SHELL'.
`name'
В MS-DOS значение этой переменной равно значению переменной `USER'.
`TEMP'
`TMP'
В MS-DOS это задаёт имя каталога для хранения временных файлов.
`EMACSTEST'
В MS-DOS это задаёт файл протокола операций со внутренним эмулятором терминала. Это бывает полезно для составления сообщений об ошибках.
`EMACSCOLORS'
Используется в системах MS-DOS для раннего установления экранных цветов, чтобы при запуске Emacs экран не промелькивал в цветах по умолчанию. Значением этой переменной должен быть состоящий из двух знаков код цвета букв (первый знак) и цвета фона (второй знак) для начертания по умолчанию. Каждый знак должен быть шестнадцатиричным кодом желаемого цвета на стандартном текстовом дисплее PC. Дисплей PC обычно поддерживает только восемь цветов фона. Однако, Emacs переключает дисплей DOS в такой режим, где для фона можно использовать все 16 цветов, так что на самом деле работают все четыре бита цвета фона.
`WINDOW_GFX'
Используется при инициализации оконной системы Sun.

Указание имени дисплея

Переменная среды `DISPLAY' сообщает всем X-клиентам, включая Emacs, где нужно отображать их окна. Её значение создаётся автоматически при обычных обстоятельствах, когда вы включили X-сервер и запускаете задачи локально. Но иногда вам может понадобиться указать дисплей самим; например, если вы заходите на удалённую систему и хотите запускать программы-клиенты удалённо, но с отображением на вашем локальном экране.

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

Переменная среды `DISPLAY' имеет следующий синтаксис: `машина:дисплей.экран', где машина --- это имя машины, где запущен сервер системы X Windows, дисплей --- это произвольно присваиваемое число, отличающее ваш сервер (X-терминал) от других серверов на той же машине, а экран -- это редко используемое поле, позволяющее X-серверу контролировать несколько терминальных экранов. Точка и поле экран необязательны. Если поле экран включают, оно обычно равно нулю.

Для примера, если ваша машина называется `glasperle', и ваш сервер -- первый (и, возможно, единственный) сервер в конфигурации, то переменная `DISPLAY' равна `glasperle:0.0'.

Вы можете указать имя дисплея явно при запуске Emacs, либо изменив переменную `DISPLAY', либо с помощью ключа `-d дисплей' или `--display=дисплей'. Вот пример:

emacs --display=glasperle:0 &

Вы можете подавить прямое использование X Windows с помощью ключа `-nw'. Это ключ запуска. Он велит Emacs отображать, используя на управляющем терминале обычные знаки ASCII.

Иногда установки защиты доступа не позволяют программе с удалённой системы выводить на ваш локальный дисплей. В таком случае, попытка запуска Emacs даст подобное сообщение:

Xlib: connection to "glasperle:0.0" refused by server

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

Ключи для задания шрифта

По умолчанию Emacs отображает текст шрифтом с именем `9x15', в котором каждый знак имеет ширину девять и высоту пятнадцать пикселей. Вы можете указать в командной строке другой шрифт с помощью ключа `-fn имя'.

`-fn имя'
Использовать в качестве шрифта по умолчанию шрифт с указанным именем.
`--font=имя'
`--font' -- это синоним `-fn'.

В X Windows каждый шрифт обладает длинным именем, состоящим из одиннадцати слов или чисел, разделенных дефисами. У некоторых шрифтов кроме этого есть и более короткие псевдонимы -- `9x15' один из таких псевдонимов. Emacs допускает оба вида имен. Вы можете использовать шаблоны имён шрифтов; тогда Emacs позволит X Windows выбрать один из шрифтов, соответствующих шаблону. Вот пример, в котором задаётся шрифт, чьим псевдонимом, как оказывается, является `6x13':

emacs -fn "-misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1" &

Вы также можете указать шрифт в вашем файле `.Xdefaults':

emacs.font: -misc-fixed-medium-r-semicondensed--13-*-*-*-c-60-iso8859-1

Полное имя шрифта имеет следующий формат:

-производитель-семейство-жирность-наклон-тип_ширины-стиль...
...-пиксели-высота-гориз-верт-пропорциональность-ширина-кодировка
семейство
Название семейства шрифтов -- например, `courier'.
жирность
Обычно это `bold', `medium' или `light'. В именах некоторых шрифтов здесь могут появляться и другие слова.
наклон
Это `r' (романский), `i' (курсив), `o' (наклонный), `ri' (обратный курсив) или `ot' (другое).
тип_ширины
Обычно это `condensed', `extended', `semicondensed' или `normal'. В именах некоторых шрифтов здесь могут появляться и другие слова.
стиль
Это необязательное имя дополнительного стиля. Обычно оно пусто -- в большинстве длинных имён шрифтов на этом месте стоят два дефиса подряд.
пиксели
Высота шрифта в пикселях.
высота
Это высота шрифта на экране, измеряемая в десятых долях принтерной точки --- приблизительно 1/720 дюйма. Другими словами, это высота шрифта в точках, умноженная на десять. Для данного вертикального разрешения высота и пиксели пропорциональны; поэтому обычно указывают лишь одно из двух, оставляя второе как `*'.
гориз
Горизонтальное разрешение экрана, для которого предназначен этот шрифт, в точках на дюйм.
верт
Вертикальное разрешение экрана, для которого предназначен этот шрифт, в точках на дюйм. Обычно разрешение шрифтов, установленных в вашей системе соответствует разрешению вашего экрана; следовательно, как правило, для этого поля и поля гориз вы пишете `*'.
пропорциональность
Это может быть `m' (monospace), `p' (proportional) или `c' (character cell). Emacs может использовать шрифты `m' и `c'.
ширина
Это средняя ширина знака, в пикселях, умноженных на десять.
кодировка
Изображаемый этим шрифтом набор знаков. Обычно вам нужно использовать `iso8859-5'.

Используйте только равноширинные шрифты -- то есть такие, в которых все знаки имеют одинаковую ширину; Emacs пока не умеет правильно отображать шрифты переменной ширины. Любой шрифт с буквой `m' или `c' в поле длинного имени пропорциональность --- равноширинный. Вот как использовать программу xlsfonts для получения списка всех доступных на вашей системе равноширинных шрифтов:

xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-m*'
xlsfonts -fn '*-*-*-*-*-*-*-*-*-*-*-c*'

Чтобы просмотреть, как выглядит конкретный шрифт, используйте команду xfd. Например,

xfd -fn 6x13

покажет все знаки шрифта `6x13'.

Во время работы Emacs вы можете поменять шрифт текущего фрейма (смотрите раздел Установка параметров фрейма) или определённого сорта текста (смотрите раздел Использование разных начертаний).

Параметры для задания цветов

Если у вас есть цветной дисплей, вы можете указать, какие цвета должны использоваться для различных частей экрана Emacs. Чтобы узнать, какие цвета доступны в вашей системе, посмотрите файл `/usr/lib/X11/rgb.txt'. Если вы не указали цвета, по умолчанию фон будет белым, а все остальное -- черным. На монохромном дисплее, текст будет черным, фон будет белым, а рамка -- серой, если это поддерживается дисплеем.

Вот список ключей для задания цветов:

`-fg цвет'
`--foreground-color=цвет'
Задает цвет текста.
`-bg цвет'
`--background-color=цвет'
Задает цвет фона.
`-bd цвет'
`--border-color=цвет'
Задает цвет рамки в X-окна.
`-cr цвет'
`--cursor-color=цвет'
Задает цвет курсора, показывающего положение точки.
`-ms цвет'
`--mouse-color=цвет'
Задает цвет указателя мыши, когда он находится во фрейме Emacs.
`-r'
`--reverse-video'
Инверсное изображение -- обменять цвета текста и фона.

Например, чтобы получить коралловый указатель мыши и синевато-серый текстовый курсор, введите:

emacs -ms coral -cr 'slate blue' &

Вы можете инвертировать цвета текста и фона с помощью ключа `-r' или через ресурс X Windows `reverseVideo'.

Параметры геометрии окна

Ключ `-geometry' управляет положением начального фрейма Emacs. Формат для указания геометрии окна такой:

`-g ширинаxвысота{+-}сдвиг-по-x{+-}сдвиг-по-y'
Задает размеры окна, ширину и высоту (измеряемые в знаковых столбцах и строках), и положение сдвиг-по-x и сдвиг-по-y (измеряемые в пикселях).
`--geometry=ширинаxвысота{+-}сдвиг-по-x{+-}сдвиг-по-y'
Это другой способ написать то же самое.

{+-} означает плюс или минус. Знак плюс перед сдвиг-по-x говорит, что это расстояние от левого края экрана; знак минус говорит, что это расстояние от правого края. Знак плюс перед сдвиг-по-y обозначает, что это расстояние от верхнего края экрана, а знак минус -- что это расстояние от нижнего края. Сами значения сдвиг-по-x и сдвиг-по-y могут быть положительными или отрицательными, но это не меняет их смысл, только направление.

Emacs интерпретирует геометрию в тех же единицах, что и xterm. ширина и высота измеряются в знаках, так что фрейм с крупным шрифтом будет больше, чем фрейм с мелким шрифтом. Сдвиг-по-x и сдвиг-по-y измеряются в пикселях.

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

Вы не обязаны писать все поля при задании геометрии.

Если вы опустите и сдвиг-по-x, и сдвиг-по-y, программа управления окнами сама решит, где размещать фрейм Emacs, возможно, позволяя вам поместить его с помощью мыши. Например, `164x55' задаёт окно шириной 164 столбцов, достаточной для двух расположенных рядом окон обычной ширины, и высотой 55 строк.

По умолчанию ширина равна 80 столбцам, а высота -- 40 строкам. Вы можете не задавать ширину или высоту, или и то, и другое. Если описание геометрии начинается целым числом, Emacs интерпретирует его как ширину. Если вы начнете описание с `x', за которым идет число, Emacs воспримет это как высоту. Таким образом, `81' задаёт только ширину; `x45' задаёт только высоту.

Если вы написали в начале `+' или `-', это начинает описание сдвига, что означает, что оба размера опущены. Таким образом, `-3' задаёт только сдвиг-по-x. (Если вы задали лишь один сдвиг, это всегда сдвиг-по-x.) `+3-3' задаёт и сдвиг-по-x, и сдвиг-по-y, помещая фрейм возле нижнего левого края экрана.

Вы можете указать значения по умолчанию для любого из этих полей в файле `.Xdefaults', ключ `--geometry' тогда перекрывает эти установки.

Внутренние и внешние рамки

Фрейм Emacs имеет внутреннюю и внешнюю рамки. Внутренняя рамка --- это дополнительная полоска цвета фона по четырем сторонам фрейма. Внутреннюю рамку добавляет сам Emacs. Внешняя рамка добавляется программой управления окнами за пределами внутренней рамки; она может содержать различные кнопки, на которые вы можете щёлкнуть для перемещения или минимизирования этого окна.

`-ib ширина'
`--internal-border=ширина'
Задает ширину внутренней рамки.
`-bw ширина'
`--border-width=ширина'
Задает ширину внешней рамки.

Когда вы задаёте размер фрейма, ширина рамок не учитывается. Позиция фрейма отсчитывается от внешней границы внешней рамки.

Для задания внутренней рамки шириной n пикселей используйте ключ `-ib n'. По умолчанию это 1. Для задания внешней рамки шириной n пикселей используйте ключ `-bw n' (хотя программа управления окнами может и не учесть заданное вами число). По умолчанию ширина внешней рамки равна двум.

Заголовки фреймов

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

Вы можете указать заголовок начального фрейма Emacs с помощью ключа командной строки:

`-title заголовок'
`--title=заголовок'
`-T заголовок'
Задает заголовок начального фрейма Emacs.

Ключ `--name' (смотрите раздел X-ресурсы) также задаёт заголовок начального фрейма Emacs.

Пиктограммы

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

`-i'
`--icon-type'
Использовать в качестве пиктограммы Emacs портрет гну.
`-iconic'
`--iconic'
Запустить Emacs в минимизированном виде.

Ключ `-i' или `--icon-type' говорит Emacs использовать пиктограмму, содержащую рисунок с изображением гну GNU. Если этот ключ не задан, Emacs предоставляет выбор пиктограммы программе управления окнами -- обычно это просто небольшой прямоугольник с заголовком фрейма.

Ключ `-iconic' велит Emacs запускаться как пиктограмма, а не открывая фрейм обычным способом. В таком случае пиктограмма только показывает, что Emacs запустился; обычный текстовый фрейм не появляется, пока вы не деминимизируете его.

X-ресурсы

Запущенные в системе X Windows программы организуют свои пользовательские параметры в иерархию классов и ресурсов. Вы можете задать для этих параметров значения по умолчанию в вашем файле X-ресурсов, обычно называемом `~/.Xdefaults'.

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

Программы определяют именованные ресурсы с конкретным смыслом. Они также определяют, как ресурсы группируются в именованные классы. Например, ресурс `internalBorder' в Emacs контролирует ширину внутренней рамки, а ресурс `borderWidth' -- ширину внешней рамки. Оба этих ресурса являются частью класса `BorderWidth'. В этих именах важен правильный регистр букв.

В файле `~/.Xdefaults' вы можете задать значение для одного ресурса в каждой строке, следующим образом:

emacs.borderWidth: 2

Или вы можете использовать имя класса, чтобы задать то же значение для всех ресурсов этого класса. Вот пример:

emacs.BorderWidth: 2

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

emacs.Borderwidth: 2
emacs.borderwidth: 4

Порядок, в котором эти строки появляются в этом файле, не играет роли. Также, ключи командной строки всегда обладают приоритетом перед файлом X-ресурсов.

Строка `emacs' в примере выше также является именем ресурса. На самом деле, она представляет собой имя исполняемого файла, который вы использовали для запуска Emacs. Если Emacs установлен под другим именем, он ищет ресурсы с этим именем, а не с `emacs'.

`-name имя'
`--name=имя'
Использовать имя в качестве имени ресурса (и заголовка) для начального фрейма Emacs. Этот ключ не влияет на остальные фреймы, но программы на Лиспе могут указать при создании фрейма его имя. Если вы не задали этот ключ, по умолчанию в качестве имени ресурса используется имя исполняемого файла Emacs.
`-xrm значение-ресурса'
`--xrm=значение-ресурса'
Устанавливает значения X-ресурсов для данного задания Emacs (смотрите ниже).

Для согласованности, `-name' также задаёт имя для использования со значениями других ресурсов, не принадлежащих какому-то определённому фрейму.

Ресурсы, именующие любой запущенный Emacs, также образуют класс; его имя -- `Emacs'. Если вы напишете `Emacs' вместо `emacs', то такой ресурс будет относиться ко всем фреймам во всех заданиях Emacs, вне зависимости от заголовков фреймов и имени исполняемого файла. Вот пример:

Emacs.BorderWidth: 2
Emacs.borderWidth: 4

Вы можете указать строку значений дополнительных ресурсов для Emacs с помощью ключа командной строки -xrm=ресурсы. Текст ресурсы должен иметь тот же формат, что вы используете в файле X-ресурсов. Чтобы задать спецификации нескольких ресурсов, разделите их переводом строки, как вы сделали бы в файле. Вы также можете использовать `#include "имя-файла"' для включения файла ресурсов. Значения ресурсов, заданные через -xrm, имеет приоритет перед всеми остальными спецификациями.

Следующая таблица перечисляет имена ресурсов, обозначающих параметры для Emacs, каждый со своим классом:

background (class Background)
Название цвета фона.
bitmapIcon (class BitmapIcon)
Если это `on', использовать растровую пиктограмму (изображение гну), если это `off', предоставить право выбора пиктограммы программе управления окнами.
borderColor (class BorderColor)
Название цвета внешней рамки.
borderWidth (class BorderWidth)
Ширина внешней рамки в пикселях.
cursorColor (class Foreground)
Название цвета для текстового курсора (точки).
font (class Font)
Имя шрифта для текста (или имя набора шрифтов, смотрите раздел Наборы шрифтов).
foreground (class Foreground)
Название цвета для текста.
geometry (class Geometry)
Размер и положение окна. Будьте осторожны, не определяйте этот ресурс как `emacs*geometry', потому что это может повлиять на отдельные меню, а не только на сам фрейм Emacs. Если этот ресурс задаёт положение, то оно относится только начальному фрейму Emacs (или, в случае ресурса для определённого фрейма, только для этого фрейма). Однако, если здесь задан размер, то он относится ко всем фреймам.
iconName (class Title)
Заголовок для отображения на пиктограмме.
internalBorder (class BorderWidth)
Ширина внутренней рамки в пикселях.
menuBar (class MenuBar)
Если `on', показывать во фреймах полоски меню; если `off', не показывать.
minibuffer (class Minibuffer)
Если `none', не создавать в этом фрейме минибуфер. Вместо этого будет использоваться отдельный фрейм минибуфера.
paneFont (class Font)
Имя шрифта для заголовков поля меню, в версиях Emacs, не использующих библиотеку виджетов.
pointerColor (class Foreground)
Цвет указателя мыши.
reverseVideo (class ReverseVideo)
Если `on', обменять цвета фона и текст, если `off', использовать цвета, как они заданы.
verticalScrollBars (class ScrollBars)
Показывать во фреймах полоски прокрутки, если это `on'; показывать, если это `off'.
selectionFont (class Font)
Имя шрифта для пунктов всплывающих меню в версиях Emacs, не использующих библиотеку виджетов. (Для версий, использующих библиотеку виджетов, смотрите раздел X-ресурсы для меню Lucid, а также раздел X-ресурсы для меню Motif.)
title (class Title)
Название для отображения в заголовке начального фрейма Emacs.

Это ресурсы для изменения внешнего вида определённых начертаний (смотрите раздел Использование разных начертаний):

начертание.attributeFont
Шрифт для заданного начертания.
начертание.attributeForeground
Цвет текста для заданного начертания.
начертание.attributeBackground
Цвет фона для заданного начертания.
начертание.attributeUnderline
Флаг подчеркивания для заданного начертания. Если `on' или `true', то подчеркивать.

X-ресурсы для меню Lucid

Если установленный на вашей системе Emacs был собран с использованием библиотеки с виджетами меню Lucid, то полоска меню -- это отдельный виджет, и у него свои ресурсы. Имена этих ресурсов содержат строку `pane.menubar' (как всегда, после строки вызова Emacs или `Emacs', что обозначает любой вызов). Задавайте их так:

Emacs.pane.menubar.ресурс: значение

Например, чтобы задать для пунктов меню шрифт `8x16', напишите так:

Emacs.pane.menubar.font: 8x16

Ресурсы для всплывающих меню, а не полоски меню, начинаются с `menu*' подобным же образом. Например, чтобы задать для пунктов всплывающих меню шрифт `8x16', напишите следующее:

Emacs.menu*.font:	8x16

Для диалогов вместо `menu' пишите `dialog':

Emacs.dialog*.font:	8x16

Опыт показывает, что на некоторых системах вам может понадобиться добавить перед `pane.menubar' или `menu*' строку `shell.'. На некоторых других системах вы должны не добавлять `shell.'.

Вот перечень ресурсов для полоски меню и всплывающих меню:

font
Шрифт текста пунктов меню.
foreground
Цвет текста.
background
Цвет фона.
buttonForeground
В полоске меню, цвет фона для выделенного пункта.
horizontalSpacing
Горизонтальный промежуток между пунктами. По умолчанию это 3.
verticalSpacing
Вертикальный промежуток между пунктами. По умолчанию это 1.
arrowSpacing
Горизонтальный промежуток между стрелкой (обозначающей подменю) и связанным текстом. По умолчанию это 10.
shadowThickness
Толщина линии затенения вокруг виджета.

X-ресурсы для меню Motif

Если установленный на вашей системе Emacs был собран с использованием библиотеки виджетов Motif, то полоска меню -- это отдельный виджет, и у него свои ресурсы. Имена этих ресурсов содержат строку `pane.menubar' (как всегда, после строки вызова Emacs или `Emacs', что обозначает любой вызов). Задавайте их так:

Emacs.pane.menubar.подвиджет.ресурс: значение

Каждая отдельная строка в полоске меню является подвиджетом; имя подвиджета такое же, что и текст пункта. Например, слово `Files' в полоске меню -- это часть подвиджета с именем `emacs.pane.menubar.Files'. Вероятнее всего вы захотите задать одни и те же ресурсы для всей полоски меню. Чтобы сделать это, используйте `*' вместо имени конкретного подвиджета. Например, чтобы задать для пунктов меню шрифт `8x16', напишите следующее:

Emacs.pane.menubar.*.fontList: 8x16

Это также задаёт значение этого ресурса для подменю.

Каждый пункт в подменю полоски меню также имеет собственное имя для X-ресурсов; например, подменю `Files' имеет пункт, называемый `Save Buffer'. Описание ресурса для пункта подменю выглядит так:

Emacs.pane.menubar.popup_*.меню.пункт.ресурс: значение

Например, задать шрифт для пункта `Save Buffer' можно следующим образом:

Emacs.pane.menubar.popup_*.Files.Save Buffer.fontList: 8x16

Для пункта в подменю второго уровня, таком как `Check Message' в подменю `Spell' в меню `Edit', ресурс соответствует такому шаблону:

Emacs.pane.menubar.popup_*.popup_*.меню.ресурс: значение

Например,

Emacs.pane.menubar.popup_*.popup_*.Spell.Check Message: значение

Невозможно определить ресурс для всех пунктов полоски меню, не определяя их также и для подменю. Поэтому, если вы хотите, чтобы пункты подменю выглядели не так, как сама полоска меню, вы должны попросить об этом в два этапа. Сначала задайте ресурс для всех их; затем переопределите это значение только для подменю. Вот пример:

Emacs.pane.menubar.*.fontList: 8x16
Emacs.pane.menubar.popup_*.fontList: 8x16

Для всплывающих меню используйте `menu*', а не `pane.menubar'. Например, чтобы задать для пунктов всплывающих меню шрифт `8x16', напишите вот это:

Emacs.menu*.fontList: 8x16

Вот перечень ресурсов для полосок меню и всплывающих меню:

armColor
Цвет для отображения кнопки со стрелкой.
fontList
Используемый шрифт.
marginBottom
marginHeight
marginLeft
marginRight
marginTop
marginWidth
Количество пространства, которое следует оставить вокруг пункта внутри рамки.
borderWidth
Ширина рамки вокруг пункта меню с каждой стороны.
shadowThickness
Ширина рамки затенения.
bottomShadowColor
Цвет рамки затенения снизу и справа.
topShadowColor
Цвет рамки затенения слева и сверху.

Назад |  Вперед |  Содержание



Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024