Итак, paredit работает так, как будто он проверяет таблицы синтаксиса, чтобы увидеть, вставляете ли вы пару сразу после слова / символа / и т. Д., И в этом случае он вставляет пробел. Вам необходимо переопределить эту функцию - что можно сделать несколькими различными способами: совет, переопределение функции, определяющей пространство, изменение таблицы синтаксиса и т. Д.
Я бы попробовал прямо:
(defun paredit-space-for-delimiter-p (endp delimiter)
(and (not (if endp (eobp) (bobp)))
(memq (char-syntax (if endp (char-after) (char-before)))
(list ?\" ;; REMOVED ?w ?_
(let ((matching (matching-paren delimiter)))
(and matching (char-syntax matching)))))))
Это, очевидно, относится ко всем местам, где вы используете paredit
. Если вы хотите что-то более специфичное для режима, вы можете добавить некоторые условия к этому оператору and
(например, (and ... (memq major-mode '(c-mode lisp-mode)))
).
Итак ... я думаю, что я изменил "источник", но вы можете сделать то же самое с частью defadvice
... это все elisp, поэтому разница минимальна. Похоже, что нет настройки для управления этим типом поведения.