2011-07-23 7 views
5

W szczególności, gdy ładuję dired-x, ustawia M-o, aby przełączyć tryb pomijania pomniejszego. Używam M-o dla innego okna, więc chciałbym zmienić klucz, który dired-x wiąże z czymś innym. Podjęto próbę ustawienia klucza po załadowaniu trybu:Jak zastąpić/zmienić powiązania klawiszy trybu w elicie?

(add-hook 'dired-mode-hook 
    (lambda() 
    (dired-omit-mode 1) 
    (global-set-key (kbd "M-o") 'other-window) 
    )) 

ale na próżno.

+1

Próbowałem patrząc na http://stackoverflow.com/questions/3773820/emacs-shortcuts-specific-for-a-file-type/3773856#3773856? – huitseeker

+0

Nie znalazłem tego, dzięki. Jest to ta sama odpowiedź, co zaakceptowana poniżej. – Loren

+1

Uwielbiam przepełnienie stosu: nie tylko jest to dokładnie to, co chciałem, to także dokładnie ten klucz, którego potrzebowałem ... – Shep

Odpowiedz

7

Nieco lepiej niż dodanie kolejnego kopię zwyczaju globalny wiązanie z lokalnym trybie mapy, byłoby usunięcie lokalny wiązania tak, że już nie cieni globalne powiązanie. Możesz również nadać tej funkcji nowy klucz, zanim to zrobisz.

(eval-after-load "dired-x" 
    '(progn 
    ;; Add an alternative local binding for the command 
    ;; bound to M-o 
    (define-key dired-mode-map (kbd "C-c o") 
     (lookup-key dired-mode-map (kbd "M-o"))) 
    ;; Unbind M-o from the local keymap 
    (define-key dired-mode-map (kbd "M-o") nil))) 
5

Wiązania w trybie diodowym "zacieniają" globalne, więc twój "klucz globalny" nie pomaga. Co chcesz zrobić, to przesłonić dired-mode oprawa:

(add-hook 'dired-mode-hook 
    (lambda() 
    (dired-omit-mode 1) 
    (define-key dired-mode-map (kbd "M-o") 'other-window) 
    )) 
+0

Dzięki! Dla każdego, kto ma takie pytanie, nie jest konieczne umieszczanie klucza definicji wewnątrz haka. – Loren

+3

Ale jest konieczne, aby 'dired-mode-map' istniało podczas korzystania z niego. – phils

Powiązane problemy