diff options
| author | Karoly Lorentey | 2005-04-26 12:17:42 +0000 |
|---|---|---|
| committer | Karoly Lorentey | 2005-04-26 12:17:42 +0000 |
| commit | 030cd69ff13d95f439ca0d13a03215fc45959789 (patch) | |
| tree | 4554735b53848a05f107b8b421a898e0e9fe7ee6 | |
| parent | 3379bbb24d58ecd8dca0c96b976b7031167e76a5 (diff) | |
| parent | 35b1b8abe3d3833ecb4b4cee75b7340ffb707d65 (diff) | |
| download | emacs-030cd69ff13d95f439ca0d13a03215fc45959789.tar.gz emacs-030cd69ff13d95f439ca0d13a03215fc45959789.zip | |
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
| -rw-r--r-- | etc/ChangeLog | 13 | ||||
| -rw-r--r-- | etc/NEWS | 7 | ||||
| -rw-r--r-- | etc/TUTORIAL.ru | 1191 | ||||
| -rw-r--r-- | etc/e/eterm | bin | 1089 -> 1149 bytes | |||
| -rw-r--r-- | etc/e/eterm.ti | 2 | ||||
| -rw-r--r-- | lisp/ChangeLog | 32 | ||||
| -rw-r--r-- | lisp/calc/calc-help.el | 14 | ||||
| -rw-r--r-- | lisp/calc/calc.el | 2 | ||||
| -rw-r--r-- | lisp/font-core.el | 11 | ||||
| -rw-r--r-- | lisp/font-lock.el | 3 | ||||
| -rw-r--r-- | lisp/international/mule-cmds.el | 3 | ||||
| -rw-r--r-- | lisp/term.el | 10 | ||||
| -rw-r--r-- | lisp/term/xterm.el | 97 | ||||
| -rw-r--r-- | lispref/ChangeLog | 4 | ||||
| -rw-r--r-- | lispref/hooks.texi | 3 | ||||
| -rw-r--r-- | man/ChangeLog | 6 | ||||
| -rw-r--r-- | man/frames.texi | 7 | ||||
| -rw-r--r-- | src/ChangeLog | 10 | ||||
| -rw-r--r-- | src/fns.c | 129 | ||||
| -rw-r--r-- | src/fontset.c | 2 |
20 files changed, 928 insertions, 618 deletions
diff --git a/etc/ChangeLog b/etc/ChangeLog index ce3785eba8e..0117b1a949d 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog | |||
| @@ -1,3 +1,14 @@ | |||
| 1 | 2005-04-25 Dan Nicolaescu <dann@ics.uci.edu> | ||
| 2 | |||
| 3 | * NEWS: Mention xterm key bindings. | ||
| 4 | |||
| 5 | * e/eterm.ti: Add a comment. | ||
| 6 | * e/eterm: Regenerate. | ||
| 7 | |||
| 8 | 2005-04-25 Alex Ott <ott@jet.msk.su> | ||
| 9 | |||
| 10 | * TUTORIAL.ru: Update. | ||
| 11 | |||
| 1 | 2005-04-13 Pavel Jan,Am(Bk <Pavel@Janik.cz> | 12 | 2005-04-13 Pavel Jan,Am(Bk <Pavel@Janik.cz> |
| 2 | 13 | ||
| 3 | * TUTORIAL.sk: Updated header. | 14 | * TUTORIAL.sk: Updated header. |
| @@ -16,7 +27,7 @@ | |||
| 16 | 27 | ||
| 17 | 2005-04-10 Masatake YAMATO <jet@gyve.org> | 28 | 2005-04-10 Masatake YAMATO <jet@gyve.org> |
| 18 | 29 | ||
| 19 | * compilation.txt (symbol): Added gcov-file | 30 | * compilation.txt (symbol): Added gcov-file |
| 20 | gcov-bb-file gcov-never-called-line gcov-called-line . | 31 | gcov-bb-file gcov-never-called-line gcov-called-line . |
| 21 | 32 | ||
| 22 | 2005-04-08 Kenichi Handa <handa@m17n.org> | 33 | 2005-04-08 Kenichi Handa <handa@m17n.org> |
| @@ -107,6 +107,13 @@ types any more. Add -DUSE_LISP_UNION_TYPE if you want union types. | |||
| 107 | 107 | ||
| 108 | * Changes in Emacs 22.1 | 108 | * Changes in Emacs 22.1 |
| 109 | 109 | ||
| 110 | ** Improved key bindings support when running in an xterm. | ||
| 111 | When emacs is running in an xterm more key bindings are available. The | ||
| 112 | following should work: | ||
| 113 | {C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}. | ||
| 114 | These key bindings work on xterm from X.org 6.8, they might not work on | ||
| 115 | some older versions of xterm, or on some proprietary versions. | ||
| 116 | |||
| 110 | ** Improved Thai support. A new minor mode `thai-word-mode' (which is | 117 | ** Improved Thai support. A new minor mode `thai-word-mode' (which is |
| 111 | automatically activated if you select Thai as a language | 118 | automatically activated if you select Thai as a language |
| 112 | environment) changes key bindings of most word-oriented commands to | 119 | environment) changes key bindings of most word-oriented commands to |
diff --git a/etc/TUTORIAL.ru b/etc/TUTORIAL.ru index 3dad1b3daec..1be3a1e28a8 100644 --- a/etc/TUTORIAL.ru +++ b/etc/TUTORIAL.ru | |||
| @@ -1,64 +1,69 @@ | |||
| 1 | Учебник Emacs. Условия распространения смотрите в конце файла | 1 | Учебник Emacs. Условия распространения приведены в конце файла |
| 2 | Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc. | 2 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation, Inc. |
| 3 | 3 | ||
| 4 | Для управления Emacs обычно используется ключ (сочетание клавиш клавиатуры | 4 | Для управления Emacs обычно используется ключ (key -- сочетание клавиш |
| 5 | и/или кнопок мыши), включающий в себя клавишу CONTROL (иногда отмечаемая | 5 | клавиатуры и/или кнопок мыши), включающий в себя клавишу CONTROL (иногда |
| 6 | как CTRL или CTL) или клавишу META (иногда помеченную как ALT или EDIT). В | 6 | отмечаемая как CTRL или CTL) или клавишу META (иногда помеченную как ALT или |
| 7 | дальнейшем вместо того, чтобы каждый раз писать META или CONTROL, мы будем | 7 | EDIT). В дальнейшем, вместо того, чтобы каждый раз писать META или CONTROL, |
| 8 | использовать следующее сокращение: | 8 | мы будем использовать следующие сокращения: |
| 9 | 9 | ||
| 10 | C-<chr> следует удерживать клавишу CONTROL, пока набирается символ <chr>. | 10 | C-<chr> -- следует удерживать клавишу CONTROL, пока набирается символ |
| 11 | Так, C-f должно означать: нажать клавишу CONTROL и f. | 11 | <chr>. Так, C-f должно означать: нажать клавишу CONTROL и f. |
| 12 | M-<chr> следует удерживать клавишу META, пока набирается символ <chr>. Если | 12 | M-<chr> -- следует удерживать клавишу META, пока набирается символ |
| 13 | нет клавиши META, ALT или EDIT, то нажмите <ESC>, отпустите ее, | 13 | <chr>. Если нет клавиши META, ALT или EDIT, то нажмите <ESC>, |
| 14 | а потом наберите символ <chr>. | 14 | отпустите ее, а потом наберите символ <chr>. |
| 15 | 15 | ||
| 16 | Важное замечание: для завершения сеанса Emacs, наберите C-x C-c. (Два | 16 | Важное замечание: для завершения сеанса Emacs, наберите C-x C-c (два |
| 17 | символа). Символы ">>" с левой стороны указывают, что вам нужно делать, | 17 | символа). Символы ">>" с левой стороны указывают, что вам нужно делать, |
| 18 | чтобы применить команду. Например: | 18 | чтобы применить команду. Например: |
| 19 | <<Середина страницы оставлена пустой для учебных целей. Текст продолжается ниже>> | 19 | <<Пустые строки вокруг вставлены командой help-with-tutorial>> |
| 20 | >> Теперь нажмите C-v (Просмотр следующего экрана) для перемещения на | 20 | [Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже] |
| 21 | следующий экран. (Выполните это, удерживая клавишу CONTROL нажимая v). | 21 | >> Теперь нажмите C-v (просмотр следующего экрана) для перемещения на |
| 22 | Теперь вы должны это сделать еще раз, когда закончите читать экран. | 22 | следующий экран. (выполните эту команду удерживая клавишу CONTROL и |
| 23 | 23 | нажимая v). Теперь вы должны это сделать еще раз, когда закончите читать | |
| 24 | Обратите внимание на то, что, пока вы движетесь с экрана на экран, | 24 | экран. |
| 25 | перекрываются две строчки; это обеспечивает некоторую непрерывность, так | 25 | |
| 26 | что вы можете продолжить читать текст. | 26 | Обратите внимание на то, что, при переходе с экрана на экран перекрываются |
| 27 | 27 | две строчки -- это обеспечивает некоторую непрерывность восприятия, так что | |
| 28 | Первое, что вам необходимо знать -- как передвигаться по тексту из одного | 28 | вы можете продолжать читать текст не теряя нити повествования. |
| 29 | места в другое. Вы уже знаете, как переместиться вперед один экран, | 29 | |
| 30 | используя ключ C-v. Для перемещения назад на один экран, нажмите M-v | 30 | Первое, что вам необходимо знать -- это то, как передвигаться по тексту из |
| 31 | (удерживайте клавишу META и наберите v, или нажмите <ESC>v, если у вас нет | 31 | одного места в другое. Вы уже знаете, как переместиться вперед на один |
| 32 | клавишы META, EDIT, или ALT). | 32 | экран, используя сочетание клавиш C-v. Для перемещения назад на один экран, |
| 33 | 33 | нажмите M-v (удерживайте клавишу META и наберите v, или нажмите <ESC> и | |
| 34 | >> попробуйте набрать M-v и потом C-v, несколько раз. | 34 | затем v, а если у вас нет клавиши META, EDIT или ALT). |
| 35 | 35 | ||
| 36 | 36 | >> попробуйте набрать M-v, а затем C-v, несколько раз. | |
| 37 | * КРАТКАЯ СВОДКА | 37 | |
| 38 | ---------------- | 38 | * КРАТКИЙ ПЕРЕЧЕНЬ КОМАНД |
| 39 | ------------------------- | ||
| 39 | 40 | ||
| 40 | Для просмотра используются следующие команды: | 41 | Для просмотра используются следующие команды: |
| 41 | 42 | ||
| 42 | C-v Перейти на один экран вперед | 43 | C-v Перейти на один экран вперед |
| 43 | M-v Перейти на один экран назад | 44 | M-v Перейти на один экран назад |
| 44 | C-l Очистить экран и отобразить все заново, разместив | 45 | C-l Очистить экран и отобразить все заново, разместив текст, находящийся |
| 45 | текст, находящийся возле курсора, в центре экрана. | 46 | возле курсора, в центре экрана. (это CONTROL-L, а не CONTROL-1.) |
| 46 | (Это CONTROL-L, а не CONTROL-1.) | ||
| 47 | 47 | ||
| 48 | >> Найдите курсор, и запомните текст возле него. Потом нажмите C-l. | 48 | >> Найдите курсор, и запомните текст возле него. Потом нажмите C-l. |
| 49 | Найдите курсор снова и убедитесь, что возле него все тот же текст. | 49 | Найдите курсор снова и убедитесь, что возле него все тот же текст. |
| 50 | 50 | ||
| 51 | Вы также можете использовать клавиши PageUp и PageDn для перемещения между | ||
| 52 | экранами (если они есть на вашем терминале), но вы сможете работать более | ||
| 53 | эффективно, если будете использовать сочетания C-v и M-v. | ||
| 54 | |||
| 51 | 55 | ||
| 52 | * БАЗОВЫЕ КОМАНДЫ УПРАВЛЕНИЯ КУРСОРОМ | 56 | * БАЗОВЫЕ КОМАНДЫ УПРАВЛЕНИЯ КУРСОРОМ |
| 53 | ------------------------------------- | 57 | ------------------------------------- |
| 54 | 58 | ||
| 55 | Движение от экрана к экрану удобно, но как переместиться в определенное | 59 | Движение от экрана к экрану удобно, но как переместиться в определенное |
| 56 | место текста на экране? | 60 | место в тексте на экране? |
| 57 | 61 | ||
| 58 | Есть несколько способов сделать это. Основной способ -- использовать команды | 62 | Есть несколько способов выполнения этой операции. Вы можете использовать |
| 59 | C-p, C-b, C-f и C-n. Каждая из этих команд передвигает курсор на одну | 63 | клавиши управления курсором (стрелки), но более эффективным будет сохранение |
| 60 | строку или колонку на экране в определенном направлении. Эта таблица | 64 | рук в их стандартной позиции и использовать команды C-p, C-b, C-f и C-n. Эти |
| 61 | показывает четыре команды и четыре направления их движения: | 65 | команды эквивалентны четырем клавишам перемещения курсора, как это показано |
| 66 | на схеме: | ||
| 62 | 67 | ||
| 63 | Предыдущая строка, C-p | 68 | Предыдущая строка, C-p |
| 64 | : | 69 | : |
| @@ -68,13 +73,14 @@ C-p, C-b, C-f и C-n. Каждая из этих команд передвигает курсор на одну | |||
| 68 | : | 73 | : |
| 69 | Следующая строка, C-n | 74 | Следующая строка, C-n |
| 70 | 75 | ||
| 71 | >> Переместите курсор на строку рядом с диаграммой, используя C-n или C-p. | 76 | >> Переместите курсор на строку рядом с диаграммой, используя сочетания |
| 72 | Потом, нажмите C-l и посмотрите как диаграмма разместится в центре | 77 | клавиш C-n или C-p. Потом, нажмите C-l и посмотрите как диаграмма |
| 73 | экрана. | 78 | переместится в центр экрана. |
| 74 | 79 | ||
| 75 | Вам будет несложно запомнить эти команды по буквам -- B-назад (backward) и | 80 | Вам будет несложно запомнить эти команды по первым буквам соответствующих |
| 76 | F-вперед (forward). Это основные команды позиционирования курсора, которыми | 81 | слов -- B-назад (backward) и F-вперед (forward). Это основные команды |
| 77 | Вы будете пользоваться ВСЕГДА, так что будет неплохо их выучить. | 82 | позиционирования курсора, которыми Вы будете пользоваться ВСЕГДА, так что |
| 83 | будет неплохо их выучить. | ||
| 78 | 84 | ||
| 79 | >> Нажмите несколько раз C-n, чтобы опустить курсор вниз на эту строку. | 85 | >> Нажмите несколько раз C-n, чтобы опустить курсор вниз на эту строку. |
| 80 | 86 | ||
| @@ -94,8 +100,9 @@ character), который отделяет ее от следующей строки. Последняя строка в | |||
| 94 | C-f может перемещать курсор через символ перевода строки так же, как и C-b. | 100 | C-f может перемещать курсор через символ перевода строки так же, как и C-b. |
| 95 | 101 | ||
| 96 | >> Попробуйте несколько раз применить C-b так, чтобы Вы увидели, как | 102 | >> Попробуйте несколько раз применить C-b так, чтобы Вы увидели, как |
| 97 | движется курсор. Далее используйте C-f чтобы вернуться на конец | 103 | движется курсор. Далее используйте сочетание клавиш C-f чтобы вернуться |
| 98 | строки. Нажмите C-f еще раз, чтобы перейти к началу следующей строки. | 104 | на конец строки. Нажмите C-f еще раз, чтобы перейти к началу следующей |
| 105 | строки. | ||
| 99 | 106 | ||
| 100 | Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся | 107 | Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся |
| 101 | за экраном, сдвигается внутрь экрана. Это называется "прокрутка | 108 | за экраном, сдвигается внутрь экрана. Это называется "прокрутка |
| @@ -103,7 +110,7 @@ C-f может перемещать курсор через символ перевода строки так же, как и C-b. | |||
| 103 | текста без перемещения его за пределы экрана. | 110 | текста без перемещения его за пределы экрана. |
| 104 | 111 | ||
| 105 | >> Попробуйте переместить курсор за нижнюю границу экрана, используя C-n, и | 112 | >> Попробуйте переместить курсор за нижнюю границу экрана, используя C-n, и |
| 106 | посмотрите, что изменится. | 113 | посмотрите, что произойдет. |
| 107 | 114 | ||
| 108 | Если посимвольное перемещение слишком медленно, Вы можете двигаться по | 115 | Если посимвольное перемещение слишком медленно, Вы можете двигаться по |
| 109 | словам. M-f (META-f) перемещает вперед на слово, а M-b назад на слово. | 116 | словам. M-f (META-f) перемещает вперед на слово, а M-b назад на слово. |
| @@ -128,8 +135,8 @@ Control-символы работают с основными единицами, независимо от того, что Вы | |||
| 128 | перемещает курсор в начало и конец строки, а M-a и M-e перемещает курсор в | 135 | перемещает курсор в начало и конец строки, а M-a и M-e перемещает курсор в |
| 129 | начало и конец предложения. | 136 | начало и конец предложения. |
| 130 | 137 | ||
| 131 | >> Попробуйте нажать пару раз C-a, и потом пару раз C-e. Попробуйте пару | 138 | >> Попробуйте нажать пару раз C-a, а потом пару раз C-e. Попробуйте пару раз |
| 132 | раз нажать M-a, после этого пару раз нажать M-e. | 139 | нажать M-a, после этого пару раз нажать M-e. |
| 133 | 140 | ||
| 134 | Посмотрите, что повтор C-a ничего не изменяет, а повтор M-a продолжает | 141 | Посмотрите, что повтор C-a ничего не изменяет, а повтор M-a продолжает |
| 135 | движение курсора к следующему предложению. Это не сохраняет аналогию, но | 142 | движение курсора к следующему предложению. Это не сохраняет аналогию, но |
| @@ -139,7 +146,7 @@ Control-символы работают с основными единицами, независимо от того, что Вы | |||
| 139 | курсор показывает место на экране в какой точке будет расположен вводимый | 146 | курсор показывает место на экране в какой точке будет расположен вводимый |
| 140 | текст. | 147 | текст. |
| 141 | 148 | ||
| 142 | Здесь собраны простые команды перемещения курсора, включая движение по | 149 | Здесь собраны основные команды перемещения курсора, включая движение по |
| 143 | словам и предложениям: | 150 | словам и предложениям: |
| 144 | 151 | ||
| 145 | C-f На символ вперед | 152 | C-f На символ вперед |
| @@ -189,10 +196,10 @@ CTRL-символы удобнее и быстрее, чем кнопки со стрелочками (потому что вы не | |||
| 189 | повторений для команды, нажмите C-u, потом число повторений, и укажите | 196 | повторений для команды, нажмите C-u, потом число повторений, и укажите |
| 190 | команду. Если у вас есть клавиша META (или EDIT или ALT), то цифровой | 197 | команду. Если у вас есть клавиша META (или EDIT или ALT), то цифровой |
| 191 | аргумент можно задать другим способом: наберите цифры, удерживая клавишу | 198 | аргумент можно задать другим способом: наберите цифры, удерживая клавишу |
| 192 | META. Мы рекомендуем освоить использование C-u, поскольку эта | 199 | META. Мы рекомендуем привыкнуть к использованию C-u, поскольку это сочетание |
| 193 | последовательность клавиш работает на любом терминале. Числовой аргумент | 200 | клавиш работает на любом терминале. Числовой аргумент также называется |
| 194 | также называется "префиксным аргументом", поскольку вы набираете аргумент до | 201 | "префиксным аргументом", поскольку вы задаете аргумент до выполнения |
| 195 | выполнения команды. | 202 | команды. |
| 196 | 203 | ||
| 197 | Например, C-u 8 C-f переместит курсор на восемь символов вперед. | 204 | Например, C-u 8 C-f переместит курсор на восемь символов вперед. |
| 198 | 205 | ||
| @@ -201,9 +208,9 @@ META. Мы рекомендуем освоить использование C-u, поскольку эта | |||
| 201 | 208 | ||
| 202 | Многие команды используют числовой аргумент как счетчик повторений, но | 209 | Многие команды используют числовой аргумент как счетчик повторений, но |
| 203 | некоторые команды используют его другим способом. Некоторые команды (но ни | 210 | некоторые команды используют его другим способом. Некоторые команды (но ни |
| 204 | одна из них не была еще изучена здесь) используют его как флаг -- наличие | 211 | одна из них не была еще описана в данном тексте) используют его как флаг -- |
| 205 | префиксного аргумента вне зависимости от его значения, изменяет поведение | 212 | наличие префиксного аргумента вне зависимости от его значения, изменяет |
| 206 | команды. | 213 | поведение команды. |
| 207 | 214 | ||
| 208 | Другим видом исключений являются ключи C-v и M-v. При получении числового | 215 | Другим видом исключений являются ключи C-v и M-v. При получении числового |
| 209 | аргумента, они прокручивают экран вверх или вниз на указанное число строк, | 216 | аргумента, они прокручивают экран вверх или вниз на указанное число строк, |
| @@ -215,9 +222,10 @@ META. Мы рекомендуем освоить использование C-u, поскольку эта | |||
| 215 | Эта команда должна прокрутить экран на 8 строк вверх. Если вы хотите | 222 | Эта команда должна прокрутить экран на 8 строк вверх. Если вы хотите |
| 216 | прокрутить его вниз, можете задать аргумент для M-v. | 223 | прокрутить его вниз, можете задать аргумент для M-v. |
| 217 | 224 | ||
| 218 | Если вы используете оконную систему, такую как X11 или MS-Windows, должна | 225 | Если вы используете оконную систему, такую как X11 или MS-Windows, то должна |
| 219 | быть прямоугольная область, именуемая полосой прокрутки с левой стороны окна | 226 | быть видна прямоугольная область, именуемая полосой прокрутки, которая видна |
| 220 | Emacs. Вы можете прокручивать текст, используя манипулятор мышь. | 227 | с левой стороны окна Emacs. Вы можете прокручивать текст, используя |
| 228 | манипулятор мышь. | ||
| 221 | 229 | ||
| 222 | >> Попробуйте перемещать мышь при нажатой средней кнопке мыши. Вы увидите | 230 | >> Попробуйте перемещать мышь при нажатой средней кнопке мыши. Вы увидите |
| 223 | как текст прокручивается вверх и вниз. | 231 | как текст прокручивается вверх и вниз. |
| @@ -226,163 +234,174 @@ Emacs. Вы можете прокручивать текст, используя манипулятор мышь. | |||
| 226 | * УПРАВЛЕНИЕ КУРСОРОМ НА X-ТЕРМИНАЛЕ | 234 | * УПРАВЛЕНИЕ КУРСОРОМ НА X-ТЕРМИНАЛЕ |
| 227 | ------------------------------------ | 235 | ------------------------------------ |
| 228 | 236 | ||
| 229 | Если у вас X-терминал, то вам, вероятно, для управления курсором покажется | 237 | Если у вас X-терминал, то для управления курсором, вам вероятно покажется |
| 230 | более легким использовать клавиши на цифровой клавиатуре (справа). Стрелки | 238 | более легким использование клавиш курсора на цифровой клавиатуре |
| 231 | влево, вправо, вверх и вниз передвигают курсор в ожидаемом направлении; они | 239 | (справа). Стрелки влево, вправо, вверх и вниз передвигают курсор в |
| 232 | работают точно также как C-b, C-f, C-p и C-n, но легче в наборе и | 240 | соответствующем направлении -- они работают точно также как C-b, C-f, C-p и |
| 233 | запоминании. Вы так же можете использовать сочетания C-left и C-right для | 241 | C-n, но легче в наборе и запоминании. Вы так же можете использовать |
| 234 | передвижения по словам, и C-up и C-down для передвижения по блокам (т.е. | 242 | сочетания C-left и C-right для передвижения по словам, и C-up и C-down для |
| 235 | параграфам, если вы редактируете текст). Если у вас есть кнопки помеченные | 243 | передвижения по блокам (т.е. параграфам, если вы редактируете текст). Если |
| 236 | HOME (или BEGIN) или END, то они будут перемещать курсор в начало и конец | 244 | у вас есть кнопки помеченные HOME (или BEGIN) и/или END, то они будут |
| 237 | строки, соответственно, и C-home и C-end будут перемещать в начало и конец | 245 | перемещать курсор в начало и конец строки, а C-home и C-end будут перемещать |
| 238 | файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, то вы можете их | 246 | в начало и конец файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, |
| 239 | использовать для перемещения вверх и вниз поэкранно, также как и M-v и C-v. | 247 | то вы можете использовать их для перемещения вверх и вниз постранично, |
| 240 | 248 | аналогично использованию M-v и C-v. | |
| 241 | Все эти команды могут получать цифровой аргумент, как рассказано выше. Вы | 249 | |
| 242 | можете использовать ускоренный способ ввода этого аргумента: просто нажмите | 250 | Все эти команды могут использовать цифровой аргумент, так, как об этом |
| 243 | CONTROL или META и наберите число. Например, для перемещения на 12 слов | 251 | рассказано выше. Вы можете использовать ускоренный способ ввода этого |
| 244 | вправо, наберите C-1 C-2 C-right. Запомните что так очень легко набирать, | 252 | аргумента: просто нажмите CONTROL или META и наберите число. Например, для |
| 245 | потому что вы не отпускаете кнопку CONTROL между нажатиями. | 253 | перемещения на 12 слов вправо, наберите C-1 C-2 C-right. Запомните что так |
| 254 | очень легко набирать, потому что вы не отпускаете кнопку CONTROL между | ||
| 255 | нажатиями. | ||
| 246 | 256 | ||
| 247 | 257 | ||
| 248 | * ЕСЛИ EMACS ЗАВИС | 258 | * ЕСЛИ EMACS ЗАВИС |
| 249 | ------------------ | 259 | ------------------ |
| 250 | 260 | ||
| 251 | Если Emacs перестал реагировать на ваши команды, вы можете остановить это, | 261 | Если Emacs перестал реагировать на ваши команды, то вы можете избежать этого |
| 252 | просто нажав C-g. Вы можете использовать C-g, чтобы остановить выполнение | 262 | просто нажав C-g. Вы можете использовать C-g, чтобы остановить выполнение |
| 253 | команды, которая слишком долго выполняется. | 263 | команд, которые слишком долго выполняются. |
| 254 | 264 | ||
| 255 | Вы также можете использовать C-g для отмены цифрового аргумента или начатой | 265 | Вы также можете использовать C-g для отмены набранного цифрового аргумента |
| 256 | команды, которую вы не хотите завершать. | 266 | или команды, которая начала выполняться, но которую вы не хотите завершать. |
| 257 | 267 | ||
| 258 | >> Наберите C-u 100 для задания аргумента 100, потом нажмите C-g. Теперь | 268 | >> Наберите C-u 100 для задания аргумента 100, потом нажмите C-g. Теперь |
| 259 | нажмите C-f. Курсор должен переместиться всего на один символ, потому что | 269 | нажмите C-f. Курсор должен переместиться всего на один символ, потому что |
| 260 | вы отменили аргумент нажатием C-g. | 270 | вы отменили аргумент нажатием C-g. |
| 261 | 271 | ||
| 262 | Если вы нажали <ESC> по ошибке, вы так же можете избавиться от этого | 272 | Если вы нажали <ESC> по ошибке, то вы так же можете использовать C-g чтобы |
| 263 | нажатием C-g. | 273 | избежать воздействия данной команды. |
| 264 | 274 | ||
| 265 | 275 | ||
| 266 | * ЗАПРЕЩЕННЫЕ КОМАНДЫ (DISABLED COMMANDS) | 276 | * ЗАПРЕЩЕННЫЕ КОМАНДЫ (DISABLED COMMANDS) |
| 267 | ----------------------------------------- | 277 | ----------------------------------------- |
| 268 | 278 | ||
| 269 | Некоторые команды Emacs "запрещены", поскольку начинающие пользователи могут | 279 | Некоторые команды Emacs "запрещены", поскольку начинающие пользователи могут |
| 270 | их случайно использовать. | 280 | случайно использовать их для совершения опасных действий. |
| 271 | 281 | ||
| 272 | Если вы набрали одну из запрещенных команд, то Emacs покажет сообщение | 282 | Если вы набрали одну из запрещенных команд, то Emacs покажет сообщение |
| 273 | говорящее о том, какая команда вызывается, и спросит, хотите ли вы | 283 | говорящее о том, какая команда вызывается, и запросит у вас, хотите ли вы |
| 274 | продолжить и выполнить эту команду. | 284 | продолжать работу и выполнять данную команду. |
| 275 | 285 | ||
| 276 | Если вы действительно хотите попробовать выполнить команду, то нажмите | 286 | Если вы действительно попробовать выполнить команду, то нажмите клавишу |
| 277 | клавишу Пробел (Space) в ответ на этот вопрос. Обычно, если вы не хотите | 287 | <SPC> (пробел) в ответ на заданный вопрос. Обычно, если вы не хотите |
| 278 | выполнять запрещенную команду, то отвечайте на вопрос нажатием клавиши "n". | 288 | выполнять запрещенную команду, то ответьте на вопрос нажатием клавиши "n". |
| 279 | 289 | ||
| 280 | >> Нажмите `C-x C-l' (выключенная команда), потом ответьте "n" на вопрос. | 290 | >> Нажмите `C-x C-l' (выключенная команда), а потом ответьте "n" на заданный |
| 291 | вопрос. | ||
| 281 | 292 | ||
| 282 | 293 | ||
| 283 | * ОКНА | 294 | * ОКНА |
| 284 | ------ | 295 | ------ |
| 285 | 296 | ||
| 286 | Emacs может иметь несколько окон, каждое из которых отображает свой текст. | 297 | Emacs может отображать информацию в нескольких окнах, каждое из которых |
| 287 | Мы объясним позже как использовать множество окон. Прямо сейчас мы хотим | 298 | отображает свой текст. Позже мы объясним как работать с несколькими окнами. |
| 288 | объяснить как избавляться от лишних окон и вернуться к редактированию в | 299 | Прямо сейчас мы хотим объяснить вам как избавляться от лишних окон и |
| 289 | одном окне. Выполнить это очень просто: | 300 | вернуться к редактированию в одном окне. Это очень просто сделать: |
| 290 | 301 | ||
| 291 | C-x 1 Одно окно. (закрыть все другие окна). | 302 | C-x 1 Одно окно. (закрыть все другие окна). |
| 292 | 303 | ||
| 293 | Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит | 304 | Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит |
| 294 | курсор, так, чтобы оно заняло весь экран. При этом будут удалены все | 305 | курсор, так, чтобы оно заняло весь экран. При этом будут удалены все |
| 295 | остальные окна. | 306 | остальные окна. |
| 296 | 307 | ||
| 297 | >> Переместите курсор на эту строку и нажмите C-u 0 C-l. | 308 | >> Переместите курсор на эту строку и нажмите C-u 0 C-l. |
| 298 | 309 | ||
| 299 | >> Наберите CONTROL-h k CONTROL-f. | 310 | >> Наберите CONTROL-h k CONTROL-f. |
| 300 | Посмотрите, как текущее окно сожмется, когда новое | 311 | Посмотрите, как текущее окно сожмется, когда новое появится и отобразит |
| 301 | появится и отобразит документацию на команду CONTROL-f. | 312 | документацию на сочетание клавиш CONTROL-f. |
| 302 | 313 | ||
| 303 | >> Наберите C-x 1 и посмотрите, как окно с документацией исчезнет. | 314 | >> Наберите C-x 1 и посмотрите, как окно с документацией исчезнет. |
| 304 | 315 | ||
| 305 | Эта команда отличается от других команд, которые вы изучили, тем, что она | 316 | Эта команда отличается от других команд, которые вы изучили, тем, что она |
| 306 | состоит из двух символов. Она начинается со знака CONTROL-x. Есть целый | 317 | состоит из двух символов. Она начинается со знака CONTROL-x. Есть целый |
| 307 | набор команд, которые начинаются с CONTROL-x; многие из них работают с | 318 | набор команд, которые начинаются с CONTROL-x; многие из них работают с |
| 308 | окнами, буферами, файлами и аналогичными вещами. Эти команды имеют длину 2, | 319 | окнами, буферами, файлами и аналогичными вещами. Эти команды состоят из |
| 309 | 3 или 4 знака. | 320 | двух, трех или четырех знаков. |
| 310 | 321 | ||
| 311 | 322 | ||
| 312 | * ВСТАВКА И УДАЛЕНИЕ | 323 | * ВСТАВКА И УДАЛЕНИЕ |
| 313 | -------------------- | 324 | -------------------- |
| 314 | 325 | ||
| 315 | Если вы хотите вставить текст, просто наберите текст. Символы, которые вы | 326 | Если вы хотите вставить текст, то просто набирайте его. Символы, которые вы |
| 316 | можете видеть, такие как A, 7, *, и пр. понимаются Emacs'ом как текст и | 327 | можете видеть, такие как A, 7, *, и пр. понимаются Emacs'ом как текст и |
| 317 | вставляются немедленно. Нажмите <Return> (кнопка перевода каретки) для | 328 | вставляются немедленно. Нажмите <Return> (кнопка перевода каретки) чтобы |
| 318 | вставки символа новой строки. | 329 | вставить символ новой строки. |
| 330 | |||
| 331 | Вы можете удалить набранный символ нажимая клавишу <Delback>. <Delback> -- | ||
| 332 | это клавиша на клавиатуре, которую вы используете и вне Emacs для удаления | ||
| 333 | последнего набранного символа. Обычно, это большая клавиша, расположенная | ||
| 334 | на несколько строк выше клавиши <Return>; обычно она помечена как "Delete", | ||
| 335 | "Del" или "Backspace". | ||
| 319 | 336 | ||
| 320 | Вы можете удалить последний набранный символ нажимая клавишу | 337 | Если большая клавиша помечена как "Backspace", то это то, что вам нужно |
| 321 | <Delete>. Клавиша <Delete> на клавиатуре может быть обозначена как "Del". В | 338 | использовать тогда, когда вы будете читать про <Delback>. У вас также может |
| 322 | некоторых случаях, клавиша "Backspace" работает как <Delete>, но не всегда! | 339 | быть клавиша, помеченная как "Delete", но она имеет другую функцию, отличную |
| 340 | от <Delback>. | ||
| 323 | 341 | ||
| 324 | В основном, <Delete> удаляет символ непосредственно перед текущей позицией | 342 | В основном, <Delback> удаляет символ непосредственно перед текущей позицией |
| 325 | курсора. | 343 | курсора. |
| 326 | 344 | ||
| 327 | >> Попробуйте выполнить это сейчас -- наберите несколько символов, потом | 345 | >> Попробуйте выполнить это сейчас -- наберите несколько символов, а затем |
| 328 | удалите их нажимая <Delete> несколько раз. Не волнуйтесь об изменениях | 346 | удалите их нажимая <Delback>. Не волнуйтесь об изменениях этого файла -- |
| 329 | этого файла; вы не изменяете главный учебник. Это ваша личная копия | 347 | вы не изменяете главный учебник; это ваша личная копия учебника. |
| 330 | учебника. | ||
| 331 | 348 | ||
| 332 | Когда строка текста становится слишком большой для строки экрана, строка | 349 | Когда строка текста становится слишком большой для строки экрана, то она |
| 333 | текста "продолжается" на следующей строке экрана. Символ "обратное деление" | 350 | "продолжается" на следующей строке экрана. Символ "обратный слэш" ("\") (или |
| 334 | ("\") (или если вы используете оконную систему, то маленькая изогнутая | 351 | если вы используете оконную систему, то это будет значок в виде маленькой |
| 335 | стрелка) с правой границы показывает, что строка будет продолжена. | 352 | изогнутой стрелки) с правой границы показывает, что строка будет |
| 353 | продолжается с предыдущей строки. | ||
| 336 | 354 | ||
| 337 | >> Вводите текст, пока не достигните правой границы, и продолжайте | 355 | >> Вводите текст, пока он не достигнет правой границы, и продолжайте вставку |
| 338 | вставку. Вы увидите, как появится символ продолжения строки. | 356 | символов. Вы увидите, как появится символ продолжения строки. |
| 339 | 357 | ||
| 340 | >> Используйте <Delete> для удаления текста, пока строка не поместится в | 358 | >> Используйте <Delback> для удаления текста, до тех пор, пока строка не |
| 341 | экран снова. Символ продолжения строки исчезнет. | 359 | поместится в экран снова. Символ продолжения строки исчезнет с экрана. |
| 342 | 360 | ||
| 343 | Можно удалять символ новой строки точно так же, как и любой другой. Удаление | 361 | Символ новой строки можно удалять точно так же, как и любой другой символ. |
| 344 | символа новой строки между двумя строками приведет к склейке их в одну. Если | 362 | Удаление символа новой строки между двумя строками приведет к их склейке в |
| 345 | полученная строка слишком длинная, чтобы вместиться в экран, она будет | 363 | одну. Если полученная строка будет слишком длинной, чтобы вместиться в |
| 346 | отображена как продолженная строка. | 364 | экран, то она будет отображена как строка с продолжением, как это было |
| 365 | описано выше. | ||
| 347 | 366 | ||
| 348 | >> Переместите курсор в начало строки и нажмите <Delete>. Это соединит | 367 | >> Переместите курсор в начало строки и нажмите <Delback>. Это соединит |
| 349 | текущую строку с предыдущей. | 368 | текущую строку с предыдущей. |
| 350 | 369 | ||
| 351 | >> Нажмите <Return> для вставки символа новой строки снова, вместо | 370 | >> Нажмите <Return> для вставки нового символа строки, вместо удаленного |
| 352 | удаленного вами. | 371 | вами. |
| 353 | 372 | ||
| 354 | Помните, что многие команды Emacs могут получать счетчик повторения; простые | 373 | Помните, что многие команды Emacs могут получать счетчик повторения; простые |
| 355 | символы не являются исключением. Набирайте простые символы, вставляя их по | 374 | символы не являются исключением. Вы можете вставлять по несколько символов, |
| 356 | несколько за один раз. | 375 | используя счетчики повторений. |
| 357 | 376 | ||
| 358 | >> Попробуйте выполнить это -- наберите C-u 8 * для вставки ********. | 377 | >> Попробуйте проверить это -- наберите C-u 8 * для вставки ********. |
| 359 | 378 | ||
| 360 | Теперь вы научились основному способу набрать что-нибудь в Emacs и | 379 | Теперь вы научились основам набора текста в Emacs и исправления ошибок. Вы |
| 361 | исправлять ошибки. Также вы можете удалять слова и строки. Здесь собраны | 380 | также можете удалять слова и строки. Здесь приведен список операций |
| 362 | операции удаления: | 381 | удаления: |
| 363 | 382 | ||
| 364 | <Delete> удалить символ перед курсором | 383 | <Delback> удалить символ перед курсором |
| 365 | C-d удалить символ следующий за (над) курсором | 384 | C-d удалить символ следующий за (над) курсором |
| 366 | 385 | ||
| 367 | M-<Delete> Убить строку непосредственно перед курсором | 386 | M-<Delback> Убить строку непосредственно перед курсором |
| 368 | M-d Убить слово следующее за курсором | 387 | M-d Убить слово следующее за курсором |
| 369 | 388 | ||
| 370 | C-k Убить все от курсора до конца строки | 389 | C-k Убить все от курсора до конца строки |
| 371 | M-k Убить все до конца предложения | 390 | M-k Убить все до конца предложения |
| 372 | 391 | ||
| 373 | Заметьте, что <Delete> и C-d против M-<Delete> и M-d расширяют параллель, | 392 | Заметьте, что <Delback> и C-d, вместе с M-<Delback> и M-d расширяют |
| 374 | начатую C-f и M-f (да, <Delete> это не реальный управляющий символ, но не | 393 | параллель, начатую C-f и M-f (да, <Delback> -- это не настоящий управляющий |
| 375 | нужно волноваться об этом). C-k и M-k, как и C-e и M-e, проводят параллель | 394 | символ, но не нужно об этом волноваться). C-k и M-k, как и C-e и M-e, |
| 376 | между строками и предложениями. | 395 | проводят параллель между строками и предложениями. |
| 377 | 396 | ||
| 378 | Вы можете удалить любую часть буфера одним единообразным | 397 | Вы можете удалить любую часть буфера одним методом. Переместитесь на один |
| 379 | методом. Переместитесь на один из концов региона и наберите type C-@ или | 398 | из концов выбранной области и нажмите C-@ или C-<SPC> (одно из этих |
| 380 | C-SPC (одну из них). (SPC обозначает клавишу пробела). Переместитесь на | 399 | сочетаний). Здесь <SPC> обозначает клавишу пробела. Переместитесь на другой |
| 381 | другой конец региона и наберите C-w. Эта операция удалит весь текст между | 400 | конец области и нажмите C-w. Эта операция удалит весь текст между двумя |
| 382 | двумя указанными позициями. | 401 | указанными позициями. |
| 383 | 402 | ||
| 384 | >> Переместите курсор к букве В в начало предыдущего параграфа. | 403 | >> Переместите курсор к букве В в начале предыдущего параграфа. |
| 385 | >> Наберите C-SPC. Emacs должен отобразить в нижней части экрана сообщение | 404 | >> Наберите C-<SPC>. Emacs должен отобразить в нижней части экрана сообщение |
| 386 | "Mark set". | 405 | "Mark set". |
| 387 | >> Переместите курсор к букве о в слове "концов", на второй строке | 406 | >> Переместите курсор к букве о в слове "концов", на второй строке |
| 388 | параграфа. | 407 | параграфа. |
| @@ -393,411 +412,450 @@ C-SPC (одну из них). (SPC обозначает клавишу пробела). Переместитесь на | |||
| 393 | что "убитый" текст может быть заново вставлен, в то время как "удаленные" | 412 | что "убитый" текст может быть заново вставлен, в то время как "удаленные" |
| 394 | части не могут быть вставлены. Вставка "убитого" текста называется | 413 | части не могут быть вставлены. Вставка "убитого" текста называется |
| 395 | "восстановление (yanking)". В общем, команды, которые могут убирать большие | 414 | "восстановление (yanking)". В общем, команды, которые могут убирать большие |
| 396 | части текста, убивают этот текст (они так настраиваются так, что вы можете | 415 | части текста, убивают этот текст (они настраиваются так, что вы можете |
| 397 | восстановить текст), в то время как команды, которые убирают только один | 416 | восстановить текст), в то время как команды, которые убирают только один |
| 398 | символ, или только пустые строки и пробельные символы, выполняют удаление | 417 | символ, или удаляют только пустые строки и пробельные символы, выполняют |
| 399 | (так что вы не можете восстановить текст). | 418 | операцию удаления (так что вы не можете восстановить текст). |
| 400 | 419 | ||
| 401 | >> Переместите курсор на начало непустой строки. Теперь нажмите C-k, чтобы | 420 | >> Переместите курсор на начало не пустой строки. Теперь нажмите C-k, чтобы |
| 402 | убить текст в этой строке. | 421 | убить текст в этой строке. |
| 403 | 422 | ||
| 404 | >> Нажмите C-k еще раз. Вы видите, что это убьет символ новой строки | 423 | >> Нажмите C-k еще раз. Вы видите, что это действие убьет символ новой |
| 405 | следующий за этой строкой. | 424 | строки, который следует за этой строкой. |
| 406 | 425 | ||
| 407 | Заметьте, что первое C-k убивает содержимое строки, а второе C-k убивает | 426 | Заметьте, что первое выполнение C-k убивает содержимое строки, а второй |
| 408 | саму строку и поднимает другие строки вверх. C-k обрабатывает числовой | 427 | вызов C-k убивает саму строку и поднимает другие строки вверх. C-k |
| 409 | аргумент специальным образом: убивает столько строк _И_ их содержимое. Это не | 428 | обрабатывает числовой аргумент специальным образом -- убивает заданное |
| 410 | просто повторение. C-u 2 C-k удалит две строи и завершающие их символы новой | 429 | количество строк _И_ их содержимое. Это не просто повторение команды. C-u 2 |
| 411 | строки; ввод C-k два раза не сделает этого. | 430 | C-k удалит две строки, а также завершающие их символы новой строки; |
| 431 | двухразовое выполнение C-k не сделает этого. | ||
| 412 | 432 | ||
| 413 | Возврат назад убитого текста называется "восстановление (yanking)". (Думайте | 433 | Возврат убитого ранее текста называется "восстановление (yanking)". (Думайте |
| 414 | об этом, как о восстановлении или помещении назад, некоторого взятого | 434 | об этом, как о восстановлении или помещении назад, некоторого взятого |
| 415 | текста). Вы можете восстановить удаленный текст в том же месте, или в любой | 435 | текста). Вы можете восстановить удаленный текст в месте удаления, или в |
| 416 | другой точке буфера, или даже в другом файле. Вы можете восстановить текст | 436 | любой другой точке редактируемого текста, или даже в другом файле. Вы |
| 417 | несколько раз и получить много копий. | 437 | можете восстановить текст несколько раз и получить несколько копий данного |
| 438 | текста. | ||
| 418 | 439 | ||
| 419 | Командой для восстановления текста является C-y. Она восстанавливает | 440 | Для восстановления убитого текста используется сочетание клавиш C-y. Данная |
| 420 | последний убитый текст в место расположение курсора. | 441 | команда восстанавливает последний убитый текст в точке расположения курсора. |
| 421 | 442 | ||
| 422 | >> Попробуйте выполнить это; наберите C-y, чтобы вернуть текст назад. | 443 | >> Попробуйте выполнить эту команду -- наберите C-y, чтобы вернуть текст |
| 444 | назад. | ||
| 423 | 445 | ||
| 424 | Помните, если вы использовали несколько команд C-k в строке, все убитые | 446 | Помните, что если вы использовали несколько команд C-k в одной строке, то |
| 425 | строки будут сохранены вместе так, что C-y восстановит их вместе. | 447 | все убитые строки будут сохранены вместе, так, что C-y также восстановит их |
| 448 | вместе. | ||
| 426 | 449 | ||
| 427 | >> Попробуйте выполнить это сейчас, нажмите C-k несколько раз. | 450 | >> Попробуйте выполнить это сейчас -- нажмите C-k несколько раз. |
| 428 | 451 | ||
| 429 | Теперь вернем этот убитый текст: | 452 | Теперь вернем убитый текст: |
| 430 | 453 | ||
| 431 | >> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова | 454 | >> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова |
| 432 | нажмите C-y. Сейчас вы видите как можно скопировать некоторый текст. | 455 | нажмите C-y. Сейчас вы видите как можно скопировать некоторый текст. |
| 433 | 456 | ||
| 434 | Что делать, если есть некоторый текст, который вы хотите вернуть назад и | 457 | Что делать, если есть некоторый текст, который вы хотите вернуть назад, а |
| 435 | потом убить что-то еще? C-y вернет не более чем последний удаленный текст. | 458 | потом убить что-то еще? Одно нажатие C-y вернет только последний удаленный |
| 436 | Но предыдущий текст не будет потерян. Вы сможете его вернуть назад, используя | 459 | текст. Но предыдущий текст не будет потерян -- вы сможете его вернуть |
| 437 | команду M-y. После того, как вы вернули последний удаленный текст, нажмите | 460 | назад, используя команду M-y. После того, как вы вернули последний |
| 438 | M-y, и замените этот восстановленный текст тем, который был убит ранее. | 461 | удаленный текст, нажмите M-y, и замените этот восстановленный текст тем, |
| 439 | Нажатие M-y снова и снова будет возвращать ранее убитый текст. Когда вы | 462 | который был убит ранее. Нажимая M-y снова и снова, вы будете возвращать |
| 440 | достигните искомого текста, вам не нужно делать ничего более чтобы сохранить | 463 | ранее убитые части текста. Когда вы достигните искомого текста, то вам не |
| 441 | его. Просто продолжайте редактирование, оставив восстановленный текст там, | 464 | нужно делать ничего чтобы сохранить его. Просто продолжайте работать, |
| 442 | где он есть. | 465 | оставив восстановленный текст там, где он есть. |
| 443 | 466 | ||
| 444 | Нажимая M-y достаточное число раз, вы можете вернуться в начальную точку | 467 | Нажимая M-y достаточное число раз, вы можете вернуться в начальную точку |
| 445 | (наиболее раннее удаление). | 468 | (наиболее раннее удаление). |
| 446 | 469 | ||
| 447 | >> Убейте строку, переместите курсор вокруг этой точки, потом удалите еще | 470 | >> Убейте строку, переместите курсор, и удалите еще одну строку. Затем |
| 448 | одну строку. Затем используйте C-y для восстановления второй убитой | 471 | используйте C-y для восстановления второй убитой строки, а затем нажмите |
| 449 | строки. Затем используйте M-y, и она будет заменена первой убитой | 472 | M-y, и она будет заменена первой убитой строкой. Нажмите M-y еще |
| 450 | строкой. Нажмите M-y еще несколько раз, чтобы увидеть полученный | 473 | несколько раз, чтобы увидеть полученный результат. Продолжайте выполнять |
| 451 | результат. Продолжайте делать это, пока вторая убитая строка не вернется, | 474 | эту команду до тех пор, пока вторая убитая строка не будет восстановлена |
| 452 | и еще чуть-чуть. Если вам хочется, то вы можете задавать для M-y | 475 | снова. Если вам хочется, то вы можете задавать положительные и |
| 453 | положительные и отрицательные аргументы. | 476 | отрицательные аргументы для команды M-y. |
| 454 | 477 | ||
| 455 | 478 | ||
| 456 | * ОТМЕНА (UNDO) | 479 | * ОТМЕНА (UNDO) |
| 457 | --------------- | 480 | --------------- |
| 458 | 481 | ||
| 459 | Если вы сделали изменения в тексте, и решили, что ошиблись, можете | 482 | Если вы сделали изменения в тексте, и решили, что ошиблись, то вы можете |
| 460 | отменить изменения командой "отмена", C-x u. | 483 | отменить изменения с помощью команды "отмена", которая привязана к сочетанию |
| 484 | клавиш C-x u. | ||
| 461 | 485 | ||
| 462 | Обычно, C-x u отменяет изменения, сделанные одной командой; если повторить | 486 | Обычно, C-x u отменяет изменения, сделанные одной командой; если повторить |
| 463 | C-x u несколько раз подряд, каждый раз будет отменяться еще одна команда. | 487 | C-x u несколько раз подряд, то каждый раз будет отменяться еще одна команда. |
| 464 | 488 | ||
| 465 | Но есть два исключения: команды, которые не изменяют текст, не учитываются | 489 | Но есть два исключения -- команды не изменяющие текст, не учитываются (сюда |
| 466 | (это включает команды перемещения курсора и прокрутки), и самовставляющиеся | 490 | включается команды перемещения курсора и прокрутки), и команды вставки |
| 467 | (self-inserting) символы обрабатываются группами до 20. (Это уменьшает | 491 | символов обрабатываются группами до 20 символов. (Это уменьшает число |
| 468 | число C-x u которые вы можете набрать для отмены ввода текста). | 492 | нажатий C-x u которые вам нужно будет набрать для отмены ввода текста). |
| 469 | 493 | ||
| 470 | >> Убейте эту строку используя C-k, затем наберите C-x u и она должна | 494 | >> Убейте эту строку с помощью C-k, а затем наберите C-x u и строка должна |
| 471 | вернуться назад. | 495 | вернуться назад. |
| 472 | 496 | ||
| 473 | C-_ альтернативная команда отмены; она работает также как и C-x u, но легче | 497 | C-_ -- это еще команда отмены; она работает точно также как и C-x u, но |
| 474 | в использовании несколько раз подряд. Неудобное положение C-_ на некоторых | 498 | легче в использовании, если вам нужно выполнить ее несколько раз |
| 475 | клавиатурах делает неочевидным способ ее набора. Поэтому мы предлагаем | 499 | подряд. Неудобное положение C-_ на некоторых клавиатурах делает не очевидным |
| 476 | использовать C-x u. На некоторых терминалах, вы можете набирать C-_, нажимая | 500 | способ ее набора. Поэтому мы предлагаем использовать C-x u. На некоторых |
| 477 | / и удерживая клавишу CONTROL. | 501 | терминалах, вы можете набирать C-_, нажимая / и удерживая клавишу CONTROL. |
| 478 | 502 | ||
| 479 | Числовой аргумент для C-_ или C-x u работает как счетчик повторения. | 503 | Числовой аргумент для C-_ или C-x u используется как счетчик повторений. |
| 480 | 504 | ||
| 481 | Вы можете отменить удаление текста точно так же, как отмену убития | 505 | Вы можете отменить удаление текста точно так же, как и отмену убития текста. |
| 482 | текста. Отличие между убийством и удалением чего-либо заключается в том, что | 506 | Отличие между убийством и удалением чего-либо заключается в том, что вы |
| 483 | вы можете восстановить убитый текст с помощью C-y; но это не делает различий | 507 | можете восстановить убитый текст с помощью команды C-y; но для команды |
| 484 | для отмены. | 508 | отмены нет никакой разницы между этими операциями. |
| 485 | 509 | ||
| 486 | * ФАЙЛЫ | 510 | * ФАЙЛЫ |
| 487 | ------- | 511 | ------- |
| 488 | 512 | ||
| 489 | Чтобы созданный текст можно было редактировать позже, вы должны его | 513 | Чтобы созданный текст можно было редактировать позже, вы должны поместить |
| 490 | поместить в файл. Иначе, он исчезнет, когда вы выйдите из Emacs. Вы помещаете | 514 | его в файл. Иначе, он исчезнет, когда вы покинете Emacs. Вы помещаете ваш |
| 491 | ваш текст в файл, "открывая" файл. (Еще это называют "посетить" файл.) | 515 | текст в файл, "открывая" файл (Эту операцию также называют "посетить" файл). |
| 492 | 516 | ||
| 493 | Открыть файл означает посмотреть его содержимое, используя Emacs. Во многих | 517 | Открыть файл означает посмотреть его содержимое, с помощью Emacs. Во многих |
| 494 | случаях, это происходит, когда вы редактируете файл сами. Однако ваши | 518 | случаях, это происходит тогда, когда вы редактируете файл сами. Однако ваши |
| 495 | изменения, сделанные с использованием Emacs не будут зафиксированы, пока вы | 519 | изменения, сделанные с использованием Emacs не будут зафиксированы, пока вы |
| 496 | не сохраните файл. Так вы можете не оставлять полуизмененный файл в системе, | 520 | не сохраните файл. Вы можете не оставлять частично измененный файл в |
| 497 | если вы не хотите этого. Даже когда вы сохраняете файл, Emacs оставляет | 521 | системе, если вы не хотите его сохранять. Даже когда вы сохраняете файл, то |
| 498 | оригинальный файл с измененным именем, чтобы вы могли позже решить, что ваши | 522 | Emacs оставляет оригинальный файл, но с другим именем, так что вы позже |
| 499 | изменения были ошибочны. | 523 | можете отменить ваши изменения, вернувшись к предыдущей версии файла. |
| 500 | 524 | ||
| 501 | Если вы посмотрите в нижнюю часть экрана, то вы увидите строку, которая | 525 | Если вы посмотрите в нижнюю часть экрана, то вы увидите строку, которая |
| 502 | начинается с тире и начинается с "--:-- TUTORIAL.ru" или чего-то | 526 | начинается с тире и ее начало выглядит примерно так "--:-- TUTORIAL.ru". Эта |
| 503 | подобного. Эта часть экрана всегда показывает имя файла, который вы | 527 | часть экрана всегда показывает имя открытого вами файла. Итак, сейчас вы |
| 504 | открыли. Итак, сейчас вы открыли файл с именем "TUTORIAL.ru", который | 528 | открыли файл с именем "TUTORIAL.ru", который является вашей персональной |
| 505 | является вашей персональной копией учебника Emacs. Для любого файла, который | 529 | копией учебника Emacs. Для любого файла, который вы откроете, его имя будет |
| 506 | вы откроете, имя этого файла появится в этом месте. | 530 | показано в этой строке. |
| 507 | 531 | ||
| 508 | Одной из специальных вещей, которую вам нужно знать о команде открытия файла, | 532 | Одной из вещей, которые вам нужно знать о команде открытия файла -- это то, |
| 509 | это то, что вы должны ввести имя файла, который нужно читать. Мы это | 533 | что вы должны ввести имя файла, который нужно открыть. Такие команды мы |
| 510 | называем командой, "читающей аргумент с терминала" (в этом случае, аргументом | 534 | называем командами "читающими аргумент с терминала" (в нашем случае, |
| 511 | является имя файла). После ввода команды | 535 | аргументом является имя файла). После ввода команды |
| 512 | 536 | ||
| 513 | C-x C-f Открыть (найти) файл | 537 | C-x C-f Открыть (найти) файл |
| 514 | 538 | ||
| 515 | Emacs попросит вас ввести имя файла. Имя файла вы наберете в нижней строке | 539 | Emacs попросит вас ввести имя файла. Имя файла набирается в нижней строке |
| 516 | экрана. Нижняя строка называется мини-буфер, он используется для короткого | 540 | экрана. Нижняя строка называется мини-буфером -- он специально используется |
| 517 | ввода. Вы можете использовать обычные команды редактирования Emacs для | 541 | для ввода небольшого количества данных. Для редактирования имени файла вы |
| 518 | редактирования имени. | 542 | можете использовать обычные команды редактирования Emacs. |
| 519 | 543 | ||
| 520 | Когда вы вводите имя файла (или любую информацию в мини-буфер), вы можете | 544 | Когда вы вводите имя файла (или любую другую информацию в мини-буфере), вы |
| 521 | отменить команду нажав C-g. | 545 | можете отменить текущую команду нажав C-g. |
| 522 | 546 | ||
| 523 | >> Нажмите C-x C-f, затем нажмите C-g. Это отменит мини-буфер, и команду | 547 | >> Нажмите C-x C-f, а затем нажмите C-g. Это действие отменит ввод данных в |
| 524 | C-x C-f, которая использовала мини-буфер. В итоге, вы не открыли ни одного | 548 | мини-буфере, и заодно и команду C-x C-f, которая использовала мини-буфер |
| 525 | файла. | 549 | для получения аргумента. В итоге, вы не открыли ни одного файла. |
| 526 | 550 | ||
| 527 | Когда вы завершите ввод имени файла, нажмите <Return>. Далее сработает | 551 | Когда вы завершите ввод имени файла, нажмите <Return>. Далее сработает |
| 528 | команда C-x C-f, которая откроет указанный вами файл. Мини-буфер исчезнет, | 552 | команда C-x C-f, которая откроет указанный вами файл. Мини-буфер исчезнет, |
| 529 | когда команда C-x C-f завершится. | 553 | когда команда C-x C-f завершится. |
| 530 | 554 | ||
| 531 | И мгновением позже содержимое файла появится на экране, и вы сможете его | 555 | А мгновением позже содержимое файла появится на экране, и вы сможете его |
| 532 | редактировать. Когда вы закончите редактирование, чтобы сохранить изменения, | 556 | редактировать. Когда вы закончите редактирование, то для того, чтобы |
| 533 | наберите команду | 557 | сохранить изменения, наберите команду |
| 534 | 558 | ||
| 535 | C-x C-s Сохранить файл | 559 | C-x C-s Сохранить файл |
| 536 | 560 | ||
| 537 | Это скопирует текст из Emacs в файл. В первый раз, когда вы это сделаете, | 561 | Эта команда скопирует текст из Emacs в файл. В первый раз, когда вы это |
| 538 | Emacs переименует оригинальный файл в файл с новым именем, чтобы он не | 562 | сделаете, Emacs переименует оригинальный файл в файл с новым именем, чтобы |
| 539 | потерялся. Новое имя получается добавлением символа "~" к оригинальному | 563 | не потерялось предыдущее содержимое файла. Новое имя получается добавлением |
| 540 | имени файла. | 564 | символа "~" к оригинальному имени файла. |
| 541 | 565 | ||
| 542 | Когда сохранение завершится, Emacs напечатает имя записанного файла. Вы | 566 | Когда сохранение завершится, Emacs отобразит имя записанного файла. Вы |
| 543 | должны сохранять изменения достаточно часто, чтобы не потерять много | 567 | должны сохранять изменения достаточно часто, чтобы не потерять внесенные |
| 544 | работы, если вдруг система зависнет. | 568 | изменения, если система вдруг зависнет. |
| 545 | 569 | ||
| 546 | >> Наберите C-x C-s, сохраните вашу копию учебника. В нижней строке экрана | 570 | >> Наберите C-x C-s, сохраните вашу копию учебника. В нижней строке экрана |
| 547 | должна появиться надпись "Wrote ...TUTORIAL.ru". | 571 | должна появиться надпись "Wrote ...TUTORIAL.ru". |
| 548 | 572 | ||
| 549 | ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заблокирует экран и вы не | 573 | ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заблокирует экран, так что вы |
| 550 | увидите последующего вывода Emacs`а. Это означает, что операционная система | 574 | не увидите последующего вывода Emacs`а. Такое поведение означает, что |
| 551 | имеет "особенность", именуемую "flow control", перехватывающую C-s и не | 575 | операционная система имеет "особенность", именуемую "flow control", |
| 552 | пропускающую этот символ к Emacs`у. Для разблокировки экрана, нажмите C-q. | 576 | перехватывающую сочетание C-s и не пропускающую этот символ к Emacs`у. Для |
| 553 | Смотрите раздел "Spontaneous Entry to Incremental Search" руководства Emacs, | 577 | снятия блокировки экрана, нажмите C-q. Обратитесь к разделу "Spontaneous |
| 554 | чтобы узнать, как бороться с этой "особенностью". | 578 | Entry to Incremental Search" руководства Emacs, чтобы узнать о том, как |
| 579 | бороться с этой "особенностью". | ||
| 555 | 580 | ||
| 556 | Вы можете открыть существующий файл для просмотра или редактирования. Вы | 581 | Вы можете открыть существующий файл для просмотра или редактирования. Вы |
| 557 | также можете найти файл, которого еще не существует. Другими словами -- | 582 | также можете открыть файл, которого еще не существует. Другими словами -- |
| 558 | создать файл с помощью Emacs: найти файл, создать новый, и начать вводить | 583 | создать файл с помощью Emacs можно так: найти файл, создать новый, и начать |
| 559 | текст. Когда вы скажите "сохрани" файл, Emacs создаст реальный файл с | 584 | вводить текст. Когда вы выполните команду сохранения файла, то Emacs создаст |
| 560 | набранным вами текстом. Далее, как вы поняли, вы будете редактировать уже | 585 | настоящий файл с набранным вами текстом. Далее, как вы поняли, вы будете |
| 561 | существующий файл. | 586 | редактировать уже существующий файл. |
| 562 | 587 | ||
| 563 | 588 | ||
| 564 | * БУФЕРА | 589 | * БУФЕРА |
| 565 | -------- | 590 | -------- |
| 566 | 591 | ||
| 567 | Если вы находите второй файл с использованием C-x C-f, то первый остается | 592 | Если вы открываете второй файл используя команду C-x C-f, то первый файл |
| 568 | внутри Emacs. Вы можете переключиться назад, найдя его снова C-x C-f. Это | 593 | остается внутри Emacs. Вы можете переключиться назад, открыв его снова с |
| 569 | способ загрузить несколько файлов в Emacs. | 594 | помощью C-x C-f. Таким образом вы можете загрузить несколько файлов в Emacs. |
| 570 | 595 | ||
| 571 | >> Создайте файл с именем "foo", набирая C-x C-f foo <Return>. | 596 | >> Создайте файл с именем "foo", набрав C-x C-f foo <Return>. |
| 572 | Вставьте какой-нибудь текст, отредактируйте его, и сохраните "foo", | 597 | Вставьте какой-нибудь текст, измените его, и сохраните файл "foo", |
| 573 | набрав C-x C-s. | 598 | набрав C-x C-s. |
| 574 | Наконец, наберите C-x C-f TUTORIAL.ru <Return>, | 599 | Наконец, наберите C-x C-f TUTORIAL.ru <Return>, для того, чтобы вернуться |
| 575 | чтобы вернуться назад к учебнику. | 600 | назад к учебнику. |
| 576 | 601 | ||
| 577 | Emacs сохраняет текст каждого файла внутри в объекте, называемом "буфер" | 602 | Emacs хранит текст каждого файла внутри в объекте, называемом "буфер" |
| 578 | ("buffer"). Открытие файла создает новый буфер внутри Emacs. Чтобы увидеть | 603 | ("buffer"). Открытие файла создает новый буфер внутри Emacs. Чтобы увидеть |
| 579 | список буферов, созданных в текущем Emacs, наберите | 604 | список буферов, созданных в текущем сеансе Emacs, наберите |
| 580 | 605 | ||
| 581 | C-x C-b Список буферов | 606 | C-x C-b Список буферов |
| 582 | 607 | ||
| 583 | >> Попробуйте C-x C-b сейчас. | 608 | >> Попробуйте выполнить C-x C-b прямо сейчас. |
| 584 | 609 | ||
| 585 | Мы видим, что каждый буфер имеет имя, и может иметь имя файла, содержимое | 610 | Мы видим, что каждый буфер имеет имя, и может иметь связанное с ним имя |
| 586 | которого в нем хранится. Некоторые буфера не соответствуют файлам. Например, | 611 | файла, содержимое которого в хранится в данном буфере. ЛЮБОЙ текст, который |
| 587 | буфер, названный "*Buffer List*", не содержит никакого файла. В этом буфере | 612 | вы видите в окне Emacs, всегда является частью какого-либо буфера. |
| 588 | содержится список буферов, который был создан командой C-x C-b. ЛЮБОЙ текст, | ||
| 589 | который вы видите в окне Emacs, всегда является частью какого-либо буфера. | ||
| 590 | 613 | ||
| 591 | >> Наберите C-x 1, чтобы избавиться от списка буферов. | 614 | >> Наберите C-x 1, чтобы избавиться от списка буферов. |
| 592 | 615 | ||
| 593 | Если вы изменяете текст одного файла, потом открываете другой, то первый | 616 | Когда у вас есть несколько буферов, только один из них является "текущим" в |
| 594 | остается несохраненным. Изменения останутся внутри Emacs, в файловом | 617 | конкретный момент времени. Это тот буфер, который вы изменяете. Если вы |
| 595 | буфере. Создание или редактирование следующего файлового буфера не | 618 | хотите изменить данные в другом буфере, то вы должны "переключиться" в него. |
| 619 | Если вы хотите переключиться в буфер, связанный с файлом, то вы можете | ||
| 620 | открыть этот файл снова с помощью C-x C-f. Но есть более простой способ -- | ||
| 621 | использовать команду C-x b. В качестве аргумента для данной команды вы | ||
| 622 | должны указать имя буфера. | ||
| 623 | |||
| 624 | >> Наберите C-x b foo <Return> для переключения в буфер "foo", который | ||
| 625 | хранит текст файла "foo". Затем наберите C-x b TUTORIAL <Return> для | ||
| 626 | возвращения в буфер с данным учебником. | ||
| 627 | |||
| 628 | Чаще всего имя буфера совпадает с именем файла (только без имени каталогов). | ||
| 629 | Однако это не всегда является правдой. Список буферов, который вы создаете | ||
| 630 | с помощью команды C-x C-b всегда показывает вам имена всех буферов. | ||
| 631 | |||
| 632 | ЛЮБОЙ текст, который вы видите в окне Emacs, всегда является частью | ||
| 633 | какого-либо буфера. Некоторые буфера не соответствуют файлам. Например, | ||
| 634 | буфер с именем "*Buffer List*" не связан ни с каким файлом. Это буфер, | ||
| 635 | который содержит список буферов, который вы создали используя C-x C-b. | ||
| 636 | Буфер с именем "*Messages*" также не связан ни с каким файлом; он содержит | ||
| 637 | сообщения, которые отображаются в самой нижней строке окна Emacs в течении | ||
| 638 | текущей сессии работы с редактором. | ||
| 639 | |||
| 640 | >> Наберите C-x b *Messages* <Return> для просмотра содержимого буфера | ||
| 641 | сообщений. Затем наберите C-x b TUTORIAL <Return> для возврата в данный | ||
| 642 | учебник. | ||
| 643 | |||
| 644 | Если вы изменяете текст одного файла, а затем открываете другой, то текст в | ||
| 645 | первом буфере остается не сохраненным. Изменения останутся внутри Emacs, в | ||
| 646 | буфере, связанном с файлом. Создание или редактирование следующего буфера не | ||
| 596 | сказывается на первом буфере. Это очень удобно, но имейте в виду, что вам | 647 | сказывается на первом буфере. Это очень удобно, но имейте в виду, что вам |
| 597 | нужно иметь удобный способ сохранить первый файловый буфер. Было бы | 648 | нужно иметь способ сохранить первый файловый буфер. Было бы неприятно |
| 598 | неприятно каждый раз возвращаться назад с помощью C-x C-f и потом | 649 | каждый раз возвращаться назад используя C-x C-f и потом использовать C-x C-s |
| 599 | использовать C-x C-s. Поэтому существует команда | 650 | для сохранения данных. Поэтому существует команда |
| 600 | 651 | ||
| 601 | C-x s Сохранить некоторые буфера. (Save some buffers) | 652 | C-x s Сохранить некоторые буфера. (Save some buffers) |
| 602 | 653 | ||
| 603 | C-x s спрашивает вас о каждом буфере, который содержит несохраненные | 654 | C-x s запрашивает у вас подтверждение о сохранении для каждого буфера, |
| 604 | изменения. Для каждого такого буфера у вас спрашивают: сохранять или не | 655 | который содержит не сохраненные изменения. Для каждого такого буфера у вас |
| 605 | сохранять изменения. | 656 | запросят: сохранять или не сохранять изменения. |
| 606 | 657 | ||
| 607 | >> Вставьте строку текста, потом наберите C-x s. | 658 | >> Вставьте строку текста, потом наберите C-x s. |
| 608 | У вас должны спросить, сохранять ли буфер с именем TUTORIAL.ru. | 659 | У вас должны спросить, сохранять ли буфер с именем TUTORIAL.ru. Ответьте |
| 609 | Ответьте на вопрос да, набрав "y". | 660 | на вопрос утвердительно, набрав "y". |
| 610 | 661 | ||
| 611 | 662 | ||
| 612 | * РАСШИРЕННЫЙ НАБОР КОМАНД | 663 | * РАСШИРЕНИЕ НАБОРА КОМАНД |
| 613 | -------------------------- | 664 | -------------------------- |
| 614 | 665 | ||
| 615 | У Emacs очень много команд, они могут быть назначены на все control- и meta- | 666 | У Emacs очень много команд, и они не могут быть назначены на все control- и |
| 616 | символы. Emacs обходит это, используя X-команду (eXtend). Есть две | 667 | meta- символы. Emacs обходит это, используя X-команду (eXtend). Есть две |
| 617 | возможности: | 668 | возможности: |
| 618 | 669 | ||
| 619 | C-x Символ расширения (Character eXtend). | 670 | C-x Расширение с помощью ввода префикса. За ним следуем один символ. |
| 620 | За ним следуем один символ. | 671 | M-x Расширение набора команд с помощью их наименования. За ним следует имя |
| 621 | M-x Именованные расширенные команды (Named command eXtend). | 672 | команды. |
| 622 | За ним следует имя команды. | ||
| 623 | 673 | ||
| 624 | Это команды, которые обычно используются, но вы уже выучили некоторые из | 674 | Это полезные команды, но они используются менее часто, чем те команды, |
| 625 | них. Вы уже видели: команды работы с файлами C-x C-f -- открыть, и C-x C-s | 675 | которые мы изучили. Вы уже видели некоторые из них: команды работы с файлами |
| 626 | -- сохранить. Другой пример - завершения работы с Emacs -- это команда C-x | 676 | C-x C-f -- открыть файл, и C-x C-s -- сохранить файл. Другой пример -- |
| 627 | C-c. (Не волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c | 677 | команда завершения работы с Emacs -- C-x C-c. (Не волнуйтесь о том, что вы |
| 628 | предлагает сохранить изменения перед тем, как удалит буфер Emacs.) | 678 | потеряете сделанные изменения, C-x C-c предлагает сохранить изменения перед |
| 679 | удалением буфера Emacs). | ||
| 629 | 680 | ||
| 630 | C-z это команда *временного* выхода из Emacs -- вы можете вернуться в ту же | 681 | C-z -- это команда *временного* выхода из Emacs. Вы можете вернуться в ту же |
| 631 | сессию Emacs позже. | 682 | сессию Emacs позже. |
| 632 | 683 | ||
| 633 | На системах, которые допускают это, C-z "приостанавливают" ("suspends") | 684 | На системах, которые реализуют эту возможность, команда C-z |
| 634 | Emacs; возвращают в оболочку (shell), но не закрывают Emacs. В большинстве | 685 | "приостанавливает" ("suspends") Emacs; возвращает в командный процессор |
| 635 | оболочек вы можете продолжить работу в Emacs, используя команду `fg' или | 686 | (shell), но не закрывают Emacs. В большинстве командных процессоров вы |
| 636 | `%emacs'. | 687 | можете вернуться в Emacs, используя команду `fg' или `%emacs'. |
| 637 | 688 | ||
| 638 | В системах, не поддерживающих приостановку процессов, C-z создает новую | 689 | В системах, не поддерживающих приостановку процессов, C-z создает новый |
| 639 | оболочку (subshell), запущенную из-под Emacs, чтобы дать вам возможность | 690 | командный процессор (subshell), запущенный из-под Emacs, чтобы дать вам |
| 640 | выполнить другую программу, и потом вернуться в Emacs; это не настоящий | 691 | возможность выполнить другую программу, и затем вернуться в Emacs (это не |
| 641 | выход из Emacs. В этом случае, команда `exit' вернет вас в Emacs из | 692 | настоящий выход из Emacs). В таких система для возврата в Emacs вам нужно |
| 642 | оболочки. | 693 | использовать команду `exit'. |
| 643 | 694 | ||
| 644 | Используйте C-x C-c, если вы хотите выйти (log out) из системы. Это также | 695 | Чтобы покинуть Emacs используйте команду C-x C-c. Обычно это нужно тогда, |
| 645 | используется, чтобы выйти из Emacs, вызванного из почтовой программы, или другой | 696 | когда вы хотите закончить сеанс работы с компьютером. Это сочетание также |
| 646 | утилиты, которая может не знать, как справиться с приостановленным Emacs. | 697 | используется, чтобы выйти из Emacs, вызванного из почтовой программы, или |
| 647 | Обычно, если вы не выходите из системы, лучше приостановить Emacs, | 698 | другой утилиты, которая может не знать, как справиться с приостановленным |
| 648 | используя C-z вместо выхода их него. | 699 | Emacs. Обычно, если вы не собираетесь выходить из системы, то лучше |
| 649 | 700 | приостановить Emacs, используя C-z вместо того, чтобы покидать его совсем. | |
| 650 | Существует очень много C-x команд. Эти вы уже выучили: | 701 | |
| 651 | 702 | Существует очень много команд, использующих префикс C-x. Вы уже изучили | |
| 652 | C-x C-f Открыть файл. | 703 | следующие команды: |
| 653 | C-x C-s Сохранить файл. | 704 | |
| 654 | C-x C-b Список буферов. | 705 | C-x C-f Открыть файл |
| 655 | C-x C-c Выход из Emacs. | 706 | C-x C-s Сохранить файл |
| 656 | C-x 1 Удаляет все окна кроме одного. | 707 | C-x s Сохранить некоторые файлы |
| 657 | C-x u Отмена. | 708 | C-x C-b Список буферов |
| 658 | 709 | C-x b Переключиться в буфер | |
| 659 | Именованные расширенные команды используются гораздо реже, или используются | 710 | C-x C-c Выход из Emacs |
| 660 | только в определенных режимах. В качестве примера команда замена строки, | 711 | C-x 1 Удаляет все окна кроме одного |
| 661 | которая заменяет одну строку на другую во всем тексте. Когда вы наберете | 712 | C-x u Отмена |
| 662 | M-x, Emacs предложит вам ввести имя команды в нижней строке экрана; в нашем | 713 | |
| 663 | случае, "replace-string". Только наберите "repl s<TAB>", и Emacs дополнит | 714 | Именованные команды -- это команды, которые используются гораздо реже, или |
| 664 | имя. (<TAB> -- это клавиша табуляции, обычно находящаяся выше клавиш | 715 | используются только в определенных режимах. В качестве примера можно |
| 665 | CapsLock или Shift слева на клавиатуре). Завершите имя вводом <Return>. | 716 | привести команду замены строки, которая заменяет одну строку на другую во |
| 717 | всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя команды; | ||
| 718 | в нашем случае, это команда "replace-string". Наберите лишь "repl s<TAB>", | ||
| 719 | и Emacs дополнит имя. (<TAB> -- это клавиша табуляции, обычно находящаяся | ||
| 720 | выше клавиш CapsLock или Shift в левой части клавиатуры). Завершите имя | ||
| 721 | нажатием <Return>. | ||
| 666 | 722 | ||
| 667 | Команда замены строки (replace-string) требует два аргумента -- строку, | 723 | Команда замены строки (replace-string) требует два аргумента -- строку, |
| 668 | которая будет заменена, и строку, на которую нужно заменить. Вы должны | 724 | которая будет заменена, и строку, на которую нужно заменить. Вы должны |
| 669 | завершать каждый аргумент вводом <Return>. | 725 | завершать каждый аргумент вводом <Return>. |
| 670 | 726 | ||
| 671 | >> Переместите курсор на две пустые строки ниже этой. | 727 | >> Переместите курсор на две пустые строки ниже этой. |
| 672 | Наберите M-x repl s<Return>changed<Return>altered<Return>. | 728 | Наберите M-x repl s<Return>файл<Return>файлы<Return>. |
| 673 | 729 | ||
| 674 | Заметьте, как эта строка изменится: вы замените слово c-h-a-n-g-e-d | 730 | Заметьте, как эта строка изменится: вы замените слово ф-а-й-л |
| 675 | словом "altered" везде, где оно встретится, ниже позиции курсора. | 731 | словом "файлы" везде, где оно встретится, ниже позиции курсора. |
| 676 | 732 | ||
| 677 | 733 | ||
| 678 | * АВТОСОХРАНЕНИЕ | 734 | * АВТОМАТИЧЕСКОЕ СОХРАНЕНИЕ |
| 679 | ---------------- | 735 | --------------------------- |
| 680 | 736 | ||
| 681 | Когда вы изменяете файл, но не сохраняете его, то в случае краха системы | 737 | Когда вы изменяете файл, но не сохраняете его, то в случае краха системы вы |
| 682 | вы можете потерять информацию. Чтобы защитить вас от этого, Emacs | 738 | можете потерять информацию. Чтобы защитить вас от этого, Emacs периодически |
| 683 | периодически сохраняет каждый файл, который вы редактируете. Автосохранение | 739 | сохраняет каждый файл, который вы редактируете. Автоматическое сохранение |
| 684 | происходит в файл, имя которого такое же, но начинается и заканчивается | 740 | происходит в файл, имя которого такое же, но начинается и заканчивается |
| 685 | символом "#"; например, если ваш файл называется "hello.c", то | 741 | символом "#"; например, если ваш файл называется "hello.c", то автоматически |
| 686 | автосохраненный файл будет называться "#hello.c#". Когда вы сохраните файл | 742 | сохраненный файл будет называться "#hello.c#". Когда вы сохраните файл |
| 687 | обычным способом, Emacs удалит автосохраненный файл. | 743 | обычным способом, Emacs удалит автоматически сохраненный файл. |
| 688 | 744 | ||
| 689 | Если система зависла, вы можете восстановить ваши изменения, который были | 745 | Если система зависла, то вы можете восстановить ваши изменения, который были |
| 690 | сохранены автоматически, путем открытия нормального файла (файла, который вы | 746 | сохранены автоматически, путем открытия нужного файла (файла, который вы |
| 691 | редактировали, не автосохраненного), и затем набрав M-x recover-file<return>. | 747 | редактировали, не сохраненного), и затем набрав M-x recover-file<return>. |
| 692 | Когда у вас спросят подтверждение, наберите yes<return>, чтобы восстановить | 748 | Когда у вас запросят подтверждение, наберите yes<return>, чтобы |
| 693 | автосохраненные данные. | 749 | восстановить автоматически сохраненные данные. |
| 694 | 750 | ||
| 695 | 751 | ||
| 696 | * ОБЛАСТЬ ЭХО (ECHO AREA) | 752 | * ОБЛАСТЬ ЭХО (ECHO AREA) |
| 697 | ------------------------- | 753 | ------------------------- |
| 698 | 754 | ||
| 699 | Если Emacs видит, что вы медленно набираете команды, он показывает их вам | 755 | Если Emacs видит, что вы медленно набираете команды из нескольких символов, |
| 700 | внизу экрана, в области называемой "область эхо". Область эхо -- это самая | 756 | то он показывает их вам внизу экрана, в области называемой "область эхо". |
| 701 | нижняя строка экрана. | 757 | Область эхо -- это самая нижняя строка экрана. |
| 702 | 758 | ||
| 703 | 759 | ||
| 704 | * СТРОКА РЕЖИМА | 760 | * СТРОКА СОСТОЯНИЯ |
| 705 | --------------- | 761 | ------------------ |
| 706 | 762 | ||
| 707 | Строка сразу над областью эхо называется "строка состояния". | 763 | Строка сразу над областью эхо называется "строкой состояния". Выглядит эта |
| 708 | Выглядит эта строка примерно так: | 764 | строка примерно так: |
| 709 | 765 | ||
| 710 | --:** TUTORIAL.ru (Fundamental)--L670--58%---------------- | 766 | --:** TUTORIAL.ru 63% L749 (Fundamental)----------------------- |
| 711 | 767 | ||
| 712 | Эта строка сообщает полезную информацию о состоянии Emacs и текста, который | 768 | Эта строка сообщает полезную информацию о состоянии Emacs и текста, который |
| 713 | вы редактируете. | 769 | вы редактируете. |
| 714 | 770 | ||
| 715 | Вы уже знаете, что означает имя файла -- это файл, который вы открыли. -NN%-- | 771 | Вы уже знаете, что означает имя файла -- это файл, который вы открыли. NN% |
| 716 | показывает текущую позицию курсора в тексте; это означает что NN процентов | 772 | показывает текущую позицию курсора в тексте; это означает что NN процентов |
| 717 | текста выше, чем начало экрана. Если первая строка находится в первой строке | 773 | текста находятся выше, чем начало экрана. Если первая строка всего текста |
| 718 | экрана, вы там увидите --Top-- вместо --00%--. Если на экране отображается | 774 | находится в первой строке экрана, вы там увидите "Top" вместо "0%". Если на |
| 719 | последняя строка, то будет отображено --Bot--. Если текст настолько мал, что | 775 | экране отображается последняя строка, то будет отображено "Bot". Если текст |
| 720 | весь вмещается в экран, строка состояния сообщит --All--. | 776 | настолько мал, что весь вмещается в экран, то строка состояния сообщит |
| 721 | 777 | "All". | |
| 722 | Буква L и цифры показывают позицию другим способом: они показывают номер | 778 | |
| 723 | текущей строки с курсором. | 779 | Буква L и цифры показывают позицию другим способом -- они показывают номер |
| 724 | 780 | строки в которой находится курсор. | |
| 725 | Звездочки в начале строки означают, что вы изменяли текст. Как только вы | 781 | |
| 726 | открыли или сохранили файл, эта часть строки будет содержать не звездочки, а | 782 | Звездочки в начале строки означают, что вы изменяли текст. При открытии или |
| 727 | тире. | 783 | сохранении файла, эта часть строки будет содержать не звездочки, а тире. |
| 728 | 784 | ||
| 729 | Часть строки статуса внутри скобок сообщает вам режим редактирования, | 785 | Часть строки статуса внутри скобок сообщает вам о режиме редактирования, |
| 730 | которым вы пользуетесь. Стандартный режим -- Fundamental, его вы используете | 786 | которым вы сейчас используете. Стандартный режим -- Fundamental, он |
| 731 | и сейчас. Это пример "основного режима" ("major mode"). | 787 | используется и данном документе. Это пример "основного режима" ("major |
| 732 | 788 | mode"). | |
| 733 | Emacs имеет много различных основных режимов. Некоторые из режимов означают, | 789 | |
| 734 | что вы редактируете текст на различном языке и/или различные виды текста, | 790 | Emacs имеет много различных основных режимов. Некоторые из режимов |
| 735 | такие как Lisp-режим, Text-режим и пр. В любое время действует только один | 791 | используются для редактирования текста на различных языках и/или различных |
| 736 | основной режим, и его название вы можете найти в скобках, где сейчас | 792 | видов текста, такие как Lisp-режим, Text-режим и пр. В каждый момент |
| 737 | находится слово "Fundamental" (базовый). | 793 | времени действует только один основной режим, и его название вы можете найти |
| 738 | 794 | в скобках -- там, где сейчас находится слово "Fundamental" (базовый). | |
| 739 | Каждый основной режим имеет несколько отличительных команд. Например, команды | 795 | |
| 740 | создания комментария в программе, и поскольку в каждом языке программирования | 796 | Каждый основной режим заставляет некоторые команды вести себя немного по |
| 741 | комментарии записываются по-своему, каждый основной режим вставляет их | 797 | другому. Например, это команды создания комментариев в программе, и |
| 742 | по-разному. Каждый основной режим имеет именованную команду, которая включает | 798 | поскольку в каждом языке программирования комментарии записываются |
| 743 | его. Например, M-x fundamental-mode - команда, которая переключает в базовый | 799 | по-своему, то и каждый основной режим вставляет их по-разному. Каждый |
| 744 | (Fundamental) режим. | 800 | основной режим имеет именованную команду, которая включает его. Например, |
| 745 | 801 | M-x fundamental-mode -- это команда, которая включает базовый (Fundamental) | |
| 746 | Если вы редактируете русский текст, например как этот (конечно, не именно | 802 | режим. |
| 747 | этот, а TUTORIAL) файл, вы вероятно должны переключиться в Text-режим. | 803 | |
| 804 | Если вы редактируете текст на естественном языке, например, как этот файл, | ||
| 805 | то вы вероятно должны переключиться в Text-режим. | ||
| 748 | 806 | ||
| 749 | >> Наберите M-x text mode<Return>. | 807 | >> Наберите M-x text mode<Return>. |
| 750 | 808 | ||
| 751 | Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы | 809 | Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы |
| 752 | можете заметить, что M-f и M-b теперь различают апострофы как части слова. | 810 | можете заметить, что M-f и M-b теперь рассматривают апострофы как часть |
| 753 | Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали апострофы | 811 | слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали |
| 754 | как разделители слов. | 812 | апострофы как разделители слов. |
| 755 | 813 | ||
| 756 | Основной режим обычно делает небольшие изменения, такие как: большинство | 814 | Основной режим обычно делает небольшие изменения, такие как: большинство |
| 757 | команд делают "ту же работу" в каждом из режимов, но их работа отличается | 815 | команд делают "одну и ту же работу" в каждом из режимов, но их действие |
| 758 | какой-нибудь мелочью. | 816 | отличается какой-нибудь мелочью. |
| 759 | 817 | ||
| 760 | Для просмотра документации о вашем текущем основном режиме, нажмите C-h m. | 818 | Для просмотра документации о текущем основном режиме, нажмите C-h m. |
| 761 | 819 | ||
| 762 | >> Используйте C-u C-v один раз или более, чтобы расположить эту строку ближе | 820 | >> Используйте C-u C-v один раз или более, чтобы расположить эту строку |
| 763 | к верху экрана. | 821 | ближе к верху экрана. |
| 764 | >> Наберите C-h m, чтобы посмотреть отличия Text-режима от базового. | 822 | >> Наберите C-h m, чтобы посмотреть отличия Text-режима от базового. |
| 765 | >> Наберите C-x 1, чтобы убрать документацию с глаз долой :) | 823 | >> Наберите C-x 1, чтобы убрать документацию с глаз долой :) |
| 766 | 824 | ||
| 767 | Основной режим называется основным потому, что есть несколько дополнительных | 825 | Основной режим называется основным потому, что также существуют |
| 768 | (minor) режимов. Дополнительные режимы не являются альтернативами основным, | 826 | дополнительные (minor) режимы. Дополнительные режимы не являются |
| 769 | они только немного изменяют их поведение. Каждый дополнительный режим | 827 | альтернативами основным, они только немного изменяют их поведение. Каждый |
| 770 | включается/выключается независимо от других дополнительных режимов, и | 828 | дополнительный режим включается/выключается независимо от других |
| 771 | независимо от вашего основного режима. Вы можете использовать основной режим | 829 | дополнительных режимов, и независимо от вашего основного режима. Вы можете |
| 772 | без дополнительных, или с любой их комбинацией. | 830 | использовать основной режим без дополнительных, или с любой их комбинацией. |
| 773 | 831 | ||
| 774 | Один из дополнительных режимов очень полезен, особенно для редактирования | 832 | Один из дополнительных режимов очень полезен, особенно для редактирования |
| 775 | текста - это режим автозаполнения (Auto Fill mode). Когда этот режим | 833 | текста -- это режим автозаполнения (Auto Fill mode). Когда этот режим |
| 776 | включен, Emacs разрывает строки между словами автоматически, когда вы | 834 | включен, то Emacs разрывает строки между словами автоматически, в тех |
| 777 | вставляете текст и делаете строки слишком длинными. | 835 | случаях когда вы вставляете текст и делаете строки слишком длинными. |
| 778 | 836 | ||
| 779 | Вы можете включить режим автозаполнения, набрав M-x auto fill mode<Return>. | 837 | Вы можете включить режим автозаполнения, набрав M-x auto fill mode<Return>. |
| 780 | Когда этот режим включен, его можно выключить - M-x auto fill mode<Return>. | 838 | Когда этот режим включен, его можно выключить с помощью той же команды -- |
| 781 | Если режим включен -- команда его выключит, если выключен -- включит. Мы | 839 | M-x auto fill mode<Return>. Если режим включен, то такая команда его |
| 782 | называем это командой "переключения режима". | 840 | выключит, если выключен, то включит. Мы называем это командой "переключения |
| 841 | режима". | ||
| 783 | 842 | ||
| 784 | >> Наберите M-x auto fill mode<Return>. Затем вводите строку из слов | 843 | >> Наберите M-x auto fill mode<Return>. Затем вводите строку из слов "фыва " |
| 785 | "фыва " пока не увидите, как она разделится на две строки. Вы должны | 844 | пока не увидите, как она разделится на две строки. Вы должны помещать |
| 786 | помещать пробелы между словами, потому что режим автозаполнения разделяет | 845 | пробелы между словами, потому что режим автозаполнения разбивает строки |
| 787 | строки только по пробелам. | 846 | только по пробелам. |
| 788 | 847 | ||
| 789 | Граница обычно выставлена на 70-ти символах, но вы можете изменить ее | 848 | Граница разбиения обычно равна 70-ти символам, но вы можете изменить ее |
| 790 | используя команду C-x f. Вы должны задать границу в виде числового аргумента | 849 | используя команду C-x f. Вы должны задать границу в виде числового |
| 791 | для этой команды. | 850 | аргумента для этой команды. |
| 792 | 851 | ||
| 793 | >> Введите C-x f с аргументом 20. (C-u 2 0 C-x f). Затем введите | 852 | >> Введите C-x f с аргументом 20 (C-u 2 0 C-x f). Затем введите какой-нибудь |
| 794 | какой-нибудь текст, и посмотрите как Emacs заполняет строки по 20 | 853 | текст, и посмотрите как Emacs заполняет строки по 20 символов в каждой. |
| 795 | символов в каждой. Верните значение границы 70 назад, | 854 | Верните значение границы равное 70 назад, используя команду C-x f. |
| 796 | снова используя C-x f. | ||
| 797 | 855 | ||
| 798 | Если вы сделали изменения в середине параграфа, автозаполнение не перестроит | 856 | Если вы сделали изменения в середине параграфа, то автозаполнение не |
| 799 | текст для вас. Чтобы перестроить параграф, наберите M-q (META-q) в то время, | 857 | переформатирует текст автоматически. Чтобы переформатировать параграф, |
| 800 | когда курсор находится внутри параграфа. | 858 | наберите M-q (META-q) когда курсор находится внутри параграфа. |
| 801 | 859 | ||
| 802 | >> Переместите курсор в предыдущий параграф, и нажмите M-q. | 860 | >> Переместите курсор в предыдущий параграф, и нажмите M-q. |
| 803 | 861 | ||
| @@ -805,12 +863,12 @@ Emacs имеет много различных основных режимов. Некоторые из режимов означают, | |||
| 805 | * ПОИСК | 863 | * ПОИСК |
| 806 | ------- | 864 | ------- |
| 807 | 865 | ||
| 808 | Emacs умеет искать строки (непрерывные группы символов или слова) вперед | 866 | Emacs умеет искать строки (непрерывные группы символов или слова) вперед или |
| 809 | по тексту, или назад. Поиск строки - это команда перемещения курсора; она | 867 | назад по тексту. Поиск строки -- это команда перемещения курсора; она |
| 810 | перемещает курсор в следующую точку, где найдена искомая строка. | 868 | перемещает курсор в следующую точку, где найдена искомая строка. |
| 811 | 869 | ||
| 812 | Команда поиска Emacs отличаются от аналогичных команд большинства других | 870 | Команда поиска Emacs отличается от аналогичных команд большинства других |
| 813 | редакторов тем, что она инкрементальная. Это означает, что поиск происходит | 871 | редакторов тем, что она инкрементальная. Это означает, что поиск происходит |
| 814 | по мере, того как вы набираете искомую строку. | 872 | по мере, того как вы набираете искомую строку. |
| 815 | 873 | ||
| 816 | Команда, начинающая поиск вперед -- C-s, а C-r ищет назад. ПОДОЖДИТЕ! Не | 874 | Команда, начинающая поиск вперед -- C-s, а C-r ищет назад. ПОДОЖДИТЕ! Не |
| @@ -820,240 +878,261 @@ Emacs умеет искать строки (непрерывные группы символов или слова) вперед | |||
| 820 | Вам сообщается, что Emacs ждет ввода слова, которое вы хотите найти. | 878 | Вам сообщается, что Emacs ждет ввода слова, которое вы хотите найти. |
| 821 | <Return> завершает поиск. | 879 | <Return> завершает поиск. |
| 822 | 880 | ||
| 823 | >> Теперь нажмите C-s для начала поиска. Медленно, одну букву за один раз, | 881 | >> Теперь нажмите C-s для начала поиска. Медленно, по одной букве, набирайте |
| 824 | набирайте слово 'курсор', останавливаясь после каждой введенной буквы и | 882 | слово 'курсор', останавливаясь после каждой введенной буквы и замечая что |
| 825 | замечая что происходит с курсором. | 883 | происходит с курсором. |
| 826 | Сейчас вы нашли первое вхождение слова "курсор". | 884 | Сейчас вы нашли первое вхождение слова "курсор". |
| 827 | >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор". | 885 | >> Нажмите C-s снова, чтобы найти следующее вхождение слова "курсор". |
| 828 | >> Теперь нажмите <Delete> четыре раза и проследите за перемещениями курсора. | 886 | >> Теперь нажмите <Delback> четыре раза и проследите за перемещениями курсора. |
| 829 | >> Нажмите <Return> для завершения поиска. | 887 | >> Нажмите <Return> для завершения поиска. |
| 830 | 888 | ||
| 831 | Вы видели, что происходило? Emacs в режиме инкрементального поиска пытался | 889 | Вы заметили, что происходило? Emacs в режиме инкрементального поиска пытался |
| 832 | переходить к строкам, совпадающим с набираемой вами, подсвечивая их для вас. | 890 | переходить к строкам, совпадающим с набираемой вами строкой, подсвечивая их. |
| 833 | Чтобы перейти к следующему вхождения слова 'курсор' просто нажмите C-s | 891 | Чтобы перейти к следующему вхождения слова 'курсор' просто нажмите C-s |
| 834 | снова. Если больше нет вхождений, Emacs издаст звуковой сигнал, и сообщит, | 892 | снова. Если больше нет вхождений, то Emacs издаст звуковой сигнал, и |
| 835 | что ваш поиск не удался ("failing"), C-g также может отменить поиск. | 893 | сообщит, что ваш поиск не удался ("failing"), C-g также может отменить |
| 836 | 894 | поиск. | |
| 837 | ЗАМЕЧАНИЕ: На некоторых системах ввод C-s заморозит экран, и вы не увидите | 895 | |
| 838 | последующего вывода Emacs`а. Это означает, что операционная система имеет | 896 | ЗАМЕЧАНИЕ: На некоторых системах, ввод C-x C-s заблокирует экран, так что вы |
| 839 | "особенность", именуемую "flow control", перехватывающую C-s и не пропускающую | 897 | не увидите последующего вывода Emacs`а. Такое поведение означает, что |
| 840 | этот символ к Emacs`у. Для разморозки экрана, нажмите C-q. Смотрите раздел | 898 | операционная система имеет "особенность", именуемую "flow control", |
| 841 | "Spontaneous Entry to Incremental Search" руководства Emacs, чтобы узнать, | 899 | перехватывающую сочетание C-s и не пропускающую этот символ к Emacs`у. Для |
| 842 | как бороться с этой "особенностью". | 900 | снятия блокировки экрана, нажмите C-q. Обратитесь к разделу "Spontaneous |
| 843 | 901 | Entry to Incremental Search" руководства Emacs, чтобы узнать о том, как | |
| 844 | Если вы во время инкрементального поиска нажмете <Delete>, вы можете заметить, | 902 | бороться с этой "особенностью". |
| 845 | что последний символ в искомой строке удалился, и поиск вернулся к предыдущему | 903 | |
| 846 | найденному месту. Например, предположим, что вы набрали "к", поиск перейдет к | 904 | Если вы во время инкрементального поиска нажмете <Delback>, то вы заметите, |
| 847 | первому вхождению символа "к". Теперь, если вы наберете "у", курсор перейдет к | 905 | что последний символ в искомой строке удалился, и поиск вернулся к |
| 848 | первому вхождению "ку". Нажатие <Delete> удалит символ "у" из строки поиска, и | 906 | предыдущему найденному месту. Например, предположим, что вы набрали "к", |
| 849 | курсор вернется к первому вхождению "к". | 907 | поиск перейдет к первому вхождению символа "к". Теперь, если вы наберете |
| 908 | "у", курсор перейдет к первому вхождению "ку". Нажатие <Delback> удалит | ||
| 909 | символ "у" из строки поиска, и курсор вернется к первому вхождению "к". | ||
| 850 | 910 | ||
| 851 | Если вы во время поиска введете control- или meta- символ (за некоторыми | 911 | Если вы во время поиска введете control- или meta- символ (за некоторыми |
| 852 | исключениями -- символы вызывающие поиск, а именно C-s и C-r), поиск | 912 | исключениями, такими, как символы начинающие поиск, а именно C-s и C-r), |
| 853 | прекратится. | 913 | поиск прекратится. |
| 854 | 914 | ||
| 855 | C-s начинает поиск и смотрит на любые вхождения искомой строки ПОСЛЕ текущей | 915 | C-s начинает поиск и ищет любые вхождения искомой строки ПОСЛЕ текущей |
| 856 | позиции курсора. Если вы хотите найти что-то ранее в тексте, нажмите C-r. | 916 | позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите |
| 857 | Все, что мы говорили о C-s, применимо и к C-r, за исключением противоположного | 917 | C-r. Все, что мы говорили о C-s, применимо и к C-r, за исключением |
| 858 | направления поиска. | 918 | противоположного направления поиска. |
| 859 | 919 | ||
| 860 | 920 | ||
| 861 | * МНОЖЕСТВО ОКОН (MULTIPLE WINDOWS) | 921 | * МНОЖЕСТВО ОКОН (MULTIPLE WINDOWS) |
| 862 | ----------------------------------- | 922 | ----------------------------------- |
| 863 | 923 | ||
| 864 | Одна из приятных особенностей Emacs это то, что вы можете одновременно | 924 | Одна из приятных особенностей Emacs является то, что вы можете одновременно |
| 865 | отображать на экране более чем одно окно. | 925 | отображать на экране несколько окон. |
| 866 | 926 | ||
| 867 | >> Переместите курсор на эту линию, и наберите C-u 0 C-l (это CONTROL-L, а | 927 | >> Переместите курсор на эту строку, и наберите C-u 0 C-l (это CONTROL-L, а |
| 868 | не CONTROL-1). | 928 | не CONTROL-1). |
| 869 | 929 | ||
| 870 | >> Теперь наберите C-x 2, что разделит экран на два окна. | 930 | >> Теперь наберите C-x 2, что разделит экран на два окна. |
| 871 | Оба окна отображают учебник. Курсор остался в верхнем окне. | 931 | Оба окна отображают учебник. Курсор остался в верхнем окне. |
| 872 | 932 | ||
| 873 | >> Нажмите C-M-v для прокрутки нижнего окна. | 933 | >> Нажмите C-M-v для прокрутки нижнего окна. |
| 874 | (если у вас нет настоящей кнопки META (Alt), нажмите ESC C-v.) | 934 | (если у вас нет настоящей кнопки META (Alt), то нажмите <ESC> C-v.) |
| 875 | 935 | ||
| 876 | >> Нажмите C-x o ("o" от слова "other" - другое) для перемещения курсора в | 936 | >> Нажмите C-x o ("o" от слова "other" -- другое) для перемещения курсора в |
| 877 | нижнее окно. | 937 | нижнее окно. |
| 878 | >> Используйте C-v и M-v в нижнем окне, чтобы прокручивать его. | 938 | >> Используйте C-v и M-v в нижнем окне, для прокрутки текста. |
| 879 | Продолжите чтение этих инструкций в верхнем окне. | 939 | Продолжите чтение этих инструкций в верхнем окне. |
| 880 | 940 | ||
| 881 | >> Нажмите C-x o снова, чтобы переместить курсор назад в верхнее окно. | 941 | >> Нажмите C-x o снова, чтобы переместить курсор назад в верхнее окно. |
| 882 | Курсор в верхнем окне там же, где и был до того. | 942 | Курсор в верхнем окне там же, где и был до того. |
| 883 | 943 | ||
| 884 | Вы можете продолжать переключаться между окнами, используя C-x o. Каждое | 944 | Вы можете продолжать переключаться между окнами, используя C-x o. Каждое |
| 885 | окно хранит свою позицию курсора, но только одно показывает курсор. Все | 945 | окно хранит свою позицию курсора, но только одно показывает курсор. Все |
| 886 | обычные команды редактирования применяются к окну, в котором отображается | 946 | обычные команды редактирования применяются к окну, в котором отображается |
| 887 | курсор. Мы называем это окно "выбранным" ("selected window"). | 947 | курсор. Мы называем это окно "выбранным" ("selected window"). |
| 888 | 948 | ||
| 889 | Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, и | 949 | Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, а |
| 890 | используете второе в качестве справочника. Вы можете всегда сохранять курсор | 950 | второе используете в качестве справочника. Вы можете всегда сохранять |
| 891 | в окне редактирования и последовательно продвигаться во втором, используя | 951 | курсор в окне редактирования и последовательно продвигаться во втором, |
| 892 | C-M-v. | 952 | используя C-M-v. |
| 893 | 953 | ||
| 894 | C-M-v - пример CONTROL-META символа. Если у вас есть настоящая кнопка META | 954 | C-M-v -- пример CONTROL-META символа. Если у вас есть настоящая кнопка META |
| 895 | (Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, | 955 | (Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, не |
| 896 | не отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой, | 956 | отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой, |
| 897 | CONTROL или META, поскольку эти кнопки модифицируют тип символа. | 957 | CONTROL или META, поскольку эти кнопки модифицируют тип символа. |
| 898 | 958 | ||
| 899 | Если у вас нет настоящей кнопки META, и вы используете ESC вместо нее, | 959 | Если у вас нет настоящей кнопки META, и вместо нее вы используете <ESC>, то |
| 900 | порядок должен быть следующим: вы должны нажать ESC, а затем CTRL-v; | 960 | порядок должен быть следующим: вы должны нажать <ESC>, а затем CTRL-v; |
| 901 | CONTROL-ESC v не будет работать. Потому, что ESC имеет свой собственный | 961 | CONTROL-<ESC> v не будет работать. Это происходит потому, что <ESC> имеет |
| 902 | символ -- это не модифицирующая кнопка. | 962 | свой собственный символ -- это не модифицирующая кнопка. |
| 903 | 963 | ||
| 904 | >> Нажмите C-x 1 (в верхнем окне), чтобы избавиться от нижнего. | 964 | >> Нажмите C-x 1 (в верхнем окне), чтобы избавиться от нижнего окна. |
| 905 | 965 | ||
| 906 | (Если вы нажали C-x 1 в нижнем окне, то вы избавились от верхнего. Понимайте | 966 | (Если бы вы нажали C-x 1 в нижнем окне, то вы бы избавились от верхнего. |
| 907 | эту команду как "Оставить только одно окно, то, в котором я сейчас нахожусь"). | 967 | Понимайте эту команду как "Оставить только одно окно -- то, в котором я |
| 968 | сейчас нахожусь"). | ||
| 908 | 969 | ||
| 909 | Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы | 970 | Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы |
| 910 | используете C-x C-f, чтобы открыть файл в одном окне, другое останется без | 971 | используете C-x C-f, чтобы открыть файл в одном окне, другое останется без |
| 911 | изменения. Вы можете открывать файлы в каждом окне независимо. | 972 | изменения. Вы можете открывать файлы в каждом окне независимо. |
| 912 | 973 | ||
| 913 | Есть другой путь использовать два окна, отображающих разные файлы: | 974 | Есть другой путь использовать два окна, отображающих разные файлы: |
| 914 | 975 | ||
| 915 | >> Наберите C-x 4 C-f, затем имя одного и ваших файлов. Завершите <Return>. | 976 | >> Наберите C-x 4 C-f, и введите имя одного и ваших файлов. Завершите ввод |
| 916 | Посмотрите, что выбранный файл появился в нижнем окне. Курсор перешел | 977 | нажатием <Return>. Заметьте, что выбранный файл появился в нижнем окне. |
| 917 | туда же. | 978 | Курсор перешел туда же. |
| 918 | 979 | ||
| 919 | >> Наберите C-x o, чтобы вернуться в верхнее окно, и C-x 1, чтобы удалить | 980 | >> Наберите C-x o, чтобы вернуться в верхнее окно, и затем C-x 1, чтобы |
| 920 | нижнее окно. | 981 | удалить нижнее окно. |
| 921 | 982 | ||
| 922 | 983 | ||
| 923 | * РЕКУРСИВНЫЕ УРОВНИ РЕДАКТИРОВАНИЯ (RECURSIVE EDITING LEVELS) | 984 | * РЕКУРСИВНЫЕ УРОВНИ РЕДАКТИРОВАНИЯ (RECURSIVE EDITING LEVELS) |
| 924 | -------------------------------------------------------------- | 985 | -------------------------------------------------------------- |
| 925 | 986 | ||
| 926 | Иногда вы будете включать так называемые "рекурсивные уровни | 987 | Иногда вы будете попадать в так называемые "рекурсивные уровни |
| 927 | редактирования". На это указывают прямоугольные скобки в строке состояния, | 988 | редактирования". На это указывают прямоугольные скобки в строке статуса, |
| 928 | окружающие обычные скобки вокруг имени основного режима. Например, вы можете | 989 | окружающие обычные скобки вокруг имени основного режима. Например, вы |
| 929 | увидеть [(Fundamental)] вместо (Fundamental). | 990 | увидите [(Fundamental)] вместо (Fundamental). |
| 930 | 991 | ||
| 931 | Чтобы выйти из рекурсивных уровней редактирования, нажмите ESC ESC ESC. Это | 992 | Чтобы выйти из рекурсивных уровней редактирования, нажмите <ESC> <ESC> |
| 932 | многоцелевая команда "выход". Вы также можете использовать ее как для | 993 | <ESC>. Это многоцелевая команда "выход". Вы также можете использовать ее, |
| 933 | уничтожения лишних окон, так и для выхода из мини-буфера. | 994 | как для уничтожения лишних окон, так и для выхода из мини-буфера. |
| 934 | 995 | ||
| 935 | >> Нажмите M-x, чтобы попасть в мини-буфер; затем нажмите ESC ESC ESC, | 996 | >> Нажмите M-x, чтобы попасть в мини-буфер, а затем нажмите <ESC> <ESC> |
| 936 | чтобы покинуть его. | 997 | <ESC>, чтобы покинуть его. |
| 937 | 998 | ||
| 938 | Вы не можете использовать C-g, чтобы выйти из рекурсивных уровней | 999 | Вы не можете использовать C-g, для выхода из рекурсивных уровней |
| 939 | редактирования. Потому, что C-g используется для отмены команды и | 1000 | редактирования. Это потому, что C-g используется для отмены команды и |
| 940 | аргументов БЕЗ рекурсивных уровней редактирования. | 1001 | аргументов БЕЗ рекурсивных уровней редактирования. |
| 941 | 1002 | ||
| 942 | 1003 | ||
| 943 | * КАК ПОЛУЧИТЬ ПОМОЩЬ (GETTING MORE HELP) | 1004 | * КАК ПОЛУЧИТЬ ДОПОЛНИТЕЛЬНУЮ ПОМОЩЬ |
| 944 | ----------------------------------------- | 1005 | ------------------------------------ |
| 945 | 1006 | ||
| 946 | В этом учебнике мы попытались снабдить вас только той информацией, которая | 1007 | В этом учебнике мы попытались снабдить вас только той информацией, которая |
| 947 | поможет начать использовать Emacs. Очень много информации доступно в Emacs, | 1008 | поможет вам начать пользоваться Emacs. Очень много информации доступно в |
| 948 | и невозможно всю ее представить здесь. Однако, вы можете выучить больше | 1009 | Emacs, и невозможно всю ее представить здесь. Однако, вы можете выучить |
| 949 | возможностей Emacs и узнать другие полезные особенности. Emacs предоставляет | 1010 | больше возможностей Emacs и узнать другие полезные особенности. Emacs |
| 950 | команды для чтения документации о командах Emacs. Эти команды "помощи" | 1011 | предоставляет команды для чтения документации о командах Emacs. Эти команды |
| 951 | ("help") все начинаются с символа CONTROL-h, который является "символом | 1012 | "справки" ("help") все начинаются с символа CONTROL-h, который является |
| 952 | помощи". | 1013 | "символом помощи". |
| 953 | 1014 | ||
| 954 | Чтобы использовать особенности Помощи, нажмите C-h, и затем символ, который | 1015 | Чтобы использовать возможности справки, нажмите C-h, и затем символ, который |
| 955 | расскажет, какой именно вид помощи вы хотите получить. Если вы ДЕЙСТВИТЕЛЬНО | 1016 | расскажет, какой именно вид справки вы хотите получить. Если вы |
| 956 | растерялись, наберите C-h ?, и Emacs расскажет вам какую помощь он может вам | 1017 | ДЕЙСТВИТЕЛЬНО растерялись, наберите C-h ?, и Emacs расскажет вам о том, |
| 957 | предоставить. Если вы нажали C-h и передумали обращаться к помощи, просто | 1018 | какую справку он может вам предоставить. Если вы нажали C-h и передумали |
| 958 | нажмите C-g, чтобы отменить эту команду. | 1019 | обращаться к справке, то просто нажмите C-g, чтобы отменить эту команду. |
| 959 | 1020 | ||
| 960 | (Кое-где переназначают символ C-h. Реальной необходимости в этом нет, | 1021 | (Кое-где переназначают символ C-h. Реальной необходимости в этом нет, и |
| 961 | сообщите о ней системному администратору. Тем временем, если C-h не вызывает | 1022 | если это так, то сообщите об этом системному администратору. Тем временем, |
| 962 | сообщение помощи внизу экрана, попробуйте вместо этого нажать клавишу F1 или | 1023 | если C-h не вызывает сообщение помощи внизу экрана, то попробуйте вместо |
| 963 | набрать M-x help RET). | 1024 | этого нажать клавишу F1 или набрать M-x help RET). |
| 964 | 1025 | ||
| 965 | Самая основная возможность ПОМОЩИ - C-h c. Нажмите C-h, затем c, и символ | 1026 | Одна из самых главных функций справки -- C-h c. Нажмите C-h, затем c, и |
| 966 | команды или последовательность, и Emacs отобразит очень краткое описание | 1027 | символ команды или последовательность, и Emacs отобразит краткое набранной |
| 967 | команды. | 1028 | описание команды. |
| 968 | 1029 | ||
| 969 | >> Нажмите C-h c C-p. | 1030 | >> Нажмите C-h c C-p. |
| 970 | Сообщение должно выглядеть примерно так | 1031 | |
| 1032 | Сообщение должно выглядеть примерно так: | ||
| 971 | 1033 | ||
| 972 | C-p runs the command previous-line | 1034 | C-p runs the command previous-line |
| 973 | (C-p выполняет команду previous-line {предыдущая-строка}) | 1035 | (C-p выполняет команду previous-line {предыдущая-строка}) |
| 974 | 1036 | ||
| 975 | Вам сообщают "имя функции". Имена функций используются в основном для | 1037 | Вам сообщают "имя функции". Имена функций используются в основном для |
| 976 | настройки и расширения Emacs. Имена функций выбраны так, чтобы показать, | 1038 | настройки и расширения Emacs. Имена функций выбраны так, чтобы показать, что |
| 977 | что именно команда делает, также они позволяют с помощью этой краткой | 1039 | именно команда делает, а также они позволяют с помощью этой краткой |
| 978 | информации легче запомнить уже выученные команды. | 1040 | информации легче запомнить уже выученные команды. |
| 979 | 1041 | ||
| 980 | Многосимвольные команды, такие как C-x C-s и (если у вас нет кнопки META или | 1042 | Многосимвольные сочетания клавиш, такие как C-x C-s и (если у вас нет кнопки |
| 981 | EDIT или ALT) <ESC>v также будут доступны после C-h c. | 1043 | META или EDIT или ALT) <ESC>v также будут доступны для получения справки с |
| 1044 | помощью C-h c. | ||
| 982 | 1045 | ||
| 983 | Получите больше информации о команде используя C-h k вместо C-h c. | 1046 | Вы можете получить больше информации о команде используя C-h k вместо C-h c. |
| 984 | 1047 | ||
| 985 | >> Наберите C-h k C-p. | 1048 | >> Наберите C-h k C-p. |
| 986 | 1049 | ||
| 987 | Вы увидите описание функции, а также ее имя в отдельном окне Emacs. Когда вы | 1050 | Вы увидите описание функции, а также ее имя в отдельном окне Emacs. Когда вы |
| 988 | завершите чтение, нажмите C-x 1, чтобы избавиться от текста помощи. Вы | 1051 | завершите чтение, нажмите C-x 1, чтобы избавиться от текста справки. Вы |
| 989 | можете выполнить какое-то редактирование во время просмотра текста справки, | 1052 | можете выполнить изменение текста во время просмотра текста справки, а |
| 990 | а только затем нажать C-x 1. | 1053 | только затем нажать C-x 1. |
| 991 | 1054 | ||
| 992 | Есть еще несколько полезных опций C-h: | 1055 | Есть еще несколько полезных функций, доступных через C-h: |
| 993 | 1056 | ||
| 994 | C-h f Описывает функцию. Вам необходимо набрать имя функции. | 1057 | C-h f Описывает функцию. Вам необходимо набрать имя функции. |
| 995 | 1058 | ||
| 996 | >> Попробуйте набрать C-h f previous-line<Return>. | 1059 | >> Попробуйте набрать C-h f previous-line<Return>. |
| 997 | Это распечатает информацию Emacs о этой функции, которая выполняется | 1060 | Это распечатает информацию Emacs о функции, которая выполняется командой |
| 998 | командой C-p. | 1061 | C-p. |
| 999 | 1062 | ||
| 1000 | Аналогичная команда C-h v отображает документацию о переменных, значение | 1063 | Аналогичная команда C-h v отображает документацию о переменных, значение |
| 1001 | которых вы можете изменить для настройки поведения Emacs. Вам нужно набрать | 1064 | которых вы можете изменить для настройки поведения Emacs. Вам нужно набрать |
| 1002 | имя переменной, когда Emacs запросит его. | 1065 | имя переменной, когда Emacs запросит его. |
| 1003 | 1066 | ||
| 1004 | C-h a Hyper Apropos. Введите ключевое слово и Emacs покажет вам | 1067 | C-h a (Hyper Apropos). Введите ключевое слово и Emacs покажет вам список |
| 1005 | список всех функций и переменных, имена которых содержат это | 1068 | всех функций и переменных, имена которых содержат это |
| 1006 | слово. Команды, которые могут быть вызваны через Meta-x, | 1069 | слово. Команды, которые могут быть вызваны через Meta-x, будут |
| 1007 | будут отмечены звездочкой слева. | 1070 | отмечены звездочкой слева. |
| 1008 | 1071 | ||
| 1009 | >> Наберите C-h a file<Return>. | 1072 | >> Наберите C-h a file<Return>. |
| 1010 | 1073 | ||
| 1011 | это отобразит полный список функций и переменных, имена которых начинаются | 1074 | Это отобразит в другом окне список всех команд M-x у которых в именах |
| 1012 | с "newline". Нажмите <Return> или кликните средней кнопкой мышки, чтобы | 1075 | содержится слово "file". Также в списке кроме команд таких, как find-file, |
| 1013 | получить больше информации о функции или переменной. Нажмите `q', чтобы | 1076 | вы увидите соответствующие символьные команды такие, как C-x C-f. |
| 1014 | выйти из hyper-apropos. | ||
| 1015 | |||
| 1016 | Это отобразит в другом окне список всех команд M-x со словом "file" в их | ||
| 1017 | именах. Также в списке кроме команд таких, как find-file, вы увидите | ||
| 1018 | соответствующие символьные команды такие, как C-x C-f. | ||
| 1019 | 1077 | ||
| 1020 | >> Наберите C-M-v для прокрутки окна справки. Выполните это несколько раз. | 1078 | >> Наберите C-M-v для прокрутки окна справки. Выполните это несколько раз. |
| 1021 | 1079 | ||
| 1022 | >> Наберите C-x 1 для удаления окна справки. | 1080 | >> Наберите C-x 1 для удаления окна справки. |
| 1023 | 1081 | ||
| 1024 | C-h i Читать интерактивные руководства (a.k.a. Info). Эта команда | 1082 | C-h i Читать интерактивные руководства (так называемые Info). Эта команда |
| 1025 | переходит в специальный буфер с именем `*info*', где вы | 1083 | переходит в специальный буфер с именем `*info*', где вы можете |
| 1026 | можете читать интерактивные руководства для пакетов, | 1084 | читать интерактивные руководства для пакетов, установленных в вашей |
| 1027 | установленных в вашей системе. Наберите m emacs <Return> для | 1085 | системе. Наберите m emacs <Return> для чтения руководства по |
| 1028 | чтения руководства по Emacs. Если вы никогда ранее не | 1086 | Emacs. Если вы никогда ранее не использовали Info, то наберите ? и |
| 1029 | использовали Info, то наберите ? и Emacs откроет учебник по | 1087 | Emacs откроет учебник по возможностям режима Info. Однажды |
| 1030 | возможностям режима Info. Однажды ознакомившись с этим | 1088 | ознакомившись с этим учебником, вы должны использовать руководство |
| 1031 | учебником, вы должны использовать руководство Emacs Info в | 1089 | Emacs Info в качестве основной документации. |
| 1032 | качестве основной документации. | 1090 | |
| 1091 | |||
| 1092 | * ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ | ||
| 1093 | ---------------------------- | ||
| 1094 | |||
| 1095 | Вы можете узнать больше о Emacs читая его руководство, книги или | ||
| 1096 | интерактивный справочник (используйте меню Help или наберите F10 h r). Вам | ||
| 1097 | особенно понравятся две функции -- дополнение, которое сокращает количество | ||
| 1098 | нажимаемых клавиш, и dired, который облегчает работу с файлами. | ||
| 1099 | |||
| 1100 | Дополнение используется для того, чтобы избежать набора лишних символов. | ||
| 1101 | Например, если вы хотите переключиться в буфер *Messages*, то вы можете | ||
| 1102 | набрать C-x b *M<Tab> и Emacs заполнит остаток имени буфера, поскольку он | ||
| 1103 | может определить его из того, что вы уже набрали. Дополнения описаны в | ||
| 1104 | Info-версии руководства по Emacs в разделе "Completion". | ||
| 1105 | |||
| 1106 | Dired позволяет вам отображать список файлов в каталоге (а также | ||
| 1107 | подкаталогах, в зависимости от настройки), перемещаться по списку файлов, | ||
| 1108 | открывать их, переименовывать, удалять и выполнять прочие действия над | ||
| 1109 | файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired". | ||
| 1110 | |||
| 1111 | В руководстве также описаны прочие возможности Emacs. | ||
| 1033 | 1112 | ||
| 1034 | 1113 | ||
| 1035 | * ЗАКЛЮЧЕНИЕ | 1114 | * ЗАКЛЮЧЕНИЕ |
| 1036 | ------------ | 1115 | ------------ |
| 1037 | 1116 | ||
| 1038 | Запомните, чтобы совсем выйти из Emacs, используется сочетание клавиш | 1117 | Запомните, что для того чтобы совсем выйти из Emacs, используется сочетание |
| 1039 | C-x C-c. А чтобы временно выйти в оболочку (shell) и потом вернуться | 1118 | клавиш C-x C-c. А чтобы временно выйти в оболочку (shell) и потом вернуться |
| 1040 | обратно, используйте C-z. | 1119 | обратно, используйте C-z. |
| 1041 | 1120 | ||
| 1042 | Этот учебник должен быть понятен всем новым пользователям, но если вы | 1121 | Этот учебник должен быть понятен всем новым пользователям, но если вы |
| 1043 | найдете что-нибудь неясное, не нужно сидеть и порицать себя -- жалуйтесь! | 1122 | найдете что-нибудь неясное, не нужно сидеть и порицать себя -- жалуйтесь! |
| 1044 | 1123 | ||
| 1045 | 1124 | ||
| 1046 | * COPYING | 1125 | * УСЛОВИЯ РАСПРОСТРАНЕНИЯ |
| 1047 | --------- | 1126 | ------------------------- |
| 1048 | 1127 | ||
| 1049 | Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды | 1128 | Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды |
| 1050 | написанного by Stuart Cracraft для оригинального Emacs. | 1129 | написанного Stuart Cracraft для оригинального Emacs. |
| 1051 | 1130 | ||
| 1052 | Эта версия учебника, как и GNU Emacs, защищена правами копирования | 1131 | Эта версия учебника, как и GNU Emacs, защищена правами копирования |
| 1053 | (copyrighted), и приходит с ограничениями распространения копий со | 1132 | (copyrighted), и приходит с ограничениями распространения копий со |
| 1054 | следующими соглашениями: | 1133 | следующими соглашениями: |
| 1055 | 1134 | ||
| 1056 | Copyright (c) 1985, 1996 Free Software Foundation | 1135 | Copyright (c) 1985, 1996, 1998, 2001, 2002, 2005 Free Software Foundation |
| 1057 | 1136 | ||
| 1058 | Permission is granted to anyone to make or distribute verbatim copies | 1137 | Permission is granted to anyone to make or distribute verbatim copies |
| 1059 | of this document as received, in any medium, provided that the | 1138 | of this document as received, in any medium, provided that the |
| @@ -1066,16 +1145,14 @@ Copyright (c) 1985, 1996 Free Software Foundation | |||
| 1066 | under the above conditions, provided also that they | 1145 | under the above conditions, provided also that they |
| 1067 | carry prominent notices stating who last altered them. | 1146 | carry prominent notices stating who last altered them. |
| 1068 | 1147 | ||
| 1069 | Условия копирования самого Emacs более сложные, но в том же духе. | 1148 | Условия копирования самого Emacs более сложные, но примерно в том же духе. |
| 1070 | Пожалуйста, прочтите файл COPYING и затем дайте копию GNU Emacs вашим | 1149 | Пожалуйста, прочтите файл COPYING и затем дайте копию GNU Emacs вашим |
| 1071 | друзьям. Помогите уничтожить обструкционизм в области программного | 1150 | друзьям. Помогите уничтожить обструкционизм в области программного |
| 1072 | обеспечения ("владение"), используя, создавая и распространяя свободное | 1151 | обеспечения ("владение"), используя, создавая и распространяя свободное |
| 1073 | программное обеспечение! | 1152 | программное обеспечение! |
| 1074 | 1153 | ||
| 1075 | // замечания, исправления ошибок с нетерпением жду по адресу ottalex@narod.ru | 1154 | // замечания, исправления ошибок с жду по адресу alexott@gmail.com. |
| 1076 | // Alex Ott. | 1155 | // Alex Ott. |
| 1077 | // Большое спасибо Владимиру Бормотову, на базе перевода которого был сделан | ||
| 1078 | // этот перевод | ||
| 1079 | 1156 | ||
| 1080 | ;;; Local Variables: | 1157 | ;;; Local Variables: |
| 1081 | ;;; coding: cyrillic-koi8 | 1158 | ;;; coding: cyrillic-koi8 |
diff --git a/etc/e/eterm b/etc/e/eterm index 0fcb95170ee..09d184fd762 100644 --- a/etc/e/eterm +++ b/etc/e/eterm | |||
| Binary files differ | |||
diff --git a/etc/e/eterm.ti b/etc/e/eterm.ti index 2b600df0a12..8f88f0e6f88 100644 --- a/etc/e/eterm.ti +++ b/etc/e/eterm.ti | |||
| @@ -1,4 +1,4 @@ | |||
| 1 | eterm, | 1 | eterm|Emacs term.el terminal emulator term-protocol-version 0.96, |
| 2 | colors#8, | 2 | colors#8, |
| 3 | cols#80, | 3 | cols#80, |
| 4 | lines#24, | 4 | lines#24, |
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 8820980bf7d..1e08f220182 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog | |||
| @@ -1,3 +1,35 @@ | |||
| 1 | 2005-04-25 Dan Nicolaescu <dann@ics.uci.edu> | ||
| 2 | |||
| 3 | * term/xterm.el (function-key-map): Fix strings for | ||
| 4 | {C,S,A,C-S}-f[1-4]. Use substitute-key-definition to bind | ||
| 5 | {C,S,A,C-S}-{f1-f12}. | ||
| 6 | |||
| 7 | 2005-04-26 Kenichi Handa <handa@m17n.org> | ||
| 8 | |||
| 9 | * international/mule-cmds.el (select-safe-coding-system): Fix | ||
| 10 | previous change. | ||
| 11 | |||
| 12 | 2005-04-26 Lute Kamstra <lute@gnu.org> | ||
| 13 | |||
| 14 | * calc/calc.el (calc-trail-mode): Don't set font-lock-defaults. | ||
| 15 | |||
| 16 | 2005-04-25 Jay Belanger <belanger@truman.edu> | ||
| 17 | |||
| 18 | * calc/calc-help.el (calc-view-news): Let-bind inhibit-read-only | ||
| 19 | to t while inserting information; use help-mode. | ||
| 20 | |||
| 21 | 2005-04-25 Dan Nicolaescu <dann@ics.uci.edu> | ||
| 22 | |||
| 23 | * term.el (ansi-term-color-vector): Use the xterm colors. | ||
| 24 | (term-raw-map): Don't add mappings for \eO and \e[. Map | ||
| 25 | deletechar. | ||
| 26 | |||
| 27 | 2005-04-25 Lute Kamstra <lute@gnu.org> | ||
| 28 | |||
| 29 | * font-core.el (font-lock-defaults): Fix docstring. | ||
| 30 | |||
| 31 | * font-lock.el (font-lock-syntactic-face-function): Fix docstring. | ||
| 32 | |||
| 1 | 2005-04-25 Kenichi Handa <handa@m17n.org> | 33 | 2005-04-25 Kenichi Handa <handa@m17n.org> |
| 2 | 34 | ||
| 3 | * international/mule-cmds.el (select-safe-coding-system): Don't | 35 | * international/mule-cmds.el (select-safe-coding-system): Don't |
diff --git a/lisp/calc/calc-help.el b/lisp/calc/calc-help.el index 46b8cec2ac6..2a89bb2b883 100644 --- a/lisp/calc/calc-help.el +++ b/lisp/calc/calc-help.el | |||
| @@ -393,12 +393,14 @@ C-w Describe how there is no warranty for Calc." | |||
| 393 | (error "Can't locate Calc sources")) | 393 | (error "Can't locate Calc sources")) |
| 394 | (calc-quit) | 394 | (calc-quit) |
| 395 | (switch-to-buffer "*Help*") | 395 | (switch-to-buffer "*Help*") |
| 396 | (erase-buffer) | 396 | (let ((inhibit-read-only t)) |
| 397 | (insert-file-contents (expand-file-name "README" (car path))) | 397 | (erase-buffer) |
| 398 | (search-forward "Summary of changes") | 398 | (insert-file-contents (expand-file-name "README" (car path))) |
| 399 | (forward-line -1) | 399 | (search-forward "Summary of changes") |
| 400 | (delete-region (point-min) (point)) | 400 | (forward-line -1) |
| 401 | (goto-char (point-min)))) | 401 | (delete-region (point-min) (point)) |
| 402 | (goto-char (point-min))) | ||
| 403 | (help-mode))) | ||
| 402 | 404 | ||
| 403 | (defvar calc-help-long-names '((?b . "binary/business") | 405 | (defvar calc-help-long-names '((?b . "binary/business") |
| 404 | (?g . "graphics") | 406 | (?g . "graphics") |
diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index ceee013e493..ce9681b828f 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el | |||
| @@ -1174,8 +1174,6 @@ commands given here will actually operate on the *Calculator* stack." | |||
| 1174 | (setq buffer-read-only t) | 1174 | (setq buffer-read-only t) |
| 1175 | (make-local-variable 'overlay-arrow-position) | 1175 | (make-local-variable 'overlay-arrow-position) |
| 1176 | (make-local-variable 'overlay-arrow-string) | 1176 | (make-local-variable 'overlay-arrow-string) |
| 1177 | (set (make-local-variable 'font-lock-defaults) | ||
| 1178 | '(nil t nil nil nil (font-lock-core-only . t))) | ||
| 1179 | (when buf | 1177 | (when buf |
| 1180 | (set (make-local-variable 'calc-main-buffer) buf)) | 1178 | (set (make-local-variable 'calc-main-buffer) buf)) |
| 1181 | (when (= (buffer-size) 0) | 1179 | (when (= (buffer-size) 0) |
diff --git a/lisp/font-core.el b/lisp/font-core.el index 5bf30d4d6c5..a077ce756c0 100644 --- a/lisp/font-core.el +++ b/lisp/font-core.el | |||
| @@ -32,7 +32,7 @@ | |||
| 32 | "Defaults for Font Lock mode specified by the major mode. | 32 | "Defaults for Font Lock mode specified by the major mode. |
| 33 | Defaults should be of the form: | 33 | Defaults should be of the form: |
| 34 | 34 | ||
| 35 | (KEYWORDS KEYWORDS-ONLY CASE-FOLD SYNTAX-ALIST SYNTAX-BEGIN ...) | 35 | (KEYWORDS [KEYWORDS-ONLY [CASE-FOLD [SYNTAX-ALIST [SYNTAX-BEGIN ...]]]]) |
| 36 | 36 | ||
| 37 | KEYWORDS may be a symbol (a variable or function whose value is the keywords to | 37 | KEYWORDS may be a symbol (a variable or function whose value is the keywords to |
| 38 | use for fontification) or a list of symbols. If KEYWORDS-ONLY is non-nil, | 38 | use for fontification) or a list of symbols. If KEYWORDS-ONLY is non-nil, |
| @@ -66,11 +66,10 @@ textual modes (i.e., the mode-dependent function is known to put point and mark | |||
| 66 | around a text block relevant to that mode). | 66 | around a text block relevant to that mode). |
| 67 | 67 | ||
| 68 | Other variables include that for syntactic keyword fontification, | 68 | Other variables include that for syntactic keyword fontification, |
| 69 | `font-lock-syntactic-keywords' | 69 | `font-lock-syntactic-keywords' and those for buffer-specialized fontification |
| 70 | and those for buffer-specialized fontification functions, | 70 | functions, `font-lock-fontify-buffer-function', |
| 71 | `font-lock-fontify-buffer-function', `font-lock-unfontify-buffer-function', | 71 | `font-lock-unfontify-buffer-function', `font-lock-fontify-region-function', |
| 72 | `font-lock-fontify-region-function', `font-lock-unfontify-region-function', | 72 | `font-lock-unfontify-region-function', and `font-lock-inhibit-thing-lock'.") |
| 73 | `font-lock-inhibit-thing-lock' and `font-lock-maximum-size'.") | ||
| 74 | (make-variable-buffer-local 'font-lock-defaults) | 73 | (make-variable-buffer-local 'font-lock-defaults) |
| 75 | 74 | ||
| 76 | (defvar font-lock-defaults-alist nil | 75 | (defvar font-lock-defaults-alist nil |
diff --git a/lisp/font-lock.el b/lisp/font-lock.el index 5bac7c56b21..3b49647395f 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el | |||
| @@ -496,7 +496,7 @@ sometimes be slightly incorrect.") | |||
| 496 | "Function to determine which face to use when fontifying syntactically. | 496 | "Function to determine which face to use when fontifying syntactically. |
| 497 | The function is called with a single parameter (the state as returned by | 497 | The function is called with a single parameter (the state as returned by |
| 498 | `parse-partial-sexp' at the beginning of the region to highlight) and | 498 | `parse-partial-sexp' at the beginning of the region to highlight) and |
| 499 | should return a face.") | 499 | should return a face. This is normally set via `font-lock-defaults'.") |
| 500 | 500 | ||
| 501 | (defvar font-lock-syntactic-keywords nil | 501 | (defvar font-lock-syntactic-keywords nil |
| 502 | "A list of the syntactic keywords to highlight. | 502 | "A list of the syntactic keywords to highlight. |
| @@ -646,6 +646,7 @@ Major/minor modes can set this variable if they know which option applies.") | |||
| 646 | ;;;###autoload | 646 | ;;;###autoload |
| 647 | (defun font-lock-add-keywords (mode keywords &optional append) | 647 | (defun font-lock-add-keywords (mode keywords &optional append) |
| 648 | "Add highlighting KEYWORDS for MODE. | 648 | "Add highlighting KEYWORDS for MODE. |
| 649 | |||
| 649 | MODE should be a symbol, the major mode command name, such as `c-mode' | 650 | MODE should be a symbol, the major mode command name, such as `c-mode' |
| 650 | or nil. If nil, highlighting keywords are added for the current buffer. | 651 | or nil. If nil, highlighting keywords are added for the current buffer. |
| 651 | KEYWORDS should be a list; see the variable `font-lock-keywords'. | 652 | KEYWORDS should be a list; see the variable `font-lock-keywords'. |
diff --git a/lisp/international/mule-cmds.el b/lisp/international/mule-cmds.el index 8d758abe53f..a91c12bcaf2 100644 --- a/lisp/international/mule-cmds.el +++ b/lisp/international/mule-cmds.el | |||
| @@ -929,7 +929,8 @@ and TO is ignored." | |||
| 929 | ;; by using `find-file-literally'. | 929 | ;; by using `find-file-literally'. |
| 930 | (unless (or (stringp from) | 930 | (unless (or (stringp from) |
| 931 | find-file-literally | 931 | find-file-literally |
| 932 | (memq (coding-system-type coding-system) '(0 5))) | 932 | (and coding-system |
| 933 | (memq (coding-system-type coding-system) '(0 5)))) | ||
| 933 | (let ((auto-cs (save-excursion | 934 | (let ((auto-cs (save-excursion |
| 934 | (save-restriction | 935 | (save-restriction |
| 935 | (widen) | 936 | (widen) |
diff --git a/lisp/term.el b/lisp/term.el index b1ce432144e..473fafd558a 100644 --- a/lisp/term.el +++ b/lisp/term.el | |||
| @@ -711,9 +711,10 @@ Buffer local variable.") | |||
| 711 | :group 'term | 711 | :group 'term |
| 712 | :type 'string) | 712 | :type 'string) |
| 713 | 713 | ||
| 714 | ;;; Use the same colors that xterm uses, see `xterm-standard-colors'. | ||
| 714 | (defvar ansi-term-color-vector | 715 | (defvar ansi-term-color-vector |
| 715 | [unspecified "black" "red" "green" "yellow" "blue" | 716 | [unspecified "black" "red3" "green3" "yellow3" "blue2" |
| 716 | "magenta" "cyan" "white"]) | 717 | "magenta3" "cyan3" "white"]) |
| 717 | 718 | ||
| 718 | ;;; Inspiration came from comint.el -mm | 719 | ;;; Inspiration came from comint.el -mm |
| 719 | (defvar term-buffer-maximum-size 2048 | 720 | (defvar term-buffer-maximum-size 2048 |
| @@ -886,7 +887,9 @@ is buffer-local.") | |||
| 886 | (i 0)) | 887 | (i 0)) |
| 887 | (while (< i 128) | 888 | (while (< i 128) |
| 888 | (define-key map (make-string 1 i) 'term-send-raw) | 889 | (define-key map (make-string 1 i) 'term-send-raw) |
| 889 | (define-key esc-map (make-string 1 i) 'term-send-raw-meta) | 890 | ;; Avoid O and [. They are used in escape sequences for various keys. |
| 891 | (unless (or (eq i ?O) (eq i 91)) | ||
| 892 | (define-key esc-map (make-string 1 i) 'term-send-raw-meta)) | ||
| 890 | (setq i (1+ i))) | 893 | (setq i (1+ i))) |
| 891 | (dolist (elm (generic-character-list)) | 894 | (dolist (elm (generic-character-list)) |
| 892 | (define-key map (vector elm) 'term-send-raw)) | 895 | (define-key map (vector elm) 'term-send-raw)) |
| @@ -909,6 +912,7 @@ is buffer-local.") | |||
| 909 | (define-key term-raw-map [right] 'term-send-right) | 912 | (define-key term-raw-map [right] 'term-send-right) |
| 910 | (define-key term-raw-map [left] 'term-send-left) | 913 | (define-key term-raw-map [left] 'term-send-left) |
| 911 | (define-key term-raw-map [delete] 'term-send-del) | 914 | (define-key term-raw-map [delete] 'term-send-del) |
| 915 | (define-key term-raw-map [deletechar] 'term-send-del) | ||
| 912 | (define-key term-raw-map [backspace] 'term-send-backspace) | 916 | (define-key term-raw-map [backspace] 'term-send-backspace) |
| 913 | (define-key term-raw-map [home] 'term-send-home) | 917 | (define-key term-raw-map [home] 'term-send-home) |
| 914 | (define-key term-raw-map [end] 'term-send-end) | 918 | (define-key term-raw-map [end] 'term-send-end) |
diff --git a/lisp/term/xterm.el b/lisp/term/xterm.el index 96f79f6c864..c30ee7ab34a 100644 --- a/lisp/term/xterm.el +++ b/lisp/term/xterm.el | |||
| @@ -53,10 +53,15 @@ | |||
| 53 | (define-key map "\e[24~" [f12]) | 53 | (define-key map "\e[24~" [f12]) |
| 54 | (define-key map "\e[29~" [print]) | 54 | (define-key map "\e[29~" [print]) |
| 55 | 55 | ||
| 56 | (define-key map "\e[11;2~" [S-f1]) | 56 | (define-key map "\eOP" [f1]) |
| 57 | (define-key map "\e[12;2~" [S-f2]) | 57 | (define-key map "\eOQ" [f2]) |
| 58 | (define-key map "\e[13;2~" [S-f3]) | 58 | (define-key map "\eOR" [f3]) |
| 59 | (define-key map "\e[14;2~" [S-f4]) | 59 | (define-key map "\eOS" [f4]) |
| 60 | |||
| 61 | (define-key map "\eO2P" [S-f1]) | ||
| 62 | (define-key map "\eO2Q" [S-f2]) | ||
| 63 | (define-key map "\eO2R" [S-f3]) | ||
| 64 | (define-key map "\eO2S" [S-f4]) | ||
| 60 | (define-key map "\e[15;2~" [S-f5]) | 65 | (define-key map "\e[15;2~" [S-f5]) |
| 61 | (define-key map "\e[17;2~" [S-f6]) | 66 | (define-key map "\e[17;2~" [S-f6]) |
| 62 | (define-key map "\e[18;2~" [S-f7]) | 67 | (define-key map "\e[18;2~" [S-f7]) |
| @@ -66,10 +71,10 @@ | |||
| 66 | (define-key map "\e[23;2~" [S-f11]) | 71 | (define-key map "\e[23;2~" [S-f11]) |
| 67 | (define-key map "\e[24;2~" [S-f12]) | 72 | (define-key map "\e[24;2~" [S-f12]) |
| 68 | 73 | ||
| 69 | (define-key map "\e[11;5~" [C-f1]) | 74 | (define-key map "\eO5P" [C-f1]) |
| 70 | (define-key map "\e[12;5~" [C-f2]) | 75 | (define-key map "\eO5Q" [C-f2]) |
| 71 | (define-key map "\e[13;5~" [C-f3]) | 76 | (define-key map "\eO5R" [C-f3]) |
| 72 | (define-key map "\e[14;5~" [C-f4]) | 77 | (define-key map "\eO5S" [C-f4]) |
| 73 | (define-key map "\e[15;5~" [C-f5]) | 78 | (define-key map "\e[15;5~" [C-f5]) |
| 74 | (define-key map "\e[17;5~" [C-f6]) | 79 | (define-key map "\e[17;5~" [C-f6]) |
| 75 | (define-key map "\e[18;5~" [C-f7]) | 80 | (define-key map "\e[18;5~" [C-f7]) |
| @@ -79,10 +84,10 @@ | |||
| 79 | (define-key map "\e[23;5~" [C-f11]) | 84 | (define-key map "\e[23;5~" [C-f11]) |
| 80 | (define-key map "\e[24;5~" [C-f12]) | 85 | (define-key map "\e[24;5~" [C-f12]) |
| 81 | 86 | ||
| 82 | (define-key map "\e[11;6~" [C-S-f1]) | 87 | (define-key map "\eO6P" [C-S-f1]) |
| 83 | (define-key map "\e[12;6~" [C-S-f2]) | 88 | (define-key map "\eO6Q" [C-S-f2]) |
| 84 | (define-key map "\e[13;6~" [C-S-f3]) | 89 | (define-key map "\eO6R" [C-S-f3]) |
| 85 | (define-key map "\e[14;6~" [C-S-f4]) | 90 | (define-key map "\eO6S" [C-S-f4]) |
| 86 | (define-key map "\e[15;6~" [C-S-f5]) | 91 | (define-key map "\e[15;6~" [C-S-f5]) |
| 87 | (define-key map "\e[17;6~" [C-S-f6]) | 92 | (define-key map "\e[17;6~" [C-S-f6]) |
| 88 | (define-key map "\e[18;6~" [C-S-f7]) | 93 | (define-key map "\e[18;6~" [C-S-f7]) |
| @@ -92,10 +97,10 @@ | |||
| 92 | (define-key map "\e[23;6~" [C-S-f11]) | 97 | (define-key map "\e[23;6~" [C-S-f11]) |
| 93 | (define-key map "\e[24;6~" [C-S-f12]) | 98 | (define-key map "\e[24;6~" [C-S-f12]) |
| 94 | 99 | ||
| 95 | (define-key map "\e[11;3~" [A-f1]) | 100 | (define-key map "\eO3P" [A-f1]) |
| 96 | (define-key map "\e[12;3~" [A-f2]) | 101 | (define-key map "\eO3Q" [A-f2]) |
| 97 | (define-key map "\e[13;3~" [A-f3]) | 102 | (define-key map "\eO3R" [A-f3]) |
| 98 | (define-key map "\e[14;3~" [A-f4]) | 103 | (define-key map "\eO3S" [A-f4]) |
| 99 | (define-key map "\e[15;3~" [A-f5]) | 104 | (define-key map "\e[15;3~" [A-f5]) |
| 100 | (define-key map "\e[17;3~" [A-f6]) | 105 | (define-key map "\e[17;3~" [A-f6]) |
| 101 | (define-key map "\e[18;3~" [A-f7]) | 106 | (define-key map "\e[18;3~" [A-f7]) |
| @@ -180,6 +185,66 @@ | |||
| 180 | (set-keymap-parent map (keymap-parent function-key-map)) | 185 | (set-keymap-parent map (keymap-parent function-key-map)) |
| 181 | (set-keymap-parent function-key-map map)) | 186 | (set-keymap-parent function-key-map map)) |
| 182 | 187 | ||
| 188 | ;;; The terminal intialization C code file might have initialized | ||
| 189 | ;;; function keys F13->F60 from the termcap/terminfo information. On | ||
| 190 | ;;; a PC-style keyboard these keys correspond to | ||
| 191 | ;;; MODIFIER-FUNCTION_KEY, where modifier is S-, C, A-, C-S-. The | ||
| 192 | ;;; code here subsitutes the corresponding defintions in | ||
| 193 | ;;; function-key-map. This substitution is needed because if a key | ||
| 194 | ;;; definition if found in function-key-map, there are no further | ||
| 195 | ;;; lookups in other keymaps. | ||
| 196 | (substitute-key-definition [f13] [S-f1] function-key-map) | ||
| 197 | (substitute-key-definition [f14] [S-f2] function-key-map) | ||
| 198 | (substitute-key-definition [f15] [S-f3] function-key-map) | ||
| 199 | (substitute-key-definition [f16] [S-f4] function-key-map) | ||
| 200 | (substitute-key-definition [f17] [S-f5] function-key-map) | ||
| 201 | (substitute-key-definition [f18] [S-f6] function-key-map) | ||
| 202 | (substitute-key-definition [f19] [S-f7] function-key-map) | ||
| 203 | (substitute-key-definition [f20] [S-f8] function-key-map) | ||
| 204 | (substitute-key-definition [f21] [S-f9] function-key-map) | ||
| 205 | (substitute-key-definition [f22] [S-f10] function-key-map) | ||
| 206 | (substitute-key-definition [f23] [S-f11] function-key-map) | ||
| 207 | (substitute-key-definition [f24] [S-f12] function-key-map) | ||
| 208 | |||
| 209 | (substitute-key-definition [f25] [C-f1] function-key-map) | ||
| 210 | (substitute-key-definition [f26] [C-f2] function-key-map) | ||
| 211 | (substitute-key-definition [f27] [C-f3] function-key-map) | ||
| 212 | (substitute-key-definition [f28] [C-f4] function-key-map) | ||
| 213 | (substitute-key-definition [f29] [C-f5] function-key-map) | ||
| 214 | (substitute-key-definition [f30] [C-f6] function-key-map) | ||
| 215 | (substitute-key-definition [f31] [C-f7] function-key-map) | ||
| 216 | (substitute-key-definition [f32] [C-f8] function-key-map) | ||
| 217 | (substitute-key-definition [f33] [C-f9] function-key-map) | ||
| 218 | (substitute-key-definition [f34] [C-f10] function-key-map) | ||
| 219 | (substitute-key-definition [f35] [C-f11] function-key-map) | ||
| 220 | (substitute-key-definition [f36] [C-f12] function-key-map) | ||
| 221 | |||
| 222 | (substitute-key-definition [f37] [C-S-f1] function-key-map) | ||
| 223 | (substitute-key-definition [f38] [C-S-f2] function-key-map) | ||
| 224 | (substitute-key-definition [f39] [C-S-f3] function-key-map) | ||
| 225 | (substitute-key-definition [f40] [C-S-f4] function-key-map) | ||
| 226 | (substitute-key-definition [f41] [C-S-f5] function-key-map) | ||
| 227 | (substitute-key-definition [f42] [C-S-f6] function-key-map) | ||
| 228 | (substitute-key-definition [f43] [C-S-f7] function-key-map) | ||
| 229 | (substitute-key-definition [f44] [C-S-f8] function-key-map) | ||
| 230 | (substitute-key-definition [f45] [C-S-f9] function-key-map) | ||
| 231 | (substitute-key-definition [f46] [C-S-f10] function-key-map) | ||
| 232 | (substitute-key-definition [f47] [C-S-f11] function-key-map) | ||
| 233 | (substitute-key-definition [f48] [C-S-f12] function-key-map) | ||
| 234 | |||
| 235 | (substitute-key-definition [f49] [A-f1] function-key-map) | ||
| 236 | (substitute-key-definition [f50] [A-f2] function-key-map) | ||
| 237 | (substitute-key-definition [f51] [A-f3] function-key-map) | ||
| 238 | (substitute-key-definition [f52] [A-f4] function-key-map) | ||
| 239 | (substitute-key-definition [f53] [A-f5] function-key-map) | ||
| 240 | (substitute-key-definition [f54] [A-f6] function-key-map) | ||
| 241 | (substitute-key-definition [f55] [A-f7] function-key-map) | ||
| 242 | (substitute-key-definition [f56] [A-f8] function-key-map) | ||
| 243 | (substitute-key-definition [f57] [A-f9] function-key-map) | ||
| 244 | (substitute-key-definition [f58] [A-f10] function-key-map) | ||
| 245 | (substitute-key-definition [f59] [A-f11] function-key-map) | ||
| 246 | (substitute-key-definition [f60] [A-f12] function-key-map) | ||
| 247 | |||
| 183 | ;; Set up colors, for those versions of xterm that support it. | 248 | ;; Set up colors, for those versions of xterm that support it. |
| 184 | (defvar xterm-standard-colors | 249 | (defvar xterm-standard-colors |
| 185 | ;; The names in the comments taken from XTerm-col.ad in the xterm | 250 | ;; The names in the comments taken from XTerm-col.ad in the xterm |
diff --git a/lispref/ChangeLog b/lispref/ChangeLog index bf1149ee4af..db3dc76acb8 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog | |||
| @@ -1,3 +1,7 @@ | |||
| 1 | 2005-04-25 Luc Teirlinck <teirllm@auburn.edu> | ||
| 2 | |||
| 3 | * hooks.texi (Standard Hooks): Most minor modes have mode hooks too. | ||
| 4 | |||
| 1 | 2005-04-24 Eli Zaretskii <eliz@gnu.org> | 5 | 2005-04-24 Eli Zaretskii <eliz@gnu.org> |
| 2 | 6 | ||
| 3 | * syntax.texi (Syntax Table Internals): Elaborate documentation of | 7 | * syntax.texi (Syntax Table Internals): Elaborate documentation of |
diff --git a/lispref/hooks.texi b/lispref/hooks.texi index ea7c6605796..d4a559adf37 100644 --- a/lispref/hooks.texi +++ b/lispref/hooks.texi | |||
| @@ -19,7 +19,8 @@ to put a new function on such a hook is to call @code{add-hook}. | |||
| 19 | Every major mode defines a mode hook named | 19 | Every major mode defines a mode hook named |
| 20 | @samp{@var{modename}-mode-hook}. The major mode command runs this | 20 | @samp{@var{modename}-mode-hook}. The major mode command runs this |
| 21 | normal hook with @code{run-mode-hooks} as the very last thing it does. | 21 | normal hook with @code{run-mode-hooks} as the very last thing it does. |
| 22 | @xref{Mode Hooks}. Mode hooks are omitted in the list below. | 22 | @xref{Mode Hooks}. Most minor modes have mode hooks too. Mode hooks |
| 23 | are omitted in the list below. | ||
| 23 | 24 | ||
| 24 | The variables whose names end in @samp{-hooks} or @samp{-functions} are | 25 | The variables whose names end in @samp{-hooks} or @samp{-functions} are |
| 25 | usually @dfn{abnormal hooks}; their values are lists of functions, but | 26 | usually @dfn{abnormal hooks}; their values are lists of functions, but |
diff --git a/man/ChangeLog b/man/ChangeLog index a7bcda73d0d..562e275faa5 100644 --- a/man/ChangeLog +++ b/man/ChangeLog | |||
| @@ -1,3 +1,9 @@ | |||
| 1 | 2005-04-25 Luc Teirlinck <teirllm@auburn.edu> | ||
| 2 | |||
| 3 | * frames.texi (Tooltips): Tooltip mode is enabled by default. | ||
| 4 | Delete redundant reference to tooltip Custom group. It is | ||
| 5 | referred too again in the next paragraph. | ||
| 6 | |||
| 1 | 2005-04-24 Richard M. Stallman <rms@gnu.org> | 7 | 2005-04-24 Richard M. Stallman <rms@gnu.org> |
| 2 | 8 | ||
| 3 | * ack.texi: Delete info about lazy-lock.el and fast-lock.el. | 9 | * ack.texi: Delete info about lazy-lock.el and fast-lock.el. |
diff --git a/man/frames.texi b/man/frames.texi index af91cced8ce..f95d65a85fa 100644 --- a/man/frames.texi +++ b/man/frames.texi | |||
| @@ -973,10 +973,9 @@ sometimes known as @dfn{balloon help}.) Help text may be available for | |||
| 973 | menu items too. | 973 | menu items too. |
| 974 | 974 | ||
| 975 | @findex tooltip-mode | 975 | @findex tooltip-mode |
| 976 | To use tooltips, enable Tooltip mode with the command @kbd{M-x | 976 | You can toggle Tooltip mode with the command @kbd{M-x tooltip-mode}. |
| 977 | tooltip-mode}. The customization group @code{tooltip} controls | 977 | When Tooltip mode is disabled, the help text is displayed in the echo |
| 978 | various aspects of how tooltips work. When Tooltip mode is disabled, | 978 | area instead. |
| 979 | the help text is displayed in the echo area instead. | ||
| 980 | 979 | ||
| 981 | @vindex tooltip-delay | 980 | @vindex tooltip-delay |
| 982 | The variables @code{tooltip-delay} specifies how long Emacs should | 981 | The variables @code{tooltip-delay} specifies how long Emacs should |
diff --git a/src/ChangeLog b/src/ChangeLog index 834dcf4ab82..9fc43e0bd4a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,13 @@ | |||
| 1 | 2005-04-26 Kenichi Handa <handa@m17n.org> | ||
| 2 | |||
| 3 | * fns.c (char_table_range): New function. | ||
| 4 | (Fchar_table_range): Signal an error if characters in the range | ||
| 5 | have inconsistent values. Don't check the parent. | ||
| 6 | |||
| 7 | 2005-04-25 Kenichi Handa <handa@m17n.org> | ||
| 8 | |||
| 9 | * fontset.c (fontset_set): Fix previous change. | ||
| 10 | |||
| 1 | 2005-04-24 Richard M. Stallman <rms@gnu.org> | 11 | 2005-04-24 Richard M. Stallman <rms@gnu.org> |
| 2 | 12 | ||
| 3 | * indent.c (Fvertical_motion): Bind fontification-functions to nil. | 13 | * indent.c (Fvertical_motion): Bind fontification-functions to nil. |
| @@ -2508,50 +2508,143 @@ DEFUN ("set-char-table-extra-slot", Fset_char_table_extra_slot, | |||
| 2508 | return XCHAR_TABLE (char_table)->extras[XINT (n)] = value; | 2508 | return XCHAR_TABLE (char_table)->extras[XINT (n)] = value; |
| 2509 | } | 2509 | } |
| 2510 | 2510 | ||
| 2511 | static Lisp_Object | ||
| 2512 | char_table_range (table, from, to, defalt) | ||
| 2513 | Lisp_Object table; | ||
| 2514 | int from, to; | ||
| 2515 | Lisp_Object defalt; | ||
| 2516 | { | ||
| 2517 | Lisp_Object val; | ||
| 2518 | |||
| 2519 | if (! NILP (XCHAR_TABLE (table)->defalt)) | ||
| 2520 | defalt = XCHAR_TABLE (table)->defalt; | ||
| 2521 | val = XCHAR_TABLE (table)->contents[from]; | ||
| 2522 | if (SUB_CHAR_TABLE_P (val)) | ||
| 2523 | val = char_table_range (val, 32, 127, defalt); | ||
| 2524 | else if (NILP (val)) | ||
| 2525 | val = defalt; | ||
| 2526 | for (from++; from <= to; from++) | ||
| 2527 | { | ||
| 2528 | Lisp_Object this_val; | ||
| 2529 | |||
| 2530 | this_val = XCHAR_TABLE (table)->contents[from]; | ||
| 2531 | if (SUB_CHAR_TABLE_P (this_val)) | ||
| 2532 | this_val = char_table_range (this_val, 32, 127, defalt); | ||
| 2533 | else if (NILP (this_val)) | ||
| 2534 | this_val = defalt; | ||
| 2535 | if (! EQ (val, this_val)) | ||
| 2536 | error ("Characters in the range have inconsistent values"); | ||
| 2537 | } | ||
| 2538 | return val; | ||
| 2539 | } | ||
| 2540 | |||
| 2541 | |||
| 2511 | DEFUN ("char-table-range", Fchar_table_range, Schar_table_range, | 2542 | DEFUN ("char-table-range", Fchar_table_range, Schar_table_range, |
| 2512 | 2, 2, 0, | 2543 | 2, 2, 0, |
| 2513 | doc: /* Return the value in CHAR-TABLE for a range of characters RANGE. | 2544 | doc: /* Return the value in CHAR-TABLE for a range of characters RANGE. |
| 2514 | RANGE should be nil (for the default value) | 2545 | RANGE should be nil (for the default value) |
| 2515 | a vector which identifies a character set or a row of a character set, | 2546 | a vector which identifies a character set or a row of a character set, |
| 2516 | a character set name, or a character code. */) | 2547 | a character set name, or a character code. |
| 2548 | If the characters in the specified range have different values, | ||
| 2549 | an error is signalled. | ||
| 2550 | |||
| 2551 | Note that this function doesn't check the parent of CHAR_TABLE. */) | ||
| 2517 | (char_table, range) | 2552 | (char_table, range) |
| 2518 | Lisp_Object char_table, range; | 2553 | Lisp_Object char_table, range; |
| 2519 | { | 2554 | { |
| 2555 | int charset_id, c1 = 0, c2 = 0; | ||
| 2556 | int size, i; | ||
| 2557 | Lisp_Object ch, val, current_default; | ||
| 2558 | |||
| 2520 | CHECK_CHAR_TABLE (char_table); | 2559 | CHECK_CHAR_TABLE (char_table); |
| 2521 | 2560 | ||
| 2522 | if (EQ (range, Qnil)) | 2561 | if (EQ (range, Qnil)) |
| 2523 | return XCHAR_TABLE (char_table)->defalt; | 2562 | return XCHAR_TABLE (char_table)->defalt; |
| 2524 | else if (INTEGERP (range)) | 2563 | if (INTEGERP (range)) |
| 2525 | return Faref (char_table, range); | 2564 | { |
| 2565 | int c = XINT (range); | ||
| 2566 | if (! CHAR_VALID_P (c, 0)) | ||
| 2567 | error ("Invalid character code: %d", c); | ||
| 2568 | ch = range; | ||
| 2569 | SPLIT_CHAR (c, charset_id, c1, c2); | ||
| 2570 | } | ||
| 2526 | else if (SYMBOLP (range)) | 2571 | else if (SYMBOLP (range)) |
| 2527 | { | 2572 | { |
| 2528 | Lisp_Object charset_info; | 2573 | Lisp_Object charset_info; |
| 2529 | 2574 | ||
| 2530 | charset_info = Fget (range, Qcharset); | 2575 | charset_info = Fget (range, Qcharset); |
| 2531 | CHECK_VECTOR (charset_info); | 2576 | CHECK_VECTOR (charset_info); |
| 2532 | 2577 | charset_id = XINT (XVECTOR (charset_info)->contents[0]); | |
| 2533 | return Faref (char_table, | 2578 | ch = Fmake_char_internal (make_number (charset_id), |
| 2534 | make_number (XINT (XVECTOR (charset_info)->contents[0]) | 2579 | make_number (0), make_number (0)); |
| 2535 | + 128)); | ||
| 2536 | } | 2580 | } |
| 2537 | else if (VECTORP (range)) | 2581 | else if (VECTORP (range)) |
| 2538 | { | 2582 | { |
| 2539 | if (XVECTOR (range)->size == 1) | 2583 | size = ASIZE (range); |
| 2540 | return Faref (char_table, | 2584 | if (size == 0) |
| 2541 | make_number (XINT (XVECTOR (range)->contents[0]) + 128)); | 2585 | args_out_of_range (range, 0); |
| 2542 | else | 2586 | CHECK_NUMBER (AREF (range, 0)); |
| 2587 | charset_id = XINT (AREF (range, 0)); | ||
| 2588 | if (size > 1) | ||
| 2543 | { | 2589 | { |
| 2544 | int size = XVECTOR (range)->size; | 2590 | CHECK_NUMBER (AREF (range, 1)); |
| 2545 | Lisp_Object *val = XVECTOR (range)->contents; | 2591 | c1 = XINT (AREF (range, 1)); |
| 2546 | Lisp_Object ch = Fmake_char_internal (size <= 0 ? Qnil : val[0], | 2592 | if (size > 2) |
| 2547 | size <= 1 ? Qnil : val[1], | 2593 | { |
| 2548 | size <= 2 ? Qnil : val[2]); | 2594 | CHECK_NUMBER (AREF (range, 2)); |
| 2549 | return Faref (char_table, ch); | 2595 | c2 = XINT (AREF (range, 2)); |
| 2596 | } | ||
| 2550 | } | 2597 | } |
| 2598 | |||
| 2599 | /* This checks if charset_id, c0, and c1 are all valid or not. */ | ||
| 2600 | ch = Fmake_char_internal (make_number (charset_id), | ||
| 2601 | make_number (c1), make_number (c2)); | ||
| 2551 | } | 2602 | } |
| 2552 | else | 2603 | else |
| 2553 | error ("Invalid RANGE argument to `char-table-range'"); | 2604 | error ("Invalid RANGE argument to `char-table-range'"); |
| 2554 | return Qt; | 2605 | |
| 2606 | if (c1 > 0 && (CHARSET_DIMENSION (charset_id) == 1 || c2 > 0)) | ||
| 2607 | { | ||
| 2608 | /* Fully specified character. */ | ||
| 2609 | Lisp_Object parent = XCHAR_TABLE (char_table)->parent; | ||
| 2610 | |||
| 2611 | XCHAR_TABLE (char_table)->parent = Qnil; | ||
| 2612 | val = Faref (char_table, ch); | ||
| 2613 | XCHAR_TABLE (char_table)->parent = parent; | ||
| 2614 | return val; | ||
| 2615 | } | ||
| 2616 | |||
| 2617 | current_default = XCHAR_TABLE (char_table)->defalt; | ||
| 2618 | if (charset_id == CHARSET_ASCII | ||
| 2619 | || charset_id == CHARSET_8_BIT_CONTROL | ||
| 2620 | || charset_id == CHARSET_8_BIT_GRAPHIC) | ||
| 2621 | { | ||
| 2622 | int from, to, defalt; | ||
| 2623 | |||
| 2624 | if (charset_id == CHARSET_ASCII) | ||
| 2625 | from = 0, to = 127, defalt = CHAR_TABLE_DEFAULT_SLOT_ASCII; | ||
| 2626 | else if (charset_id == CHARSET_8_BIT_CONTROL) | ||
| 2627 | from = 128, to = 159, defalt = CHAR_TABLE_DEFAULT_SLOT_8_BIT_CONTROL; | ||
| 2628 | else | ||
| 2629 | from = 160, to = 255, defalt = CHAR_TABLE_DEFAULT_SLOT_8_BIT_GRAPHIC; | ||
| 2630 | if (! NILP (XCHAR_TABLE (char_table)->contents[defalt])) | ||
| 2631 | current_default = XCHAR_TABLE (char_table)->contents[defalt]; | ||
| 2632 | return char_table_range (char_table, from, to, current_default); | ||
| 2633 | } | ||
| 2634 | |||
| 2635 | val = XCHAR_TABLE (char_table)->contents[128 + charset_id]; | ||
| 2636 | if (! SUB_CHAR_TABLE_P (val)) | ||
| 2637 | return (NILP (val) ? current_default : val); | ||
| 2638 | if (! NILP (XCHAR_TABLE (val)->defalt)) | ||
| 2639 | current_default = XCHAR_TABLE (val)->defalt; | ||
| 2640 | if (c1 == 0) | ||
| 2641 | return char_table_range (val, 32, 127, current_default); | ||
| 2642 | val = XCHAR_TABLE (val)->contents[c1]; | ||
| 2643 | if (! SUB_CHAR_TABLE_P (val)) | ||
| 2644 | return (NILP (val) ? current_default : val); | ||
| 2645 | if (! NILP (XCHAR_TABLE (val)->defalt)) | ||
| 2646 | current_default = XCHAR_TABLE (val)->defalt; | ||
| 2647 | return char_table_range (val, 32, 127, current_default); | ||
| 2555 | } | 2648 | } |
| 2556 | 2649 | ||
| 2557 | DEFUN ("set-char-table-range", Fset_char_table_range, Sset_char_table_range, | 2650 | DEFUN ("set-char-table-range", Fset_char_table_range, Sset_char_table_range, |
diff --git a/src/fontset.c b/src/fontset.c index ee6ef213af7..8d4507530fa 100644 --- a/src/fontset.c +++ b/src/fontset.c | |||
| @@ -356,7 +356,7 @@ fontset_set (fontset, c, newelt) | |||
| 356 | if (!SUB_CHAR_TABLE_P (*elt)) | 356 | if (!SUB_CHAR_TABLE_P (*elt)) |
| 357 | { | 357 | { |
| 358 | Lisp_Object val = *elt; | 358 | Lisp_Object val = *elt; |
| 359 | *elt = make_sub_char_table (val); | 359 | *elt = make_sub_char_table (Qnil); |
| 360 | XCHAR_TABLE (*elt)->defalt = val; | 360 | XCHAR_TABLE (*elt)->defalt = val; |
| 361 | } | 361 | } |
| 362 | elt = &XCHAR_TABLE (*elt)->contents[code[i]]; | 362 | elt = &XCHAR_TABLE (*elt)->contents[code[i]]; |