Globale Überbrückung von Emacs-Tastenbindungen

8

Gibt es einen Befehl, um eine Tastenkombination global zu überschreiben, so dass sie sogar die lokalen Einstellungen der Hauptmodi überschreibt? global-set-key wird von den Hauptmodusbindungen überschrieben, wie hier angegeben: Ссылка

    
Michael Gummelt 16.03.2011, 21:47
quelle

2 Antworten

6

Nein, es gibt keine (eingebaute) Möglichkeit, eine Tastenbindung einzurichten, die alle anderen außer Kraft setzt. Sehen Sie sich an, wie Emacs die Tastenbelegung durchsucht, indem Sie "Die aktiven Tastenbelegungen durchsuchen" durchsuchen.

Sie könnten overriding-terminal-local-map oder overriding-local-map auf eine Keymap setzen, die die gewünschte Bindung enthält, aber das würde verhindern, dass Ihr Puffer irgendwelche Puffer- / Overlay- / Minor-Modus-Keymaps hat, wodurch die Mehrheit der Emacs weitgehend deaktiviert wird / p>

Der nächste Bereich, in dem Emacs nach einer Bindung sucht, befindet sich in der character -Eigenschaft am aktuellen Punkt - die wahrscheinlich nicht überall verwendet wird, aber es ist eine Möglichkeit, die Bindung außer Kraft zu setzen (es sei denn, du machst mit Charaktereigenschaften zu definieren) Ihr Schlüssel überall, wirklich eklig).

Der nächste Ort, an dem Emacs aussieht, ist die Variable emulation-mode-map-alists , die wahrscheinlich die beste Wahl ist. Es wurde für Pakete eingerichtet, die in Fällen verwendet werden sollen, in denen mehrere Minor-Mode-Keymaps vorhanden sind, die es jonglieren möchte.

Erstellen Sie einen globalen untergeordneten Modus (siehe Definieren Minor Modes ), lege deine Key-Bindung ein, füge deinen Moll-Modus und deine Keymap in emulation-mode-map-alists ein und aktiviere deinen Minor-Modus.

Ihre Tastenbelegung hat jetzt Vorrang vor allen anderen, außer den früheren in der emulation-mode-map-alist Liste oder in den Zeicheneigenschaften oder in overriding-local-map ...

Ich glaube, das ist das Beste, was Sie tun können, ohne die Emacs-Quelle zu hacken.

    
Trey Jackson 16.03.2011 22:12
quelle
4

Im Fall von Keybindungen im Moll-Modus, die meine persönlichen globalen Bindings außer Kraft setzen, hatte ich Glück mit add-hook + local-unset-key

(add-hook 'Rückgängig-Baum-Modus   (Lambda ()     (local-unset-key "C- /")))

    
Erick Bodine 18.03.2011 17:12
quelle

Tags und Links