Question

Lors de l'utilisation paredit dans les modes de programmation tels que C, en tapant (insérera un espace avant le PAREN quand je suis en train d'appeler une fonction, me laissant avec:

foo ()

Yat-il un moyen de désactiver l'insertion de l'espace sans modifier la source paredit?

Était-ce utile?

La solution

Eh bien, la façon 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., Auquel cas il force un espace à insérer. Vous devez remplacer cette fonctionnalité - qui peut être fait un certain nombre de façons différentes:. Conseils, redéfinir la fonction de déterminer l'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 mode spécifique, vous pouvez ajouter des conditions à cette déclaration de and (par exemple (and ... (memq major-mode '(c-mode lisp-mode)))).

Alors ... Je suppose que je l'ai fait changer la « source », mais vous pouvez faire la même chose avec un morceau de defadvice ... il est tout elisp, la différence est minime. Il ne semble pas être un paramètre pour contrôler ce type de comportement.

Autres conseils

Voir paredit-space-for-delimiter-predicates

Eh bien, Paredit est idéal pour les langues d'édition intégrées de S-expressions. Si vous comme la façon dont il insère automatiquement les paren de fermeture, fonction de l'utilisation

scroll top