Also habe ich einen großen Modus für eine benutzerdefinierte Lisp erstellt, indem Sie aus dem Standard-Lisp-Modus abgeleitet. Wenn Emacs es jedoch betritt, aktiviert es automatisch auch den Schleim-Modus, der die meisten meiner Bindungen außer Kraft setzt. Soweit ich das beurteilen kann, passiert das, weil SLIME einige Haken beim Lisp-Modus registriert und mein Modus sie ebenfalls auslöst, aber ich bin mir nicht sicher. Gibt es eine Möglichkeit, dies zu vermeiden?Leite vom Lisp Mode ab und ignoriere seine Haken?
Antwort
Wenn Sie define-derived-mode
verwenden, werden der Hauptteil und der Modus-Hook für den übergeordneten Modus ausgeführt.
Weitere Informationen finden Sie unter https://stackoverflow.com/a/19295380.
Wenn Sie slime-mode
in lisp-mode-hook
ermöglicht sind, und ein Modus aus lisp-mode
abzuleiten, dann ist das würde einfachste Sache deaktivierenslime-mode
wieder für Ihren abgeleiteten Modus im Modus Haken sein.
Edit: Eigentlich glaube ich Sie durch die Manipulation delayed-mode-hooks
im Körper des Modus der Modus Haken für die Vorfahren Modi nicht ausgeführt werden konnte. obwohl
(Sie können nicht die Körper der Vorfahren Modi nicht ausgeführt werden.)
Ich empfehle Ihnen, dies nicht tunzu tun. Ich denke, wenn Sie sich mit den abgeleiteten Modus-Mechanismen befassen wollen (besonders wenn Sie vorhaben, den Code zu teilen), dann sollten Sie überhaupt keinen abgeleiteten Modus verwenden.
Sie sollten wahrscheinlich einen Hinweis auf die Implementierungen von lisp-mode
vs emacs-lisp-mode
nehmen. Anstatt dass eine von der anderen abgeleitet wird, sind sie unterschiedliche Modi (jeweils abgeleitet von prog-mode
). Ihre (unabhängigen) Tastenbelegungen haben jedoch eine gemeinsame Eltern-Tastenbelegung, was bedeutet, dass viele Tastenkombinationen die gleichen Dinge tun.
Ich empfehle diesen Code als Vorlage für die Erstellung eines neuen lisp-ish Hauptmodus zu verwenden.
Der richtige Weg ist es, von einem Elternteil des Lisp-Modus zu erben. Idealerweise sollte es einen Elternteil lispish-mode
geben, der von allen Lisp-ähnlichen Hauptmodi verwendet wird, aber momentan gibt es keine solche Sache, also müssen Sie prog-mode
verwenden und dann manuell die gewünschten Dinge von lisp-mode
einrichten/kopieren.
Ich würde einen Patch begrüßen, der eine lispish-mode
hinzufügt (noch besser, wenn es mit einem besseren Namen kommt), aber bis jetzt jedes Mal, wenn ich es betrachtete, fand ich, dass es zwischen den Lispish-Modi zu viel Variation gibt viel zu teilen.
- 1. vorgehen ((AB) (CD).) In Lisp
- 2. „vor jedem“ Haken: workFn Fehler
- 3. Wo legt node.js seine Dateien ab?
- 4. Warum feuert AVPlayerItem seine Benachrichtigungen nicht ab?
- 5. Rubin Verfeinerungen und Haken
- 6. Tabbar und Org-Mode
- 7. emacs lisp und c-mode: wenn ich in einer Kommentar-Region bin
- 8. Wie leite ich ein Voronoi-Diagramm anhand seiner Punktmenge und seiner Delaunay-Triangulation ab?
- 9. das Datumsformat ändern, seine Mode, Klassen und Typen zu halten, in R
- 10. Git Haken und Arbeit Baum
- 11. Github Desktop und Git Haken
- 12. Daten vom Haken zur Ansicht in Codeigniter übergeben
- 13. Protokoll speichert Prozess vom Rande mit inneren Haken
- 14. Make toPrimitive Konvertierung hängt vom Kontext ab
- 15. Wie fängt FileNotFoundException vom MediaPlayer ab?
- 16. Fehler beim Versuch ruby-mode in Emacs
- 17. WKHTMLTOPDF schneidet Text vom linken Rand ab
- 18. Git Haken: Gibt es einen Klon Haken?
- 19. Emacs kann seine Startup-Dateien nicht laden
- 20. Laden einen installierbare Haken vor dem nativen Haken
- 21. Wie ruft der Flash-Player von YouTube seine Medien ab?
- 22. Emacs + clojure-Modus: fügen Sie mehrere Haken
- 23. Haken Prozesse
- 24. Subversion Haken
- 25. Struct Unterschied zwischen gemeinsamen Lisp und Emacs lisp
- 26. Common Lisp: Wie (in-Package ...) vom Emacs Slime
- 27. Ignoriere Zeichen
- 28. Wie leite ich eine neue Spalte basierend auf anderen Spalten in Hive ab?
- 29. OpenID und seine Fehler
- 30. Const und seine Auswirkungen
Nun, das löst eine bestimmte Instanz des Problems, in das ich zufällig geriet, aber jemand anders könnte verschiedene Lisp-Modus-Hooks haben, die wieder etwas kaputt machen würden ... Gibt es eine allgemeinere Lösung, um dies zu verhindern, außer duplizieren Lisp Mode statt davon abzuleiten? – user3026691
Nein, der ganze Sinn der abgeleiteten Modi besteht darin, dass sie aufeinander aufbauen, und alle Dinge, die für den "Eltern-Modus" passieren, geschehen auch für den "Kind-Modus". Sie sollten sicherlich nicht nach Möglichkeiten suchen, um die * Lisp-Modus-Funktion anderer Leute daran zu hindern, in diesem Szenario zu arbeiten. – phils
Wenn Sie den Aufruf von 'derived-minor-mode' macroexpandieren, sehen Sie den tatsächlich erzeugten Code. Sie könnten das immer als Grundlage für Änderungen verwenden, wenn Sie immer noch meinen, dass das Ableiten von 'Lisp-Modus' teilweise sinnvoll ist. – phils