From eaf07ced98808b82c0db7fc75a91c1c791fe6206 Mon Sep 17 00:00:00 2001 From: Thien-Thi Nguyen Date: Fri, 1 Feb 2008 05:51:06 +0000 Subject: [PATCH 01/20] (vc-update): Fix bug: Specify branch tip as vc-checkout REVISION. --- lisp/ChangeLog | 5 +++++ lisp/vc.el | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 407e9496e13..4f046690813 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2008-02-01 Thien-Thi Nguyen + + * vc.el (vc-update): Fix bug: Specify branch tip as + vc-checkout REVISION. Reported by Dan Nicolaescu. + 2008-02-01 Stefan Monnier * simple.el (reindent-then-newline-and-indent): Be careful about the diff --git a/lisp/vc.el b/lisp/vc.el index e7fc52b5019..e221044b769 100644 --- a/lisp/vc.el +++ b/lisp/vc.el @@ -2597,7 +2597,7 @@ the current branch are merged into the working file." (vc-buffer-sync nil) (let ((file buffer-file-name)) (if (vc-up-to-date-p file) - (vc-checkout file nil "") + (vc-checkout file nil t) (if (eq (vc-checkout-model file) 'locking) (if (eq (vc-state file) 'edited) (error From 299db7f8cf9dc51097b74cb0aef3b0f03220b058 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Fri, 1 Feb 2008 15:19:59 +0000 Subject: [PATCH 02/20] (image-library-alist): Prefer libpng12 to libpng13, because the latter is in fact a 1.2.8 build distributed with GTK+ (as of today, the most recent libpng is 1.2.24). --- lisp/ChangeLog | 8 +++++++- lisp/term/w32-win.el | 4 +++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4f046690813..e0d56c2a637 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-02-01 Juanma Barranquero + + * term/w32-win.el (image-library-alist): Prefer libpng12 to libpng13, + because the latter is in fact a 1.2.8 build distributed with GTK+ (as + of today, the most recent libpng is 1.2.24). + 2008-02-01 Thien-Thi Nguyen * vc.el (vc-update): Fix bug: Specify branch tip as @@ -23,7 +29,7 @@ 2008-01-31 Martin Rudalics * mail/rmail.el (rmail-highlight): Fix specification. - Reported by: pod . + Reported by pod . 2008-01-31 Jason Rumney diff --git a/lisp/term/w32-win.el b/lisp/term/w32-win.el index d9a87e35079..0ba22896daf 100644 --- a/lisp/term/w32-win.el +++ b/lisp/term/w32-win.el @@ -1254,7 +1254,9 @@ pop-up menu are unaffected by `w32-list-proportional-fonts')." ;;; Set default known names for image libraries (setq image-library-alist '((xpm "libxpm.dll" "xpm4.dll" "libXpm-nox4.dll") - (png "libpng13d.dll" "libpng13.dll" "libpng12d.dll" "libpng12.dll" "libpng.dll") + (png "libpng12d.dll" "libpng12.dll" "libpng.dll" + ;; these are libpng 1.2.8 from GTK+ + "libpng13d.dll" "libpng13.dll") (jpeg "jpeg62.dll" "libjpeg.dll" "jpeg-62.dll" "jpeg.dll") (tiff "libtiff3.dll" "libtiff.dll") (gif "giflib4.dll" "libungif4.dll" "libungif.dll"))) From bee68a7abe5814bb2323d099ded319cd1f607dce Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 1 Feb 2008 23:21:29 +0000 Subject: [PATCH 03/20] * progmodes/etags.el (tags-loop-revert-buffers): Value `ask' means to query the user interactively. (next-file): Implement it. --- lisp/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e0d56c2a637..f0c5571f80b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2008-02-01 Chong Yidong + + * progmodes/etags.el (tags-loop-revert-buffers): Value `ask' means + to query the user interactively. + (next-file): Implement it. + 2008-02-01 Juanma Barranquero * term/w32-win.el (image-library-alist): Prefer libpng12 to libpng13, From 6272cd3f01c988047f7749a1b3268ef437906548 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 1 Feb 2008 23:21:56 +0000 Subject: [PATCH 04/20] (tags-loop-revert-buffers): Value `ask' means to query the user interactively. (next-file): Implement it. --- lisp/progmodes/etags.el | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index 0a66560f827..74cf07039a2 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1629,12 +1629,14 @@ where they were found." (and (search-forward "\177" (save-excursion (end-of-line) (point)) t) (re-search-backward re bol t))))) -(defcustom tags-loop-revert-buffers nil - "*Non-nil means tags-scanning loops should offer to reread changed files. -These loops normally read each file into Emacs, but when a file -is already visited, they use the existing buffer. -When this flag is non-nil, they offer to revert the existing buffer -in the case where the file has changed since you visited it." +(defcustom tags-loop-revert-buffers 'ask + "Whether the tags-scanning loop should reread changed files. +This loop normally reads each file into Emacs, but when a file is +already visited, it uses the existing buffer. +If this variable is nil, the loop uses the existing buffer even +if the file has changed since you visited it. +If the value is `ask', the loop offers to revert the buffer. +Any other non-nil value means to revert the buffer automatically." :type 'boolean :group 'etags) @@ -1696,6 +1698,14 @@ if the file was newly read in, the value is the filename." ;; if the files have changed on disk. (and buffer tags-loop-revert-buffers (not (verify-visited-file-modtime buffer)) + (or (not (eq tags-loop-revert-buffers 'ask)) + noninteractive + (y-or-n-p + (format + (if (buffer-modified-p buffer) + "File %s changed on disk. Discard your edits? " + "File %s changed on disk. Reread from disk? ") + next))) (with-current-buffer buffer (revert-buffer t))) (if (not (and new novisit)) From 9a5ec44e0a7d138529a51fc79ac5ba733e496d4f Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 1 Feb 2008 23:28:00 +0000 Subject: [PATCH 05/20] *** If tags-loop-revert-buffers has the value `ask', the tags-scanning loop queries the user interactively if an already-visited file has been changed since the last visit. The new default value is `ask'. --- etc/NEWS | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index b6d2cee7b8c..6ad8fa48b0a 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -85,6 +85,12 @@ customize it with the new option `desktop-load-locked-desktop'. When saving, desktop.el warns about attempts to overwrite a desktop file if it determines that the desktop being saved is not an update of the one on disk. +** Etags changes. + +*** If tags-loop-revert-buffers has the value `ask', the tags-scanning +loop queries the user interactively if an already-visited file has +been changed since the last visit. The new default value is `ask'. + * New Modes and Packages in Emacs 22.2 ** bibtex-style-mode helps you write BibTeX's *.bst files. From 773b7a0d21736c77fec069e32ce9931de16e266b Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 1 Feb 2008 23:31:23 +0000 Subject: [PATCH 06/20] Revert last change. --- etc/NEWS | 6 ------ 1 file changed, 6 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index 6ad8fa48b0a..b6d2cee7b8c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -85,12 +85,6 @@ customize it with the new option `desktop-load-locked-desktop'. When saving, desktop.el warns about attempts to overwrite a desktop file if it determines that the desktop being saved is not an update of the one on disk. -** Etags changes. - -*** If tags-loop-revert-buffers has the value `ask', the tags-scanning -loop queries the user interactively if an already-visited file has -been changed since the last visit. The new default value is `ask'. - * New Modes and Packages in Emacs 22.2 ** bibtex-style-mode helps you write BibTeX's *.bst files. From 6e04a598eac95ae00e988d67f3378840f5b69c4f Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 1 Feb 2008 23:35:06 +0000 Subject: [PATCH 07/20] * progmodes/etags.el (next-file): Improve revert message. --- lisp/ChangeLog | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index f0c5571f80b..727873f9130 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,8 +1,6 @@ 2008-02-01 Chong Yidong - * progmodes/etags.el (tags-loop-revert-buffers): Value `ask' means - to query the user interactively. - (next-file): Implement it. + * progmodes/etags.el (next-file): Improve revert message. 2008-02-01 Juanma Barranquero From c61425073a531e8a2cf5ffd4bd02bdbd35868b98 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 1 Feb 2008 23:35:30 +0000 Subject: [PATCH 08/20] Undo last change. (next-file): Improve revert message. --- lisp/progmodes/etags.el | 30 +++++++++++++----------------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index 74cf07039a2..58712e33a73 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1629,14 +1629,12 @@ where they were found." (and (search-forward "\177" (save-excursion (end-of-line) (point)) t) (re-search-backward re bol t))))) -(defcustom tags-loop-revert-buffers 'ask - "Whether the tags-scanning loop should reread changed files. -This loop normally reads each file into Emacs, but when a file is -already visited, it uses the existing buffer. -If this variable is nil, the loop uses the existing buffer even -if the file has changed since you visited it. -If the value is `ask', the loop offers to revert the buffer. -Any other non-nil value means to revert the buffer automatically." +(defcustom tags-loop-revert-buffers nil + "*Non-nil means tags-scanning loops should offer to reread changed files. +These loops normally read each file into Emacs, but when a file +is already visited, they use the existing buffer. +When this flag is non-nil, they offer to revert the existing buffer +in the case where the file has changed since you visited it." :type 'boolean :group 'etags) @@ -1698,16 +1696,14 @@ if the file was newly read in, the value is the filename." ;; if the files have changed on disk. (and buffer tags-loop-revert-buffers (not (verify-visited-file-modtime buffer)) - (or (not (eq tags-loop-revert-buffers 'ask)) - noninteractive - (y-or-n-p - (format - (if (buffer-modified-p buffer) - "File %s changed on disk. Discard your edits? " - "File %s changed on disk. Reread from disk? ") - next))) + (y-or-n-p + (format + (if (buffer-modified-p buffer) + "File %s changed on disk. Discard your edits? " + "File %s changed on disk. Reread from disk? ") + next)) (with-current-buffer buffer - (revert-buffer t))) + (revert-buffer t t))) (if (not (and new novisit)) (set-buffer (find-file-noselect next novisit)) ;; Like find-file, but avoids random warning messages. From de04a3caaf69e13a0a39ed9f0c0f4d5923f35b0e Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 2 Feb 2008 10:00:12 +0000 Subject: [PATCH 09/20] Restore copyright years. Update tutorial. Fix wording. --- etc/ChangeLog | 5 + etc/TUTORIAL.ru | 511 ++++++++++++++++++++++++------------------------ 2 files changed, 263 insertions(+), 253 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index 95a4dd1be78..79bfbab7f4f 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,8 @@ +2008-02-02 Eli Zaretskii + + * TUTORIAL.ru: Restore copyright years. Update tutorial. Fix + wording. + 2008-01-31 Alex Ott * TUTORIAL.ru: Update tutorial. diff --git a/etc/TUTORIAL.ru b/etc/TUTORIAL.ru index 113ef16df40..4a2ca6b8dc6 100644 --- a/etc/TUTORIAL.ru +++ b/etc/TUTORIAL.ru @@ -1,13 +1,13 @@ -Учебник Emacs. Условия распространения приведены в конце файла +Учебник Emacs. Условия копирования приведены в конце файла. -Для управления Emacs обычно используется ключ (key -- сочетание клавиш +Для управления Emacs'ом обычно используется ключ (key -- сочетание клавиш клавиатуры и/или кнопок мыши), включающий в себя клавишу CONTROL (иногда отмечаемая как CTRL или CTL) или клавишу META (иногда помеченную как ALT или EDIT). В дальнейшем, вместо того, чтобы каждый раз писать META или CONTROL, мы будем использовать следующие сокращения: C- -- следует удерживать клавишу CONTROL, пока набирается символ - . Так, C-f должно означать: нажать клавишу CONTROL и f. + . Так, C-f должно означать: нажать клавишу CONTROL и f. M- -- следует удерживать клавишу META, пока набирается символ . Если нет клавиши META, ALT или EDIT, то нажмите , отпустите ее, а потом наберите символ . @@ -23,7 +23,7 @@ EDIT). -[Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже] +[Середина страницы оставлена пустой в учебных целях. Текст продолжается ниже] @@ -33,8 +33,8 @@ EDIT). >> Теперь нажмите C-v (просмотр следующего экрана) для перемещения на - следующий экран. (выполните эту команду удерживая клавишу CONTROL и - нажимая v). Теперь вы должны это сделать еще раз, когда закончите читать + следующий экран. (Выполните эту команду удерживая клавишу CONTROL и + нажимая v.) Теперь вы должны это сделать еще раз, когда закончите читать экран. Обратите внимание на то, что при переходе с экрана на экран перекрываются @@ -56,8 +56,9 @@ EDIT). C-v Перейти на один экран вперед M-v Перейти на один экран назад - C-l Очистить экран и отобразить все заново, разместив текст, находящийся - возле курсора, в центре экрана. (это CONTROL-L, а не CONTROL-1.) + C-l Очистить экран и отобразить все заново, + разместив текст, находящийся возле курсора, + в центре экрана. (это CONTROL-L, а не CONTROL-1.) >> Найдите курсор и запомните текст возле него. Потом нажмите C-l. Найдите курсор снова и убедитесь, что возле него все тот же текст. @@ -73,7 +74,7 @@ EDIT). Движение от экрана к экрану удобно, но как переместиться в определенное место в тексте на экране? -Есть несколько способов выполнения этой операции. Вы можете использовать +Есть несколько способов выполнения этой операции. Вы можете использовать клавиши управления курсором (стрелки), но более эффективным будет сохранение рук в их стандартной позиции и использовать команды C-p, C-b, C-f и C-n. Эти команды эквивалентны четырем клавишам перемещения курсора, как это показано @@ -88,7 +89,7 @@ EDIT). Следующая строка, C-n >> Переместите курсор на строку рядом с диаграммой, используя сочетания - клавиш C-n или C-p. Потом нажмите C-l и посмотрите как диаграмма + клавиш C-n или C-p. Потом нажмите C-l и посмотрите как диаграмма переместится в центр экрана. Вам будет несложно запомнить эти команды по первым буквам соответствующих @@ -103,8 +104,8 @@ EDIT). С-р, если он находился в середине строки. Каждая строка текста завершается символом перевода строки (Newline -character), который отделяет ее от следующей строки. Последняя строка в -вашем файле должна бы тоже завершаться символом перевода строки (но Emacs не +character), который отделяет ее от следующей строки. Лучше если последняя +строка в вашем файле тоже завершалась бы символом перевода строки (но Emacs не требует этого). >> Попробуйте использовать C-b в начале строки. Курсор должен переместиться @@ -119,8 +120,8 @@ C-f строки. Когда вы перемещаетесь за верхний или нижний край экрана, текст, находящийся -за экраном, сдвигается внутрь экрана. Это называется "прокрутка -(scrolling)". Прокрутка позволяет Emacs'у перемещать курсор в нужное место +за экраном, сдвигается внутрь экрана. Это называется "прокрутка" +(scrolling). Прокрутка позволяет Emacs'у перемещать курсор в нужное место текста без перемещения его за пределы экрана. >> Попробуйте переместить курсор за нижнюю границу экрана, используя C-n, и @@ -160,8 +161,8 @@ Control- курсор показывает место на экране в какой точке будет расположен вводимый текст. -Здесь собраны основные команды перемещения курсора, включая движение по -словам и предложениям: +Вот сводный список всех основных команд перемещения курсора, включая движение +по словам и предложениям: C-f На символ вперед C-b На символ назад @@ -194,7 +195,7 @@ Greater-than { используйте C-v, чтобы вернуться назад. >> Сейчас попробуйте M->, чтобы переместиться к концу учебника. Используйте - M-v, чтобы вернуться снова. + M-v, чтобы вернуться назад. Курсор можно перемещать клавишами управления курсора (стрелками), если ваш терминал оборудован ими. Мы рекомендуем выучить C-b, C-f, C-n и C-p по трем @@ -248,21 +249,21 @@ META. * УПРАВЛЕНИЕ КУРСОРОМ НА X-ТЕРМИНАЛЕ ------------------------------------ -Если у вас X-терминал, то для управления курсором, вам вероятно, покажется +Если у вас X-терминал, то для управления курсором, вам, вероятно, покажется более легким использование клавиш курсора на цифровой клавиатуре (справа). Стрелки влево, вправо, вверх и вниз передвигают курсор в соответствующем направлении -- они работают точно также как C-b, C-f, C-p и C-n, но легче в наборе и запоминании. Вы также можете использовать сочетания C-left и C-right для передвижения по словам, и C-up и C-down для -передвижения по блокам (т.е. параграфам, если вы редактируете текст). Если +передвижения по блокам (т.е. параграфам, если вы редактируете текст). Если у вас есть кнопки помеченные HOME (или BEGIN) и/или END, то они будут перемещать курсор в начало и конец строки, а C-home и C-end будут перемещать -в начало и конец файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, +в начало и конец файла. Если на вашей клавиатуре есть кнопки PgUp и PgDn, то вы можете использовать их для перемещения вверх и вниз постранично, аналогично использованию M-v и C-v. Все эти команды могут использовать цифровой аргумент, так, как об этом -рассказано выше. Вы можете использовать ускоренный способ ввода этого +рассказано выше. Вы можете использовать ускоренный способ ввода этого аргумента: просто нажмите CONTROL или META и наберите число. Например, для перемещения на 12 слов вправо, наберите C-1 C-2 C-right. Запомните, что так очень легко набирать, потому что вы не отпускаете кнопку CONTROL между @@ -273,7 +274,7 @@ C-n, ------------------ Если Emacs перестал реагировать на ваши команды, то вы можете избежать этого, -просто нажав C-g. Вы можете использовать C-g, чтобы остановить выполнение +просто нажав C-g. Вы можете использовать C-g, чтобы остановить выполнение команд, которые слишком долго выполняются. Вы также можете использовать C-g для отмены набранного цифрового аргумента @@ -309,13 +310,13 @@ C-n, ------ Emacs может отображать информацию в нескольких окнах, каждое из которых -отображает свой текст. Позже мы объясним как работать с несколькими окнами. -Прямо сейчас мы хотим объяснить вам как избавляться от лишних окон и -вернуться к редактированию в одном окне. Это очень просто сделать: +отображает свой текст. Позже мы объясним как работать с несколькими окнами. +А сейчас мы хотим объяснить вам как избавляться от лишних окон и +вернуться к редактированию в одном окне. Это очень просто сделать: C-x 1 Одно окно. (закрыть все другие окна). -Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит +Это CONTROL-x со следующей цифрой 1. C-x 1 развернет окно, которое содержит курсор, так, чтобы оно заняло весь экран. При этом будут удалены все остальные окна. @@ -337,24 +338,24 @@ Emacs * ВСТАВКА И УДАЛЕНИЕ -------------------- -Если вы хотите вставить текст, то просто набирайте его. Символы, которые вы +Если вы хотите вставить текст, то просто набирайте его. Символы, которые вы можете видеть, такие как A, 7, *, и пр. понимаются Emacs'ом как текст и вставляются немедленно. Нажмите (клавиша перевода каретки), чтобы вставить символ новой строки. -Вы можете удалить набранный символ, нажимая клавишу . -- +Вы можете удалить набранный символ, нажимая клавишу . -- это клавиша на клавиатуре, которую вы используете и вне Emacs для удаления -последнего набранного символа. Обычно это большая клавиша, расположенная -на несколько строк выше клавиши ; обычно она помечена как "Delete", -"Del" или "Backspace". +последнего набранного символа. Обычно это большая клавиша, расположенная +несколько выше клавиши ; обычно она помечена как "Delete", "Del" +или "Backspace". Если большая клавиша помечена как "Backspace", то это то, что вам нужно -использовать тогда, когда вы будете читать про . У вас также может -быть клавиша, помеченная как "Delete", но она имеет другую функцию, отличную -от . +использовать тогда, когда вы будете читать про . Если у вас к тому +же есть и клавиша, помеченная как "Delete", но она имеет другую функцию, +отличную от . -В основном, удаляет символ непосредственно перед текущей позицией -курсора. +Вообще говоря, удаляет символ непосредственно перед текущей +позицией курсора. >> Попробуйте выполнить это сейчас -- наберите несколько символов, а затем удалите их нажимая . Не волнуйтесь об изменениях этого файла -- @@ -367,14 +368,14 @@ Emacs продолжаться с предыдущей строки. >> Вводите текст, пока он не достигнет правой границы, и продолжайте вставку - символов. Вы увидите, как появится символ продолжения строки. + символов. Вы увидите, как появится символ продолжения строки. >> Используйте для удаления текста до тех пор, пока строка не - поместится в экран снова. Символ продолжения строки исчезнет с экрана. + поместится в экран снова. Символ продолжения строки исчезнет с экрана. Символ новой строки можно удалять точно так же, как и любой другой символ. Удаление символа новой строки между двумя строками приведет к их склейке в -одну. Если полученная строка будет слишком длинной, чтобы вместиться в +одну. Если полученная строка будет слишком длинной, чтобы вместиться в экран, то она будет отображена как строка с продолжением, как это было описано выше. @@ -390,28 +391,28 @@ Emacs >> Попробуйте проверить это -- наберите C-u 8 * для вставки ********. -Теперь вы научились основам набора текста в Emacs и исправления ошибок. Вы -также можете удалять слова и строки. Здесь приведен список операций +Теперь вы научились основам набора текста в Emacs и исправления ошибок. Вы +также можете удалять слова и строки. Здесь приведен список операций удаления: удалить символ перед курсором C-d удалить символ следующий за (над) курсором M- убить слово, стоящее перед курсором - M-d убить слово, следующее за курсором + M-d убить слово, следующее за курсором - C-k убить все от курсора до конца строки - M-k убить все до конца предложения + C-k убить все от курсора до конца строки + M-k убить все до конца предложения Заметьте, что и C-d, вместе с M- и M-d расширяют параллель, начатую C-f и M-f (да, -- это не настоящий управляющий символ, но не нужно об этом волноваться). C-k и M-k, как и C-e и M-e, проводят параллель между строками и предложениями. -Вы можете убить любую часть буфера одним методом. Переместитесь на один +Вы можете убить любую часть буфера одним методом. Переместитесь на один из концов выбранной области и нажмите C-@ или C- (одно из этих -сочетаний). Здесь обозначает клавишу пробела. Переместитесь на другой -конец области и нажмите C-w. Эта операция убьет весь текст между двумя +сочетаний). Здесь обозначает клавишу пробела. Переместитесь на другой +конец области и нажмите C-w. Эта операция убьет весь текст между двумя указанными позициями. >> Переместите курсор к букве В в начале предыдущего параграфа. @@ -438,20 +439,20 @@ Emacs строки, который следует за этой строкой. Заметьте, что первое выполнение C-k убивает содержимое строки, а второй -вызов C-k убивает саму строку и поднимает другие строки вверх. C-k +вызов C-k убивает саму строку и поднимает другие строки вверх. C-k обрабатывает числовой аргумент специальным образом -- убивает заданное -количество строк _И_ их содержимое. Это не просто повторение команды. C-u 2 +количество строк _И_ их содержимое. Это не просто повторение команды. C-u 2 C-k удалит две строки, а также завершающие их символы новой строки; двухразовое выполнение C-k не сделает этого. Возврат убитого ранее текста называется "восстановление (yanking)". (Думайте об этом, как о восстановлении или помещении назад некоторого взятого текста). Вы можете восстановить убитый текст в месте удаления или в -любой другой точке редактируемого текста или даже в другом файле. Вы +любой другой точке редактируемого текста или даже в другом файле. Вы можете восстановить текст несколько раз и получить несколько копий данного текста. -Для восстановления убитого текста используется сочетание клавиш C-y. Данная +Для восстановления убитого текста используется сочетание клавиш C-y. Данная команда восстанавливает последний убитый текст в точке расположения курсора. >> Попробуйте выполнить эту команду -- наберите C-y, чтобы вернуть текст @@ -465,25 +466,25 @@ C-k Теперь вернем убитый текст: ->> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова - нажмите C-y. Сейчас вы видите, как можно скопировать некоторый текст. +>> Нажмите C-y. Теперь переместите курсор на несколько строк вниз, и снова + нажмите C-y. Сейчас вы видите, как можно скопировать некоторый текст. Что делать, если есть некоторый текст, который вы хотите вернуть назад, а потом убить что-то еще? Одно нажатие C-y вернет только последний удаленный -текст. Но предыдущий текст не будет потерян -- вы сможете его вернуть -назад, используя команду M-y. После того как вы вернули последний +текст. Но предыдущий текст не будет потерян -- вы сможете его вернуть +назад, используя команду M-y. После того как вы вернули последний удаленный текст, нажмите M-y и замените этот восстановленный текст тем, -который был убит ранее. Нажимая M-y снова и снова, вы будете возвращать +который был убит ранее. Нажимая M-y снова и снова, вы будете возвращать ранее убитые части текста. Когда вы достигнете искомого текста, то вам не -нужно делать ничего, чтобы сохранить его. Просто продолжайте работать, +нужно делать ничего, чтобы сохранить его. Просто продолжайте работать, оставив восстановленный текст там, где он есть. Нажимая M-y достаточное число раз, вы можете вернуться в начальную точку (наиболее раннее удаление). ->> Убейте строку, переместите курсор и убейте еще одну строку. Затем +>> Убейте строку, переместите курсор и убейте еще одну строку. Затем используйте C-y для восстановления второй убитой строки, а затем нажмите - M-y, и она будет заменена первой убитой строкой. Нажмите M-y еще + M-y, и она будет заменена первой убитой строкой. Нажмите M-y еще несколько раз, чтобы увидеть полученный результат. Продолжайте выполнять эту команду до тех пор, пока вторая убитая строка не будет восстановлена снова. Если вам хочется, то вы можете задавать положительные и @@ -502,7 +503,7 @@ C-x u Но есть два исключения -- команды не изменяющие текст, не учитываются (сюда включаются команды перемещения курсора и прокрутки), и команды вставки -символов обрабатываются группами до 20 символов. (Это уменьшает число +символов собираются в группы до 20 символов. (Это уменьшает число нажатий C-x u, которые вам нужно будет набрать для отмены ввода текста). >> Убейте эту строку с помощью C-k, а затем наберите C-x u, и строка должна @@ -511,7 +512,7 @@ C-x u C-_ -- это еще команда отмены; она работает точно так же, как и C-x u, но легче в использовании, если вам нужно выполнить ее несколько раз подряд. Неудобное положение C-_ на некоторых клавиатурах делает не очевидным -способ ее набора. Поэтому мы предлагаем использовать C-x u. На некоторых +способ ее набора. Поэтому мы предлагаем использовать C-x u. На некоторых терминалах вы можете набирать C-_, нажимая / и удерживая клавишу CONTROL. Числовой аргумент для C-_ или C-x u используется как счетчик повторений. @@ -525,34 +526,34 @@ C-_ -- ------- Чтобы созданный текст можно было редактировать позже, вы должны поместить -его в файл. Иначе он исчезнет, когда вы покинете Emacs. Вы помещаете ваш +его в файл. Иначе он исчезнет, когда вы покинете Emacs. Вы помещаете ваш текст в файл, "открывая" файл (Эту операцию также называют "посетить" файл). -Открыть файл означает посмотреть его содержимое с помощью Emacs. Во многих +Открыть файл означает посмотреть его содержимое с помощью Emacs. Во многих случаях это происходит тогда, когда вы редактируете файл сами. Однако ваши изменения, сделанные с использованием Emacs, не будут зафиксированы, пока вы -не сохраните файл. Вы можете не оставлять частично измененный файл в -системе, если вы не хотите его сохранять. Даже когда вы сохраняете файл, то +не сохраните файл. Вы можете не оставлять частично измененный файл в +системе, если вы не хотите его сохранять. Даже когда вы сохраняете файл, то Emacs оставляет оригинальный файл, но с другим именем, так что вы позже можете отменить ваши изменения, вернувшись к предыдущей версии файла. Если вы посмотрите в нижнюю часть экрана, то вы увидите строку, которая -начинается с тире, и ее начало выглядит примерно так "--:-- TUTORIAL.ru". Эта -часть экрана всегда показывает имя открытого вами файла. Итак, сейчас вы -открыли файл с именем "TUTORIAL.ru", который является вашей персональной -копией учебника Emacs. Для любого файла, который вы откроете, его имя будет -показано в этой строке. +начинается с тире, и начало которой выглядит примерно так "--:-- TUTORIAL.ru". +Эта часть экрана всегда показывает имя открытого вами файла. Итак, сейчас у +вас открыт файл с именем "TUTORIAL.ru", который является вашей персональной +копией учебника Emacs. Для любого файла, который вы откроете, Emacs покажет +его имя в этой строке. Одной из вещей, которые вам нужно знать о команде открытия файла -- это то, -что вы должны ввести имя файла, который нужно открыть. Такие команды мы +что вы должны ввести имя файла, который нужно открыть. Такие команды мы называем командами, "читающими аргумент с терминала" (в нашем случае аргументом является имя файла). После ввода команды C-x C-f Открыть (найти) файл Emacs попросит вас ввести имя файла. Имя файла набирается в нижней строке -экрана. Нижняя строка называется мини-буфером -- он специально используется -для ввода небольшого количества данных. Для редактирования имени файла вы +экрана. Нижняя строка называется мини-буфером -- он специально используется +для ввода небольшого количества данных. Для редактирования имени файла вы можете использовать обычные команды редактирования Emacs. Когда вы вводите имя файла (или любую другую информацию в мини-буфере), вы @@ -572,10 +573,10 @@ Emacs C-x C-s Сохранить файл -Эта команда скопирует текст из Emacs в файл. В первый раз, когда вы это +Эта команда скопирует текст из Emacs в файл. В первый раз, когда вы это сделаете, Emacs переименует оригинальный файл в файл с новым именем, чтобы -не потерялось предыдущее содержимое файла. Новое имя получается добавлением -символа "~" к оригинальному имени файла. +не потерялось предыдущее содержимое файла. Имя файла с предыдущим содержимым +получается добавлением символа "~" к оригинальному имени файла. Когда сохранение завершится, Emacs отобразит имя записанного файла. Вы должны сохранять изменения достаточно часто, чтобы не потерять внесенные @@ -585,27 +586,29 @@ Emacs должна появиться надпись "Wrote ...TUTORIAL.ru". ЗАМЕЧАНИЕ: На некоторых системах ввод C-x C-s заблокирует экран, так что вы -не увидите последующего вывода Emacs`а. Такое поведение означает, что +не увидите последующего вывода Emacs`а. Такое поведение означает, что операционная система имеет "особенность", именуемую "flow control", -перехватывающую сочетание C-s и не пропускающую этот символ к Emacs`у. Для -снятия блокировки экрана нажмите C-q. Обратитесь к разделу "Spontaneous +перехватывающую сочетание C-s и не пропускающую этот символ к Emacs'у. Для +снятия блокировки экрана нажмите C-q. Обратитесь к разделу "Spontaneous Entry to Incremental Search" руководства Emacs чтобы узнать о том, как бороться с этой "особенностью". Вы можете открыть существующий файл для просмотра или редактирования. Вы -также можете открыть файл, которого еще не существует. Другими словами -- -создать файл с помощью Emacs можно так: найти файл, создать новый, и начать -вводить текст. Когда вы выполните команду сохранения файла, то Emacs создаст -настоящий файл с набранным вами текстом. Далее, как вы поняли, вы будете -редактировать уже существующий файл. +также можете открыть файл, который еще не существует. Таким образом вы +можете создать файл с помощью Emacs: откройте несуществующий файл (Emacs +покажет его пустым) и вводите в него текст. Когда вы выполните команду +сохранения файла в первый раз, Emacs создаст настоящий файл с набранным +вами текстом. Далее, как вы поняли, вы будете редактировать уже существующий +файл. * БУФЕРА -------- -Если вы открываете второй файл, используя команду C-x C-f, то первый файл -остается внутри Emacs. Вы можете переключиться назад, открыв его снова с -помощью C-x C-f. Таким образом вы можете загрузить несколько файлов в Emacs. +Если вы откроете еще один файл, используя команду C-x C-f, то предыдущий файл +остается внутри Emacs'а. Вы можете переключиться назад к предыдущему файлу, +открыв его снова с помощью C-x C-f. Таким образом вы можете загрузить немало +файлов в Emacs. >> Создайте файл с именем "foo", набрав C-x C-f foo . Вставьте какой-нибудь текст, измените его, и сохраните файл "foo", @@ -613,9 +616,9 @@ Entry to Incremental Search" Наконец, наберите C-x C-f TUTORIAL.ru для того, чтобы вернуться назад к учебнику. -Emacs хранит текст каждого файла внутри в объекте, называемом "буфер" -("buffer"). Открытие файла создает новый буфер внутри Emacs. Чтобы увидеть -список буферов, созданных в текущем сеансе Emacs, наберите +Emacs хранит текст каждого файла в объекте, называемом "буфер" ("buffer"). +Открытие файла создает новый буфер внутри Emacs. Чтобы увидеть список +буферов, созданных в текущем сеансе Emacs, наберите C-x C-b Список буферов @@ -623,94 +626,93 @@ Emacs Мы видим, что каждый буфер имеет имя и может иметь связанное с ним имя файла, содержимое которого хранится в данном буфере. ЛЮБОЙ текст, который -вы видите в окне Emacs, всегда является частью какого-либо буфера. +вы видите в окне Emacs'а, всегда является частью какого-либо буфера. >> Наберите C-x 1, чтобы избавиться от списка буферов. Когда у вас есть несколько буферов, только один из них является "текущим" в -конкретный момент времени. Это тот буфер, который вы изменяете. Если вы -хотите изменить данные в другом буфере, то вы должны "переключиться" в него. -Если вы хотите переключиться в буфер, связанный с файлом, то вы можете -открыть этот файл снова с помощью C-x C-f. Но есть более простой способ -- -использовать команду C-x b. В качестве аргумента для данной команды вы +конкретный момент времени. Это тот буфер, который вы редактируете. Если вы +хотите редактировать другой буфер, то вы должны "переключиться" к нему. +Если вы хотите переключиться к буферу, связанному с файлом, то вы можете +открыть этот файл снова с помощью C-x C-f. Но есть более простой способ -- +использовать команду C-x b. В качестве аргумента для данной команды вы должны указать имя буфера. >> Наберите C-x b foo для переключения в буфер "foo", который - хранит текст файла "foo". Затем наберите C-x b TUTORIAL для - возвращения в буфер с данным учебником. + хранит текст файла "foo". Затем наберите C-x b TUTORIAL.ru + для возвращения в буфер с данным учебником. -Чаще всего имя буфера совпадает с именем файла (только без имени каталогов). -Однако это не всегда является правдой. Список буферов, который вы создаете -с помощью команды C-x C-b, всегда показывает вам имена всех буферов. +Чаще всего имя буфера совпадает с именем файла (только без имен каталогов). +Но иногда это не так. Список буферов, который вы создаете с помощью команды +C-x C-b, всегда показывает вам точные имена всех буферов. ЛЮБОЙ текст, который вы видите в окне Emacs, всегда является частью -какого-либо буфера. Некоторые буфера не соответствуют файлам. Например, -буфер с именем "*Buffer List*" не связан ни с каким файлом. Это буфер, -который содержит список буферов, который вы создали, используя C-x C-b. -Буфер с именем "*Messages*" также не связан ни с каким файлом; он содержит -сообщения, которые отображаются в самой нижней строке окна Emacs в течение -текущей сессии работы с редактором. +какого-либо буфера. Некоторые буфера не соответствуют файлам. Например, +буфер с именем "*Buffer List*" не связан ни с каким файлом. Этот буфер +создается коммандой C-x C-b и содержит список всех буферов. Буфер по имени +"*Messages*" также не связан ни с каким файлом; он содержит сообщения, +которые отображаются в самой нижней строке окна Emacs в течение +текущего сеанса работы с редактором. >> Наберите C-x b *Messages* для просмотра содержимого буфера - сообщений. Затем наберите C-x b TUTORIAL для возврата в данный - учебник. + сообщений. Затем наберите C-x b TUTORIAL.ru для возврата в + данный учебник. Если вы изменяете текст одного файла, а затем открываете другой, то текст в -первом буфере остается не сохраненным. Изменения останутся внутри Emacs, в +первом буфере остается не сохраненным. Изменения останутся внутри Emacs, в буфере, связанном с файлом. Создание или редактирование следующего буфера не сказывается на первом буфере. Это очень удобно, но имейте в виду, что вам -нужно иметь способ сохранить первый файловый буфер. Было бы неприятно +нужно иметь способ сохранить первый файловый буфер. Было бы неприятно каждый раз возвращаться назад используя C-x C-f и потом использовать C-x C-s для сохранения данных. Поэтому существует команда C-x s Сохранить некоторые буфера. (Save some buffers) C-x s запрашивает у вас подтверждение о сохранении для каждого буфера, -который содержит несохраненные изменения. Для каждого такого буфера у вас +который содержит несохраненные изменения. Для каждого такого буфера у вас запросят: сохранять или не сохранять изменения. >> Вставьте строку текста, потом наберите C-x s. - У вас должны спросить, сохранять ли буфер с именем TUTORIAL.ru. Ответьте - на вопрос утвердительно, набрав "y". + Должен появиться запрос: сохранять ли буфер с именем TUTORIAL.ru. + Ответьте на запрос утвердительно нажатием клавишы "y". * РАСШИРЕНИЕ НАБОРА КОМАНД -------------------------- У Emacs очень много команд, и они не могут быть назначены на все control- и -meta- символы. Emacs обходит это, используя X-команду (eXtend). Есть две -возможности: +meta- символы. Emacs решает эту проблему, используя X-команду (eXtend, +расширить). Есть два варианта этого расширения: C-x Расширение с помощью ввода префикса. За ним следует один символ. - M-x Расширение набора команд с помощью их наименования. За ним следует имя - команды. + M-x Расширение набора команд с помощью их наименования. За ним + следует имя команды. Это полезные команды, но они используются менее часто, чем те команды, -которые мы изучили. Вы уже видели некоторые из них: команды работы с файлами -C-x C-f -- открыть файл, и C-x C-s -- сохранить файл. Другой пример -- -команда завершения работы с Emacs -- C-x C-c. (Не волнуйтесь о том, что вы -потеряете сделанные изменения, C-x C-c предлагает сохранить изменения перед -удалением буфера Emacs). +которые мы уже изучили. Вы уже видели некоторые из расширенных комманд: +команды работы с файлами C-x C-f -- открыть файл, и C-x C-s -- сохранить +файл. Другой пример -- команда завершения работы с Emacs'ом -- C-x C-c. +(Не волнуйтесь о том, что вы потеряете сделанные изменения, C-x C-c +предлагает сохранить изменения перед выходом из Emacs'а.) + +Если вы работаете на графическом дисплее, который способен показывать +несколько программ одновременно, вы можете переключится от Emacs'а к другой +программе используя мышку или соответствующее команды установленного у вас +менеджера окон. Но когда вы работаете на текстовом терминале, который +способен отобразить только одну программу, то для переключения к другой +программе вам понадобится "приостановить" Emacs. C-z -- это команда *временного* выхода из Emacs. Вы можете вернуться в ту же -сессию Emacs позже. - -На системах, которые реализуют эту возможность, команда C-z -"приостанавливает" ("suspends") Emacs; возвращает в командный процессор -(shell), но не закрывают Emacs. В большинстве командных процессоров вы -можете вернуться в Emacs, используя команду `fg' или `%emacs'. - -В системах, не поддерживающих приостановку процессов, C-z создает новый -командный процессор (subshell), запущенный из-под Emacs, чтобы дать вам -возможность выполнить другую программу, и затем вернуться в Emacs (это не -настоящий выход из Emacs). В таких система для возврата в Emacs вам нужно -использовать команду `exit'. +сессию Emacs позже. Когда Emacs запускается на текстовом терминале, команда +C-z "приостанавливает" ("suspends") Emacs, т.е. она возвращает вас в командный +процессор (shell), но не закрывают Emacs. В большинстве командных процессоров +вы можете вернуться в Emacs, используя команду `fg', `%emacs' или `exit'. Чтобы покинуть Emacs используйте команду C-x C-c. Обычно это нужно тогда, -когда вы хотите закончить сеанс работы с компьютером. Это сочетание также +когда вы хотите закончить сеанс работы с компьютером. Это сочетание также используется, чтобы выйти из Emacs, вызванного из почтовой программы или другой утилиты, которая может не знать, как справиться с приостановленным -Emacs. Обычно, если вы не собираетесь выходить из системы, то лучше +Emacs. Обычно, если вы не собираетесь выходить из системы, то лучше приостановить Emacs, используя C-z, вместо того, чтобы покидать его совсем. Существует очень много команд, использующих префикс C-x. Вы уже изучили @@ -718,63 +720,63 @@ Emacs. C-x C-f Открыть файл C-x C-s Сохранить файл - C-x s Сохранить некоторые файлы + C-x s Сохранить некоторые файлы C-x C-b Список буферов - C-x b Переключиться в буфер + C-x b Переключиться в буфер C-x C-c Выход из Emacs - C-x 1 Удаляет все окна кроме одного - C-x u Отмена + C-x 1 Удалить все окна, кроме текущего + C-x u Отмена команд -Именованные команды -- это команды, которые используются гораздо реже, или -используются только в определенных режимах. В качестве примера можно +Поименованные команды -- это команды, которые используются гораздо реже, +или используются только в определенных режимах. В качестве примера можно привести команду замены строки, которая заменяет одну строку на другую во -всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя команды; -в нашем случае это команда "replace-string". Наберите лишь "repl s", -и Emacs дополнит имя. ( -- это клавиша табуляции, обычно находящаяся -выше клавиш CapsLock или Shift в левой части клавиатуры). Завершите имя +всем тексте. Когда вы наберете M-x, Emacs предложит вам ввести имя команды; +в нашем случае это команда "replace-string". Наберите лишь "repl s", +и Emacs дополнит имя. ( -- это клавиша табуляции, обычно находящаяся +над клавишами CapsLock или Shift в левой части клавиатуры.) Завершите имя нажатием . Команда замены строки (replace-string) требует два аргумента -- строку, которая будет заменена, и строку, на которую нужно заменить. Вы должны завершать каждый аргумент вводом . ->> Переместите курсор на две пустые строки ниже этой. +>> Переместите курсор к пустой строке на две строчки ниже этой. Наберите M-x repl sфайлфайлы. - Заметьте, как эта строка изменится: вы замените слово ф-а-й-л + Заметьте, как эта строчка изменится: вы замените слово ф-а-й-л словом "файлы" везде, где оно встретится, ниже позиции курсора. * АВТОМАТИЧЕСКОЕ СОХРАНЕНИЕ --------------------------- -Когда вы изменяете файл, но не сохраняете его, то в случае краха системы вы -можете потерять информацию. Чтобы защитить вас от этого, Emacs периодически +Когда вы изменяете файл, но не сохраняете его, то в случае зависания системы +вы можете потерять информацию. Чтобы защитить вас от этого, Emacs периодически сохраняет каждый файл, который вы редактируете. Автоматическое сохранение -происходит в файл, имя которого такое же, но начинается и заканчивается -символом "#"; например, если ваш файл называется "hello.c", то автоматически -сохраненный файл будет называться "#hello.c#". Когда вы сохраните файл -обычным способом, Emacs удалит автоматически сохраненный файл. +происходит в файл, имя получается из имени редактируемого файла добавлением +символа "#" в начале и в конце; например, если ваш файл называется "hello.c", +то автоматически сохраненный файл будет называться "#hello.c#". Когда вы +сохраните файл обычным способом, Emacs удаляет автоматически сохраненный файл. Если система зависла, то вы можете восстановить ваши изменения, которые были сохранены автоматически, путем открытия нужного файла (файла, который вы -редактировали, не сохраненного), и затем набрав M-x recover-file. -Когда у вас запросят подтверждение, наберите yes, чтобы +редактировали, но не сохранили), и затем набрав M-x recover-file. +Когда у вас запросят подтверждение, наберите yes, чтобы восстановить автоматически сохраненные данные. -* ОБЛАСТЬ ЭХО (ECHO AREA) +* ОБЛАСТЬ ЭХА (ECHO AREA) ------------------------- Если Emacs видит, что вы медленно набираете команды из нескольких символов, -то он показывает их вам внизу экрана, в области называемой "область эхо". -Область эхо -- это самая нижняя строка экрана. +то он показывает их вам внизу экрана, в области называемой "область эха". +Область эха -- это самая нижняя строка окна Emacs. * СТРОКА СОСТОЯНИЯ ------------------ -Строка сразу над областью эхо называется "строкой состояния". Выглядит эта +Строка сразу над областью эха называется "строкой состояния". Выглядит эта строка примерно так: --:** TUTORIAL.ru 63% L749 (Fundamental)----------------------- @@ -782,36 +784,35 @@ Emacs. Эта строка сообщает полезную информацию о состоянии Emacs и текста, который вы редактируете. -Вы уже знаете, что означает имя файла -- это файл, который вы открыли. NN% -показывает текущую позицию курсора в тексте; это означает что NN процентов -текста находятся выше, чем начало экрана. Если первая строка всего текста -находится в первой строке экрана, вы там увидите "Top" вместо "0%". Если на -экране отображается последняя строка, то будет отображено "Bot". Если текст -настолько мал, что весь вмещается в экран, то строка состояния сообщит +Вы уже знаете, что означает имя файла -- это файл, который вы открыли. NN% +показывает вашу текущую позицию в тексте; это означает что NN процентов +текста находятся выше начала окна. Если показано начало текста, вы увидите +"Top" вместо "0%". Если показан конец текста, то будет отображено "Bot". +Если текст настолько мал, что показан весь, то строка состояния сообщит "All". Буква L и цифры показывают позицию другим способом -- они показывают номер строки в которой находится курсор. -Звездочки в начале строки означают, что вы изменяли текст. При открытии или +Звездочки в начале строки означают, что вы изменяли текст. При открытии или сохранении файла эта часть строки будет содержать не звездочки, а тире. -Часть строки статуса внутри скобок сообщает вам о режиме редактирования, -который вы сейчас используете. Стандартный режим -- Fundamental, он -используется и данном документе. Это пример "основного режима" ("major +Часть строки состояния внутри скобок сообщает вам о режиме редактирования, +который вы сейчас используете. Стандартный, или базовый, режим -- Fundamental, +он используется и в данном учебнике. Это пример "основного режима" ("major mode"). Emacs имеет много различных основных режимов. Некоторые из режимов используются для редактирования текста на различных языках и/или различных -видов текста, такие как Lisp-режим, Text-режим и пр. В каждый момент +видов текста, такие как Lisp-режим, Text-режим и пр. В каждый момент времени действует только один основной режим, и его название вы можете найти в скобках -- там, где сейчас находится слово "Fundamental" (базовый). Каждый основной режим заставляет некоторые команды вести себя немного -по-другому. Например, это команды создания комментариев в программе, и +по-другому. Например, это команды создания комментариев в программе, и поскольку в каждом языке программирования комментарии записываются -по-своему, то и каждый основной режим вставляет их по-разному. Каждый -основной режим имеет именованную команду, которая включает его. Например, +по-своему, то и каждый основной режим вставляет их по-разному. Каждый +основной режим имеет именованную команду, которая включает его. Например, M-x fundamental-mode -- это команда, которая включает базовый (Fundamental) режим. @@ -822,11 +823,11 @@ M-x fundamental-mode -- Не волнуйтесь, ни одна из выученных вами команд Emacs не изменилась. Но вы можете заметить, что M-f и M-b теперь рассматривают апострофы как часть -слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали +слова. Ранее, в базовом режиме (Fundamental mode), M-f и M-b понимали апострофы как разделители слов. -Основной режим обычно делает небольшие изменения, такие как: большинство -команд делают "одну и ту же работу" в каждом из режимов, но их действие +Как правило, основной режим производит подобные незначительные изменения: +большинство команд "работает" одинаково в каждом из режимов, но их действие отличается какой-нибудь мелочью. Для просмотра документации о текущем основном режиме, нажмите C-h m. @@ -837,30 +838,31 @@ M-x fundamental-mode -- >> Наберите C-x 1, чтобы убрать документацию с глаз долой :) Основной режим называется основным потому, что также существуют -дополнительные (minor) режимы. Дополнительные режимы не являются -альтернативами основным, они только немного изменяют их поведение. Каждый -дополнительный режим включается/выключается независимо от других -дополнительных режимов и независимо от вашего основного режима. Вы можете -использовать основной режим без дополнительных, или с любой их комбинацией. +дополнительные, или второстепенные, (minor) режимы. Дополнительные режимы +не являются альтернативами основным, они только немного изменяют их +поведение. Каждый дополнительный режим включается/выключается независимо +от других дополнительных режимов и независимо от вашего основного режима. +Вы можете использовать основной режим без дополнительных, или с любой +комбинацией нескольких дополнительных режимов. Один из дополнительных режимов очень полезен, особенно для редактирования -текста -- это режим автозаполнения (Auto Fill mode). Когда этот режим -включен, то Emacs разрывает строки между словами автоматически в тех -случаях, когда вы вставляете текст и делаете строки слишком длинными. +текста -- это режим автозаполнения (Auto Fill mode). Когда этот режим +включен, то Emacs автоматически разрывает строку между словами в тех +случаях, когда вставленный текст делает строку слишком длинной. Вы можете включить режим автозаполнения, набрав M-x auto fill mode. Когда этот режим включен, его можно выключить с помощью той же команды -- -M-x auto fill mode. Если режим включен, то такая команда его +M-x auto fill mode. Если режим включен, то такая команда его выключит, если выключен, то включит. Мы называем это командой "переключения режима". >> Наберите M-x auto fill mode. Затем вводите строку из слов "фыва " - пока не увидите, как она разделится на две строки. Вы должны помещать - пробелы между словами, потому что режим автозаполнения разбивает строки + пока не увидите, как она разделится на две строки. Эти пробелы между + словами необходимы, потому что режим автозаполнения разбивает строки только по пробелам. Граница разбиения обычно равна 70-ти символам, но вы можете изменить ее -используя команду C-x f. Вы должны задать границу в виде числового +используя команду C-x f. Вы должны задать границу в виде числового аргумента для этой команды. >> Введите C-x f с аргументом 20 (C-u 2 0 C-x f). Затем введите какой-нибудь @@ -868,7 +870,7 @@ M-x auto fill mode. Верните значение границы равное 70 назад, используя команду C-x f. Если вы сделали изменения в середине параграфа, то автозаполнение не -переформатирует текст автоматически. Чтобы переформатировать параграф, +переформатирует текст автоматически. Чтобы переформатировать параграф, наберите M-q (META-q), когда курсор находится внутри параграфа. >> Переместите курсор в предыдущий параграф, и нажмите M-q. @@ -878,17 +880,17 @@ M-x auto fill mode. ------- Emacs умеет искать строки (непрерывные группы символов или слова) вперед или -назад по тексту. Поиск строки -- это команда перемещения курсора; она +назад по тексту. Поиск строки -- это команда перемещения курсора; она перемещает курсор в следующую точку, где найдена искомая строка. Команда поиска Emacs отличается от аналогичных команд большинства других -редакторов тем, что она инкрементальная. Это означает, что поиск происходит +редакторов тем, что она инкрементальная. Это означает, что поиск происходит по мере того, как вы набираете искомую строку. Команда, начинающая поиск вперед -- C-s, а C-r ищет назад. ПОДОЖДИТЕ! Не нужно пробовать прямо сейчас. -Когда вы нажмете C-s, вы увидите строку "I-search", появившуюся в области эхо. +Когда вы нажмете C-s, вы увидите строку "I-search", появившуюся в области эха. Вам сообщается, что Emacs ждет ввода слова, которое вы хотите найти. завершает поиск. @@ -902,41 +904,41 @@ Emacs Вы заметили, что происходило? Emacs в режиме инкрементального поиска пытался переходить к строкам, совпадающим с набираемой вами строкой, подсвечивая их. -Чтобы перейти к следующему вхождения слова 'курсор', просто нажмите C-s -снова. Если больше нет вхождений, то Emacs издаст звуковой сигнал и +Чтобы перейти к следующему вхождению слова 'курсор', просто нажмите C-s +снова. Если больше нет вхождений, то Emacs издаст звуковой сигнал и сообщит, что ваш поиск не удался ("failing"), C-g также может отменить поиск. ЗАМЕЧАНИЕ: На некоторых системах ввод C-x C-s заблокирует экран, так что вы -не увидите последующего вывода Emacs`а. Такое поведение означает, что +не увидите последующего вывода Emacs'а. Такое поведение означает, что операционная система имеет "особенность", именуемую "flow control", -перехватывающую сочетание C-s и не пропускающую этот символ к Emacs`у. Для -снятия блокировки экрана нажмите C-q. Обратитесь к разделу "Spontaneous +перехватывающую сочетание C-s и не пропускающую этот символ к Emacs'у. Для +снятия блокировки экрана нажмите C-q. Обратитесь к разделу "Spontaneous Entry to Incremental Search" руководства Emacs, чтобы узнать о том, как бороться с этой "особенностью". Если вы во время инкрементального поиска нажмете , то вы заметите, что последний символ в искомой строке удалился, и поиск вернулся к -предыдущему найденному месту. Например, предположим, что вы набрали "к", +предыдущему найденному месту. Например, предположим, что вы набрали "к", поиск перейдет к первому вхождению символа "к". Теперь, если вы наберете -"у", курсор перейдет к первому вхождению "ку". Нажатие удалит +"у", курсор перейдет к первому вхождению "ку". Нажатие удалит символ "у" из строки поиска, и курсор вернется к первому вхождению "к". Если вы во время поиска введете control- или meta- символ (за некоторыми -исключениями, такими, как символы начинающие поиск, а именно C-s и C-r), -поиск прекратится. +исключениями, например, такими, как символы C-s и C-r, которые начинают +поиск), то поиск прекратится. C-s начинает поиск и ищет любые вхождения искомой строки ПОСЛЕ текущей -позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите -C-r. Все, что мы говорили о C-s, применимо и к C-r, за исключением -противоположного направления поиска. +позиции курсора. Если вы хотите найти что-то ранее в тексте, то нажмите +C-r. Все, что мы говорили о C-s, применимо и к C-r, только C-r ищет в +противоположном направлении. * МНОЖЕСТВО ОКОН (MULTIPLE WINDOWS) ----------------------------------- -Одной из приятных особенностей Emacs является то, что вы можете одновременно -отображать на экране несколько окон. +Одной из приятных особенностей Emacs'а является то, что вы можете +одновременно отображать на экране несколько окон. >> Переместите курсор на эту строку и наберите C-u 0 C-l (это CONTROL-L, а не CONTROL-1). @@ -956,23 +958,24 @@ C-r. Курсор в верхнем окне там же, где и был до того. Вы можете продолжать переключаться между окнами, используя C-x o. Каждое -окно хранит свою позицию курсора, но только одно показывает курсор. Все +окно хранит свою позицию курсора, но только одно показывает курсор. Все обычные команды редактирования применяются к окну, в котором отображается -курсор. Мы называем это окно "выбранным" ("selected window"). +курсор. Мы называем это окно "выбранным" ("selected window"). Команда C-M-v очень удобна, когда вы редактируете текст в одном окне, а -второе используете в качестве справочника. Вы можете всегда сохранять +второе используете в качестве справочника. Вы можете всегда сохранять курсор в окне редактирования и последовательно продвигаться во втором, используя C-M-v. -C-M-v -- пример CONTROL-META символа. Если у вас есть настоящая кнопка META -(Alt), то вы можете набрать C-M-v, нажав одновременно CONTROL и META и, не -отпуская их, нажать v. И не важно, какая из клавиш будет нажата первой, -CONTROL или META, поскольку эти кнопки модифицируют тип символа. +C-M-v -- пример CONTROL-META символа. Если у вас есть настоящая кнопка META +(обычно помеченная как Alt), то вы можете набрать C-M-v, нажав одновременно +CONTROL и META и, не отпуская их, нажать v. Не важно, какая из клавиш, CONTROL +или META, будет нажата первой, поскольку обе эти кнопки модифицируют тип +символа. Если у вас нет настоящей кнопки META, и вместо нее вы используете , то -порядок должен быть следующим: вы должны нажать , а затем CTRL-v; -CONTROL- v не будет работать. Это происходит потому, что имеет +порядок их нажатия важен: сначала вы должны нажать , а затем CTRL-v; +CONTROL- v не сработает. Это происходит потому, что имеет свой собственный символ -- это не модифицирующая кнопка. >> Нажмите C-x 1 (в верхнем окне), чтобы избавиться от нижнего окна. @@ -981,14 +984,14 @@ CONTROL- v Понимайте эту команду как "Оставить только одно окно -- то, в котором я сейчас нахожусь"). -Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы +Вам не нужно отображать один и тот же буфер в обоих окнах. Если вы используете C-x C-f, чтобы открыть файл в одном окне, другое останется без изменения. Вы можете открывать файлы в каждом окне независимо. -Есть другой путь использовать два окна, отображающих разные файлы: +Есть и другой путь использовать два окна, отображающих разные файлы: >> Наберите C-x 4 C-f, и введите имя одного из ваших файлов. Завершите ввод - нажатием . Заметьте, что выбранный файл появился в нижнем окне. + нажатием . Заметьте, что выбранный файл появился в нижнем окне. Курсор перешел туда же. >> Наберите C-x o, чтобы вернуться в верхнее окно, и затем C-x 1, чтобы @@ -999,45 +1002,45 @@ CONTROL- v -------------------------------------------------------------- Иногда вы будете попадать в так называемые "рекурсивные уровни -редактирования". На это указывают прямоугольные скобки в строке статуса, +редактирования". На это указывают прямоугольные скобки в строке состояния, окружающие обычные скобки вокруг имени основного режима. Например, вы увидите [(Fundamental)] вместо (Fundamental). Чтобы выйти из рекурсивных уровней редактирования, нажмите -. Это многоцелевая команда "выход". Вы также можете использовать ее +. Это многоцелевая команда "выхода". Вы также можете использовать ее как для уничтожения лишних окон, так и для выхода из мини-буфера. >> Нажмите M-x, чтобы попасть в мини-буфер, а затем нажмите , чтобы покинуть его. Вы не можете использовать C-g для выхода из рекурсивных уровней -редактирования. Это потому, что C-g используется для отмены команды и -аргументов БЕЗ рекурсивных уровней редактирования. +редактирования. Это потому, что C-g используется для отмены команд и +аргументов ВНУТРИ рекурсивных уровней редактирования. * КАК ПОЛУЧИТЬ ДОПОЛНИТЕЛЬНУЮ ПОМОЩЬ ------------------------------------ В этом учебнике мы попытались снабдить вас только той информацией, которая -поможет вам начать пользоваться Emacs. Очень много информации доступно в -Emacs и невозможно всю ее представить здесь. Однако, вы можете выучить -больше возможностей Emacs и узнать другие полезные особенности. Emacs +поможет вам начать пользоваться Emacs'ом. В Emacs'е очень много средств и +особенностей, и представить все это здесь не представляется возможным. +Однако, возможно вы захотите узнать больше о возможностях Emacs'а. Emacs предоставляет команды для чтения документации о командах Emacs. Эти команды "справки" ("help") все начинаются с символа CONTROL-h, который является "символом помощи". Чтобы использовать возможности справки, нажмите C-h, и затем -- символ, который -расскажет, какой именно вид справки вы хотите получить. Если вы +расскажет, какой именно вид справки вы хотите получить. Если вы ДЕЙСТВИТЕЛЬНО растерялись, наберите C-h ?, и Emacs расскажет вам о том, какую справку он может вам предоставить. Если вы нажали C-h и передумали обращаться к справке, то просто нажмите C-g, чтобы отменить эту команду. -(Кое-где переназначают символ C-h. Реальной необходимости в этом нет, и -если это так, то сообщите об этом системному администратору. Тем временем, +(Кое-где переназначают символ C-h. Реальной необходимости в этом нет, и +если это так, то сообщите об этом системному администратору. Тем временем, если C-h не вызывает сообщение помощи внизу экрана, то попробуйте вместо этого нажать клавишу F1 или набрать M-x help RET). -Одна из самых главных функций справки -- C-h c. Нажмите C-h, а затем c, и +Одна из самых главных функций справки -- C-h c. Нажмите C-h, а затем c и символ команды или последовательность, и Emacs отобразит краткое описание набранной команды. @@ -1046,7 +1049,7 @@ Emacs Сообщение должно выглядеть примерно так: C-p runs the command previous-line - (C-p выполняет команду previous-line {предыдущая-строка}) + (C-p выполняет команду previous-line {предыдущая-строка}) Вам сообщают "имя функции". Имена функций используются в основном для настройки и расширения Emacs. Имена функций выбраны так, чтобы показать, что @@ -1061,27 +1064,29 @@ META >> Наберите C-h k C-p. -Вы увидите описание функции, а также ее имя в отдельном окне Emacs. Когда вы -завершите чтение, нажмите C-x 1, чтобы избавиться от текста справки. Вы -можете выполнить изменение текста во время просмотра текста справки, а -только затем нажать C-x 1. +Вы увидите описание функции, а также ее имя, в отдельном окне Emacs. Когда +вы завершите чтение, нажмите C-x 1, чтобы избавиться от текста справки. +Не обязательно нажимать C-x 1 сразу: вы можете сначала выполнить какие-либо +изменения текста во время просмотра текста справки, и только затем нажать +C-x 1. Есть еще несколько полезных функций, доступных через C-h: C-h f Описывает функцию. Вам необходимо набрать имя функции. >> Попробуйте набрать C-h f previous-line. - Это распечатает информацию Emacs о функции, которая выполняется командой + Это отобразит информацию Emacs о функции, которая выполняется командой C-p. Аналогичная команда C-h v отображает документацию о переменных, значение которых вы можете изменить для настройки поведения Emacs. Вам нужно набрать имя переменной, когда Emacs запросит его. - C-h a (Hyper Apropos). Введите ключевое слово и Emacs покажет вам список - всех функций и переменных, имена которых содержат это - слово. Команды, которые могут быть вызваны через Meta-x, будут - отмечены звездочкой слева. + C-h a (Apropos Command). Введите ключевое слово и Emacs покажет вам + список всех команд и функций, имена которых содержат это слово. + Для команд, которые могут быть вызваны через Meta-x, Emacs + покажет слово "Command" слева от их описания, а также символы, + которые эти команды вызывают. >> Наберите C-h a file. @@ -1093,11 +1098,11 @@ META >> Наберите C-x 1 для удаления окна справки. - C-h i Читать интерактивные руководства (так называемые Info). Эта команда + C-h i Читать интерактивные руководства (команда Info). Эта команда переходит в специальный буфер с именем `*info*', где вы можете читать интерактивные руководства для пакетов, установленных в вашей - системе. Наберите m emacs для чтения руководства по - Emacs. Если вы никогда ранее не использовали Info, то наберите ? и + системе. Наберите m emacs для чтения руководства по + Emacs. Если вы никогда ранее не использовали Info, то наберите ? и Emacs откроет учебник по возможностям режима Info. Однажды ознакомившись с этим учебником, вы должны использовать руководство Emacs Info в качестве основной документации. @@ -1106,21 +1111,21 @@ META * ДОПОЛНИТЕЛЬНЫЕ ВОЗМОЖНОСТИ ---------------------------- -Вы можете узнать больше о Emacs, читая его руководство, книги или -интерактивный справочник (используйте меню Help или наберите F10 h r). Вам -особенно понравятся две функции -- дополнение, которое сокращает количество +Вы можете узнать больше об Emacs'е, читая его руководство, книги или +интерактивный справочник (используйте меню Help или наберите F10 h r). Вам +особенно понравятся две функции -- завершение, которое сокращает количество нажимаемых клавиш, и dired, который облегчает работу с файлами. -Дополнение используется для того, чтобы избежать набора лишних символов. +Завершение используется для того, чтобы избежать набора лишних символов. Например, если вы хотите переключиться в буфер *Messages*, то вы можете набрать C-x b *M и Emacs заполнит остаток имени буфера, поскольку он -может определить его из того, что вы уже набрали. Дополнения описаны в +может определить его из того, что вы уже набрали. Завершения описаны в Info-версии руководства по Emacs в разделе "Completion". Dired позволяет вам отображать список файлов в каталоге (а также подкаталогах, в зависимости от настройки), перемещаться по списку файлов, открывать их, переименовывать, удалять и выполнять прочие действия над -файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired". +файлами. Dired описан в Info-версии руководства по Emacs в разделе "Dired". В руководстве также описаны прочие возможности Emacs. @@ -1140,14 +1145,14 @@ Dired ------------------------- Этот учебник произошел из длинной серии учебников Emacs, начатой с однажды -написанного Stuart Cracraft для оригинального Emacs. +написанного Stuart Cracraft для оригинального Emacs'а. Эта версия учебника, как и GNU Emacs, защищена правами копирования (copyrighted) и приходит с ограничениями распространения копий со следующими соглашениями: Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, - 2005, 2006, 2007 Free Software Foundation, Inc. + 2005, 2006, 2007, 2008 Free Software Foundation, Inc. Permission is granted to anyone to make or distribute verbatim copies of this document as received, in any medium, provided that the @@ -1166,7 +1171,7 @@ Copyright (C) 1985, 1996, 1998, 2001, 2002, 2003, 2004, обеспечения ("владение"), используя, создавая и распространяя свободное программное обеспечение! -// замечания, исправления ошибок я жду по адресу alexott@gmail.com. +// жду замечаний и исправления ошибок по адресу alexott@gmail.com. // Alex Ott. ;;; Local Variables: From 8cee022b93b32afcd2511298db2af813d5f53db3 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 2 Feb 2008 10:46:08 +0000 Subject: [PATCH 10/20] * net/tramp.el (tramp-handle-make-auto-save-file-name) (tramp-completion-dissect-file-name, tramp-find-executable): Use `mapc' instead of `mapcar'. (tramp-open-connection-setup-interactive-shell): Send only single prompt setting commands, in order to avoid double-prompt. --- lisp/net/tramp.el | 43 ++++++++++++++++++++++++++----------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 5a8068320ef..d6d6a524be9 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -3985,7 +3985,7 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." ;; UNIQUIFY element of `auto-save-file-name-transforms'); but for ;; all other cases we must do it ourselves. (when (boundp 'auto-save-file-name-transforms) - (mapcar + (mapc '(lambda (x) (when (and (string-match (car x) buffer-file-name) (not (car (cddr x)))) @@ -4768,18 +4768,18 @@ They are collected by `tramp-completion-dissect-file-name1'." "\\(" tramp-host-regexp x-nil "\\)$") 1 2 3 nil))) - (mapcar (lambda (regexp) - (add-to-list 'result - (tramp-completion-dissect-file-name1 regexp name))) - (list - tramp-completion-file-name-structure1 - tramp-completion-file-name-structure2 - tramp-completion-file-name-structure3 - tramp-completion-file-name-structure4 - tramp-completion-file-name-structure5 - tramp-completion-file-name-structure6 - tramp-completion-file-name-structure7 - tramp-file-name-structure)) + (mapc + (lambda (regexp) + (add-to-list 'result (tramp-completion-dissect-file-name1 regexp name))) + (list + tramp-completion-file-name-structure1 + tramp-completion-file-name-structure2 + tramp-completion-file-name-structure3 + tramp-completion-file-name-structure4 + tramp-completion-file-name-structure5 + tramp-completion-file-name-structure6 + tramp-completion-file-name-structure7 + tramp-file-name-structure)) (delq nil result))) @@ -5264,9 +5264,9 @@ This function expects to be in the right *tramp* buffer." "then echo tramp_executable $d/%s; " "break; fi; done <<'EOF'") progname progname progname)) - (mapcar (lambda (d) - (tramp-send-command multi-method method user host d)) - dirlist) + (mapc (lambda (d) + (tramp-send-command multi-method method user host d)) + dirlist) (tramp-send-command multi-method method user host "EOF") (tramp-wait-for-output) (goto-char (point-max)) @@ -6256,9 +6256,18 @@ to set up. METHOD, USER and HOST specify the connection." ;; the last time we sent a command, to avoid tramp-send-command to send ;; "echo are you awake". (setq tramp-last-cmd-time (current-time)) + (tramp-send-command-internal multi-method method user host + "PROMPT_COMMAND=''") + (erase-buffer) + (tramp-send-command-internal multi-method method user host + "PS2=''") + (erase-buffer) + (tramp-send-command-internal multi-method method user host + "PS3=''") + (erase-buffer) (tramp-send-command multi-method method user host - (format "PROMPT_COMMAND=''; PS1='%s%s%s'; PS2=''; PS3=''" + (format "PS1='%s%s%s'" tramp-rsh-end-of-line tramp-end-of-output tramp-rsh-end-of-line)) From 500d481b51f671e998bc2298206313625c644a2d Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 2 Feb 2008 10:49:10 +0000 Subject: [PATCH 11/20] *** empty log message *** --- lisp/net/tramp-ftp.el | 6 +++--- lisp/net/tramp-smb.el | 5 +++-- lisp/net/tramp-util.el | 6 +++--- lisp/net/tramp-uu.el | 4 ++-- 4 files changed, 11 insertions(+), 10 deletions(-) diff --git a/lisp/net/tramp-ftp.el b/lisp/net/tramp-ftp.el index f6985736b82..3e7a6a4c4b1 100644 --- a/lisp/net/tramp-ftp.el +++ b/lisp/net/tramp-ftp.el @@ -1,7 +1,7 @@ -;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -*- coding: iso-8859-1; -*- +;;; tramp-ftp.el --- Tramp convenience functions for Ange-FTP -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, -;; 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, +;; 2008 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el index 9ea2c9759df..f72774cd01f 100644 --- a/lisp/net/tramp-smb.el +++ b/lisp/net/tramp-smb.el @@ -1,6 +1,7 @@ -;;; tramp-smb.el --- Tramp access functions for SMB servers -*- coding: iso-8859-1; -*- +;;; tramp-smb.el --- Tramp access functions for SMB servers -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, +;; 2008 Free Software Foundation, Inc. ;; Author: Michael Albinus ;; Keywords: comm, processes diff --git a/lisp/net/tramp-util.el b/lisp/net/tramp-util.el index 145f3cfc836..f9ad621c58b 100644 --- a/lisp/net/tramp-util.el +++ b/lisp/net/tramp-util.el @@ -1,10 +1,10 @@ ;;; -*- coding: iso-2022-7bit; -*- ;;; tramp-util.el --- Misc utility functions to use with Tramp -;; Copyright (C) 2001, 2002, 2003, 2004, 2005, -;; 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, +;; 2008 Free Software Foundation, Inc. -;; Author: kai.grossjohann@gmx.net +;; Author: Kai Gro,A_(Bjohann ;; Keywords: comm, extensions, processes ;; This file is free software; you can redistribute it and/or modify diff --git a/lisp/net/tramp-uu.el b/lisp/net/tramp-uu.el index c5316cd35ef..5958494ba76 100644 --- a/lisp/net/tramp-uu.el +++ b/lisp/net/tramp-uu.el @@ -1,8 +1,8 @@ ;;; -*- coding: iso-2022-7bit; -*- ;;; tramp-uu.el --- uuencode in Lisp -;; Copyright (C) 2002, 2003, 2004, 2005, 2006, -;; 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, +;; 2008 Free Software Foundation, Inc. ;; Author: Kai Gro,A_(Bjohann ;; Keywords: comm, terminals From f88276af2ff49b6bbd9f03d6fe5cff018832ec27 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 2 Feb 2008 10:50:03 +0000 Subject: [PATCH 12/20] * net/tramp-vc.el (tramp-vc-do-command): Use `mapc' instead of `mapcar'. --- lisp/net/tramp-vc.el | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/lisp/net/tramp-vc.el b/lisp/net/tramp-vc.el index 52e47905970..b66d74e54aa 100644 --- a/lisp/net/tramp-vc.el +++ b/lisp/net/tramp-vc.el @@ -1,7 +1,7 @@ ;;; tramp-vc.el --- Version control integration for TRAMP.el -;; Copyright (C) 2000, 2001, 2002, 2003, 2004, -;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, +;; 2007, 2008 Free Software Foundation, Inc. ;; Author: Daniel Pittman ;; Keywords: comm, processes @@ -98,9 +98,8 @@ See `vc-do-command' for more information." (erase-buffer) - (mapcar - (function - (lambda (s) (and s (setq squeezed (append squeezed (list s)))))) + (mapc + (lambda (s) (and s (setq squeezed (append squeezed (list s))))) flags) (if (and (eq last 'MASTER) file (setq vc-file (vc-name file))) From eef3f0c84cec23e22ee0fcb6f0561755a2636ced Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 2 Feb 2008 10:51:50 +0000 Subject: [PATCH 13/20] * net/trampver.el: Update release number. --- lisp/ChangeLog | 15 +++++++++++++++ lisp/net/trampver.el | 5 +++-- 2 files changed, 18 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 727873f9130..20554f8442d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,18 @@ +2008-02-02 Michael Albinus + + Sync with Tramp 2.0.57. + + * net/tramp.el (tramp-handle-make-auto-save-file-name) + (tramp-completion-dissect-file-name, tramp-find-executable): Use + `mapc' instead of `mapcar'. + (tramp-open-connection-setup-interactive-shell): Send only single + prompt setting commands, in order to avoid double-prompt. + + * net/tramp-vc.el (tramp-vc-do-command): Use `mapc' instead of + `mapcar'. + + * net/trampver.el: Update release number. + 2008-02-01 Chong Yidong * progmodes/etags.el (next-file): Improve revert message. diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index be994b35102..a6e026f2f21 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -2,7 +2,8 @@ ;;; trampver.el --- Transparent Remote Access, Multiple Protocol ;;; lisp/trampver.el. Generated from trampver.el.in by configure. -;; Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2004, 2005, 2006, 2007, +;; 2008 Free Software Foundation, Inc. ;; Author: Kai Gro,A_(Bjohann ;; Keywords: comm, processes @@ -30,7 +31,7 @@ ;; are auto-frobbed from configure.ac, so you should edit that file and run ;; "autoconf && ./configure" to change them. -(defconst tramp-version "2.0.57-pre" +(defconst tramp-version "2.0.57" "This version of Tramp.") (defconst tramp-bug-report-address "tramp-devel@gnu.org" From 7ed4a04762028d85a488bacda5a722126b246f81 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 2 Feb 2008 10:56:12 +0000 Subject: [PATCH 14/20] * tramp.texi: Move @setfilename ../info/tramp up, outside the header section. Reported by . Use new FSF's Back-Cover Text. --- man/tramp.texi | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/man/tramp.texi b/man/tramp.texi index c4f2cc88f6e..9a7be81d826 100644 --- a/man/tramp.texi +++ b/man/tramp.texi @@ -1,6 +1,6 @@ \input texinfo @c -*-texinfo-*- -@c %**start of header @setfilename ../info/tramp +@c %**start of header @settitle TRAMP User Manual @setchapternewpage odd @c %**end of header @@ -25,8 +25,8 @@ @end macro @copying -Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 -Free Software Foundation, Inc. +Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, + 2006, 2007, 2008 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document @@ -37,9 +37,9 @@ Manual'', and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled ``GNU Free Documentation License'' in the Emacs manual. -(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify -this GNU Manual, like GNU software. Copies published by the Free -Software Foundation raise funds for GNU development.'' +(a) The FSF's Back-Cover Text is: ``You have the freedom to +copy and modify this GNU manual. Buying copies from the FSF +supports it in developing GNU and promoting software freedom.'' This document is part of a collection distributed under the GNU Free Documentation License. If you want to distribute this document From 6ab7aef1dc92a44e9afa5bb86262286a3610ee3f Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 2 Feb 2008 10:57:40 +0000 Subject: [PATCH 15/20] * trampver.texi: Update release number. --- man/ChangeLog | 10 ++++++++++ man/trampver.texi | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/man/ChangeLog b/man/ChangeLog index f7b0965b9dd..95f64d2778b 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,13 @@ +2008-02-02 Michael Albinus + + Sync with Tramp 2.0.57. + + * tramp.texi: Move @setfilename ../info/tramp up, outside the header + section. Reported by . + Use new FSF's Back-Cover Text. + + * trampver.texi: Update release number. + 2008-01-31 Nick Roberts * trouble.texi (Checklist): Direct users to emacs-devel@gnu.org. diff --git a/man/trampver.texi b/man/trampver.texi index f60b8ccb565..832f180d0a2 100644 --- a/man/trampver.texi +++ b/man/trampver.texi @@ -9,7 +9,7 @@ @c In the Tramp CVS, the version number is auto-frobbed from @c configure.ac, so you should edit that file and run @c "autoconf && ./configure" to change the version number. -@set trampver 2.0.56 +@set trampver 2.0.57 @c Other flags from configuration @set prefix /usr/local From 7ff926e0aa431bbabe43a291fe0b555e83378df3 Mon Sep 17 00:00:00 2001 From: Eli Zaretskii Date: Sat, 2 Feb 2008 15:58:47 +0000 Subject: [PATCH 16/20] (Tags): Fix last change. --- man/ChangeLog | 4 ++++ man/maintaining.texi | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/man/ChangeLog b/man/ChangeLog index 95f64d2778b..2864dc9759e 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2008-02-02 Eli Zaretskii + + * maintaining.texi (Tags): Fix last change. + 2008-02-02 Michael Albinus Sync with Tramp 2.0.57. diff --git a/man/maintaining.texi b/man/maintaining.texi index 1a4877c422b..2215396c992 100644 --- a/man/maintaining.texi +++ b/man/maintaining.texi @@ -130,7 +130,7 @@ Of course, you should substitute the proper years and copyright holder. @node Tags @section Tags Tables -@cindex tag tables +@cindex tags and tag tables A @dfn{tags table} is a description of how a multi-file program is broken up into files. It lists the names of the component files and the From 10fdc4c2483e5286345ce05c37c1b54a0963bc14 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Mon, 4 Feb 2008 03:03:52 +0000 Subject: [PATCH 17/20] [MAC_OSX] (fn_keycode_to_keycode_table): Add more entries that ignores kEventKeyModifierFnMask. (XTread_socket) [MAC_OSX]: Move code for ignoring kEventKeyModifierFnMask for some keys ... (mac_mapped_modifiers) [MAC_OSX]: ... to here. Add argument KEY_CODE. All callers changed. (mac_quit_char_key_p, XTread_socket): Get Emacs modifiers from mapped modifiers. --- src/ChangeLog | 11 +++++++ src/macterm.c | 86 ++++++++++++++++++++++++++------------------------- 2 files changed, 55 insertions(+), 42 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 54678a2dccf..e3b083b0474 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,14 @@ +2008-02-04 YAMAMOTO Mitsuharu + + * macterm.c [MAC_OSX] (fn_keycode_to_keycode_table): Add more entries + that ignores kEventKeyModifierFnMask. + (XTread_socket) [MAC_OSX]: Move code for ignoring + kEventKeyModifierFnMask for some keys ... + (mac_mapped_modifiers) [MAC_OSX]: ... to here. Add argument KEY_CODE. + All callers changed. + (mac_quit_char_key_p, XTread_socket): Get Emacs modifiers from + mapped modifiers. + 2008-02-01 Kenichi Handa * ccl.c (CCL_WRITE_CHAR): Fix overflow checking. diff --git a/src/macterm.c b/src/macterm.c index b110f0372fc..93efc711250 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -9009,8 +9009,8 @@ static const unsigned char keycode_to_xkeysym_table[] = { /* Table for translating Mac keycode with the laptop `fn' key to that without it. Destination symbols in comments are keys on US keyboard, and they may not be the same on other types of keyboards. - If the destination is identical to the source (f1 ... f12), it - doesn't map `fn' key to a modifier. */ + If the destination is identical to the source, it doesn't map `fn' + key to a modifier. */ static const unsigned char fn_keycode_to_keycode_table[] = { /*0x00*/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /*0x10*/ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -9033,13 +9033,13 @@ static const unsigned char fn_keycode_to_keycode_table[] = { /*0x60*/ 0x60 /*f5 = f5*/, 0x61 /*f6 = f6*/, 0x62 /*f7 = f7*/, 0x63 /*f3 = f3*/, /*0x64*/ 0x64 /*f8 = f8*/, 0x65 /*f9 = f9*/, 0, 0x67 /*f11 = f11*/, - /*0x68*/ 0, 0, 0, 0, + /*0x68*/ 0, 0x69 /*f13 = f13*/, 0x6a /*f16 = f16*/, 0x6b /*f14 = f14*/, /*0x6C*/ 0, 0x6d /*f10 = f10*/, 0, 0x6f /*f12 = f12*/, - /*0x70*/ 0, 0, 0, 0x7b /*home -> left*/, + /*0x70*/ 0, 0x71 /*f15 = f15*/, 0x72 /*help = help*/, 0x7b /*home -> left*/, /*0x74*/ 0x7e /*pgup -> up*/, 0x33 /*delete -> backspace*/, 0x76 /*f4 = f4*/, 0x7c /*end -> right*/, - /*0x78*/ 0x78 /*f2 = f2*/, 0x7d /*pgdown -> down*/, 0x7a /*f1 = f1*/, 0, - /*0x7C*/ 0, 0, 0, 0 + /*0x78*/ 0x78 /*f2 = f2*/, 0x7d /*pgdown -> down*/, 0x7a /*f1 = f1*/, 0x7b /*left = left*/, + /*0x7C*/ 0x7c /*right = right*/, 0x7d /*down = down*/, 0x7e /*up = up*/, 0 }; #endif /* MAC_OSX */ @@ -9091,8 +9091,8 @@ mac_to_emacs_modifiers (EventModifiers mods) } static UInt32 -mac_mapped_modifiers (modifiers) - UInt32 modifiers; +mac_mapped_modifiers (modifiers, key_code) + UInt32 modifiers, key_code; { UInt32 mapped_modifiers_all = (NILP (Vmac_control_modifier) ? 0 : controlKey) @@ -9102,6 +9102,17 @@ mac_mapped_modifiers (modifiers) #ifdef MAC_OSX mapped_modifiers_all |= (NILP (Vmac_function_modifier) ? 0 : kEventKeyModifierFnMask); + + /* The meaning of kEventKeyModifierFnMask has changed in Mac OS X + 10.5, and it now behaves much like Cocoa's NSFunctionKeyMask. It + no longer means laptop's `fn' key is down for the following keys: + F1, F2, and so on, Help, Forward Delete, Home, End, Page Up, Page + Down, the arrow keys, and Clear. We ignore the corresponding bit + if that key can be entered without the `fn' key on laptops. */ + if (modifiers & kEventKeyModifierFnMask + && key_code <= 0x7f + && fn_keycode_to_keycode_table[key_code] == key_code) + modifiers &= ~kEventKeyModifierFnMask; #endif return mapped_modifiers_all & modifiers; @@ -9130,18 +9141,19 @@ int mac_quit_char_key_p (modifiers, key_code) UInt32 modifiers, key_code; { - UInt32 char_code; + UInt32 char_code, mapped_modifiers; unsigned long some_state = 0; Ptr kchr_ptr = (Ptr) GetScriptManagerVariable (smKCHRCache); int c, emacs_modifiers; /* Mask off modifier keys that are mapped to some Emacs modifiers. */ - key_code |= (modifiers & ~(mac_mapped_modifiers (modifiers))); + mapped_modifiers = mac_mapped_modifiers (modifiers, key_code); + key_code |= (modifiers & ~mapped_modifiers); char_code = KeyTranslate (kchr_ptr, key_code, &some_state); if (char_code & ~0xff) return 0; - emacs_modifiers = mac_to_emacs_modifiers (modifiers); + emacs_modifiers = mac_to_emacs_modifiers (mapped_modifiers); if (emacs_modifiers & ctrl_modifier) c = make_ctrl_char (char_code); @@ -10203,7 +10215,7 @@ mac_handle_text_input_event (next_handler, event, data) case kEventTextInputUnicodeForKeyEvent: { EventRef kbd_event; - UInt32 actual_size, modifiers; + UInt32 actual_size, modifiers, key_code; err = GetEventParameter (event, kEventParamTextInputSendKeyboardEvent, typeEventRef, NULL, sizeof (EventRef), NULL, @@ -10212,7 +10224,11 @@ mac_handle_text_input_event (next_handler, event, data) err = GetEventParameter (kbd_event, kEventParamKeyModifiers, typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); - if (err == noErr && mac_mapped_modifiers (modifiers)) + if (err == noErr) + err = GetEventParameter (kbd_event, kEventParamKeyCode, + typeUInt32, NULL, sizeof (UInt32), + NULL, &key_code); + if (err == noErr && mac_mapped_modifiers (modifiers, key_code)) /* There're mapped modifier keys. Process it in XTread_socket. */ return eventNotHandledErr; @@ -10230,29 +10246,21 @@ mac_handle_text_input_event (next_handler, event, data) if (err == noErr && code < 0x80) { /* ASCII character. Process it in XTread_socket. */ - if (read_socket_inev && code >= 0x20 && code <= 0x7e) + if (read_socket_inev && code >= 0x20 && code <= 0x7e + && !(key_code <= 0x7f + && keycode_to_xkeysym_table [key_code])) { - UInt32 key_code; + struct frame *f = mac_focus_frame (&one_mac_display_info); - err = GetEventParameter (kbd_event, kEventParamKeyCode, - typeUInt32, NULL, sizeof (UInt32), - NULL, &key_code); - if (!(err == noErr && key_code <= 0x7f - && keycode_to_xkeysym_table [key_code])) - { - struct frame *f = - mac_focus_frame (&one_mac_display_info); - - read_socket_inev->kind = ASCII_KEYSTROKE_EVENT; - read_socket_inev->code = code; - read_socket_inev->modifiers = - mac_to_emacs_modifiers (modifiers); - read_socket_inev->modifiers |= - (extra_keyboard_modifiers - & (meta_modifier | alt_modifier - | hyper_modifier | super_modifier)); - XSETFRAME (read_socket_inev->frame_or_window, f); - } + read_socket_inev->kind = ASCII_KEYSTROKE_EVENT; + read_socket_inev->code = code; + read_socket_inev->modifiers = + mac_to_emacs_modifiers (modifiers); + read_socket_inev->modifiers |= + (extra_keyboard_modifiers + & (meta_modifier | alt_modifier + | hyper_modifier | super_modifier)); + XSETFRAME (read_socket_inev->frame_or_window, f); } return eventNotHandledErr; } @@ -11264,7 +11272,7 @@ XTread_socket (sd, expected, hold_quit) typeUInt32, NULL, sizeof (UInt32), NULL, &modifiers); #endif - mapped_modifiers = mac_mapped_modifiers (modifiers); + mapped_modifiers = mac_mapped_modifiers (modifiers, keycode); #if USE_CARBON_EVENTS && (defined (MAC_OSX) || USE_MAC_TSM) /* When using Carbon Events, we need to pass raw keyboard @@ -11329,12 +11337,6 @@ XTread_socket (sd, expected, hold_quit) { inev.kind = NON_ASCII_KEYSTROKE_EVENT; inev.code = 0xff00 | keycode_to_xkeysym_table [keycode]; -#ifdef MAC_OSX - if (modifiers & kEventKeyModifierFnMask - && keycode <= 0x7f - && fn_keycode_to_keycode_table[keycode] == keycode) - modifiers &= ~kEventKeyModifierFnMask; -#endif } else if (mapped_modifiers) { @@ -11428,7 +11430,7 @@ XTread_socket (sd, expected, hold_quit) inev.code = er.message & charCodeMask; } - inev.modifiers = mac_to_emacs_modifiers (modifiers); + inev.modifiers = mac_to_emacs_modifiers (mapped_modifiers); inev.modifiers |= (extra_keyboard_modifiers & (meta_modifier | alt_modifier | hyper_modifier | super_modifier)); From e46a3f598813b94ffeab8bd187599203d59348a1 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 4 Feb 2008 04:45:00 +0000 Subject: [PATCH 18/20] * etags.c: Added "GTY" as synonym for __attribute__. Updated gperf output. --- lib-src/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index d98a441f8d8..fe1fa58587c 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,3 +1,8 @@ +2008-02-04 Tom Tromey + + * etags.c: Added "GTY" as synonym for __attribute__. Updated + gperf output. + 2008-01-22 Chong Yidong * pop.c (pop_stat, pop_last): Fix last fix. From 80b61f4b1562f3f2c0eee4d1eba8ee9b053493d0 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 4 Feb 2008 04:45:16 +0000 Subject: [PATCH 19/20] Added "GTY" as synonym for __attribute__. Updated gperf output. --- lib-src/etags.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/lib-src/etags.c b/lib-src/etags.c index 52bcb8ad11d..ba0be441bd9 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -2465,6 +2465,7 @@ while, 0, st_C_ignore switch, 0, st_C_ignore return, 0, st_C_ignore __attribute__, 0, st_C_attribute +GTY, 0, st_C_attribute @interface, 0, st_C_objprot @protocol, 0, st_C_objprot @implementation,0, st_C_objimpl @@ -2528,9 +2529,9 @@ hash (str, len) 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 15, - 14, 35, 35, 35, 35, 35, 35, 35, 14, 35, - 35, 35, 35, 12, 13, 35, 35, 35, 35, 12, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 3, + 26, 35, 35, 35, 35, 35, 35, 35, 27, 35, + 35, 35, 35, 24, 0, 35, 35, 35, 35, 0, 35, 35, 35, 35, 35, 1, 35, 16, 35, 6, 23, 0, 0, 35, 22, 0, 35, 35, 5, 0, 0, 15, 1, 35, 6, 35, 8, 19, 35, 16, @@ -2581,7 +2582,7 @@ in_word_set (str, len) { {""}, {""}, {"if", 0, st_C_ignore}, - {""}, + {"GTY", 0, st_C_attribute}, {"@end", 0, st_C_objend}, {"union", 0, st_C_struct}, {"define", 0, st_C_define}, From 8e7e5143d9d3c4625846f58a905d4d6fc2c424ef Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 4 Feb 2008 04:51:59 +0000 Subject: [PATCH 20/20] Undo last change (mistakenly committed to branch). --- lib-src/ChangeLog | 5 ----- lib-src/etags.c | 9 ++++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/lib-src/ChangeLog b/lib-src/ChangeLog index fe1fa58587c..d98a441f8d8 100644 --- a/lib-src/ChangeLog +++ b/lib-src/ChangeLog @@ -1,8 +1,3 @@ -2008-02-04 Tom Tromey - - * etags.c: Added "GTY" as synonym for __attribute__. Updated - gperf output. - 2008-01-22 Chong Yidong * pop.c (pop_stat, pop_last): Fix last fix. diff --git a/lib-src/etags.c b/lib-src/etags.c index ba0be441bd9..52bcb8ad11d 100644 --- a/lib-src/etags.c +++ b/lib-src/etags.c @@ -2465,7 +2465,6 @@ while, 0, st_C_ignore switch, 0, st_C_ignore return, 0, st_C_ignore __attribute__, 0, st_C_attribute -GTY, 0, st_C_attribute @interface, 0, st_C_objprot @protocol, 0, st_C_objprot @implementation,0, st_C_objimpl @@ -2529,9 +2528,9 @@ hash (str, len) 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, - 35, 35, 35, 35, 35, 35, 35, 35, 35, 3, - 26, 35, 35, 35, 35, 35, 35, 35, 27, 35, - 35, 35, 35, 24, 0, 35, 35, 35, 35, 0, + 35, 35, 35, 35, 35, 35, 35, 35, 35, 15, + 14, 35, 35, 35, 35, 35, 35, 35, 14, 35, + 35, 35, 35, 12, 13, 35, 35, 35, 35, 12, 35, 35, 35, 35, 35, 1, 35, 16, 35, 6, 23, 0, 0, 35, 22, 0, 35, 35, 5, 0, 0, 15, 1, 35, 6, 35, 8, 19, 35, 16, @@ -2582,7 +2581,7 @@ in_word_set (str, len) { {""}, {""}, {"if", 0, st_C_ignore}, - {"GTY", 0, st_C_attribute}, + {""}, {"@end", 0, st_C_objend}, {"union", 0, st_C_struct}, {"define", 0, st_C_define},