Ist es möglich, pufferspezifische Tastenkombinationen festzulegen?
Ich habe Folgendes in einer meiner Organisationsdateien:
# Local Variables:
# eval: (local-set-key (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)
# End:
Diese Bindung bleibt jedoch auch für andere Dateien im Organisationsmodus bestehen. Wenn ich eine Datei mit einem anderen Hauptmodus öffne, wird meine Standardschlüsselbindung aktiviert.
Es sieht so aus, local-set-key
als würden Bindungen für den Hauptmodus und nicht für den Puffer festgelegt.
Wie kann ich Bindungen haben, die nur in einem bestimmten Puffer aktiviert werden?
key-bindings
keymap
file-local-variables
Kaushal Modi
quelle
quelle
local-unset-key
mit Hakenorg-mode-hook
funktionieren können , wenn diese ausgeführt wird , bevor derLocal Variables:
Abschnitt ist.Local Variables:
Antworten:
Zum Abschluss hier eine Antwort, die meinen Kommentar erweitert. Ich definiere einen Nebenmodus mit der erforderlichen Tastenkombination und schalte ihn mithilfe lokaler Dateivariablen in den erforderlichen Puffer um.
Sie können es in den erforderlichen Dateien umschalten, indem Sie den Abschnitt mit den lokalen Variablen am Ende der Datei wie folgt festlegen. Hier können Sie auch die Tastenkombination ändern oder hinzufügen. Sie müssen weiterhin verschiedene Nebenmodi für jeden Puffer definieren, der dieselbe Tastenfolge verschiedenen Befehlen zuordnet.
quelle
eval-buffer: Symbol's value as variable is void: my-org-buffer-local-mode-map
Wenn ich versuche, dies auszuführen(define-minor-mode my-org-buffer-local-mode "Minor mode to simulate buffer local keybindings." :init-value nil) (define-key my-org-buffer-local-mode-map (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)
:keymap
Schlüsselwort, überprüfen Sie nullprogram.com/blog/2013/02/06Hier ist eine generische Methode zum Festlegen pufferspezifischer Schlüsselbindungen.
temp-mode.el
undrequire
in Ihreminit.el
.temp-mode
Moll und definieren , dass eine leichte-Modus des keymap nur in den Puffer (n) die Sie benötigen.Legen Sie das folgende
Local Variables
Snippet in den Puffer, in dem Sie die benutzerdefinierte Schlüsselbindung durchführen möchten. Unten finden Sie Beispiele fürorg-mode
Dateien.In Puffer EINS
Wenn ein anderer Puffer dieselbe Schlüsselbindung mit neu definiert,
Im Puffer ZWEI
dann wird die neue Bindung wirksam
M-x revert-buffer
.Dies würde ich tun, wenn ich sehr häufig zwischen diesen beiden Puffern wechseln muss und wenn ich die F10Bindung in beiden verwenden muss:
C-x C-s
(Speichern) und wechseln Sie zu Puffer ZWEIrevert-buffer
(Bindungen aktualisieren), arbeiten Sie in Puffer ZWEIC-x C-s
und wechseln Sie zu Puffer EINSrevert-buffer
(Bindungen aktualisieren), arbeiten Sie in Puffer EINSC-x C-s
und wechseln Sie zu Puffer ZWEIAber ich würde lieber die verschiedenen pufferspezifischen Befehle an verschiedene Schlüssel binden.
Temporärer Moll-Modus
quelle