# HG changeset patch # User Karoly Lorentey # Date 1114517862 0 # Node ID 2d137ca5496065684cfb64eaf8808fa22dcc895c # Parent a8c8fab4072cd6b489453795742b233b70f8efcc# Parent 0e4683c3074a2c20f7879250d01d1b907ec0c488 Merged from miles@gnu.org--gnu-2005 (patch 279-280) Patches applied: * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-279 Update from CVS * miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-280 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-335 diff -r a8c8fab4072c -r 2d137ca54960 etc/ChangeLog --- a/etc/ChangeLog Tue Apr 26 12:13:35 2005 +0000 +++ b/etc/ChangeLog Tue Apr 26 12:17:42 2005 +0000 @@ -1,3 +1,14 @@ +2005-04-25 Dan Nicolaescu + + * NEWS: Mention xterm key bindings. + + * e/eterm.ti: Add a comment. + * e/eterm: Regenerate. + +2005-04-25 Alex Ott + + * TUTORIAL.ru: Update. + 2005-04-13 Pavel Jan,Am(Bk * TUTORIAL.sk: Updated header. @@ -16,7 +27,7 @@ 2005-04-10 Masatake YAMATO - * compilation.txt (symbol): Added gcov-file + * compilation.txt (symbol): Added gcov-file gcov-bb-file gcov-never-called-line gcov-called-line . 2005-04-08 Kenichi Handa diff -r a8c8fab4072c -r 2d137ca54960 etc/NEWS --- a/etc/NEWS Tue Apr 26 12:13:35 2005 +0000 +++ b/etc/NEWS Tue Apr 26 12:17:42 2005 +0000 @@ -107,6 +107,13 @@ * Changes in Emacs 22.1 +** Improved key bindings support when running in an xterm. +When emacs is running in an xterm more key bindings are available. The +following should work: +{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. +These key bindings work on xterm from X.org 6.8, they might not work on +some older versions of xterm, or on some proprietary versions. + ** Improved Thai support. A new minor mode `thai-word-mode' (which is automatically activated if you select Thai as a language environment) changes key bindings of most word-oriented commands to diff -r a8c8fab4072c -r 2d137ca54960 etc/TUTORIAL.ru --- a/etc/TUTORIAL.ru Tue Apr 26 12:13:35 2005 +0000 +++ b/etc/TUTORIAL.ru Tue Apr 26 12:17:42 2005 +0000 @@ -1,64 +1,69 @@ -Учебник Emacs. Условия распространения смотрите в конце файла -Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc. +Учебник Emacs. Условия распространения приведены в конце файла +Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation, Inc. -Для управления Emacs обычно используется ключ (сочетание клавиш клавиатуры -и/или кнопок мыши), включающий в себя клавишу CONTROL (иногда отмечаемая -как CTRL или CTL) или клавишу META (иногда помеченную как ALT или EDIT). В -дальнейшем вместо того, чтобы каждый раз писать META или CONTROL, мы будем -использовать следующее сокращение: +Для управления Emacs обычно используется ключ (key -- сочетание клавиш +клавиатуры и/или кнопок мыши), включающий в себя клавишу CONTROL (иногда +отмечаемая как CTRL или CTL) или клавишу META (иногда помеченную как ALT или +EDIT). В дальнейшем, вместо того, чтобы каждый раз писать META или CONTROL, +мы будем использовать следующие сокращения: - C- следует удерживать клавишу CONTROL, пока набирается символ . - Так, C-f должно означать: нажать клавишу CONTROL и f. - M- следует удерживать клавишу META, пока набирается символ . Если - нет клавиши META, ALT или EDIT, то нажмите , отпустите ее, - а потом наберите символ . + C- -- следует удерживать клавишу CONTROL, пока набирается символ + . Так, C-f должно означать: нажать клавишу CONTROL и f. + M- -- следует удерживать клавишу META, пока набирается символ + . Если нет клавиши META, ALT или EDIT, то нажмите , + отпустите ее, а потом наберите символ . -Важное замечание: для завершения сеанса Emacs, наберите C-x C-c. (Два +Важное замечание: для завершения сеанса Emacs, наберите C-x C-c (два символа). Символы ">>" с левой стороны указывают, что вам нужно делать, чтобы применить команду. Например: -<<Середина страницы оставлена пустой для учебных целей. Текст продолжается ниже>> ->> Теперь нажмите C-v (Просмотр следующего экрана) для перемещения на - следующий экран. (Выполните это, удерживая клавишу CONTROL нажимая v). - Теперь вы должны это сделать еще раз, когда закончите читать экран. +<<Пустые строки вокруг вставлены командой help-with-tutorial>> +[Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже] +>> Теперь нажмите C-v (просмотр следующего экрана) для перемещения на + следующий экран. (выполните эту команду удерживая клавишу CONTROL и + нажимая v). Теперь вы должны это сделать еще раз, когда закончите читать + экран. -Обратите внимание на то, что, пока вы движетесь с экрана на экран, -перекрываются две строчки; это обеспечивает некоторую непрерывность, так -что вы можете продолжить читать текст. +Обратите внимание на то, что, при переходе с экрана на экран перекрываются +две строчки -- это обеспечивает некоторую непрерывность восприятия, так что +вы можете продолжать читать текст не теряя нити повествования. -Первое, что вам необходимо знать -- как передвигаться по тексту из одного -места в другое. Вы уже знаете, как переместиться вперед один экран, -используя ключ C-v. Для перемещения назад на один экран, нажмите M-v -(удерживайте клавишу META и наберите v, или нажмите v, если у вас нет -клавишы META, EDIT, или ALT). +Первое, что вам необходимо знать -- это то, как передвигаться по тексту из +одного места в другое. Вы уже знаете, как переместиться вперед на один +экран, используя сочетание клавиш C-v. Для перемещения назад на один экран, +нажмите M-v (удерживайте клавишу META и наберите v, или нажмите и +затем v, а если у вас нет клавиши META, EDIT или ALT). ->> попробуйте набрать M-v и потом C-v, несколько раз. - +>> попробуйте набрать M-v, а затем C-v, несколько раз. -* КРАТКАЯ СВОДКА ----------------- +* КРАТКИЙ ПЕРЕЧЕНЬ КОМАНД +------------------------- Для просмотра используются следующие команды: C-v Перейти на один экран вперед M-v Перейти на один экран назад - C-l Очистить экран и отобразить все заново, разместив - текст, находящийся возле курсора, в центре экрана. - (Это CONTROL-L, а не CONTROL-1.) + C-l Очистить экран и отобразить все заново, разместив текст, находящийся + возле курсора, в центре экрана. (это CONTROL-L, а не CONTROL-1.) >> Найдите курсор, и запомните текст возле него. Потом нажмите C-l. Найдите курсор снова и убедитесь, что возле него все тот же текст. +Вы также можете использовать клавиши PageUp и PageDn для перемещения между +экранами (если они есть на вашем терминале), но вы сможете работать более +эффективно, если будете использовать сочетания C-v и M-v. + * БАЗОВЫЕ КОМАНДЫ УПРАВЛЕНИЯ КУРСОРОМ ------------------------------------- Движение от экрана к экрану удобно, но как переместиться в определенное -место текста на экране? +место в тексте на экране? -Есть несколько способов сделать это. Основной способ -- использовать команды -C-p, C-b, C-f и C-n. Каждая из этих команд передвигает курсор на одну -строку или колонку на экране в определенном направлении. Эта таблица -показывает четыре команды и четыре направления их движения: +Есть несколько способов выполнения этой операции. Вы можете использовать +клавиши управления курсором (стрелки), но более эффективным будет сохранение +рук в их стандартной позиции и использовать команды C-p, C-b, C-f и C-n. Эти +команды эквивалентны четырем клавишам перемещения курсора, как это показано +на схеме: Предыдущая строка, C-p : @@ -68,13 +73,14 @@ : Следующая строка, C-n ->> Переместите курсор на строку рядом с диаграммой, используя C-n или C-p. - Потом, нажмите C-l и посмотрите как диаграмма разместится в центре - экрана. +>> Переместите курсор на строку рядом с диаграммой, используя сочетания + клавиш C-n или C-p. Потом, нажмите C-l и посмотрите как диаграмма + переместится в центр экрана. -Вам будет несложно запомнить эти команды по буквам -- B-назад (backward) и -F-вперед (forward). Это основные команды позиционирования курсора, которыми -Вы будете пользоваться ВСЕГДА, так что будет неплохо их выучить. +Вам будет несложно запомнить эти команды по первым буквам соответствующих +слов -- B-назад (backward) и F-вперед (forward). Это основные команды +позиционирования курсора, которыми Вы будете пользоваться ВСЕГДА, так что +будет неплохо их выучить. >> Нажмите несколько раз C-n, чтобы опустить курсор вниз на эту строку. @@ -94,8 +100,9 @@ C-f может перемещать курсор через символ перевода строки так же, как и C-b. >> Попробуйте несколько раз применить C-b так, чтобы Вы увидели, как - движется курсор. Далее используйте C-f чтобы вернуться на конец - строки. Нажмите C-f еще раз, чтобы перейти к началу следующей строки. + движется курсор. Далее используйте сочетание клавиш C-f чтобы вернуться + на конец строки. Нажмите C-f еще раз, чтобы перейти к началу следующей + строки. Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся за экраном, сдвигается внутрь экрана. Это называется "прокрутка @@ -103,7 +110,7 @@ текста без перемещения его за пределы экрана. >> Попробуйте переместить курсор за нижнюю границу экрана, используя C-n, и - посмотрите, что изменится. + посмотрите, что произойдет. Если посимвольное перемещение слишком медленно, Вы можете двигаться по словам. M-f (META-f) перемещает вперед на слово, а M-b назад на слово. @@ -128,8 +135,8 @@ перемещает курсор в начало и конец строки, а M-a и M-e перемещает курсор в начало и конец предложения. ->> Попробуйте нажать пару раз C-a, и потом пару раз C-e. Попробуйте пару - раз нажать M-a, после этого пару раз нажать M-e. +>> Попробуйте нажать пару раз C-a, а потом пару раз C-e. Попробуйте пару раз + нажать M-a, после этого пару раз нажать M-e. Посмотрите, что повтор C-a ничего не изменяет, а повтор M-a продолжает движение курсора к следующему предложению. Это не сохраняет аналогию, но @@ -139,7 +146,7 @@ курсор показывает место на экране в какой точке будет расположен вводимый текст. -Здесь собраны простые команды перемещения курсора, включая движение по +Здесь собраны основные команды перемещения курсора, включая движение по словам и предложениям: C-f На символ вперед @@ -189,10 +196,10 @@ повторений для команды, нажмите C-u, потом число повторений, и укажите команду. Если у вас есть клавиша META (или EDIT или ALT), то цифровой аргумент можно задать другим способом: наберите цифры, удерживая клавишу -META. Мы рекомендуем освоить использование C-u, поскольку эта -последовательность клавиш работает на любом терминале. Числовой аргумент -также называется "префиксным аргументом", поскольку вы набираете аргумент до -выполнения команды. +META. Мы рекомендуем привыкнуть к использованию C-u, поскольку это сочетание +клавиш работает на любом терминале. Числовой аргумент также называется +"префиксным аргументом", поскольку вы задаете аргумент до выполнения +команды. Например, C-u 8 C-f переместит курсор на восемь символов вперед. @@ -201,9 +208,9 @@ Многие команды используют числовой аргумент как счетчик повторений, но некоторые команды используют его другим способом. Некоторые команды (но ни -одна из них не была еще изучена здесь) используют его как флаг -- наличие -префиксного аргумента вне зависимости от его значения, изменяет поведение -команды. +одна из них не была еще описана в данном тексте) используют его как флаг -- +наличие префиксного аргумента вне зависимости от его значения, изменяет +поведение команды. Другим видом исключений являются ключи C-v и M-v. При получении числового аргумента, они прокручивают экран вверх или вниз на указанное число строк, @@ -215,9 +222,10 @@ Эта команда должна прокрутить экран на 8 строк вверх. Если вы хотите прокрутить его вниз, можете задать аргумент для M-v. -Если вы используете оконную систему, такую как X11 или MS-Windows, должна -быть прямоугольная область, именуемая полосой прокрутки с левой стороны окна -Emacs. Вы можете прокручивать текст, используя манипулятор мышь. +Если вы используете оконную систему, такую как X11 или MS-Windows, то должна +быть видна прямоугольная область, именуемая полосой прокрутки, которая видна +с левой стороны окна Emacs. Вы можете прокручивать текст, используя +манипулятор мышь. >> Попробуйте перемещать мышь при нажатой средней кнопке мыши. Вы увидите как текст прокручивается вверх и вниз. @@ -226,163 +234,174 @@ * УПРАВЛЕНИЕ КУРСОРОМ НА X-ТЕРМИНАЛЕ ------------------------------------ -Если у вас X-терминал, то вам, вероятно, для управления курсором покажется -более легким использовать клавиши на цифровой клавиатуре (справа). Стрелки -влево, вправо, вверх и вниз передвигают курсор в ожидаемом направлении; они -работают точно также как C-b, C-f, C-p и C-n, но легче в наборе и -запоминании. Вы так же можете использовать сочетания C-left и C-right для -передвижения по словам, и C-up и C-down для передвижения по блокам (т.е. -параграфам, если вы редактируете текст). Если у вас есть кнопки помеченные -HOME (или BEGIN) или END, то они будут перемещать курсор в начало и конец -строки, соответственно, и C-home и C-end будут перемещать в начало и конец -файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, то вы можете их -использовать для перемещения вверх и вниз поэкранно, также как и M-v и C-v. +Если у вас X-терминал, то для управления курсором, вам вероятно покажется +более легким использование клавиш курсора на цифровой клавиатуре +(справа). Стрелки влево, вправо, вверх и вниз передвигают курсор в +соответствующем направлении -- они работают точно также как C-b, C-f, C-p и +C-n, но легче в наборе и запоминании. Вы так же можете использовать +сочетания C-left и C-right для передвижения по словам, и C-up и C-down для +передвижения по блокам (т.е. параграфам, если вы редактируете текст). Если +у вас есть кнопки помеченные HOME (или BEGIN) и/или END, то они будут +перемещать курсор в начало и конец строки, а C-home и C-end будут перемещать +в начало и конец файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, +то вы можете использовать их для перемещения вверх и вниз постранично, +аналогично использованию M-v и C-v. -Все эти команды могут получать цифровой аргумент, как рассказано выше. Вы -можете использовать ускоренный способ ввода этого аргумента: просто нажмите -CONTROL или META и наберите число. Например, для перемещения на 12 слов -вправо, наберите C-1 C-2 C-right. Запомните что так очень легко набирать, -потому что вы не отпускаете кнопку CONTROL между нажатиями. +Все эти команды могут использовать цифровой аргумент, так, как об этом +рассказано выше. Вы можете использовать ускоренный способ ввода этого +аргумента: просто нажмите CONTROL или META и наберите число. Например, для +перемещения на 12 слов вправо, наберите C-1 C-2 C-right. Запомните что так +очень легко набирать, потому что вы не отпускаете кнопку CONTROL между +нажатиями. * ЕСЛИ EMACS ЗАВИС ------------------ -Если Emacs перестал реагировать на ваши команды, вы можете остановить это, -просто нажав C-g. Вы можете использовать C-g, чтобы остановить выполнение -команды, которая слишком долго выполняется. +Если Emacs перестал реагировать на ваши команды, то вы можете избежать этого +просто нажав C-g. Вы можете использовать C-g, чтобы остановить выполнение +команд, которые слишком долго выполняются. -Вы также можете использовать C-g для отмены цифрового аргумента или начатой -команды, которую вы не хотите завершать. +Вы также можете использовать C-g для отмены набранного цифрового аргумента +или команды, которая начала выполняться, но которую вы не хотите завершать. >> Наберите C-u 100 для задания аргумента 100, потом нажмите C-g. Теперь нажмите C-f. Курсор должен переместиться всего на один символ, потому что вы отменили аргумент нажатием C-g. -Если вы нажали по ошибке, вы так же можете избавиться от этого -нажатием C-g. +Если вы нажали по ошибке, то вы так же можете использовать C-g чтобы +избежать воздействия данной команды. * ЗАПРЕЩЕННЫЕ КОМАНДЫ (DISABLED COMMANDS) ----------------------------------------- Некоторые команды Emacs "запрещены", поскольку начинающие пользователи могут -их случайно использовать. +случайно использовать их для совершения опасных действий. Если вы набрали одну из запрещенных команд, то Emacs покажет сообщение -говорящее о том, какая команда вызывается, и спросит, хотите ли вы -продолжить и выполнить эту команду. +говорящее о том, какая команда вызывается, и запросит у вас, хотите ли вы +продолжать работу и выполнять данную команду. -Если вы действительно хотите попробовать выполнить команду, то нажмите -клавишу Пробел (Space) в ответ на этот вопрос. Обычно, если вы не хотите -выполнять запрещенную команду, то отвечайте на вопрос нажатием клавиши "n". +Если вы действительно попробовать выполнить команду, то нажмите клавишу + (пробел) в ответ на заданный вопрос. Обычно, если вы не хотите +выполнять запрещенную команду, то ответьте на вопрос нажатием клавиши "n". ->> Нажмите `C-x C-l' (выключенная команда), потом ответьте "n" на вопрос. +>> Нажмите `C-x C-l' (выключенная команда), а потом ответьте "n" на заданный + вопрос. * ОКНА ------ -Emacs может иметь несколько окон, каждое из которых отображает свой текст. -Мы объясним позже как использовать множество окон. Прямо сейчас мы хотим -объяснить как избавляться от лишних окон и вернуться к редактированию в -одном окне. Выполнить это очень просто: +Emacs может отображать информацию в нескольких окнах, каждое из которых +отображает свой текст. Позже мы объясним как работать с несколькими окнами. +Прямо сейчас мы хотим объяснить вам как избавляться от лишних окон и +вернуться к редактированию в одном окне. Это очень просто сделать: C-x 1 Одно окно. (закрыть все другие окна). -Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит +Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит курсор, так, чтобы оно заняло весь экран. При этом будут удалены все остальные окна. >> Переместите курсор на эту строку и нажмите C-u 0 C-l. >> Наберите CONTROL-h k CONTROL-f. - Посмотрите, как текущее окно сожмется, когда новое - появится и отобразит документацию на команду CONTROL-f. + Посмотрите, как текущее окно сожмется, когда новое появится и отобразит + документацию на сочетание клавиш CONTROL-f. >> Наберите C-x 1 и посмотрите, как окно с документацией исчезнет. Эта команда отличается от других команд, которые вы изучили, тем, что она состоит из двух символов. Она начинается со знака CONTROL-x. Есть целый набор команд, которые начинаются с CONTROL-x; многие из них работают с -окнами, буферами, файлами и аналогичными вещами. Эти команды имеют длину 2, -3 или 4 знака. +окнами, буферами, файлами и аналогичными вещами. Эти команды состоят из +двух, трех или четырех знаков. * ВСТАВКА И УДАЛЕНИЕ -------------------- -Если вы хотите вставить текст, просто наберите текст. Символы, которые вы +Если вы хотите вставить текст, то просто набирайте его. Символы, которые вы можете видеть, такие как A, 7, *, и пр. понимаются Emacs'ом как текст и -вставляются немедленно. Нажмите (кнопка перевода каретки) для -вставки символа новой строки. +вставляются немедленно. Нажмите (кнопка перевода каретки) чтобы +вставить символ новой строки. -Вы можете удалить последний набранный символ нажимая клавишу -. Клавиша на клавиатуре может быть обозначена как "Del". В -некоторых случаях, клавиша "Backspace" работает как , но не всегда! +Вы можете удалить набранный символ нажимая клавишу . -- +это клавиша на клавиатуре, которую вы используете и вне Emacs для удаления +последнего набранного символа. Обычно, это большая клавиша, расположенная +на несколько строк выше клавиши ; обычно она помечена как "Delete", +"Del" или "Backspace". -В основном, удаляет символ непосредственно перед текущей позицией +Если большая клавиша помечена как "Backspace", то это то, что вам нужно +использовать тогда, когда вы будете читать про . У вас также может +быть клавиша, помеченная как "Delete", но она имеет другую функцию, отличную +от . + +В основном, удаляет символ непосредственно перед текущей позицией курсора. ->> Попробуйте выполнить это сейчас -- наберите несколько символов, потом - удалите их нажимая несколько раз. Не волнуйтесь об изменениях - этого файла; вы не изменяете главный учебник. Это ваша личная копия - учебника. +>> Попробуйте выполнить это сейчас -- наберите несколько символов, а затем + удалите их нажимая . Не волнуйтесь об изменениях этого файла -- + вы не изменяете главный учебник; это ваша личная копия учебника. -Когда строка текста становится слишком большой для строки экрана, строка -текста "продолжается" на следующей строке экрана. Символ "обратное деление" -("\") (или если вы используете оконную систему, то маленькая изогнутая -стрелка) с правой границы показывает, что строка будет продолжена. +Когда строка текста становится слишком большой для строки экрана, то она +"продолжается" на следующей строке экрана. Символ "обратный слэш" ("\") (или +если вы используете оконную систему, то это будет значок в виде маленькой +изогнутой стрелки) с правой границы показывает, что строка будет +продолжается с предыдущей строки. ->> Вводите текст, пока не достигните правой границы, и продолжайте - вставку. Вы увидите, как появится символ продолжения строки. +>> Вводите текст, пока он не достигнет правой границы, и продолжайте вставку + символов. Вы увидите, как появится символ продолжения строки. ->> Используйте для удаления текста, пока строка не поместится в - экран снова. Символ продолжения строки исчезнет. +>> Используйте для удаления текста, до тех пор, пока строка не + поместится в экран снова. Символ продолжения строки исчезнет с экрана. -Можно удалять символ новой строки точно так же, как и любой другой. Удаление -символа новой строки между двумя строками приведет к склейке их в одну. Если -полученная строка слишком длинная, чтобы вместиться в экран, она будет -отображена как продолженная строка. +Символ новой строки можно удалять точно так же, как и любой другой символ. +Удаление символа новой строки между двумя строками приведет к их склейке в +одну. Если полученная строка будет слишком длинной, чтобы вместиться в +экран, то она будет отображена как строка с продолжением, как это было +описано выше. ->> Переместите курсор в начало строки и нажмите . Это соединит +>> Переместите курсор в начало строки и нажмите . Это соединит текущую строку с предыдущей. ->> Нажмите для вставки символа новой строки снова, вместо - удаленного вами. +>> Нажмите для вставки нового символа строки, вместо удаленного + вами. Помните, что многие команды Emacs могут получать счетчик повторения; простые -символы не являются исключением. Набирайте простые символы, вставляя их по -несколько за один раз. +символы не являются исключением. Вы можете вставлять по несколько символов, +используя счетчики повторений. ->> Попробуйте выполнить это -- наберите C-u 8 * для вставки ********. +>> Попробуйте проверить это -- наберите C-u 8 * для вставки ********. -Теперь вы научились основному способу набрать что-нибудь в Emacs и -исправлять ошибки. Также вы можете удалять слова и строки. Здесь собраны -операции удаления: +Теперь вы научились основам набора текста в Emacs и исправления ошибок. Вы +также можете удалять слова и строки. Здесь приведен список операций +удаления: - удалить символ перед курсором + удалить символ перед курсором C-d удалить символ следующий за (над) курсором - M- Убить строку непосредственно перед курсором + M- Убить строку непосредственно перед курсором M-d Убить слово следующее за курсором C-k Убить все от курсора до конца строки M-k Убить все до конца предложения -Заметьте, что и C-d против M- и M-d расширяют параллель, -начатую C-f и M-f (да, это не реальный управляющий символ, но не -нужно волноваться об этом). C-k и M-k, как и C-e и M-e, проводят параллель -между строками и предложениями. +Заметьте, что и C-d, вместе с M- и M-d расширяют +параллель, начатую C-f и M-f (да, -- это не настоящий управляющий +символ, но не нужно об этом волноваться). C-k и M-k, как и C-e и M-e, +проводят параллель между строками и предложениями. -Вы можете удалить любую часть буфера одним единообразным -методом. Переместитесь на один из концов региона и наберите type C-@ или -C-SPC (одну из них). (SPC обозначает клавишу пробела). Переместитесь на -другой конец региона и наберите C-w. Эта операция удалит весь текст между -двумя указанными позициями. +Вы можете удалить любую часть буфера одним методом. Переместитесь на один +из концов выбранной области и нажмите C-@ или C- (одно из этих +сочетаний). Здесь обозначает клавишу пробела. Переместитесь на другой +конец области и нажмите C-w. Эта операция удалит весь текст между двумя +указанными позициями. ->> Переместите курсор к букве В в начало предыдущего параграфа. ->> Наберите C-SPC. Emacs должен отобразить в нижней части экрана сообщение +>> Переместите курсор к букве В в начале предыдущего параграфа. +>> Наберите C-. Emacs должен отобразить в нижней части экрана сообщение "Mark set". >> Переместите курсор к букве о в слове "концов", на второй строке параграфа. @@ -393,411 +412,450 @@ что "убитый" текст может быть заново вставлен, в то время как "удаленные" части не могут быть вставлены. Вставка "убитого" текста называется "восстановление (yanking)". В общем, команды, которые могут убирать большие -части текста, убивают этот текст (они так настраиваются так, что вы можете +части текста, убивают этот текст (они настраиваются так, что вы можете восстановить текст), в то время как команды, которые убирают только один -символ, или только пустые строки и пробельные символы, выполняют удаление -(так что вы не можете восстановить текст). +символ, или удаляют только пустые строки и пробельные символы, выполняют +операцию удаления (так что вы не можете восстановить текст). ->> Переместите курсор на начало непустой строки. Теперь нажмите C-k, чтобы +>> Переместите курсор на начало не пустой строки. Теперь нажмите C-k, чтобы убить текст в этой строке. ->> Нажмите C-k еще раз. Вы видите, что это убьет символ новой строки - следующий за этой строкой. +>> Нажмите C-k еще раз. Вы видите, что это действие убьет символ новой + строки, который следует за этой строкой. -Заметьте, что первое C-k убивает содержимое строки, а второе C-k убивает -саму строку и поднимает другие строки вверх. C-k обрабатывает числовой -аргумент специальным образом: убивает столько строк _И_ их содержимое. Это не -просто повторение. C-u 2 C-k удалит две строи и завершающие их символы новой -строки; ввод C-k два раза не сделает этого. +Заметьте, что первое выполнение C-k убивает содержимое строки, а второй +вызов C-k убивает саму строку и поднимает другие строки вверх. C-k +обрабатывает числовой аргумент специальным образом -- убивает заданное +количество строк _И_ их содержимое. Это не просто повторение команды. C-u 2 +C-k удалит две строки, а также завершающие их символы новой строки; +двухразовое выполнение C-k не сделает этого. -Возврат назад убитого текста называется "восстановление (yanking)". (Думайте +Возврат убитого ранее текста называется "восстановление (yanking)". (Думайте об этом, как о восстановлении или помещении назад, некоторого взятого -текста). Вы можете восстановить удаленный текст в том же месте, или в любой -другой точке буфера, или даже в другом файле. Вы можете восстановить текст -несколько раз и получить много копий. +текста). Вы можете восстановить удаленный текст в месте удаления, или в +любой другой точке редактируемого текста, или даже в другом файле. Вы +можете восстановить текст несколько раз и получить несколько копий данного +текста. -Командой для восстановления текста является C-y. Она восстанавливает -последний убитый текст в место расположение курсора. - ->> Попробуйте выполнить это; наберите C-y, чтобы вернуть текст назад. +Для восстановления убитого текста используется сочетание клавиш C-y. Данная +команда восстанавливает последний убитый текст в точке расположения курсора. -Помните, если вы использовали несколько команд C-k в строке, все убитые -строки будут сохранены вместе так, что C-y восстановит их вместе. - ->> Попробуйте выполнить это сейчас, нажмите C-k несколько раз. +>> Попробуйте выполнить эту команду -- наберите C-y, чтобы вернуть текст + назад. -Теперь вернем этот убитый текст: +Помните, что если вы использовали несколько команд C-k в одной строке, то +все убитые строки будут сохранены вместе, так, что C-y также восстановит их +вместе. ->> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова - нажмите C-y. Сейчас вы видите как можно скопировать некоторый текст. +>> Попробуйте выполнить это сейчас -- нажмите C-k несколько раз. + +Теперь вернем убитый текст: -Что делать, если есть некоторый текст, который вы хотите вернуть назад и -потом убить что-то еще? C-y вернет не более чем последний удаленный текст. -Но предыдущий текст не будет потерян. Вы сможете его вернуть назад, используя -команду M-y. После того, как вы вернули последний удаленный текст, нажмите -M-y, и замените этот восстановленный текст тем, который был убит ранее. -Нажатие M-y снова и снова будет возвращать ранее убитый текст. Когда вы -достигните искомого текста, вам не нужно делать ничего более чтобы сохранить -его. Просто продолжайте редактирование, оставив восстановленный текст там, -где он есть. +>> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова + нажмите C-y. Сейчас вы видите как можно скопировать некоторый текст. + +Что делать, если есть некоторый текст, который вы хотите вернуть назад, а +потом убить что-то еще? Одно нажатие C-y вернет только последний удаленный +текст. Но предыдущий текст не будет потерян -- вы сможете его вернуть +назад, используя команду M-y. После того, как вы вернули последний +удаленный текст, нажмите M-y, и замените этот восстановленный текст тем, +который был убит ранее. Нажимая M-y снова и снова, вы будете возвращать +ранее убитые части текста. Когда вы достигните искомого текста, то вам не +нужно делать ничего чтобы сохранить его. Просто продолжайте работать, +оставив восстановленный текст там, где он есть. Нажимая M-y достаточное число раз, вы можете вернуться в начальную точку (наиболее раннее удаление). ->> Убейте строку, переместите курсор вокруг этой точки, потом удалите еще - одну строку. Затем используйте C-y для восстановления второй убитой - строки. Затем используйте M-y, и она будет заменена первой убитой - строкой. Нажмите M-y еще несколько раз, чтобы увидеть полученный - результат. Продолжайте делать это, пока вторая убитая строка не вернется, - и еще чуть-чуть. Если вам хочется, то вы можете задавать для M-y - положительные и отрицательные аргументы. +>> Убейте строку, переместите курсор, и удалите еще одну строку. Затем + используйте C-y для восстановления второй убитой строки, а затем нажмите + M-y, и она будет заменена первой убитой строкой. Нажмите M-y еще + несколько раз, чтобы увидеть полученный результат. Продолжайте выполнять + эту команду до тех пор, пока вторая убитая строка не будет восстановлена + снова. Если вам хочется, то вы можете задавать положительные и + отрицательные аргументы для команды M-y. * ОТМЕНА (UNDO) --------------- -Если вы сделали изменения в тексте, и решили, что ошиблись, можете -отменить изменения командой "отмена", C-x u. +Если вы сделали изменения в тексте, и решили, что ошиблись, то вы можете +отменить изменения с помощью команды "отмена", которая привязана к сочетанию +клавиш C-x u. Обычно, C-x u отменяет изменения, сделанные одной командой; если повторить -C-x u несколько раз подряд, каждый раз будет отменяться еще одна команда. +C-x u несколько раз подряд, то каждый раз будет отменяться еще одна команда. -Но есть два исключения: команды, которые не изменяют текст, не учитываются -(это включает команды перемещения курсора и прокрутки), и самовставляющиеся -(self-inserting) символы обрабатываются группами до 20. (Это уменьшает -число C-x u которые вы можете набрать для отмены ввода текста). +Но есть два исключения -- команды не изменяющие текст, не учитываются (сюда +включается команды перемещения курсора и прокрутки), и команды вставки +символов обрабатываются группами до 20 символов. (Это уменьшает число +нажатий C-x u которые вам нужно будет набрать для отмены ввода текста). ->> Убейте эту строку используя C-k, затем наберите C-x u и она должна +>> Убейте эту строку с помощью C-k, а затем наберите C-x u и строка должна вернуться назад. -C-_ альтернативная команда отмены; она работает также как и C-x u, но легче -в использовании несколько раз подряд. Неудобное положение C-_ на некоторых -клавиатурах делает неочевидным способ ее набора. Поэтому мы предлагаем -использовать C-x u. На некоторых терминалах, вы можете набирать C-_, нажимая -/ и удерживая клавишу CONTROL. +C-_ -- это еще команда отмены; она работает точно также как и C-x u, но +легче в использовании, если вам нужно выполнить ее несколько раз +подряд. Неудобное положение C-_ на некоторых клавиатурах делает не очевидным +способ ее набора. Поэтому мы предлагаем использовать C-x u. На некоторых +терминалах, вы можете набирать C-_, нажимая / и удерживая клавишу CONTROL. -Числовой аргумент для C-_ или C-x u работает как счетчик повторения. +Числовой аргумент для C-_ или C-x u используется как счетчик повторений. -Вы можете отменить удаление текста точно так же, как отмену убития -текста. Отличие между убийством и удалением чего-либо заключается в том, что -вы можете восстановить убитый текст с помощью C-y; но это не делает различий -для отмены. +Вы можете отменить удаление текста точно так же, как и отмену убития текста. +Отличие между убийством и удалением чего-либо заключается в том, что вы +можете восстановить убитый текст с помощью команды C-y; но для команды +отмены нет никакой разницы между этими операциями. * ФАЙЛЫ ------- -Чтобы созданный текст можно было редактировать позже, вы должны его -поместить в файл. Иначе, он исчезнет, когда вы выйдите из Emacs. Вы помещаете -ваш текст в файл, "открывая" файл. (Еще это называют "посетить" файл.) +Чтобы созданный текст можно было редактировать позже, вы должны поместить +его в файл. Иначе, он исчезнет, когда вы покинете Emacs. Вы помещаете ваш +текст в файл, "открывая" файл (Эту операцию также называют "посетить" файл). -Открыть файл означает посмотреть его содержимое, используя Emacs. Во многих -случаях, это происходит, когда вы редактируете файл сами. Однако ваши +Открыть файл означает посмотреть его содержимое, с помощью Emacs. Во многих +случаях, это происходит тогда, когда вы редактируете файл сами. Однако ваши изменения, сделанные с использованием Emacs не будут зафиксированы, пока вы -не сохраните файл. Так вы можете не оставлять полуизмененный файл в системе, -если вы не хотите этого. Даже когда вы сохраняете файл, Emacs оставляет -оригинальный файл с измененным именем, чтобы вы могли позже решить, что ваши -изменения были ошибочны. +не сохраните файл. Вы можете не оставлять частично измененный файл в +системе, если вы не хотите его сохранять. Даже когда вы сохраняете файл, то +Emacs оставляет оригинальный файл, но с другим именем, так что вы позже +можете отменить ваши изменения, вернувшись к предыдущей версии файла. Если вы посмотрите в нижнюю часть экрана, то вы увидите строку, которая -начинается с тире и начинается с "--:-- TUTORIAL.ru" или чего-то -подобного. Эта часть экрана всегда показывает имя файла, который вы -открыли. Итак, сейчас вы открыли файл с именем "TUTORIAL.ru", который -является вашей персональной копией учебника Emacs. Для любого файла, который -вы откроете, имя этого файла появится в этом месте. +начинается с тире и ее начало выглядит примерно так "--:-- TUTORIAL.ru". Эта +часть экрана всегда показывает имя открытого вами файла. Итак, сейчас вы +открыли файл с именем "TUTORIAL.ru", который является вашей персональной +копией учебника Emacs. Для любого файла, который вы откроете, его имя будет +показано в этой строке. -Одной из специальных вещей, которую вам нужно знать о команде открытия файла, -это то, что вы должны ввести имя файла, который нужно читать. Мы это -называем командой, "читающей аргумент с терминала" (в этом случае, аргументом -является имя файла). После ввода команды +Одной из вещей, которые вам нужно знать о команде открытия файла -- это то, +что вы должны ввести имя файла, который нужно открыть. Такие команды мы +называем командами "читающими аргумент с терминала" (в нашем случае, +аргументом является имя файла). После ввода команды C-x C-f Открыть (найти) файл -Emacs попросит вас ввести имя файла. Имя файла вы наберете в нижней строке -экрана. Нижняя строка называется мини-буфер, он используется для короткого -ввода. Вы можете использовать обычные команды редактирования Emacs для -редактирования имени. +Emacs попросит вас ввести имя файла. Имя файла набирается в нижней строке +экрана. Нижняя строка называется мини-буфером -- он специально используется +для ввода небольшого количества данных. Для редактирования имени файла вы +можете использовать обычные команды редактирования Emacs. -Когда вы вводите имя файла (или любую информацию в мини-буфер), вы можете -отменить команду нажав C-g. +Когда вы вводите имя файла (или любую другую информацию в мини-буфере), вы +можете отменить текущую команду нажав C-g. ->> Нажмите C-x C-f, затем нажмите C-g. Это отменит мини-буфер, и команду - C-x C-f, которая использовала мини-буфер. В итоге, вы не открыли ни одного - файла. +>> Нажмите C-x C-f, а затем нажмите C-g. Это действие отменит ввод данных в + мини-буфере, и заодно и команду C-x C-f, которая использовала мини-буфер + для получения аргумента. В итоге, вы не открыли ни одного файла. Когда вы завершите ввод имени файла, нажмите . Далее сработает команда C-x C-f, которая откроет указанный вами файл. Мини-буфер исчезнет, когда команда C-x C-f завершится. -И мгновением позже содержимое файла появится на экране, и вы сможете его -редактировать. Когда вы закончите редактирование, чтобы сохранить изменения, -наберите команду +А мгновением позже содержимое файла появится на экране, и вы сможете его +редактировать. Когда вы закончите редактирование, то для того, чтобы +сохранить изменения, наберите команду C-x C-s Сохранить файл -Это скопирует текст из Emacs в файл. В первый раз, когда вы это сделаете, -Emacs переименует оригинальный файл в файл с новым именем, чтобы он не -потерялся. Новое имя получается добавлением символа "~" к оригинальному -имени файла. +Эта команда скопирует текст из Emacs в файл. В первый раз, когда вы это +сделаете, Emacs переименует оригинальный файл в файл с новым именем, чтобы +не потерялось предыдущее содержимое файла. Новое имя получается добавлением +символа "~" к оригинальному имени файла. -Когда сохранение завершится, Emacs напечатает имя записанного файла. Вы -должны сохранять изменения достаточно часто, чтобы не потерять много -работы, если вдруг система зависнет. +Когда сохранение завершится, Emacs отобразит имя записанного файла. Вы +должны сохранять изменения достаточно часто, чтобы не потерять внесенные +изменения, если система вдруг зависнет. >> Наберите C-x C-s, сохраните вашу копию учебника. В нижней строке экрана должна появиться надпись "Wrote ...TUTORIAL.ru". -ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заблокирует экран и вы не -увидите последующего вывода Emacs`а. Это означает, что операционная система -имеет "особенность", именуемую "flow control", перехватывающую C-s и не -пропускающую этот символ к Emacs`у. Для разблокировки экрана, нажмите C-q. -Смотрите раздел "Spontaneous Entry to Incremental Search" руководства Emacs, -чтобы узнать, как бороться с этой "особенностью". +ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заблокирует экран, так что вы +не увидите последующего вывода Emacs`а. Такое поведение означает, что +операционная система имеет "особенность", именуемую "flow control", +перехватывающую сочетание C-s и не пропускающую этот символ к Emacs`у. Для +снятия блокировки экрана, нажмите C-q. Обратитесь к разделу "Spontaneous +Entry to Incremental Search" руководства Emacs, чтобы узнать о том, как +бороться с этой "особенностью". Вы можете открыть существующий файл для просмотра или редактирования. Вы -также можете найти файл, которого еще не существует. Другими словами -- -создать файл с помощью Emacs: найти файл, создать новый, и начать вводить -текст. Когда вы скажите "сохрани" файл, Emacs создаст реальный файл с -набранным вами текстом. Далее, как вы поняли, вы будете редактировать уже -существующий файл. +также можете открыть файл, которого еще не существует. Другими словами -- +создать файл с помощью Emacs можно так: найти файл, создать новый, и начать +вводить текст. Когда вы выполните команду сохранения файла, то Emacs создаст +настоящий файл с набранным вами текстом. Далее, как вы поняли, вы будете +редактировать уже существующий файл. * БУФЕРА -------- -Если вы находите второй файл с использованием C-x C-f, то первый остается -внутри Emacs. Вы можете переключиться назад, найдя его снова C-x C-f. Это -способ загрузить несколько файлов в Emacs. +Если вы открываете второй файл используя команду C-x C-f, то первый файл +остается внутри Emacs. Вы можете переключиться назад, открыв его снова с +помощью C-x C-f. Таким образом вы можете загрузить несколько файлов в Emacs. ->> Создайте файл с именем "foo", набирая C-x C-f foo . - Вставьте какой-нибудь текст, отредактируйте его, и сохраните "foo", +>> Создайте файл с именем "foo", набрав C-x C-f foo . + Вставьте какой-нибудь текст, измените его, и сохраните файл "foo", набрав C-x C-s. - Наконец, наберите C-x C-f TUTORIAL.ru , - чтобы вернуться назад к учебнику. + Наконец, наберите C-x C-f TUTORIAL.ru , для того, чтобы вернуться + назад к учебнику. -Emacs сохраняет текст каждого файла внутри в объекте, называемом "буфер" +Emacs хранит текст каждого файла внутри в объекте, называемом "буфер" ("buffer"). Открытие файла создает новый буфер внутри Emacs. Чтобы увидеть -список буферов, созданных в текущем Emacs, наберите +список буферов, созданных в текущем сеансе Emacs, наберите C-x C-b Список буферов ->> Попробуйте C-x C-b сейчас. +>> Попробуйте выполнить C-x C-b прямо сейчас. -Мы видим, что каждый буфер имеет имя, и может иметь имя файла, содержимое -которого в нем хранится. Некоторые буфера не соответствуют файлам. Например, -буфер, названный "*Buffer List*", не содержит никакого файла. В этом буфере -содержится список буферов, который был создан командой C-x C-b. ЛЮБОЙ текст, -который вы видите в окне Emacs, всегда является частью какого-либо буфера. +Мы видим, что каждый буфер имеет имя, и может иметь связанное с ним имя +файла, содержимое которого в хранится в данном буфере. ЛЮБОЙ текст, который +вы видите в окне Emacs, всегда является частью какого-либо буфера. >> Наберите C-x 1, чтобы избавиться от списка буферов. -Если вы изменяете текст одного файла, потом открываете другой, то первый -остается несохраненным. Изменения останутся внутри Emacs, в файловом -буфере. Создание или редактирование следующего файлового буфера не +Когда у вас есть несколько буферов, только один из них является "текущим" в +конкретный момент времени. Это тот буфер, который вы изменяете. Если вы +хотите изменить данные в другом буфере, то вы должны "переключиться" в него. +Если вы хотите переключиться в буфер, связанный с файлом, то вы можете +открыть этот файл снова с помощью C-x C-f. Но есть более простой способ -- +использовать команду C-x b. В качестве аргумента для данной команды вы +должны указать имя буфера. + +>> Наберите C-x b foo для переключения в буфер "foo", который + хранит текст файла "foo". Затем наберите C-x b TUTORIAL для + возвращения в буфер с данным учебником. + +Чаще всего имя буфера совпадает с именем файла (только без имени каталогов). +Однако это не всегда является правдой. Список буферов, который вы создаете +с помощью команды C-x C-b всегда показывает вам имена всех буферов. + +ЛЮБОЙ текст, который вы видите в окне Emacs, всегда является частью +какого-либо буфера. Некоторые буфера не соответствуют файлам. Например, +буфер с именем "*Buffer List*" не связан ни с каким файлом. Это буфер, +который содержит список буферов, который вы создали используя C-x C-b. +Буфер с именем "*Messages*" также не связан ни с каким файлом; он содержит +сообщения, которые отображаются в самой нижней строке окна Emacs в течении +текущей сессии работы с редактором. + +>> Наберите C-x b *Messages* для просмотра содержимого буфера + сообщений. Затем наберите C-x b TUTORIAL для возврата в данный + учебник. + +Если вы изменяете текст одного файла, а затем открываете другой, то текст в +первом буфере остается не сохраненным. Изменения останутся внутри Emacs, в +буфере, связанном с файлом. Создание или редактирование следующего буфера не сказывается на первом буфере. Это очень удобно, но имейте в виду, что вам -нужно иметь удобный способ сохранить первый файловый буфер. Было бы -неприятно каждый раз возвращаться назад с помощью C-x C-f и потом -использовать C-x C-s. Поэтому существует команда +нужно иметь способ сохранить первый файловый буфер. Было бы неприятно +каждый раз возвращаться назад используя C-x C-f и потом использовать C-x C-s +для сохранения данных. Поэтому существует команда C-x s Сохранить некоторые буфера. (Save some buffers) -C-x s спрашивает вас о каждом буфере, который содержит несохраненные -изменения. Для каждого такого буфера у вас спрашивают: сохранять или не -сохранять изменения. +C-x s запрашивает у вас подтверждение о сохранении для каждого буфера, +который содержит не сохраненные изменения. Для каждого такого буфера у вас +запросят: сохранять или не сохранять изменения. >> Вставьте строку текста, потом наберите C-x s. - У вас должны спросить, сохранять ли буфер с именем TUTORIAL.ru. - Ответьте на вопрос да, набрав "y". + У вас должны спросить, сохранять ли буфер с именем TUTORIAL.ru. Ответьте + на вопрос утвердительно, набрав "y". -* РАСШИРЕННЫЙ НАБОР КОМАНД +* РАСШИРЕНИЕ НАБОРА КОМАНД -------------------------- -У Emacs очень много команд, они могут быть назначены на все control- и meta- -символы. Emacs обходит это, используя X-команду (eXtend). Есть две +У Emacs очень много команд, и они не могут быть назначены на все control- и +meta- символы. Emacs обходит это, используя X-команду (eXtend). Есть две возможности: - C-x Символ расширения (Character eXtend). - За ним следуем один символ. - M-x Именованные расширенные команды (Named command eXtend). - За ним следует имя команды. + C-x Расширение с помощью ввода префикса. За ним следуем один символ. + M-x Расширение набора команд с помощью их наименования. За ним следует имя + команды. -Это команды, которые обычно используются, но вы уже выучили некоторые из -них. Вы уже видели: команды работы с файлами C-x C-f -- открыть, и C-x C-s --- сохранить. Другой пример - завершения работы с Emacs -- это команда C-x -C-c. (Не волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c -предлагает сохранить изменения перед тем, как удалит буфер Emacs.) +Это полезные команды, но они используются менее часто, чем те команды, +которые мы изучили. Вы уже видели некоторые из них: команды работы с файлами +C-x C-f -- открыть файл, и C-x C-s -- сохранить файл. Другой пример -- +команда завершения работы с Emacs -- C-x C-c. (Не волнуйтесь о том, что вы +потеряете сделанные изменения, C-x C-c предлагает сохранить изменения перед +удалением буфера Emacs). -C-z это команда *временного* выхода из Emacs -- вы можете вернуться в ту же +C-z -- это команда *временного* выхода из Emacs. Вы можете вернуться в ту же сессию Emacs позже. -На системах, которые допускают это, C-z "приостанавливают" ("suspends") -Emacs; возвращают в оболочку (shell), но не закрывают Emacs. В большинстве -оболочек вы можете продолжить работу в Emacs, используя команду `fg' или -`%emacs'. +На системах, которые реализуют эту возможность, команда C-z +"приостанавливает" ("suspends") Emacs; возвращает в командный процессор +(shell), но не закрывают Emacs. В большинстве командных процессоров вы +можете вернуться в Emacs, используя команду `fg' или `%emacs'. -В системах, не поддерживающих приостановку процессов, C-z создает новую -оболочку (subshell), запущенную из-под Emacs, чтобы дать вам возможность -выполнить другую программу, и потом вернуться в Emacs; это не настоящий -выход из Emacs. В этом случае, команда `exit' вернет вас в Emacs из -оболочки. +В системах, не поддерживающих приостановку процессов, C-z создает новый +командный процессор (subshell), запущенный из-под Emacs, чтобы дать вам +возможность выполнить другую программу, и затем вернуться в Emacs (это не +настоящий выход из Emacs). В таких система для возврата в Emacs вам нужно +использовать команду `exit'. -Используйте C-x C-c, если вы хотите выйти (log out) из системы. Это также -используется, чтобы выйти из Emacs, вызванного из почтовой программы, или другой -утилиты, которая может не знать, как справиться с приостановленным Emacs. -Обычно, если вы не выходите из системы, лучше приостановить Emacs, -используя C-z вместо выхода их него. +Чтобы покинуть Emacs используйте команду C-x C-c. Обычно это нужно тогда, +когда вы хотите закончить сеанс работы с компьютером. Это сочетание также +используется, чтобы выйти из Emacs, вызванного из почтовой программы, или +другой утилиты, которая может не знать, как справиться с приостановленным +Emacs. Обычно, если вы не собираетесь выходить из системы, то лучше +приостановить Emacs, используя C-z вместо того, чтобы покидать его совсем. -Существует очень много C-x команд. Эти вы уже выучили: +Существует очень много команд, использующих префикс C-x. Вы уже изучили +следующие команды: - C-x C-f Открыть файл. - C-x C-s Сохранить файл. - C-x C-b Список буферов. - C-x C-c Выход из Emacs. - C-x 1 Удаляет все окна кроме одного. - C-x u Отмена. + C-x C-f Открыть файл + C-x C-s Сохранить файл + C-x s Сохранить некоторые файлы + C-x C-b Список буферов + C-x b Переключиться в буфер + C-x C-c Выход из Emacs + C-x 1 Удаляет все окна кроме одного + C-x u Отмена -Именованные расширенные команды используются гораздо реже, или используются -только в определенных режимах. В качестве примера команда замена строки, -которая заменяет одну строку на другую во всем тексте. Когда вы наберете -M-x, Emacs предложит вам ввести имя команды в нижней строке экрана; в нашем -случае, "replace-string". Только наберите "repl s", и Emacs дополнит -имя. ( -- это клавиша табуляции, обычно находящаяся выше клавиш -CapsLock или Shift слева на клавиатуре). Завершите имя вводом . +Именованные команды -- это команды, которые используются гораздо реже, или +используются только в определенных режимах. В качестве примера можно +привести команду замены строки, которая заменяет одну строку на другую во +всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя команды; +в нашем случае, это команда "replace-string". Наберите лишь "repl s", +и Emacs дополнит имя. ( -- это клавиша табуляции, обычно находящаяся +выше клавиш CapsLock или Shift в левой части клавиатуры). Завершите имя +нажатием . Команда замены строки (replace-string) требует два аргумента -- строку, которая будет заменена, и строку, на которую нужно заменить. Вы должны завершать каждый аргумент вводом . >> Переместите курсор на две пустые строки ниже этой. - Наберите M-x repl schangedaltered. + Наберите M-x repl sфайлфайлы. - Заметьте, как эта строка изменится: вы замените слово c-h-a-n-g-e-d - словом "altered" везде, где оно встретится, ниже позиции курсора. + Заметьте, как эта строка изменится: вы замените слово ф-а-й-л + словом "файлы" везде, где оно встретится, ниже позиции курсора. -* АВТОСОХРАНЕНИЕ ----------------- +* АВТОМАТИЧЕСКОЕ СОХРАНЕНИЕ +--------------------------- -Когда вы изменяете файл, но не сохраняете его, то в случае краха системы -вы можете потерять информацию. Чтобы защитить вас от этого, Emacs -периодически сохраняет каждый файл, который вы редактируете. Автосохранение +Когда вы изменяете файл, но не сохраняете его, то в случае краха системы вы +можете потерять информацию. Чтобы защитить вас от этого, Emacs периодически +сохраняет каждый файл, который вы редактируете. Автоматическое сохранение происходит в файл, имя которого такое же, но начинается и заканчивается -символом "#"; например, если ваш файл называется "hello.c", то -автосохраненный файл будет называться "#hello.c#". Когда вы сохраните файл -обычным способом, Emacs удалит автосохраненный файл. +символом "#"; например, если ваш файл называется "hello.c", то автоматически +сохраненный файл будет называться "#hello.c#". Когда вы сохраните файл +обычным способом, Emacs удалит автоматически сохраненный файл. -Если система зависла, вы можете восстановить ваши изменения, который были -сохранены автоматически, путем открытия нормального файла (файла, который вы -редактировали, не автосохраненного), и затем набрав M-x recover-file. -Когда у вас спросят подтверждение, наберите yes, чтобы восстановить -автосохраненные данные. +Если система зависла, то вы можете восстановить ваши изменения, который были +сохранены автоматически, путем открытия нужного файла (файла, который вы +редактировали, не сохраненного), и затем набрав M-x recover-file. +Когда у вас запросят подтверждение, наберите yes, чтобы +восстановить автоматически сохраненные данные. * ОБЛАСТЬ ЭХО (ECHO AREA) ------------------------- -Если Emacs видит, что вы медленно набираете команды, он показывает их вам -внизу экрана, в области называемой "область эхо". Область эхо -- это самая -нижняя строка экрана. +Если Emacs видит, что вы медленно набираете команды из нескольких символов, +то он показывает их вам внизу экрана, в области называемой "область эхо". +Область эхо -- это самая нижняя строка экрана. -* СТРОКА РЕЖИМА ---------------- +* СТРОКА СОСТОЯНИЯ +------------------ -Строка сразу над областью эхо называется "строка состояния". -Выглядит эта строка примерно так: +Строка сразу над областью эхо называется "строкой состояния". Выглядит эта +строка примерно так: ---:** TUTORIAL.ru (Fundamental)--L670--58%---------------- +--:** TUTORIAL.ru 63% L749 (Fundamental)----------------------- Эта строка сообщает полезную информацию о состоянии Emacs и текста, который вы редактируете. -Вы уже знаете, что означает имя файла -- это файл, который вы открыли. -NN%-- +Вы уже знаете, что означает имя файла -- это файл, который вы открыли. NN% показывает текущую позицию курсора в тексте; это означает что NN процентов -текста выше, чем начало экрана. Если первая строка находится в первой строке -экрана, вы там увидите --Top-- вместо --00%--. Если на экране отображается -последняя строка, то будет отображено --Bot--. Если текст настолько мал, что -весь вмещается в экран, строка состояния сообщит --All--. +текста находятся выше, чем начало экрана. Если первая строка всего текста +находится в первой строке экрана, вы там увидите "Top" вместо "0%". Если на +экране отображается последняя строка, то будет отображено "Bot". Если текст +настолько мал, что весь вмещается в экран, то строка состояния сообщит +"All". -Буква L и цифры показывают позицию другим способом: они показывают номер -текущей строки с курсором. +Буква L и цифры показывают позицию другим способом -- они показывают номер +строки в которой находится курсор. -Звездочки в начале строки означают, что вы изменяли текст. Как только вы -открыли или сохранили файл, эта часть строки будет содержать не звездочки, а -тире. +Звездочки в начале строки означают, что вы изменяли текст. При открытии или +сохранении файла, эта часть строки будет содержать не звездочки, а тире. -Часть строки статуса внутри скобок сообщает вам режим редактирования, -которым вы пользуетесь. Стандартный режим -- Fundamental, его вы используете -и сейчас. Это пример "основного режима" ("major mode"). +Часть строки статуса внутри скобок сообщает вам о режиме редактирования, +которым вы сейчас используете. Стандартный режим -- Fundamental, он +используется и данном документе. Это пример "основного режима" ("major +mode"). -Emacs имеет много различных основных режимов. Некоторые из режимов означают, -что вы редактируете текст на различном языке и/или различные виды текста, -такие как Lisp-режим, Text-режим и пр. В любое время действует только один -основной режим, и его название вы можете найти в скобках, где сейчас -находится слово "Fundamental" (базовый). +Emacs имеет много различных основных режимов. Некоторые из режимов +используются для редактирования текста на различных языках и/или различных +видов текста, такие как Lisp-режим, Text-режим и пр. В каждый момент +времени действует только один основной режим, и его название вы можете найти +в скобках -- там, где сейчас находится слово "Fundamental" (базовый). -Каждый основной режим имеет несколько отличительных команд. Например, команды -создания комментария в программе, и поскольку в каждом языке программирования -комментарии записываются по-своему, каждый основной режим вставляет их -по-разному. Каждый основной режим имеет именованную команду, которая включает -его. Например, M-x fundamental-mode - команда, которая переключает в базовый -(Fundamental) режим. +Каждый основной режим заставляет некоторые команды вести себя немного по +другому. Например, это команды создания комментариев в программе, и +поскольку в каждом языке программирования комментарии записываются +по-своему, то и каждый основной режим вставляет их по-разному. Каждый +основной режим имеет именованную команду, которая включает его. Например, +M-x fundamental-mode -- это команда, которая включает базовый (Fundamental) +режим. -Если вы редактируете русский текст, например как этот (конечно, не именно -этот, а TUTORIAL) файл, вы вероятно должны переключиться в Text-режим. +Если вы редактируете текст на естественном языке, например, как этот файл, +то вы вероятно должны переключиться в Text-режим. >> Наберите M-x text mode. Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы -можете заметить, что M-f и M-b теперь различают апострофы как части слова. -Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали апострофы -как разделители слов. +можете заметить, что M-f и M-b теперь рассматривают апострофы как часть +слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали +апострофы как разделители слов. Основной режим обычно делает небольшие изменения, такие как: большинство -команд делают "ту же работу" в каждом из режимов, но их работа отличается -какой-нибудь мелочью. +команд делают "одну и ту же работу" в каждом из режимов, но их действие +отличается какой-нибудь мелочью. -Для просмотра документации о вашем текущем основном режиме, нажмите C-h m. +Для просмотра документации о текущем основном режиме, нажмите C-h m. ->> Используйте C-u C-v один раз или более, чтобы расположить эту строку ближе - к верху экрана. +>> Используйте C-u C-v один раз или более, чтобы расположить эту строку + ближе к верху экрана. >> Наберите C-h m, чтобы посмотреть отличия Text-режима от базового. >> Наберите C-x 1, чтобы убрать документацию с глаз долой :) -Основной режим называется основным потому, что есть несколько дополнительных -(minor) режимов. Дополнительные режимы не являются альтернативами основным, -они только немного изменяют их поведение. Каждый дополнительный режим -включается/выключается независимо от других дополнительных режимов, и -независимо от вашего основного режима. Вы можете использовать основной режим -без дополнительных, или с любой их комбинацией. +Основной режим называется основным потому, что также существуют +дополнительные (minor) режимы. Дополнительные режимы не являются +альтернативами основным, они только немного изменяют их поведение. Каждый +дополнительный режим включается/выключается независимо от других +дополнительных режимов, и независимо от вашего основного режима. Вы можете +использовать основной режим без дополнительных, или с любой их комбинацией. Один из дополнительных режимов очень полезен, особенно для редактирования -текста - это режим автозаполнения (Auto Fill mode). Когда этот режим -включен, Emacs разрывает строки между словами автоматически, когда вы -вставляете текст и делаете строки слишком длинными. +текста -- это режим автозаполнения (Auto Fill mode). Когда этот режим +включен, то Emacs разрывает строки между словами автоматически, в тех +случаях когда вы вставляете текст и делаете строки слишком длинными. Вы можете включить режим автозаполнения, набрав M-x auto fill mode. -Когда этот режим включен, его можно выключить - M-x auto fill mode. -Если режим включен -- команда его выключит, если выключен -- включит. Мы -называем это командой "переключения режима". +Когда этот режим включен, его можно выключить с помощью той же команды -- +M-x auto fill mode. Если режим включен, то такая команда его +выключит, если выключен, то включит. Мы называем это командой "переключения +режима". ->> Наберите M-x auto fill mode. Затем вводите строку из слов - "фыва " пока не увидите, как она разделится на две строки. Вы должны - помещать пробелы между словами, потому что режим автозаполнения разделяет - строки только по пробелам. +>> Наберите M-x auto fill mode. Затем вводите строку из слов "фыва " + пока не увидите, как она разделится на две строки. Вы должны помещать + пробелы между словами, потому что режим автозаполнения разбивает строки + только по пробелам. -Граница обычно выставлена на 70-ти символах, но вы можете изменить ее -используя команду C-x f. Вы должны задать границу в виде числового аргумента -для этой команды. +Граница разбиения обычно равна 70-ти символам, но вы можете изменить ее +используя команду C-x f. Вы должны задать границу в виде числового +аргумента для этой команды. ->> Введите C-x f с аргументом 20. (C-u 2 0 C-x f). Затем введите - какой-нибудь текст, и посмотрите как Emacs заполняет строки по 20 - символов в каждой. Верните значение границы 70 назад, - снова используя C-x f. +>> Введите C-x f с аргументом 20 (C-u 2 0 C-x f). Затем введите какой-нибудь + текст, и посмотрите как Emacs заполняет строки по 20 символов в каждой. + Верните значение границы равное 70 назад, используя команду C-x f. -Если вы сделали изменения в середине параграфа, автозаполнение не перестроит -текст для вас. Чтобы перестроить параграф, наберите M-q (META-q) в то время, -когда курсор находится внутри параграфа. +Если вы сделали изменения в середине параграфа, то автозаполнение не +переформатирует текст автоматически. Чтобы переформатировать параграф, +наберите M-q (META-q) когда курсор находится внутри параграфа. >> Переместите курсор в предыдущий параграф, и нажмите M-q. @@ -805,12 +863,12 @@ * ПОИСК ------- -Emacs умеет искать строки (непрерывные группы символов или слова) вперед -по тексту, или назад. Поиск строки - это команда перемещения курсора; она +Emacs умеет искать строки (непрерывные группы символов или слова) вперед или +назад по тексту. Поиск строки -- это команда перемещения курсора; она перемещает курсор в следующую точку, где найдена искомая строка. -Команда поиска Emacs отличаются от аналогичных команд большинства других -редакторов тем, что она инкрементальная. Это означает, что поиск происходит +Команда поиска Emacs отличается от аналогичных команд большинства других +редакторов тем, что она инкрементальная. Это означает, что поиск происходит по мере, того как вы набираете искомую строку. Команда, начинающая поиск вперед -- C-s, а C-r ищет назад. ПОДОЖДИТЕ! Не @@ -820,240 +878,261 @@ Вам сообщается, что Emacs ждет ввода слова, которое вы хотите найти. завершает поиск. ->> Теперь нажмите C-s для начала поиска. Медленно, одну букву за один раз, - набирайте слово 'курсор', останавливаясь после каждой введенной буквы и - замечая что происходит с курсором. +>> Теперь нажмите C-s для начала поиска. Медленно, по одной букве, набирайте + слово 'курсор', останавливаясь после каждой введенной буквы и замечая что + происходит с курсором. Сейчас вы нашли первое вхождение слова "курсор". >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор". ->> Теперь нажмите четыре раза и проследите за перемещениями курсора. +>> Теперь нажмите четыре раза и проследите за перемещениями курсора. >> Нажмите для завершения поиска. -Вы видели, что происходило? Emacs в режиме инкрементального поиска пытался -переходить к строкам, совпадающим с набираемой вами, подсвечивая их для вас. +Вы заметили, что происходило? Emacs в режиме инкрементального поиска пытался +переходить к строкам, совпадающим с набираемой вами строкой, подсвечивая их. Чтобы перейти к следующему вхождения слова 'курсор' просто нажмите C-s -снова. Если больше нет вхождений, Emacs издаст звуковой сигнал, и сообщит, -что ваш поиск не удался ("failing"), C-g также может отменить поиск. +снова. Если больше нет вхождений, то Emacs издаст звуковой сигнал, и +сообщит, что ваш поиск не удался ("failing"), C-g также может отменить +поиск. -ЗАМЕЧАНИЕ: На некоторых системах ввод C-s заморозит экран, и вы не увидите -последующего вывода Emacs`а. Это означает, что операционная система имеет -"особенность", именуемую "flow control", перехватывающую C-s и не пропускающую -этот символ к Emacs`у. Для разморозки экрана, нажмите C-q. Смотрите раздел -"Spontaneous Entry to Incremental Search" руководства Emacs, чтобы узнать, -как бороться с этой "особенностью". +ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заблокирует экран, так что вы +не увидите последующего вывода Emacs`а. Такое поведение означает, что +операционная система имеет "особенность", именуемую "flow control", +перехватывающую сочетание C-s и не пропускающую этот символ к Emacs`у. Для +снятия блокировки экрана, нажмите C-q. Обратитесь к разделу "Spontaneous +Entry to Incremental Search" руководства Emacs, чтобы узнать о том, как +бороться с этой "особенностью". -Если вы во время инкрементального поиска нажмете , вы можете заметить, -что последний символ в искомой строке удалился, и поиск вернулся к предыдущему -найденному месту. Например, предположим, что вы набрали "к", поиск перейдет к -первому вхождению символа "к". Теперь, если вы наберете "у", курсор перейдет к -первому вхождению "ку". Нажатие удалит символ "у" из строки поиска, и -курсор вернется к первому вхождению "к". +Если вы во время инкрементального поиска нажмете , то вы заметите, +что последний символ в искомой строке удалился, и поиск вернулся к +предыдущему найденному месту. Например, предположим, что вы набрали "к", +поиск перейдет к первому вхождению символа "к". Теперь, если вы наберете +"у", курсор перейдет к первому вхождению "ку". Нажатие удалит +символ "у" из строки поиска, и курсор вернется к первому вхождению "к". Если вы во время поиска введете control- или meta- символ (за некоторыми -исключениями -- символы вызывающие поиск, а именно C-s и C-r), поиск -прекратится. +исключениями, такими, как символы начинающие поиск, а именно C-s и C-r), +поиск прекратится. -C-s начинает поиск и смотрит на любые вхождения искомой строки ПОСЛЕ текущей -позиции курсора. Если вы хотите найти что-то ранее в тексте, нажмите C-r. -Все, что мы говорили о C-s, применимо и к C-r, за исключением противоположного -направления поиска. +C-s начинает поиск и ищет любые вхождения искомой строки ПОСЛЕ текущей +позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите +C-r. Все, что мы говорили о C-s, применимо и к C-r, за исключением +противоположного направления поиска. * МНОЖЕСТВО ОКОН (MULTIPLE WINDOWS) ----------------------------------- -Одна из приятных особенностей Emacs это то, что вы можете одновременно -отображать на экране более чем одно окно. +Одна из приятных особенностей Emacs является то, что вы можете одновременно +отображать на экране несколько окон. ->> Переместите курсор на эту линию, и наберите C-u 0 C-l (это CONTROL-L, а +>> Переместите курсор на эту строку, и наберите C-u 0 C-l (это CONTROL-L, а не CONTROL-1). >> Теперь наберите C-x 2, что разделит экран на два окна. Оба окна отображают учебник. Курсор остался в верхнем окне. >> Нажмите C-M-v для прокрутки нижнего окна. - (если у вас нет настоящей кнопки META (Alt), нажмите ESC C-v.) + (если у вас нет настоящей кнопки META (Alt), то нажмите C-v.) ->> Нажмите C-x o ("o" от слова "other" - другое) для перемещения курсора в +>> Нажмите C-x o ("o" от слова "other" -- другое) для перемещения курсора в нижнее окно. ->> Используйте C-v и M-v в нижнем окне, чтобы прокручивать его. +>> Используйте C-v и M-v в нижнем окне, для прокрутки текста. Продолжите чтение этих инструкций в верхнем окне. >> Нажмите C-x o снова, чтобы переместить курсор назад в верхнее окно. Курсор в верхнем окне там же, где и был до того. Вы можете продолжать переключаться между окнами, используя C-x o. Каждое -окно хранит свою позицию курсора, но только одно показывает курсор. Все +окно хранит свою позицию курсора, но только одно показывает курсор. Все обычные команды редактирования применяются к окну, в котором отображается -курсор. Мы называем это окно "выбранным" ("selected window"). +курсор. Мы называем это окно "выбранным" ("selected window"). -Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, и -используете второе в качестве справочника. Вы можете всегда сохранять курсор -в окне редактирования и последовательно продвигаться во втором, используя -C-M-v. +Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, а +второе используете в качестве справочника. Вы можете всегда сохранять +курсор в окне редактирования и последовательно продвигаться во втором, +используя C-M-v. -C-M-v - пример CONTROL-META символа. Если у вас есть настоящая кнопка META -(Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, -не отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой, +C-M-v -- пример CONTROL-META символа. Если у вас есть настоящая кнопка META +(Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, не +отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой, CONTROL или META, поскольку эти кнопки модифицируют тип символа. -Если у вас нет настоящей кнопки META, и вы используете ESC вместо нее, -порядок должен быть следующим: вы должны нажать ESC, а затем CTRL-v; -CONTROL-ESC v не будет работать. Потому, что ESC имеет свой собственный -символ -- это не модифицирующая кнопка. +Если у вас нет настоящей кнопки META, и вместо нее вы используете , то +порядок должен быть следующим: вы должны нажать , а затем CTRL-v; +CONTROL- v не будет работать. Это происходит потому, что имеет +свой собственный символ -- это не модифицирующая кнопка. ->> Нажмите C-x 1 (в верхнем окне), чтобы избавиться от нижнего. +>> Нажмите C-x 1 (в верхнем окне), чтобы избавиться от нижнего окна. -(Если вы нажали C-x 1 в нижнем окне, то вы избавились от верхнего. Понимайте -эту команду как "Оставить только одно окно, то, в котором я сейчас нахожусь"). +(Если бы вы нажали C-x 1 в нижнем окне, то вы бы избавились от верхнего. +Понимайте эту команду как "Оставить только одно окно -- то, в котором я +сейчас нахожусь"). -Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы +Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы используете C-x C-f, чтобы открыть файл в одном окне, другое останется без изменения. Вы можете открывать файлы в каждом окне независимо. Есть другой путь использовать два окна, отображающих разные файлы: ->> Наберите C-x 4 C-f, затем имя одного и ваших файлов. Завершите . - Посмотрите, что выбранный файл появился в нижнем окне. Курсор перешел - туда же. +>> Наберите C-x 4 C-f, и введите имя одного и ваших файлов. Завершите ввод + нажатием . Заметьте, что выбранный файл появился в нижнем окне. + Курсор перешел туда же. ->> Наберите C-x o, чтобы вернуться в верхнее окно, и C-x 1, чтобы удалить - нижнее окно. +>> Наберите C-x o, чтобы вернуться в верхнее окно, и затем C-x 1, чтобы + удалить нижнее окно. * РЕКУРСИВНЫЕ УРОВНИ РЕДАКТИРОВАНИЯ (RECURSIVE EDITING LEVELS) -------------------------------------------------------------- -Иногда вы будете включать так называемые "рекурсивные уровни -редактирования". На это указывают прямоугольные скобки в строке состояния, -окружающие обычные скобки вокруг имени основного режима. Например, вы можете -увидеть [(Fundamental)] вместо (Fundamental). +Иногда вы будете попадать в так называемые "рекурсивные уровни +редактирования". На это указывают прямоугольные скобки в строке статуса, +окружающие обычные скобки вокруг имени основного режима. Например, вы +увидите [(Fundamental)] вместо (Fundamental). -Чтобы выйти из рекурсивных уровней редактирования, нажмите ESC ESC ESC. Это -многоцелевая команда "выход". Вы также можете использовать ее как для -уничтожения лишних окон, так и для выхода из мини-буфера. +Чтобы выйти из рекурсивных уровней редактирования, нажмите +. Это многоцелевая команда "выход". Вы также можете использовать ее, +как для уничтожения лишних окон, так и для выхода из мини-буфера. ->> Нажмите M-x, чтобы попасть в мини-буфер; затем нажмите ESC ESC ESC, - чтобы покинуть его. +>> Нажмите M-x, чтобы попасть в мини-буфер, а затем нажмите + , чтобы покинуть его. -Вы не можете использовать C-g, чтобы выйти из рекурсивных уровней -редактирования. Потому, что C-g используется для отмены команды и +Вы не можете использовать C-g, для выхода из рекурсивных уровней +редактирования. Это потому, что C-g используется для отмены команды и аргументов БЕЗ рекурсивных уровней редактирования. -* КАК ПОЛУЧИТЬ ПОМОЩЬ (GETTING MORE HELP) ------------------------------------------ +* КАК ПОЛУЧИТЬ ДОПОЛНИТЕЛЬНУЮ ПОМОЩЬ +------------------------------------ В этом учебнике мы попытались снабдить вас только той информацией, которая -поможет начать использовать Emacs. Очень много информации доступно в Emacs, -и невозможно всю ее представить здесь. Однако, вы можете выучить больше -возможностей Emacs и узнать другие полезные особенности. Emacs предоставляет -команды для чтения документации о командах Emacs. Эти команды "помощи" -("help") все начинаются с символа CONTROL-h, который является "символом -помощи". +поможет вам начать пользоваться Emacs. Очень много информации доступно в +Emacs, и невозможно всю ее представить здесь. Однако, вы можете выучить +больше возможностей Emacs и узнать другие полезные особенности. Emacs +предоставляет команды для чтения документации о командах Emacs. Эти команды +"справки" ("help") все начинаются с символа CONTROL-h, который является +"символом помощи". -Чтобы использовать особенности Помощи, нажмите C-h, и затем символ, который -расскажет, какой именно вид помощи вы хотите получить. Если вы ДЕЙСТВИТЕЛЬНО -растерялись, наберите C-h ?, и Emacs расскажет вам какую помощь он может вам -предоставить. Если вы нажали C-h и передумали обращаться к помощи, просто -нажмите C-g, чтобы отменить эту команду. +Чтобы использовать возможности справки, нажмите C-h, и затем символ, который +расскажет, какой именно вид справки вы хотите получить. Если вы +ДЕЙСТВИТЕЛЬНО растерялись, наберите C-h ?, и Emacs расскажет вам о том, +какую справку он может вам предоставить. Если вы нажали C-h и передумали +обращаться к справке, то просто нажмите C-g, чтобы отменить эту команду. -(Кое-где переназначают символ C-h. Реальной необходимости в этом нет, -сообщите о ней системному администратору. Тем временем, если C-h не вызывает -сообщение помощи внизу экрана, попробуйте вместо этого нажать клавишу F1 или -набрать M-x help RET). +(Кое-где переназначают символ C-h. Реальной необходимости в этом нет, и +если это так, то сообщите об этом системному администратору. Тем временем, +если C-h не вызывает сообщение помощи внизу экрана, то попробуйте вместо +этого нажать клавишу F1 или набрать M-x help RET). -Самая основная возможность ПОМОЩИ - C-h c. Нажмите C-h, затем c, и символ -команды или последовательность, и Emacs отобразит очень краткое описание -команды. +Одна из самых главных функций справки -- C-h c. Нажмите C-h, затем c, и +символ команды или последовательность, и Emacs отобразит краткое набранной +описание команды. >> Нажмите C-h c C-p. - Сообщение должно выглядеть примерно так + +Сообщение должно выглядеть примерно так: C-p runs the command previous-line - (C-p выполняет команду previous-line {предыдущая-строка}) + (C-p выполняет команду previous-line {предыдущая-строка}) Вам сообщают "имя функции". Имена функций используются в основном для -настройки и расширения Emacs. Имена функций выбраны так, чтобы показать, -что именно команда делает, также они позволяют с помощью этой краткой +настройки и расширения Emacs. Имена функций выбраны так, чтобы показать, что +именно команда делает, а также они позволяют с помощью этой краткой информации легче запомнить уже выученные команды. -Многосимвольные команды, такие как C-x C-s и (если у вас нет кнопки META или -EDIT или ALT) v также будут доступны после C-h c. +Многосимвольные сочетания клавиш, такие как C-x C-s и (если у вас нет кнопки +META или EDIT или ALT) v также будут доступны для получения справки с +помощью C-h c. -Получите больше информации о команде используя C-h k вместо C-h c. +Вы можете получить больше информации о команде используя C-h k вместо C-h c. >> Наберите C-h k C-p. Вы увидите описание функции, а также ее имя в отдельном окне Emacs. Когда вы -завершите чтение, нажмите C-x 1, чтобы избавиться от текста помощи. Вы -можете выполнить какое-то редактирование во время просмотра текста справки, -а только затем нажать C-x 1. +завершите чтение, нажмите C-x 1, чтобы избавиться от текста справки. Вы +можете выполнить изменение текста во время просмотра текста справки, а +только затем нажать C-x 1. -Есть еще несколько полезных опций C-h: +Есть еще несколько полезных функций, доступных через C-h: C-h f Описывает функцию. Вам необходимо набрать имя функции. >> Попробуйте набрать C-h f previous-line. - Это распечатает информацию Emacs о этой функции, которая выполняется - командой C-p. + Это распечатает информацию Emacs о функции, которая выполняется командой + C-p. Аналогичная команда C-h v отображает документацию о переменных, значение которых вы можете изменить для настройки поведения Emacs. Вам нужно набрать имя переменной, когда Emacs запросит его. - C-h a Hyper Apropos. Введите ключевое слово и Emacs покажет вам - список всех функций и переменных, имена которых содержат это - слово. Команды, которые могут быть вызваны через Meta-x, - будут отмечены звездочкой слева. + C-h a (Hyper Apropos). Введите ключевое слово и Emacs покажет вам список + всех функций и переменных, имена которых содержат это + слово. Команды, которые могут быть вызваны через Meta-x, будут + отмечены звездочкой слева. >> Наберите C-h a file. -это отобразит полный список функций и переменных, имена которых начинаются -с "newline". Нажмите или кликните средней кнопкой мышки, чтобы -получить больше информации о функции или переменной. Нажмите `q', чтобы -выйти из hyper-apropos. - -Это отобразит в другом окне список всех команд M-x со словом "file" в их -именах. Также в списке кроме команд таких, как find-file, вы увидите -соответствующие символьные команды такие, как C-x C-f. +Это отобразит в другом окне список всех команд M-x у которых в именах +содержится слово "file". Также в списке кроме команд таких, как find-file, +вы увидите соответствующие символьные команды такие, как C-x C-f. >> Наберите C-M-v для прокрутки окна справки. Выполните это несколько раз. >> Наберите C-x 1 для удаления окна справки. - C-h i Читать интерактивные руководства (a.k.a. Info). Эта команда - переходит в специальный буфер с именем `*info*', где вы - можете читать интерактивные руководства для пакетов, - установленных в вашей системе. Наберите m emacs для - чтения руководства по Emacs. Если вы никогда ранее не - использовали Info, то наберите ? и Emacs откроет учебник по - возможностям режима Info. Однажды ознакомившись с этим - учебником, вы должны использовать руководство Emacs Info в - качестве основной документации. + C-h i Читать интерактивные руководства (так называемые Info). Эта команда + переходит в специальный буфер с именем `*info*', где вы можете + читать интерактивные руководства для пакетов, установленных в вашей + системе. Наберите m emacs для чтения руководства по + Emacs. Если вы никогда ранее не использовали Info, то наберите ? и + Emacs откроет учебник по возможностям режима Info. Однажды + ознакомившись с этим учебником, вы должны использовать руководство + Emacs Info в качестве основной документации. + + +* ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ +---------------------------- + +Вы можете узнать больше о Emacs читая его руководство, книги или +интерактивный справочник (используйте меню Help или наберите F10 h r). Вам +особенно понравятся две функции -- дополнение, которое сокращает количество +нажимаемых клавиш, и dired, который облегчает работу с файлами. + +Дополнение используется для того, чтобы избежать набора лишних символов. +Например, если вы хотите переключиться в буфер *Messages*, то вы можете +набрать C-x b *M и Emacs заполнит остаток имени буфера, поскольку он +может определить его из того, что вы уже набрали. Дополнения описаны в +Info-версии руководства по Emacs в разделе "Completion". + +Dired позволяет вам отображать список файлов в каталоге (а также +подкаталогах, в зависимости от настройки), перемещаться по списку файлов, +открывать их, переименовывать, удалять и выполнять прочие действия над +файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired". + +В руководстве также описаны прочие возможности Emacs. * ЗАКЛЮЧЕНИЕ ------------ -Запомните, чтобы совсем выйти из Emacs, используется сочетание клавиш -C-x C-c. А чтобы временно выйти в оболочку (shell) и потом вернуться +Запомните, что для того чтобы совсем выйти из Emacs, используется сочетание +клавиш C-x C-c. А чтобы временно выйти в оболочку (shell) и потом вернуться обратно, используйте C-z. Этот учебник должен быть понятен всем новым пользователям, но если вы найдете что-нибудь неясное, не нужно сидеть и порицать себя -- жалуйтесь! -* COPYING ---------- +* УСЛОВИЯ РАСПРОСТРАНЕНИЯ +------------------------- Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды -написанного by Stuart Cracraft для оригинального Emacs. +написанного Stuart Cracraft для оригинального Emacs. Эта версия учебника, как и GNU Emacs, защищена правами копирования (copyrighted), и приходит с ограничениями распространения копий со следующими соглашениями: -Copyright (c) 1985, 1996 Free Software Foundation +Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the @@ -1066,16 +1145,14 @@ under the above conditions, provided also that they carry prominent notices stating who last altered them. -Условия копирования самого Emacs более сложные, но в том же духе. +Условия копирования самого Emacs более сложные, но примерно в том же духе. Пожалуйста, прочтите файл COPYING и затем дайте копию GNU Emacs вашим друзьям. Помогите уничтожить обструкционизм в области программного обеспечения ("владение"), используя, создавая и распространяя свободное программное обеспечение! -// замечания, исправления ошибок с нетерпением жду по адресу ottalex@narod.ru +// замечания, исправления ошибок с жду по адресу alexott@gmail.com. // Alex Ott. -// Большое спасибо Владимиру Бормотову, на базе перевода которого был сделан -// этот перевод ;;; Local Variables: ;;; coding: cyrillic-koi8 diff -r a8c8fab4072c -r 2d137ca54960 etc/e/eterm Binary file etc/e/eterm has changed diff -r a8c8fab4072c -r 2d137ca54960 etc/e/eterm.ti --- a/etc/e/eterm.ti Tue Apr 26 12:13:35 2005 +0000 +++ b/etc/e/eterm.ti Tue Apr 26 12:17:42 2005 +0000 @@ -1,4 +1,4 @@ -eterm, +eterm|Emacs term.el terminal emulator term-protocol-version 0.96, colors#8, cols#80, lines#24, diff -r a8c8fab4072c -r 2d137ca54960 lisp/ChangeLog --- a/lisp/ChangeLog Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/ChangeLog Tue Apr 26 12:17:42 2005 +0000 @@ -1,3 +1,35 @@ +2005-04-25 Dan Nicolaescu + + * term/xterm.el (function-key-map): Fix strings for + {C,S,A,C-S}-f[1-4]. Use substitute-key-definition to bind + {C,S,A,C-S}-{f1-f12}. + +2005-04-26 Kenichi Handa + + * international/mule-cmds.el (select-safe-coding-system): Fix + previous change. + +2005-04-26 Lute Kamstra + + * calc/calc.el (calc-trail-mode): Don't set font-lock-defaults. + +2005-04-25 Jay Belanger + + * calc/calc-help.el (calc-view-news): Let-bind inhibit-read-only + to t while inserting information; use help-mode. + +2005-04-25 Dan Nicolaescu + + * term.el (ansi-term-color-vector): Use the xterm colors. + (term-raw-map): Don't add mappings for \eO and \e[. Map + deletechar. + +2005-04-25 Lute Kamstra + + * font-core.el (font-lock-defaults): Fix docstring. + + * font-lock.el (font-lock-syntactic-face-function): Fix docstring. + 2005-04-25 Kenichi Handa * international/mule-cmds.el (select-safe-coding-system): Don't diff -r a8c8fab4072c -r 2d137ca54960 lisp/calc/calc-help.el --- a/lisp/calc/calc-help.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/calc/calc-help.el Tue Apr 26 12:17:42 2005 +0000 @@ -393,12 +393,14 @@ (error "Can't locate Calc sources")) (calc-quit) (switch-to-buffer "*Help*") - (erase-buffer) - (insert-file-contents (expand-file-name "README" (car path))) - (search-forward "Summary of changes") - (forward-line -1) - (delete-region (point-min) (point)) - (goto-char (point-min)))) + (let ((inhibit-read-only t)) + (erase-buffer) + (insert-file-contents (expand-file-name "README" (car path))) + (search-forward "Summary of changes") + (forward-line -1) + (delete-region (point-min) (point)) + (goto-char (point-min))) + (help-mode))) (defvar calc-help-long-names '((?b . "binary/business") (?g . "graphics") diff -r a8c8fab4072c -r 2d137ca54960 lisp/calc/calc.el --- a/lisp/calc/calc.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/calc/calc.el Tue Apr 26 12:17:42 2005 +0000 @@ -1174,8 +1174,6 @@ (setq buffer-read-only t) (make-local-variable 'overlay-arrow-position) (make-local-variable 'overlay-arrow-string) - (set (make-local-variable 'font-lock-defaults) - '(nil t nil nil nil (font-lock-core-only . t))) (when buf (set (make-local-variable 'calc-main-buffer) buf)) (when (= (buffer-size) 0) diff -r a8c8fab4072c -r 2d137ca54960 lisp/font-core.el --- a/lisp/font-core.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/font-core.el Tue Apr 26 12:17:42 2005 +0000 @@ -32,7 +32,7 @@ "Defaults for Font Lock mode specified by the major mode. Defaults should be of the form: - (KEYWORDS KEYWORDS-ONLY CASE-FOLD SYNTAX-ALIST SYNTAX-BEGIN ...) + (KEYWORDS [KEYWORDS-ONLY [CASE-FOLD [SYNTAX-ALIST [SYNTAX-BEGIN ...]]]]) KEYWORDS may be a symbol (a variable or function whose value is the keywords to use for fontification) or a list of symbols. If KEYWORDS-ONLY is non-nil, @@ -66,11 +66,10 @@ around a text block relevant to that mode). Other variables include that for syntactic keyword fontification, -`font-lock-syntactic-keywords' -and those for buffer-specialized fontification functions, -`font-lock-fontify-buffer-function', `font-lock-unfontify-buffer-function', -`font-lock-fontify-region-function', `font-lock-unfontify-region-function', -`font-lock-inhibit-thing-lock' and `font-lock-maximum-size'.") +`font-lock-syntactic-keywords' and those for buffer-specialized fontification +functions, `font-lock-fontify-buffer-function', +`font-lock-unfontify-buffer-function', `font-lock-fontify-region-function', +`font-lock-unfontify-region-function', and `font-lock-inhibit-thing-lock'.") (make-variable-buffer-local 'font-lock-defaults) (defvar font-lock-defaults-alist nil diff -r a8c8fab4072c -r 2d137ca54960 lisp/font-lock.el --- a/lisp/font-lock.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/font-lock.el Tue Apr 26 12:17:42 2005 +0000 @@ -496,7 +496,7 @@ "Function to determine which face to use when fontifying syntactically. The function is called with a single parameter (the state as returned by `parse-partial-sexp' at the beginning of the region to highlight) and -should return a face.") +should return a face. This is normally set via `font-lock-defaults'.") (defvar font-lock-syntactic-keywords nil "A list of the syntactic keywords to highlight. @@ -646,6 +646,7 @@ ;;;###autoload (defun font-lock-add-keywords (mode keywords &optional append) "Add highlighting KEYWORDS for MODE. + MODE should be a symbol, the major mode command name, such as `c-mode' or nil. If nil, highlighting keywords are added for the current buffer. KEYWORDS should be a list; see the variable `font-lock-keywords'. diff -r a8c8fab4072c -r 2d137ca54960 lisp/international/mule-cmds.el --- a/lisp/international/mule-cmds.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/international/mule-cmds.el Tue Apr 26 12:17:42 2005 +0000 @@ -929,7 +929,8 @@ ;; by using `find-file-literally'. (unless (or (stringp from) find-file-literally - (memq (coding-system-type coding-system) '(0 5))) + (and coding-system + (memq (coding-system-type coding-system) '(0 5)))) (let ((auto-cs (save-excursion (save-restriction (widen) diff -r a8c8fab4072c -r 2d137ca54960 lisp/term.el --- a/lisp/term.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/term.el Tue Apr 26 12:17:42 2005 +0000 @@ -711,9 +711,10 @@ :group 'term :type 'string) +;;; Use the same colors that xterm uses, see `xterm-standard-colors'. (defvar ansi-term-color-vector - [unspecified "black" "red" "green" "yellow" "blue" - "magenta" "cyan" "white"]) + [unspecified "black" "red3" "green3" "yellow3" "blue2" + "magenta3" "cyan3" "white"]) ;;; Inspiration came from comint.el -mm (defvar term-buffer-maximum-size 2048 @@ -886,7 +887,9 @@ (i 0)) (while (< i 128) (define-key map (make-string 1 i) 'term-send-raw) - (define-key esc-map (make-string 1 i) 'term-send-raw-meta) + ;; Avoid O and [. They are used in escape sequences for various keys. + (unless (or (eq i ?O) (eq i 91)) + (define-key esc-map (make-string 1 i) 'term-send-raw-meta)) (setq i (1+ i))) (dolist (elm (generic-character-list)) (define-key map (vector elm) 'term-send-raw)) @@ -909,6 +912,7 @@ (define-key term-raw-map [right] 'term-send-right) (define-key term-raw-map [left] 'term-send-left) (define-key term-raw-map [delete] 'term-send-del) + (define-key term-raw-map [deletechar] 'term-send-del) (define-key term-raw-map [backspace] 'term-send-backspace) (define-key term-raw-map [home] 'term-send-home) (define-key term-raw-map [end] 'term-send-end) diff -r a8c8fab4072c -r 2d137ca54960 lisp/term/xterm.el --- a/lisp/term/xterm.el Tue Apr 26 12:13:35 2005 +0000 +++ b/lisp/term/xterm.el Tue Apr 26 12:17:42 2005 +0000 @@ -53,10 +53,15 @@ (define-key map "\e[24~" [f12]) (define-key map "\e[29~" [print]) - (define-key map "\e[11;2~" [S-f1]) - (define-key map "\e[12;2~" [S-f2]) - (define-key map "\e[13;2~" [S-f3]) - (define-key map "\e[14;2~" [S-f4]) + (define-key map "\eOP" [f1]) + (define-key map "\eOQ" [f2]) + (define-key map "\eOR" [f3]) + (define-key map "\eOS" [f4]) + + (define-key map "\eO2P" [S-f1]) + (define-key map "\eO2Q" [S-f2]) + (define-key map "\eO2R" [S-f3]) + (define-key map "\eO2S" [S-f4]) (define-key map "\e[15;2~" [S-f5]) (define-key map "\e[17;2~" [S-f6]) (define-key map "\e[18;2~" [S-f7]) @@ -66,10 +71,10 @@ (define-key map "\e[23;2~" [S-f11]) (define-key map "\e[24;2~" [S-f12]) - (define-key map "\e[11;5~" [C-f1]) - (define-key map "\e[12;5~" [C-f2]) - (define-key map "\e[13;5~" [C-f3]) - (define-key map "\e[14;5~" [C-f4]) + (define-key map "\eO5P" [C-f1]) + (define-key map "\eO5Q" [C-f2]) + (define-key map "\eO5R" [C-f3]) + (define-key map "\eO5S" [C-f4]) (define-key map "\e[15;5~" [C-f5]) (define-key map "\e[17;5~" [C-f6]) (define-key map "\e[18;5~" [C-f7]) @@ -79,10 +84,10 @@ (define-key map "\e[23;5~" [C-f11]) (define-key map "\e[24;5~" [C-f12]) - (define-key map "\e[11;6~" [C-S-f1]) - (define-key map "\e[12;6~" [C-S-f2]) - (define-key map "\e[13;6~" [C-S-f3]) - (define-key map "\e[14;6~" [C-S-f4]) + (define-key map "\eO6P" [C-S-f1]) + (define-key map "\eO6Q" [C-S-f2]) + (define-key map "\eO6R" [C-S-f3]) + (define-key map "\eO6S" [C-S-f4]) (define-key map "\e[15;6~" [C-S-f5]) (define-key map "\e[17;6~" [C-S-f6]) (define-key map "\e[18;6~" [C-S-f7]) @@ -92,10 +97,10 @@ (define-key map "\e[23;6~" [C-S-f11]) (define-key map "\e[24;6~" [C-S-f12]) - (define-key map "\e[11;3~" [A-f1]) - (define-key map "\e[12;3~" [A-f2]) - (define-key map "\e[13;3~" [A-f3]) - (define-key map "\e[14;3~" [A-f4]) + (define-key map "\eO3P" [A-f1]) + (define-key map "\eO3Q" [A-f2]) + (define-key map "\eO3R" [A-f3]) + (define-key map "\eO3S" [A-f4]) (define-key map "\e[15;3~" [A-f5]) (define-key map "\e[17;3~" [A-f6]) (define-key map "\e[18;3~" [A-f7]) @@ -180,6 +185,66 @@ (set-keymap-parent map (keymap-parent function-key-map)) (set-keymap-parent function-key-map map)) +;;; The terminal intialization C code file might have initialized +;;; function keys F13->F60 from the termcap/terminfo information. On +;;; a PC-style keyboard these keys correspond to +;;; MODIFIER-FUNCTION_KEY, where modifier is S-, C, A-, C-S-. The +;;; code here subsitutes the corresponding defintions in +;;; function-key-map. This substitution is needed because if a key +;;; definition if found in function-key-map, there are no further +;;; lookups in other keymaps. +(substitute-key-definition [f13] [S-f1] function-key-map) +(substitute-key-definition [f14] [S-f2] function-key-map) +(substitute-key-definition [f15] [S-f3] function-key-map) +(substitute-key-definition [f16] [S-f4] function-key-map) +(substitute-key-definition [f17] [S-f5] function-key-map) +(substitute-key-definition [f18] [S-f6] function-key-map) +(substitute-key-definition [f19] [S-f7] function-key-map) +(substitute-key-definition [f20] [S-f8] function-key-map) +(substitute-key-definition [f21] [S-f9] function-key-map) +(substitute-key-definition [f22] [S-f10] function-key-map) +(substitute-key-definition [f23] [S-f11] function-key-map) +(substitute-key-definition [f24] [S-f12] function-key-map) + +(substitute-key-definition [f25] [C-f1] function-key-map) +(substitute-key-definition [f26] [C-f2] function-key-map) +(substitute-key-definition [f27] [C-f3] function-key-map) +(substitute-key-definition [f28] [C-f4] function-key-map) +(substitute-key-definition [f29] [C-f5] function-key-map) +(substitute-key-definition [f30] [C-f6] function-key-map) +(substitute-key-definition [f31] [C-f7] function-key-map) +(substitute-key-definition [f32] [C-f8] function-key-map) +(substitute-key-definition [f33] [C-f9] function-key-map) +(substitute-key-definition [f34] [C-f10] function-key-map) +(substitute-key-definition [f35] [C-f11] function-key-map) +(substitute-key-definition [f36] [C-f12] function-key-map) + +(substitute-key-definition [f37] [C-S-f1] function-key-map) +(substitute-key-definition [f38] [C-S-f2] function-key-map) +(substitute-key-definition [f39] [C-S-f3] function-key-map) +(substitute-key-definition [f40] [C-S-f4] function-key-map) +(substitute-key-definition [f41] [C-S-f5] function-key-map) +(substitute-key-definition [f42] [C-S-f6] function-key-map) +(substitute-key-definition [f43] [C-S-f7] function-key-map) +(substitute-key-definition [f44] [C-S-f8] function-key-map) +(substitute-key-definition [f45] [C-S-f9] function-key-map) +(substitute-key-definition [f46] [C-S-f10] function-key-map) +(substitute-key-definition [f47] [C-S-f11] function-key-map) +(substitute-key-definition [f48] [C-S-f12] function-key-map) + +(substitute-key-definition [f49] [A-f1] function-key-map) +(substitute-key-definition [f50] [A-f2] function-key-map) +(substitute-key-definition [f51] [A-f3] function-key-map) +(substitute-key-definition [f52] [A-f4] function-key-map) +(substitute-key-definition [f53] [A-f5] function-key-map) +(substitute-key-definition [f54] [A-f6] function-key-map) +(substitute-key-definition [f55] [A-f7] function-key-map) +(substitute-key-definition [f56] [A-f8] function-key-map) +(substitute-key-definition [f57] [A-f9] function-key-map) +(substitute-key-definition [f58] [A-f10] function-key-map) +(substitute-key-definition [f59] [A-f11] function-key-map) +(substitute-key-definition [f60] [A-f12] function-key-map) + ;; Set up colors, for those versions of xterm that support it. (defvar xterm-standard-colors ;; The names in the comments taken from XTerm-col.ad in the xterm diff -r a8c8fab4072c -r 2d137ca54960 lispref/ChangeLog --- a/lispref/ChangeLog Tue Apr 26 12:13:35 2005 +0000 +++ b/lispref/ChangeLog Tue Apr 26 12:17:42 2005 +0000 @@ -1,3 +1,7 @@ +2005-04-25 Luc Teirlinck + + * hooks.texi (Standard Hooks): Most minor modes have mode hooks too. + 2005-04-24 Eli Zaretskii * syntax.texi (Syntax Table Internals): Elaborate documentation of diff -r a8c8fab4072c -r 2d137ca54960 lispref/hooks.texi --- a/lispref/hooks.texi Tue Apr 26 12:13:35 2005 +0000 +++ b/lispref/hooks.texi Tue Apr 26 12:17:42 2005 +0000 @@ -19,7 +19,8 @@ Every major mode defines a mode hook named @samp{@var{modename}-mode-hook}. The major mode command runs this normal hook with @code{run-mode-hooks} as the very last thing it does. -@xref{Mode Hooks}. Mode hooks are omitted in the list below. +@xref{Mode Hooks}. Most minor modes have mode hooks too. Mode hooks +are omitted in the list below. The variables whose names end in @samp{-hooks} or @samp{-functions} are usually @dfn{abnormal hooks}; their values are lists of functions, but diff -r a8c8fab4072c -r 2d137ca54960 man/ChangeLog --- a/man/ChangeLog Tue Apr 26 12:13:35 2005 +0000 +++ b/man/ChangeLog Tue Apr 26 12:17:42 2005 +0000 @@ -1,3 +1,9 @@ +2005-04-25 Luc Teirlinck + + * frames.texi (Tooltips): Tooltip mode is enabled by default. + Delete redundant reference to tooltip Custom group. It is + referred too again in the next paragraph. + 2005-04-24 Richard M. Stallman * ack.texi: Delete info about lazy-lock.el and fast-lock.el. diff -r a8c8fab4072c -r 2d137ca54960 man/frames.texi --- a/man/frames.texi Tue Apr 26 12:13:35 2005 +0000 +++ b/man/frames.texi Tue Apr 26 12:17:42 2005 +0000 @@ -973,10 +973,9 @@ menu items too. @findex tooltip-mode - To use tooltips, enable Tooltip mode with the command @kbd{M-x -tooltip-mode}. The customization group @code{tooltip} controls -various aspects of how tooltips work. When Tooltip mode is disabled, -the help text is displayed in the echo area instead. + You can toggle Tooltip mode with the command @kbd{M-x tooltip-mode}. +When Tooltip mode is disabled, the help text is displayed in the echo +area instead. @vindex tooltip-delay The variables @code{tooltip-delay} specifies how long Emacs should diff -r a8c8fab4072c -r 2d137ca54960 src/ChangeLog --- a/src/ChangeLog Tue Apr 26 12:13:35 2005 +0000 +++ b/src/ChangeLog Tue Apr 26 12:17:42 2005 +0000 @@ -1,3 +1,13 @@ +2005-04-26 Kenichi Handa + + * fns.c (char_table_range): New function. + (Fchar_table_range): Signal an error if characters in the range + have inconsistent values. Don't check the parent. + +2005-04-25 Kenichi Handa + + * fontset.c (fontset_set): Fix previous change. + 2005-04-24 Richard M. Stallman * indent.c (Fvertical_motion): Bind fontification-functions to nil. diff -r a8c8fab4072c -r 2d137ca54960 src/fns.c --- a/src/fns.c Tue Apr 26 12:13:35 2005 +0000 +++ b/src/fns.c Tue Apr 26 12:17:42 2005 +0000 @@ -2508,50 +2508,143 @@ return XCHAR_TABLE (char_table)->extras[XINT (n)] = value; } +static Lisp_Object +char_table_range (table, from, to, defalt) + Lisp_Object table; + int from, to; + Lisp_Object defalt; +{ + Lisp_Object val; + + if (! NILP (XCHAR_TABLE (table)->defalt)) + defalt = XCHAR_TABLE (table)->defalt; + val = XCHAR_TABLE (table)->contents[from]; + if (SUB_CHAR_TABLE_P (val)) + val = char_table_range (val, 32, 127, defalt); + else if (NILP (val)) + val = defalt; + for (from++; from <= to; from++) + { + Lisp_Object this_val; + + this_val = XCHAR_TABLE (table)->contents[from]; + if (SUB_CHAR_TABLE_P (this_val)) + this_val = char_table_range (this_val, 32, 127, defalt); + else if (NILP (this_val)) + this_val = defalt; + if (! EQ (val, this_val)) + error ("Characters in the range have inconsistent values"); + } + return val; +} + + DEFUN ("char-table-range", Fchar_table_range, Schar_table_range, 2, 2, 0, doc: /* Return the value in CHAR-TABLE for a range of characters RANGE. RANGE should be nil (for the default value) a vector which identifies a character set or a row of a character set, -a character set name, or a character code. */) +a character set name, or a character code. +If the characters in the specified range have different values, +an error is signalled. + +Note that this function doesn't check the parent of CHAR_TABLE. */) (char_table, range) Lisp_Object char_table, range; { + int charset_id, c1 = 0, c2 = 0; + int size, i; + Lisp_Object ch, val, current_default; + CHECK_CHAR_TABLE (char_table); if (EQ (range, Qnil)) return XCHAR_TABLE (char_table)->defalt; - else if (INTEGERP (range)) - return Faref (char_table, range); + if (INTEGERP (range)) + { + int c = XINT (range); + if (! CHAR_VALID_P (c, 0)) + error ("Invalid character code: %d", c); + ch = range; + SPLIT_CHAR (c, charset_id, c1, c2); + } else if (SYMBOLP (range)) { Lisp_Object charset_info; charset_info = Fget (range, Qcharset); CHECK_VECTOR (charset_info); - - return Faref (char_table, - make_number (XINT (XVECTOR (charset_info)->contents[0]) - + 128)); + charset_id = XINT (XVECTOR (charset_info)->contents[0]); + ch = Fmake_char_internal (make_number (charset_id), + make_number (0), make_number (0)); } else if (VECTORP (range)) { - if (XVECTOR (range)->size == 1) - return Faref (char_table, - make_number (XINT (XVECTOR (range)->contents[0]) + 128)); - else + size = ASIZE (range); + if (size == 0) + args_out_of_range (range, 0); + CHECK_NUMBER (AREF (range, 0)); + charset_id = XINT (AREF (range, 0)); + if (size > 1) { - int size = XVECTOR (range)->size; - Lisp_Object *val = XVECTOR (range)->contents; - Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], - size <= 1 ? Qnil : val[1], - size <= 2 ? Qnil : val[2]); - return Faref (char_table, ch); + CHECK_NUMBER (AREF (range, 1)); + c1 = XINT (AREF (range, 1)); + if (size > 2) + { + CHECK_NUMBER (AREF (range, 2)); + c2 = XINT (AREF (range, 2)); + } } + + /* This checks if charset_id, c0, and c1 are all valid or not. */ + ch = Fmake_char_internal (make_number (charset_id), + make_number (c1), make_number (c2)); } else error ("Invalid RANGE argument to `char-table-range'"); - return Qt; + + if (c1 > 0 && (CHARSET_DIMENSION (charset_id) == 1 || c2 > 0)) + { + /* Fully specified character. */ + Lisp_Object parent = XCHAR_TABLE (char_table)->parent; + + XCHAR_TABLE (char_table)->parent = Qnil; + val = Faref (char_table, ch); + XCHAR_TABLE (char_table)->parent = parent; + return val; + } + + current_default = XCHAR_TABLE (char_table)->defalt; + if (charset_id == CHARSET_ASCII + || charset_id == CHARSET_8_BIT_CONTROL + || charset_id == CHARSET_8_BIT_GRAPHIC) + { + int from, to, defalt; + + if (charset_id == CHARSET_ASCII) + from = 0, to = 127, defalt = CHAR_TABLE_DEFAULT_SLOT_ASCII; + else if (charset_id == CHARSET_8_BIT_CONTROL) + from = 128, to = 159, defalt = CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL; + else + from = 160, to = 255, defalt = CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC; + if (! NILP (XCHAR_TABLE (char_table)->contents[defalt])) + current_default = XCHAR_TABLE (char_table)->contents[defalt]; + return char_table_range (char_table, from, to, current_default); + } + + val = XCHAR_TABLE (char_table)->contents[128 + charset_id]; + if (! SUB_CHAR_TABLE_P (val)) + return (NILP (val) ? current_default : val); + if (! NILP (XCHAR_TABLE (val)->defalt)) + current_default = XCHAR_TABLE (val)->defalt; + if (c1 == 0) + return char_table_range (val, 32, 127, current_default); + val = XCHAR_TABLE (val)->contents[c1]; + if (! SUB_CHAR_TABLE_P (val)) + return (NILP (val) ? current_default : val); + if (! NILP (XCHAR_TABLE (val)->defalt)) + current_default = XCHAR_TABLE (val)->defalt; + return char_table_range (val, 32, 127, current_default); } DEFUN ("set-char-table-range", Fset_char_table_range, Sset_char_table_range, diff -r a8c8fab4072c -r 2d137ca54960 src/fontset.c --- a/src/fontset.c Tue Apr 26 12:13:35 2005 +0000 +++ b/src/fontset.c Tue Apr 26 12:17:42 2005 +0000 @@ -356,7 +356,7 @@ if (!SUB_CHAR_TABLE_P (*elt)) { Lisp_Object val = *elt; - *elt = make_sub_char_table (val); + *elt = make_sub_char_table (Qnil); XCHAR_TABLE (*elt)->defalt = val; } elt = &XCHAR_TABLE (*elt)->contents[code[i]];