[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: