Alex Kicelew -> debian-russian@lists.debian.org @ Thu, 12 Jul 2007 14:33:18 +0400:
AK> А как ныне (последний когда-то пробегавший по анстейблу AK> emacs-snapshot) модно локально переопределять клавиши для конкретного AK> режима? AK> Задача. В техе неразрывный пробел вводится неудобно -- тильдой, AK> которой нет в русской раскладке. Издревле у меня сидело AK> переопределение сочетания meta-space (я в курсе, что оно вообще в AK> емаксе значимо, но в тех-моде я им никогда не пользовался) на тильду, AK> и все было нормально. Сейчас вдруг обнаружил, что мой старый код не AK> работает: AK> (add-hook 'tex-mode-hook AK> '(lambda () AK> (local-set-key [?\M- ] '(lambda () AK> "Inserts TeX non-breaking space" AK> (interactive) AK> (insert "~") AK> ) AK> ) AK> ) AK> Точнее, он отрабатывает без ошибок, но толку с него нуль. eval-region AK> на фрагмент внутри лямбды проходит правильно -- клавиша AK> переопределяется. Ковыряние в нутрях показало, что tex-mode-hook ныне AK> вообще отсутствует, попытка изменить на latex-mode-hook (в голом техе AK> я все равно практически не работаю) не привела ни к чему. Хелп дает AK> пример: AK> (add-hook 'texinfo-mode-hook AK> '(lambda () AK> (define-key texinfo-mode-map "\C-cp" AK> 'backward-paragraph) AK> (define-key texinfo-mode-map "\C-cn" AK> 'forward-paragraph))) AK> Изменение этого примера под мои значения проходит с тем же AK> успехом. Все работает, ничего не ругается, ничего не отрабатывает. AK> Вопрос 1. Как это нужно делать сейчас? Вообще, судя по тому, что я увидел в описании latex-mode (C-h f latex-mode), он использует LaTeX-mode-map. Она, правда, не определена, пока не загрузился соответствующий файл, но это, понятно, лечится подходом "on load" (я не помню имя функции, найди в info сам). AK> Вопрос 2. А нужно ли это делать? Глобальная задача -- вводить тильду AK> (или, тем более, в хтмл-сгмл) вне зависимости от раскладки, но AK> именно локально -- в техе тильду, в сгмл нбсп, еще в некоторых режимах AK> еще некоторые прелести. Возможно, у нее есть какое-то более элегантное AK> решение (кроме переопределения раскладки, которое сработает под тех, AK> но не сработает в более сложных случаях)? Не то чтобы более элегантное, но решающее именно эту задачу. Сделать global-set-key, а в функции анализировать текущий mode. -- Artem Chuprina RFC2822: <ran{}ran.pp.ru> Jabber: [EMAIL PROTECTED] -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]