2012-12-20 10 views
9

W emacs, jak mogę wyświetlić zacienione/przesłonięte powiązania klawiszy dla bieżącego bufora? Nie pojawią się podczas uruchamiania describe-bindings (C-h b).Jak wyświetlić przesłonięte/zacienione powiązania klawiszy?

Innymi słowy: jak mogę sprawdzić, czy tryby aktywne w buforze mają sprzeczne wiązania klawiszy?

+0

Chyba obejście jest stosowanie trybu niewielkie tak jak na http://stackoverflow.com/a/683575/789593 i sprawdź, czy dany klawisz ma inne polecenie, gdy ten tryb jest wyłączony. Jeszcze bardziej surowym podejściem może być uruchomienie Emacsa z 'emacs -q', aby sprawdzić, czy klucz w twojej konfiguracji ma inne powiązanie bez twojej konfiguracji. –

+0

Niestety, nie rozwiązuje to problemu sprzecznych trybów drugorzędnych: trzeba przetestować każdą możliwą parę trybów podrzędnych z osobna. – Norswap

Odpowiedz

7

Wystarczy zadzwonić describe-mode: CHm

Większość docstrings trybu wyświetli ich układów klawiatur oraz Metoda użyta do ich wyświetlenia w tym miejscu informuje również, czy powiązanie jest zacienione.

To nie powiedzieć, co to jest zasłonięta przez, ale oczywiście to jest trywialne, by sprawdzić z CHc lub CHk.

np .:

key    binding 
---    ------- 
[...] 
C-M-q   indent-sexp 
    (that binding is currently shadowed by another mode) 

Tekst ten jest generowany przez funkcję substitute-command-keys który przetwarza docstring trybu, kiedy funkcja documentation jest tzw.

np

(substitute-command-keys "\\{lisp-interaction-mode-map}") 

następujące funkcje mogą być także przydatne:

(key-binding KEY &optional ACCEPT-DEFAULT NO-REMAP POSITION) ;; dominant binding 
(global-key-binding KEYS &optional ACCEPT-DEFAULT) 
(local-key-binding KEYS &optional ACCEPT-DEFAULT) 
(minor-mode-key-binding KEY &optional ACCEPT-DEFAULT) ;; discover keymap(s) 
0

do cholery to to zrobił:

(define-key c++-mode-map "\C-c\C-s" 'kaw-sort-projects) 

i nie CH B (zobaczyć Wiązania). I dostałem to wyjście:

Major Mode Bindings: 
key    binding 
---    ------- 

C-c C-q  c-indent-defun 
C-c C-s  kaw-sort-projects 
C-c C-u  c-up-conditional 
C-c C-w  subword-mode 

więc wygląda na to, że się pojawia.

Czy to masz na myśli?

stworzył to funkcja, która daje poprzednią wartość podczas definiowania klucza

(defun define-key-warn (map key fxn) 
    "Bind a key and give info message if already bound" 
    (setq old-fxn (lookup-key map key)) 
    (if old-fxn 
     (message "INFO: key %s was defined as %s" key old-fxn)) 

    (define-key map key fxn) 
) 
+1

To, co chciałbym zobaczyć, to wiązanie, które było śledzone przez C-c C-y. Na przykład, jeśli przed wywołaniem 'define-key',' C-c C-s' był związany z 'my-command', to chciałbym zobaczyć C-c C-s my-command (shadowed)' pojawiające się gdzieś. – Norswap

+0

ah. więc potrzebujemy sposobu na zrzuty/dostęp do domyślnych powiązań dla trybu. Muszę myśleć o tym przez chwilę. – kdubs

+0

wygląda jak po związaniu klawisza, całkowicie usuwa wszelkie ślady poprzedniego klucza. Rozłączenie klucza pozostawia go pustym. wygląda na to, że nie będę potrzebował pomocy. – kdubs

Powiązane problemy