aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaroly Lorentey2005-04-26 12:17:42 +0000
committerKaroly Lorentey2005-04-26 12:17:42 +0000
commit030cd69ff13d95f439ca0d13a03215fc45959789 (patch)
tree4554735b53848a05f107b8b421a898e0e9fe7ee6
parent3379bbb24d58ecd8dca0c96b976b7031167e76a5 (diff)
parent35b1b8abe3d3833ecb4b4cee75b7340ffb707d65 (diff)
downloademacs-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/ChangeLog13
-rw-r--r--etc/NEWS7
-rw-r--r--etc/TUTORIAL.ru1191
-rw-r--r--etc/e/etermbin1089 -> 1149 bytes
-rw-r--r--etc/e/eterm.ti2
-rw-r--r--lisp/ChangeLog32
-rw-r--r--lisp/calc/calc-help.el14
-rw-r--r--lisp/calc/calc.el2
-rw-r--r--lisp/font-core.el11
-rw-r--r--lisp/font-lock.el3
-rw-r--r--lisp/international/mule-cmds.el3
-rw-r--r--lisp/term.el10
-rw-r--r--lisp/term/xterm.el97
-rw-r--r--lispref/ChangeLog4
-rw-r--r--lispref/hooks.texi3
-rw-r--r--man/ChangeLog6
-rw-r--r--man/frames.texi7
-rw-r--r--src/ChangeLog10
-rw-r--r--src/fns.c129
-rw-r--r--src/fontset.c2
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 @@
12005-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
82005-04-25 Alex Ott <ott@jet.msk.su>
9
10 * TUTORIAL.ru: Update.
11
12005-04-13 Pavel Jan,Am(Bk <Pavel@Janik.cz> 122005-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
172005-04-10 Masatake YAMATO <jet@gyve.org> 282005-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
222005-04-08 Kenichi Handa <handa@m17n.org> 332005-04-08 Kenichi Handa <handa@m17n.org>
diff --git a/etc/NEWS b/etc/NEWS
index 12fb879ddb6..1ece34d1892 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -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.
111When emacs is running in an xterm more key bindings are available. The
112following should work:
113{C,S,C-S,A}-{right,left,up,down,prior,next,delete,insert,F1-12}.
114These key bindings work on xterm from X.org 6.8, they might not work on
115some 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
111automatically activated if you select Thai as a language 118automatically activated if you select Thai as a language
112environment) changes key bindings of most word-oriented commands to 119environment) 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. Условия распространения приведены в конце файла
2Copyright (c) 1985, 1996, 2004 Free Software Foundation, Inc. 2Copyright (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, мы будем 7EDIT). В дальнейшем, вместо того, чтобы каждый раз писать 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Есть несколько способов выполнения этой операции. Вы можете использовать
59C-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Вам будет несложно запомнить эти команды по первым буквам соответствующих
76F-вперед (forward). Это основные команды позиционирования курсора, которыми 81слов -- B-назад (backward) и F-вперед (forward). Это основные команды
77Вы будете пользоваться ВСЕГДА, так что будет неплохо их выучить. 82позиционирования курсора, которыми Вы будете пользоваться ВСЕГДА, так что
83будет неплохо их выучить.
78 84
79>> Нажмите несколько раз C-n, чтобы опустить курсор вниз на эту строку. 85>> Нажмите несколько раз C-n, чтобы опустить курсор вниз на эту строку.
80 86
@@ -94,8 +100,9 @@ character), который отделяет ее от следующей строки. Последняя строка в
94C-f может перемещать курсор через символ перевода строки так же, как и C-b. 100C-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аргумент можно задать другим способом: наберите цифры, удерживая клавишу
192META. Мы рекомендуем освоить использование C-u, поскольку эта 199META. Мы рекомендуем привыкнуть к использованию 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быть видна прямоугольная область, именуемая полосой прокрутки, которая видна
220Emacs. Вы можете прокручивать текст, используя манипулятор мышь. 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 для 241C-n, но легче в наборе и запоминании. Вы так же можете использовать
234передвижения по словам, и C-up и C-down для передвижения по блокам (т.е. 242сочетания C-left и C-right для передвижения по словам, и C-up и C-down для
235параграфам, если вы редактируете текст). Если у вас есть кнопки помеченные 243передвижения по блокам (т.е. параграфам, если вы редактируете текст). Если
236HOME (или 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Все эти команды могут использовать цифровой аргумент, так, как об этом
243CONTROL или 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
286Emacs может иметь несколько окон, каждое из которых отображает свой текст. 297Emacs может отображать информацию в нескольких окнах, каждое из которых
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окнами, буферами, файлами и аналогичными вещами. Эти команды состоят из
3093 или 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> (одно из этих
380C-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 два раза не сделает этого. 430C-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. После того, как вы вернули последний
438M-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 отменяет изменения, сделанные одной командой; если повторить
463C-x u несколько раз подряд, каждый раз будет отменяться еще одна команда. 487C-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
473C-_ альтернативная команда отмены; она работает также как и C-x u, но легче 497C-_ -- это еще команда отмены; она работает точно также как и 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оригинальный файл с измененным именем, чтобы вы могли позже решить, что ваши 522Emacs оставляет оригинальный файл, но с другим именем, так что вы позже
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
515Emacs попросит вас ввести имя файла. Имя файла вы наберете в нижней строке 539Emacs попросит вас ввести имя файла. Имя файла набирается в нижней строке
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 в файл. В первый раз, когда вы это
538Emacs переименует оригинальный файл в файл с новым именем, чтобы он не 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чтобы узнать, как бороться с этой "особенностью". 578Entry 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
577Emacs сохраняет текст каждого файла внутри в объекте, называемом "буфер" 602Emacs хранит текст каждого файла внутри в объекте, называемом "буфер"
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
603C-x s спрашивает вас о каждом буфере, который содержит несохраненные 654C-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). Есть две 667meta- символы. 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 676C-x C-f -- открыть файл, и C-x C-s -- сохранить файл. Другой пример --
627C-c. (Не волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c 677команда завершения работы с Emacs -- C-x C-c. (Не волнуйтесь о том, что вы
628предлагает сохранить изменения перед тем, как удалит буфер Emacs.) 678потеряете сделанные изменения, C-x C-c предлагает сохранить изменения перед
679удалением буфера Emacs).
629 680
630C-z это команда *временного* выхода из Emacs -- вы можете вернуться в ту же 681C-z -- это команда *временного* выхода из Emacs. Вы можете вернуться в ту же
631сессию Emacs позже. 682сессию Emacs позже.
632 683
633На системах, которые допускают это, C-z "приостанавливают" ("suspends") 684На системах, которые реализуют эту возможность, команда C-z
634Emacs; возвращают в оболочку (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 вместо выхода их него. 699Emacs. Обычно, если вы не собираетесь выходить из системы, то лучше
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 Отмена
662M-x, Emacs предложит вам ввести имя команды в нижней строке экрана; в нашем 713
663случае, "replace-string". Только наберите "repl s<TAB>", и Emacs дополнит 714Именованные команды -- это команды, которые используются гораздо реже, или
664имя. (<TAB> -- это клавиша табуляции, обычно находящаяся выше клавиш 715используются только в определенных режимах. В качестве примера можно
665CapsLock или 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 788mode").
733Emacs имеет много различных основных режимов. Некоторые из режимов означают, 789
734что вы редактируете текст на различном языке и/или различные виды текста, 790Emacs имеет много различных основных режимов. Некоторые из режимов
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 801M-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Если режим включен -- команда его выключит, если выключен -- включит. Мы 839M-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
808Emacs умеет искать строки (непрерывные группы символов или слова) вперед 866Emacs умеет искать строки (непрерывные группы символов или слова) вперед или
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 901Entry 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
855C-s начинает поиск и смотрит на любые вхождения искомой строки ПОСЛЕ текущей 915C-s начинает поиск и ищет любые вхождения искомой строки ПОСЛЕ текущей
856позиции курсора. Если вы хотите найти что-то ранее в тексте, нажмите C-r. 916позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите
857Все, что мы говорили о C-s, применимо и к C-r, за исключением противоположного 917C-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курсор в окне редактирования и последовательно продвигаться во втором,
892C-M-v. 952используя C-M-v.
893 953
894C-M-v - пример CONTROL-META символа. Если у вас есть настоящая кнопка META 954C-M-v -- пример CONTROL-META символа. Если у вас есть настоящая кнопка META
895(Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, 955(Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, не
896не отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой, 956отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой,
897CONTROL или META, поскольку эти кнопки модифицируют тип символа. 957CONTROL или META, поскольку эти кнопки модифицируют тип символа.
898 958
899Если у вас нет настоящей кнопки META, и вы используете ESC вместо нее, 959Если у вас нет настоящей кнопки META, и вместо нее вы используете <ESC>, то
900порядок должен быть следующим: вы должны нажать ESC, а затем CTRL-v; 960порядок должен быть следующим: вы должны нажать <ESC>, а затем CTRL-v;
901CONTROL-ESC v не будет работать. Потому, что ESC имеет свой собственный 961CONTROL-<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и невозможно всю ее представить здесь. Однако, вы можете выучить больше 1009Emacs, и невозможно всю ее представить здесь. Однако, вы можете выучить
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 и (если у вас нет кнопки
981EDIT или ALT) <ESC>v также будут доступны после C-h c. 1043META или 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может определить его из того, что вы уже набрали. Дополнения описаны в
1104Info-версии руководства по Emacs в разделе "Completion".
1105
1106Dired позволяет вам отображать список файлов в каталоге (а также
1107подкаталогах, в зависимости от настройки), перемещаться по списку файлов,
1108открывать их, переименовывать, удалять и выполнять прочие действия над
1109файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired".
1110
1111В руководстве также описаны прочие возможности Emacs.
1033 1112
1034 1113
1035* ЗАКЛЮЧЕНИЕ 1114* ЗАКЛЮЧЕНИЕ
1036------------ 1115------------
1037 1116
1038Запомните, чтобы совсем выйти из Emacs, используется сочетание клавиш 1117Запомните, что для того чтобы совсем выйти из Emacs, используется сочетание
1039C-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
1056Copyright (c) 1985, 1996 Free Software Foundation 1135Copyright (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 @@
1eterm, 1eterm|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 @@
12005-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
72005-04-26 Kenichi Handa <handa@m17n.org>
8
9 * international/mule-cmds.el (select-safe-coding-system): Fix
10 previous change.
11
122005-04-26 Lute Kamstra <lute@gnu.org>
13
14 * calc/calc.el (calc-trail-mode): Don't set font-lock-defaults.
15
162005-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
212005-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
272005-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
12005-04-25 Kenichi Handa <handa@m17n.org> 332005-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.
33Defaults should be of the form: 33Defaults 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
37KEYWORDS may be a symbol (a variable or function whose value is the keywords to 37KEYWORDS may be a symbol (a variable or function whose value is the keywords to
38use for fontification) or a list of symbols. If KEYWORDS-ONLY is non-nil, 38use 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
66around a text block relevant to that mode). 66around a text block relevant to that mode).
67 67
68Other variables include that for syntactic keyword fontification, 68Other variables include that for syntactic keyword fontification,
69`font-lock-syntactic-keywords' 69`font-lock-syntactic-keywords' and those for buffer-specialized fontification
70and those for buffer-specialized fontification functions, 70functions, `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.
497The function is called with a single parameter (the state as returned by 497The 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
499should return a face.") 499should 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
649MODE should be a symbol, the major mode command name, such as `c-mode' 650MODE should be a symbol, the major mode command name, such as `c-mode'
650or nil. If nil, highlighting keywords are added for the current buffer. 651or nil. If nil, highlighting keywords are added for the current buffer.
651KEYWORDS should be a list; see the variable `font-lock-keywords'. 652KEYWORDS 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 @@
12005-04-25 Luc Teirlinck <teirllm@auburn.edu>
2
3 * hooks.texi (Standard Hooks): Most minor modes have mode hooks too.
4
12005-04-24 Eli Zaretskii <eliz@gnu.org> 52005-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}.
19Every major mode defines a mode hook named 19Every 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
21normal hook with @code{run-mode-hooks} as the very last thing it does. 21normal 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
23are omitted in the list below.
23 24
24The variables whose names end in @samp{-hooks} or @samp{-functions} are 25The variables whose names end in @samp{-hooks} or @samp{-functions} are
25usually @dfn{abnormal hooks}; their values are lists of functions, but 26usually @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 @@
12005-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
12005-04-24 Richard M. Stallman <rms@gnu.org> 72005-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
973menu items too. 973menu 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}.
977tooltip-mode}. The customization group @code{tooltip} controls 977When Tooltip mode is disabled, the help text is displayed in the echo
978various aspects of how tooltips work. When Tooltip mode is disabled, 978area instead.
979the 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 @@
12005-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
72005-04-25 Kenichi Handa <handa@m17n.org>
8
9 * fontset.c (fontset_set): Fix previous change.
10
12005-04-24 Richard M. Stallman <rms@gnu.org> 112005-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.
diff --git a/src/fns.c b/src/fns.c
index b93ebb65234..f0dff278117 100644
--- a/src/fns.c
+++ b/src/fns.c
@@ -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
2511static Lisp_Object
2512char_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
2511DEFUN ("char-table-range", Fchar_table_range, Schar_table_range, 2542DEFUN ("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.
2514RANGE should be nil (for the default value) 2545RANGE should be nil (for the default value)
2515a vector which identifies a character set or a row of a character set, 2546a vector which identifies a character set or a row of a character set,
2516a character set name, or a character code. */) 2547a character set name, or a character code.
2548If the characters in the specified range have different values,
2549an error is signalled.
2550
2551Note 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
2557DEFUN ("set-char-table-range", Fset_char_table_range, Sset_char_table_range, 2650DEFUN ("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]];