Faire en sorte que le fill-paragraphe d'Emacs joue bien avec des commentaires de type javadoc
Question
J'écris un mode majeur Emacs pour un dialecte APL que j'utilise au travail. j'ai eu le verrouillage de base des polices pour fonctionner, et après avoir défini comment-start et comment-start-skip, comment / décommenter la région et remplir le paragraphe également travail.
Cependant, les blocs de commentaires contiennent souvent des commentaires de style javadoc et i voudrait remplir-paragraphe pour éviter de coller des lignes ensemble à partir avec de telles commandes.
Si j'ai ceci (\ au lieu de javadoc @):
# This is a comment that is long and should be wrapped.
# \arg Description of argument
# \ret Description of return value
M-q me donne:
# This is a comment that is long and
# should be wrapped. \arg Description
# of argument \ret Description of
# return value
Mais je veux:
# This is a comment that is long and
# should be wrapped.
# \arg Description of argument
# \ret Description of return value
J'ai essayé de configurer paragraphe-start et paragraphe-distinct pour valeurs appropriées, mais fill-paragraphe ne fonctionne toujours pas dans un bloc de commentaires. Si je supprime les marqueurs de commentaire, M-q fonctionne comme je le souhaite ainsi, l'expression rationnelle que j'utilise pour paragraphe-start semble fonctionner.
Dois-je écrire un paragraphe de remplissage personnalisé pour ma majeure mode? Le mode cc en a un qui gère ce type d’affaires, mais c’est vraiment complexe, j'aimerais l'éviter si possible.
La solution
Le problème était que l’expression rationnelle début de paragraphe doit correspondre à toute la ligne pour fonctionner, y compris le caractère de commentaire réel. Elisp suivant fonctionne pour l'exemple que j'ai donné:
(setq paragraph-start "^\\s-*\\#\\s-*\\\\\\(arg\\|ret\\).*<*>quot;)
Voici une page qui contient un exemple d'expression rationnelle pour php-mode: http://barelyenough.org/blog/2006/10/nicer-phpdoc -comments /
Autres conseils
Il existe d'autres modes qui ont des fonctions moins complexes utilisées pour la fonction de remplissage de paragraphe
. En parcourant mon installation, il semble que ceux en mode ada et make-mode sont de bons exemples.
Ce que je fais dans ces cas-là est d'ouvrir une ligne vide entre les lignes de paragraphe et les lignes d'argument, puis d'utiliser M-q pour envelopper les lignes de paragraphe, puis de supprimer la ligne vide entre elles. Pas idéal, mais cela fonctionne et est assez facile à enregistrer dans une macro si vous devez le répéter.