Die Definition der Tastaturbelegung im Emacs-Hauptmodus schlägt fehl

385
Daniel

Also, ich habe versucht, einen einfachen Hauptmodus (Bericht-Modus) zu schreiben, indem als Beispiel. Ich habe anscheinend alles am Laufen, außer dass die Keymap nicht wirklich zuzuordnen scheint.

Wenn ich C-h f report-moderichtig sehe, sehe ich eine Liste von Schlüsselkarten mit dem Zusatz, den ich gemacht habe, und zwar:

ESC n kill-dupe 

Wenn ich zu USE Mn oder ESC n gehe, passiert jedoch nichts. Ich kann die Funktion manuell aufrufen, M-x kill-dupeso dass dies nicht das Problem zu sein scheint.

Da sich der Computer in einem anderen Netzwerk befindet, kann ich leider den eigentlichen Elisp-Code nicht kopieren und einfügen.

Ich kann genau das von mir verwendete Beispiel kopieren (und die Unterprogramme erstellen):

(defvar report-mode-map (let ((map (make-sparse-keymap "Report-Mode"))) (define-key map "\M-n" 'kill-dupe) map) "Keymap for browsing report mode") 

das kommt von hier .

Wenn ich die Report-Modus-Map untersuche, sehe ich, was meistens richtig aussieht, außer es gibt zusätzliche Schlüsselwörter keymap:

(keymap (27 keymap (110 . kill-dupe)) keymap (....) "Report-Map" (....)) 

Wenn ich das mit einer Text-Modus-Map vergleiche, werden die Zeichenketten-Definitionszeichenfolge und die zusätzlichen 'Keymap'-Zeichenfolgen eingebettet. Wenn ich evaliere(keymapp report-mode-map) bekomme ich ein Ergebnis von "true", also scheint das unterschiedliche Format kein Problem zu sein ...

Ich bin mir ziemlich sicher, dass dies ein Problem ist, da auch keine der anderen Keymap-Bindungen funktioniert.

Irgendwelche Ideen wären toll. Es tut uns leid, dass Sie den Code nicht direkt weitergeben können.

1
Sind Sie sicher, dass Ihr Hauptmodus als "Berichtsmodus" bezeichnet wird - wenn nicht, funktioniert der Standardmodus nicht? `(Definierter abgeleiteter Modus.. .`. lawlist vor 9 Jahren 0
ok, danke - ich habe den Aufruf des `(Definitions-abgeleiteten Modus Berichtsmodus Textmodus ...)` nicht aufgenommen. Ich habe das Daniel vor 9 Jahren 0
Was ich schreiben wollte, war "Ich habe nicht in die Fragendefinition aufgenommen". Ich habe Definitions-abgeleiteten Modus in der Datei report-mode.el. Daniel vor 9 Jahren 0

1 Antwort auf die Frage

1
Daniel

Also fand ich die Antwort.

Es stellt sich heraus, dass ich in meiner benutzerdefinierten Tastenzuordnung define-derived-modenie aufgerufen wurde use-local-map.

Sobald ich aufgenommen habe:

(use-local-map report-mode-map)

Alles hat gut funktioniert.