Допустим, у меня есть функция, которая выглядит следующим образом (как это часто бывает при печати вывода elisp).
(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))))
Я хотел бы команду, которая может превратить это в нечто, что написал бы человек, например, следующее.
(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))))
Я понимаю, что существует несколько способов форматирования фрагмента кода elisp , и разные люди делают это по-разному. Кроме того, я понимаю, что это несколько субъективно. Но должно быть довольно легко придумать набор правил, который приводит к коду, который по крайней мере приличный.
Я действительно пытался сделать это сам некоторое время назад, но решил, что лучше спросить, прежде чем изобретать велосипед.
Обратите внимание, я знаю о функции pp , но она не доходит до цели:
(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))))
pp
.