Вот три конкретных вещи, которые вы можете сделать, чтобы помочь выявить проблемы с синтаксисом Lisp. Со временем это станет второй натурой. Но до тех пор:
Соответствие скобок
Соответствие скобкам - самый простой способ проверить группировку. Моя любимая упаковка - mic-paren . И мне нравится эта конкретная конфигурация:
(setq paren-dont-touch-blink t)
(require 'mic-paren)
(paren-activate)
(setq paren-match-face 'highlight)
(setq paren-sexp-mode t)
Это приводит к тому, что sexp (совпадающая скобка) выделяется, когда точка находится в начале / конце sexp. Если круглые скобки не совпадают, цвет выделения будет другим - и ярче. Когда соответствующая скобка находится вне экрана, она показывает вам, как выглядит этот конец в минибуфере (и сообщает, сколько он строк).
Компиляция
Для немного более сложного метода вы можете запустить компилятор Elisp с помощью M-x compile-defun
. Например, когда я скомпилировал этот простой пример:
(defun mytestfun ()
(let ((cur (current-buffer)))
)
(set-buffer cur))
Я получил буфер с именем *Compile-Log*
, который сказал:
Предупреждение: ссылка на свободную переменную
`Дворняжка '
Это подсказало мне тот факт, что я использовал cur
вне оператора let
, который его определил.
Изменить уровень отступа
Если вы хотите, чтобы отступ был более заметным, вы можете настроить переменную listp-body-indent
:
(setq lisp-body-indent 4) ;# default is 2
Вы также можете настроить отступы различных конструкций, но я не советую этого делать, потому что это будет нестандартно и может привести к путанице при просмотре большинства кода на Лиспе.