Скажімо, у мене є функція, яка виглядає наступним чином (як це часто буває при друкуванні виводу 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))))
Я розумію, що існує декілька способів відформатувати фрагмент коду еліпса , і різні люди роблять це по-різному. Крім того, я розумію, що це дещо суб'єктивно. Але слід досить легко придумати набір правил, які приводять до коду, принаймні пристойного.
Я фактично мав намір зробити це сам деякий час тому, але я подумав, що краще запитати, перш ніж винаходити колесо.
Зауважте, я знаю про функцію 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
.