Helm: überschreiben Kap

8

Ich folgte dieser Antwort und erstellte meinen Nebenmodus, um zu vermeiden, dass meine Tastenkombinationen von Hauptmodi überschrieben werden.

Also habe ich das in meine init.el geschrieben:

(define-key my-keys-mode-map (kbd "C-h") 'delete-backward-char)
(define-key my-keys-mode-map (kbd "M-h") 'backward-kill-word)

Es funktioniert mit allem, außer wenn ich drin bin helm-find-files. Während M-hfunktioniert, C-hnicht. Wenn ich zweimal drücke, erscheint der HelpPuffer mit den Worten:

^L
Major Mode Bindings Starting With C-h:
key             binding
---             -------

C-h C-b     helm-send-bug-report-from-helm

^L
Global Bindings Starting With C-h:
key             binding
---             -------

Wie kann ich deaktivieren C-hin helm-find-filesund halte meine eigene Keybinding verwenden?

Boccaperta-IT
quelle

Antworten:

6

C-hist etwas Besonderes: siehe meine Antwort auf den HTML-Modus und die benutzerdefinierte Rücktaste .

Kurz gesagt: Wenn Sie erneut binden C-h, sollten Sie auch den Wert von ändern help-char.

Tun Sie dies, um die Aktion zu deaktivieren

(setq help-char nil)

(Sie können es auch auf ein anderes Zeichen einstellen.)

Darüber hinaus helm-find-fileswird C-hals Präfixschlüssel verwendet. Der folgende Code ersetzt das C-hPräfix durch M-m, das frei sein C-hsollte, um als "Rücktaste" verwendet zu werden:

(eval-after-load "helm-files"
  '(let ((helm-find-files-C-h-map (lookup-key helm-find-files-map (kbd "C-h"))))
     ;; make sure C-h is no longer a prefix key
     (define-key helm-find-files-map (kbd "C-h") nil)
     ;; rebind "C-h ..." to "M-m ..." to preserve functionality
     (define-key helm-find-files-map (kbd "M-m") helm-find-files-C-h-map)))
Konstantin
quelle
Es funktioniert nicht. Jetzt C-htut nichts und C-h C-hzeigtC-h C-h is undefined
Boccaperta-IT
@ Boccaperta-IT: Ich habe die Antwort aktualisiert. Bitte versuchen Sie es noch einmal.
Konstantin
Das Hinzufügen des Codes führt beim Start zu einem Fehler: Debugger eingegeben - Lisp-Fehler: (Keymap mit ungültiger Funktion) (Keymap (Keymap (2. Helm-Send-Bug-Report-from-Helm)) Keymap (109. Helm-Hilfe) (104. undefiniert) (8. undefiniert) (4. helm-debug-output)) (lambda nil (Keymap (Keymap (2. helm-send-bug-report-from-helm)) keymap (109. helm-help) ) (104. undefiniert) (8. undefiniert) (4. Helm-Debug-Ausgabe))) ()
Boccaperta-IT
Mit (define-key helm-find-files-map (kbd "C-h") nil)Werken. Es besteht keine Notwendigkeit zu verwenden (setq help-char nil). Danke, dass du mich in die richtige Richtung gelenkt hast.
Boccaperta-IT
@ Boccaperta-IT: Ich glaube, ich habe den Code in der Antwort korrigiert (benötigt, um das Let-Formular zu zitieren). Die Einstellung help-charist nicht erforderlich, damit das Ruder funktioniert. Möglicherweise benötigen Sie sie jedoch, damit andere Emacs-Funktionen (z. B. Skelette) funktionieren (siehe die Frage, mit der ich verlinkt habe).
Konstantin