emacs: local-set-key
Hi.
А как ныне (последний когда-то пробегавший по анстейблу
emacs-snapshot) модно локально переопределять клавиши для конкретного
режима?
Задача. В техе неразрывный пробел вводится неудобно -- тильдой,
которой нет в русской раскладке. Издревле у меня сидело
переопределение сочетания meta-space (я в курсе, что оно вообще в
емаксе значимо, но в тех-моде я им никогда не пользовался) на тильду,
и все было нормально. Сейчас вдруг обнаружил, что мой старый код не
работает:
(add-hook 'tex-mode-hook
'(lambda ()
(local-set-key [?\M- ] '(lambda ()
"Inserts TeX non-breaking space"
(interactive)
(insert "~")
)
)
)
Точнее, он отрабатывает без ошибок, но толку с него нуль. eval-region
на фрагмент внутри лямбды проходит правильно -- клавиша
переопределяется. Ковыряние в нутрях показало, что tex-mode-hook ныне
вообще отсутствует, попытка изменить на latex-mode-hook (в голом техе
я все равно практически не работаю) не привела ни к чему. Хелп дает
пример:
(add-hook 'texinfo-mode-hook
'(lambda ()
(define-key texinfo-mode-map "\C-cp"
'backward-paragraph)
(define-key texinfo-mode-map "\C-cn"
'forward-paragraph)))
Изменение этого примера под мои значения проходит с тем же
успехом. Все работает, ничего не ругается, ничего не отрабатывает.
Вопрос 1. Как это нужно делать сейчас?
Вопрос 2. А нужно ли это делать? Глобальная задача -- вводить тильду
(или, тем более, в хтмл-сгмл) вне зависимости от раскладки, но
именно локально -- в техе тильду, в сгмл нбсп, еще в некоторых режимах
еще некоторые прелести. Возможно, у нее есть какое-то более элегантное
решение (кроме переопределения раскладки, которое сработает под тех,
но не сработает в более сложных случаях)?
--
Alex Kicelew <arkoort@gmail.com> ICQ 3887592
Reply to: