Как отключить макрос для чтения? - PullRequest
1 голос
/ 28 октября 2019

Я использовал макрос считывателя локального времени, пока не понял, что он мне не нужен (хотите прочитать дату назад? Просто используйте формат или местное время: format-datestring, и он не выдаст @…).

Однако он конфликтует с кодом Parenscript, используя ps:@

недопустимый завершающий символ после двоеточия: # @

Можно лиотключить макрос считывателя без перезапуска изображения?

Что он делает

(defun enable-read-macros ()
  "Enables the local-time reader macros for literal timestamps and universal time."
  (set-macro-character #\@ '%read-timestring)
  (set-dispatch-macro-character #\# #\@ '%read-universal-time)
  (values))

Я не вижу макрос считывателя на стороне Parenscript.

1 Ответ

2 голосов
/ 28 октября 2019

Возможно, что вы можете сделать, это попытаться отменить изменения в текущем читаемом файле с помощью чего-то вроде этого, который должен получить стандартный читаемый файл и «восстановить» записи текущего читаемого файла в стандартный.

(let ((rt (copy-readtable nil)))
  (multiple-value-bind (function non-terminating-p)
      (get-macro-character #\@ rt)
    (set-macro-character #\@ function non-terminating-p))
  (set-dispatch-macro-character #\# #\@ (get-dispatch-macro-character #\# #\@ rt)))
...