Emacs bindet Ci wieder, während er hält <tab> Bindungen </tab>

828
mckeed

Ich benutze Aquamacs. Es kann zwischen <tab>der eigentlichen Tabulatortaste und TABder Eingabe unterscheiden C-i. Ich möchte binden, C-ium 'next-linedauerhaft. Das funktioniert dafür:

(global-set-key (kbd "TAB") 'next-line) 

Aber dann überschreiben Moduskarten TAB mit automatischem Vervollständigungsverhalten oder was auch immer, und ich verliere meine Funktionalität für die nächste Zeile. Ich könnte meine Bindung in die überschreibende Terminal-Local-Map einfügen, aber ich würde die Moduszuordnungen lieber neu zuordnen, <tab>damit ich immer noch die Funktion verwenden kann, die der Modus dem Tab zugewiesen hat .

Ich kann den Tab für jeden verwendeten Modus manuell neu binden, aber ich hoffe, dass es eine einfache Möglichkeit gibt, alle TABZuordnungen zur Tabulatortaste umzuleiten, ohne dass dies zu Problemen führt C-i.

3

1 Antwort auf die Frage

2
Ivan Andrus

Das ist ein bisschen schwierig, aber möglich. Was ich für diese genaue Situation zu tun ist, einen kleineren-Modus erstellen, nämlich gvol-mode, und dann in sie binden C-ian previous-line(oder was auch immer Sie möchten). Dann binde ich <tab>an die Funktion unten.

(defun gvol-indent-for-tab-command () "This is to fix `indent-for-tab-command' for `gvol-mode'. It runs [tab] or C-i with `gvol-mode' nil because `gvol-mode' binds C-i to a different command. Ideally this should take into account window system so that it can DTRT in a terminal (whatever the right thing is)." (interactive) (let* ((gvol-mode nil) (command (or (key-binding [tab]) (key-binding "\C-i")))) ;; This is to satisfy `python-indent-line' which checks ;; `this-command' to cycle (setq this-command 'indent-for-tab-command) ;; Make people think this was called with C-i. This allows ;; `self-insert-command' to work (setq last-command-event 9) (call-interactively command))) 

Um es etwas zu erklären, lasse ich mich an binden gvol-mode, nilso dass mein Moll-Modus bei der Tastensuche nicht im Spiel ist. So wird es die Bindung für finden <tab>oder C-idas wäre dann gegeben, wenn der kleinere Modus nicht ist. Dann für einige Funktionen zu arbeiten, um I setzen müssen this-commandzu indent-for-tab-command. Ich mache es auch so, als ob ich getippt hätte, C-iwas es erlaubt, mit yasnippet-modeIIRC zu arbeiten .

Das hat super funktioniert. Vielen Dank! Es ist besonders schön, diese Fehlerbehebungen zu haben. Ich bin sicher, Sie haben mir eine Menge Frustration erspart. mckeed vor 12 Jahren 0
Ich war auch erfolgreich mit dieser Methode für [return] und Cm. Sehr hilfreich. mckeed vor 12 Jahren 1
Gern geschehen, und ja, es war viel Frustration dabei. `:-)` Ivan Andrus vor 12 Jahren 0