Оболочка emacs не смогла обработать символ% - PullRequest
1 голос
/ 21 апреля 2020

в оболочке emacs, когда я набираю команду "echo%", emacs не работает, когда я отменяю команду, сообщение об ошибке Message показывается ниже:

comint-simple-send-around: Format string ends in middle of format specifier

Я отлаживаю ошибка, потому что Emacs использует format функцию, %% может работать для %, но все равно отправлять оболочку с %% символом.

и ниже это определение:

(defun comint-simple-send-around (simle-function proc string)
  (dolist (item name-variable-map)
    (let ((name (car item))
          (value (symbol-value (cdr item))))
      (setq string (replace-regexp-in-string name value string))
      ))
  (message string)
  (funcall simle-function proc string)
  )
(advice-add #'comint-simple-send :around #'comint-simple-send-around)

1 Ответ

1 голос
/ 22 апреля 2020

Ошибка в вашем пользовательском коде, где вы делаете это:

(message string)

Где string явно оценивается в неверный формат строка.

(message FORMAT-STRING &rest ARGS)
...
Первый аргумент - это строка управления форматом, а остальные - данные, которые должны быть отформатированы под управлением этой строки. Знак процента (%), серьезный акцент (`) и апостроф (') являются специальными в формате; смотрите `format-message 'для деталей. Чтобы отобразить STRING без специальной обработки, используйте (message "%s" STRING).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...