Eh bien, la façon dont paredit semble fonctionner est qu'il vérifie les tables de syntaxe pour voir si vous insérez une paire juste après un mot/symbole/etc., Dans ce cas, cela force l'insertion d'un espace Vous devez remplacer cette fonctionnalité - ce qui peut être fait de différentes manières: conseils, redéfinir la fonction déterminante g espace, changer la table de syntaxe, etc.
Je vais essayer la simple:
(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)))))))
Cela s'appliquera évidemment à tous les endroits où vous utilisez paredit
. Si vous voulez quelque chose de plus spécifique au mode, vous pouvez ajouter quelques conditions à cette instruction and
(par exemple (and ... (memq major-mode '(c-mode lisp-mode)))
).
Alors ... je suppose que j'ai changé la "source", mais vous pouvez faire la même chose avec un morceau de defadvice
... tout est élisp, donc la différence est minime. Il ne semble pas y avoir de paramètre pour contrôler ce type de comportement.
J'ai voulu ce depuis longtemps, depuis que je trouve autopair.el _very_ lent. Paredit fonctionne maintenant comme un charme dans 'c-mode'. Je vous remercie! :) –
Pour être spécifique au mode, on peut aussi écrire '(defvar-local mon-paredit-no-insert-space nil)' et utiliser '(et ... my-paredit-no-insert-space)' au lieu de '(et ... (memq mode majeur '(c-mode lisp-mode))))', puis définissez 'my-paredit-no-insert-space' à' t' à partir de 'c-mode-common- crochet ». De cette façon, deux personnes ayant des préférences de différence peuvent utiliser la même nouvelle définition de 'paredit-space-for-delimiter-p' –
' Si vous voulez quelque chose de plus spécifique au mode, vous pouvez ajouter des conditions à cela et à la déclaration' - je veux ne remplace pas ceci pour certains modes, mais je ne comprends pas à quelle instruction 'if 'je peux ajouter la condition. Pouvez-vous clarifier s'il vous plait? – Max