LINUX.ORG.RU

Emacs global-set-key


0

0

Есть ли возможность забиндить глобально клавишу, чтобы она всегда выполняла заданную функцию(даже если текущий глобальный режим эту клавишу пытается перебиндить). И второй вопрос : какие посоветуете клавишы перемещения курсором(стрелочки или клавишные комбинации)?

>Есть ли возможность забиндить глобально клавишу, чтобы она всегда выполняла заданную функцию(даже если текущий глобальный режим эту клавишу пытается перебиндить)

Все наоборот. Это локальный режим пытается ее перебиндить. Более 
приоритетными являются привязки minor-mode, потом major-mode, а потом 
только global. 


Я задачу такую не решал. Ну, скажем, с major-mode я еще представляю, 
как справиться. Есть вариант решения. Изменение major-mode можно 
отловить по хуку after-change-major-mode-hook и там приделать режиму 
рога. Что-то типа такого (устанавливаем, скажем, C-M-n и C-M-p, чтобы 
всегда листать постранично):


(add-hook 'after-change-major-mode-hook
	  (lambda ()
	    (local-set-key "\C-\M-n" 'scroll-up)
	    (local-set-key "\C-\M-p" 'scroll-down)))

А вот что делать с minor-mode я не представляю. В любом случае, у 
режимов есть свой keymap, и его можно изменить в именном хуке для 
того режима.

Zubok ★★★★★
()
Ответ на: комментарий от hometown

Режим может включаться необязательно после выполнения find-file. Он и вручную может включаться. Тот хук, что выше должен обязательно вызываться последним (если, конечно, major-mode написан в соответсвии с соглашениями Emacs). И не важно, вручную этот режим выбран или автоматически.

Zubok ★★★★★
()
Ответ на: комментарий от hometown

Угу. Ну если что, то вот релевантные параграфы из Emacs Lisp reference Manual. Тут и для minor-mode есть какие-то переменные и функции. можно для minor-mode keymap'ы ставить. Но я не экспериментировал.

http://www.gnu.org/software/emacs/manual/html_node/elisp/Controlling-Active-M...

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

Спасибо посмотрел, и даже попробовал использовать overriding-local-map, но это приводит к тому что остается только глобальный keymap и опредленный в нзаваной выше переменной, все остальные просто не включаюься, а остальные пременные определяют кеймапы для частных случаев, так что остановлюсь на варианте с хуками. А по поводу второго вопроса, лучше использовать для навигации курсорные клавиши, или переучиватся только на алфавитно-цифорвую часть клавиатуры, по идее преремещение пальцев намного меньше, но интерсно узнать мнение.

hometown
() автор топика
Ответ на: комментарий от hometown

>А по поводу второго вопроса, лучше использовать для навигации курсорные клавиши, или переучиватся только на алфавитно-цифорвую часть клавиатуры, по идее преремещение пальцев намного меньше, но интерсно узнать мнение.

IMHO, лучше так, как удобно. Если клавиатура не какая-нибудь хитро изогнутая и не Happy Hacking Keyboard :), то без перемапливания Ctrl на Caps Lock об C-nbpf можно пальцы поломать.

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.