#debugging #emacs #spacemacs
#отладка #emacs #spacemacs
Вопрос:
В моей конфигурации Spacemacs я настраиваю свой уровень организации для масштабирования любого latex, который он генерирует, следующим образом
(org :variables
org-format-latex-options '(:foreground "#90ee90" :background default :scale 2.0
:html-foreground default
:html-background "Transparent" :html-scale 1 :matchers
("begin" "$1" "$" "$$" "\(" "\["))
Я использую эту конфигурацию на нескольких компьютерах, и мне нравятся разные масштабирования для разных дисплеев, поэтому я написал небольшую функцию
(defun switch-scale ()
(cond
((equal (system-name) "WMachine") 5.0)
(t 2.0) ;; default
)
)
И переписал приведенный выше код для вызова функции в свойстве :scale, например
org-format-latex-options '(:foreground "#90ee90" :background default :scale (switch-scale)
...
Когда я тестирую масштабирование переключателя в буфере с нуля, он работает нормально (возвращает 5.0), но когда я добавляю его в свою конфигурацию, он вызывает следующую ошибку при попытке сгенерировать latex в режиме организации
Debugger entered--Lisp error: (void-variable ])
eval(] nil)
elisp--eval-last-sexp(nil)
eval-last-sexp(nil)
funcall-interactively(eval-last-sexp nil)
call-interactively(eval-last-sexp nil nil)
command-execute(eval-last-sexp)
Я застрял в том, что происходит, кажется, что (масштаб переключения) просто не оценивается???
Ответ №1:
Ответ: я не понимаю систему оценки elisps… итак, поскольку он был в списке в кавычках, все внутри этого списка было буквальным, поэтому мне действительно нужно было использовать обратную кавычку, чтобы заключить список в кавычки, а затем использовать запятую для оценки функции (переключения масштаба), как описано здесь https://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html