Angenommen, ich habe eine Funktion, die wie folgt aussieht (wie es häufig beim Drucken von Elisp-Ausgaben der Fall ist).
(defun my-example-function () (let ((a (do-something)) (b (do-something))) (setq someone me) (with-current-buffer b (do-that (or this (and that those))) (format "%s" a))))
Ich hätte gerne einen Befehl, der das in etwas verwandelt, was ein Mensch schreiben würde, wie zum Beispiel den folgenden.
(defun my-example-function ()
(let ((a (do-something))
(b (do-something)))
(setq someone me)
(with-current-buffer b
(do-that (or this (and that those)))
(format "%s" a))))
Ich verstehe, dass es mehr als eine Möglichkeit gibt, einen Teil des Elisp-Codes zu formatieren , und verschiedene Menschen machen es unterschiedlich. Darüber hinaus verstehe ich, dass es etwas subjektiv ist. Es sollte jedoch ziemlich einfach sein, Regeln zu entwickeln, die zu mindestens anständigem Code führen.
Eigentlich habe ich vor einiger Zeit darüber nachgedacht, aber ich dachte, es ist besser zu fragen, bevor ich das Rad neu erfinde.
Beachten Sie, dass mir die pp- Funktion bekannt ist, sie jedoch nicht so gut funktioniert:
(defun my-example-function nil
(let
((a
(do-something))
(b
(do-something)))
(setq someone me)
(with-current-buffer b
(do-that
(or this
(and that those)))
(format "%s" a))))
quelle
pp
.Antworten:
So formatiert es lispy für mich neu (durch Drücken Mauf eines der beiden Enden des Ausdrucks):
Um zur angegebenen Formatierung zu gelangen, drücken Sie qk C-m [.
quelle
(local-set-key (kbd "s-8") #'lispy-multiline) (local-set-key (kbd "s-*") #'lispy-oneline)
Wie andere in Kommentaren vorgeschlagen haben, kann "Formatieren" verschiedene Bedeutungen haben.
Versuchen Sie für Einrückungen , die ziemlich konventionell sind,
C-M-q
(Befehlindent-pp-sexp
in Lisp-Modi) mit dem Cursor irgendwo innerhalb des Top-Level-Sexp zu verwenden, den Sie neu einrücken möchten (zdefun
. B. das Sexp).Nein, dies ist keine "automatische" Einrückung, aber es kann zur Gewohnheit werden, sie zu verwenden. ;-)
Für andere Dinge als Einrückungen müssen Sie entweder manuell vorgehen oder Ihre eigenen "Formatierungs" -Befehle rollen oder vorhandene finden.
Siehe auch das Emacs-Handbuch, Knoten Mehrzeiliger Einzug und das Elisp-Handbuch, Knoten
Mode-Specific Indent
.quelle
M-q
(fill-paragraph
) kann manchmal nützlich sein, um im Emacs-Lisp-Modus Zeilenumbrüche vorzunehmen, je nach Kontext. Aber Sie suchen wahrscheinlich auch nach Ausrichtung ...