Wie bekomme ich Emacs zu verwenden rst-mode
innerhalb von Docstrings in Python-Dateien? Ich erinnere mich vage, dass verschiedene Modi innerhalb bestimmter Bereiche einer Datei möglich sind, aber ich erinnere mich nicht, wie es gemacht wird.Lassen Emacs Python-Docstrings mit rst-mode bearbeiten
Antwort
Das Emacs-Paket, das das unterstützt, ist mmm-mode
. Stellen Sie sicher, das ist installiert, und dann Code wie diesen als Teil Ihrer Emacs Start sollte es tun:
(require 'mmm-mode)
(setq mmm-global-mode 'maybe)
(mmm-add-classes
'((python-rst
:submode rst-mode
:front "^ *[ru]?\"\"\"[^\"]*$"
:back "^ *\"\"\""
:include-front t
:include-back t
:end-not-begin t)))
(mmm-add-mode-ext-class 'python-mode nil 'python-rst)
Getestet habe ich diese mit einigen Python-Programmen und es scheint, richtig zu arbeiten.
Beachten Sie, dass dies für jeden String mit drei Anführungszeichen in den ersten Modus wechselt, nicht nur für den Anfang einer Funktionsdefinition. Sie könnten es wahrscheinlich auf diejenigen am Anfang einer Funktionsdefinition mit einem komplexeren Front-Regex beschränken, aber ich bin mir nicht ganz sicher, wie ich damit umgehen soll, da mmmmode-Definitionen standardmäßig immer einer Linie entsprechen.
Bearbeiten: Meine ursprüngliche Version würde Emacs in den ersten Modus am Punkt einer einzelnen Zeile Docstring setzen und dann in diesem Modus bis zum Beginn des nächsten Docstring verlassen. Diese Version verhindert, dass Emacs in den ersten Modus versetzt wird, wenn in der gleichen Zeile wie der Anfang des Docstrings ein weiteres doppeltes Anführungszeichen steht, das immer noch nicht perfekt ist, aber näher sein sollte.
Sie finden ein anderes Setup, das überprüft, ob der Docstring selbst eine Anweisung ist. Dies vermeiden, zuerst in anderen heredoc.
Soweit für edit-Zwecke, Verengung rst-Modus Docstring und Aktivierung sollte der Weg zu gehen.
python-Modus el bietet py - docstring-p, die leicht für python.el angepasst werden könnten
als die ganze Sache zu einem gewissen Leerlauf-Timer zu binden, würde die Verengung/Schalt tun.
Bleibt ein Ausdruck, der den ersten Modus ausschaltet und erweitert.
- 1. Google-Dokumente mit Emacs bearbeiten?
- 2. .emacs Bearbeiten, um Emacs immer im Terminalmodus zu starten?
- 3. Passwörter in Emacs Tramp-Modus bearbeiten
- 4. Wie kann ich Emacs meinen C-Code automatisch einrücken lassen?
- 5. Lassen Emacs den Cursor aus dem Bildschirm bewegen
- 6. Wo kann ich einen Client JSON-Dateien bearbeiten lassen?
- 7. Emacs im Gespräch mit XCode
- 8. Verwenden Sie Emacs, um C-Dateien mit Pico-Stil zu bearbeiten
- 9. Funktion zum Auswerten von Haskell in Ghci beim Bearbeiten der Quelldatei mit Emacs
- 10. Emacs kopieren mit Regex
- 11. Emacs mit Tramp-Modus
- 12. Regex Ersatz mit Emacs
- 13. Emacs Dired Umbenennen mit alternativem Werkzeug
- 14. PDF mit PDFKit bearbeiten
- 15. XML mit SimpleXML bearbeiten
- 16. Emacs: mediawiki Fehler speichern
- 17. Sitzungsverwaltung in Emacs mit Desktop-Bibliothek
- 18. Emacs: GUI mit emacs --daemon lädt Schriften nicht korrekt
- 19. Emacs regexp ersetzen Situation
- 20. share emacs configuration zwischen emacs 23 und emacs 24
- 21. Wie wird ein Schema mit Emacs ausgeführt?
- 22. Epylint in Emacs mit virtualenv
- 23. Verwenden von Git mit Emacs
- 24. Matlab Editor Emacs mit Shortcuts
- 25. AucTeX/emacs Problem mit '$' Zeichen
- 26. mit emacs für Java-Programmierung
- 27. 2 Spalten mit Emacs austauschen
- 28. Emacs dired - mit vordefinierten Variablen
- 29. Lassen Sie Cider-Scratch in Clojurescript REPL
- 30. Emacs Chrome Tastenbindungen
Sie müssen 'include-back' auf' t' setzen. Andernfalls glaubt 'python-mode', dass der eigentliche Code in Docstrings liegt. – asmeurer
Das funktioniert, aber manchmal scheinen die Docstring-Begrenzer zu "python-mode" zu "lecken", was dazu führt, dass Code zwischen Docstrings als Docstring interpretiert wird. Zum Beispiel wird [this] (https://github.com/sympy/sympy/blob/master/sympy/solvers/ode.py#L2688-2759) der ganze Block als Docstring gerendert. – asmeurer
Wie schwierig ist es, die Flächen so einzurichten, dass in diesem Kontext eine andere Gruppe von "First-Mode" -Flächen verwendet wird als im regulären "First-Mode"? – asmeurer