Je recherche un mode mineur pour garder les paragraphes remplis à tout moment lors de la frappe (similaire à ce que aggressive-indent-mode
fait pour l'indentation). Il doit également être suffisamment intelligent pour ne remplir que les commentaires (et peut-être des chaînes en fonction de la langue).
Certaines choses que j'ai essayées sont:
auto-fill-mode
se remplit automatiquement lorsque vous tapez de nouveaux paragraphes mais ne se remplit pas lorsque vous modifiez des paragraphes.refill-mode
remplit constamment les paragraphes, mais il essaie d'encapsuler le code dans les paragraphes ainsi que dans les commentaires.J'ai essayé d'ajouter
fill-paragraph
auafter-change-functions
crochet, mais il se défait et beaucoup d'autres choses (c'est probablement tout réparable mais cela prendrait un certain effort).
De meilleures idées?
la source
org-mode
, mais vous pouvez essayer rebox2Réponses:
J'ai trouvé une façon minimale d'implémenter cette fonctionnalité: il suffit de lier la barre d'espace pour appeler aussi
(fill-paragraph)
!Il y a quelques mises en garde que j'ai rencontrées jusqu'à présent:
elisp-mode
(peut-être d'autres) remplit un peu de code lorsque vous appelezfill-paragraph
, cela peut ou non être ce que vous voulez. Peut probablement être corrigé en testant si le point est dans un commentaire ou une docstring mais je ne sais pas comment faire.Vous ne pouvez parfois pas facilement entrer dans plusieurs espaces (car le
fill-paragraph
tue tous les espaces de fin). Étant donné que la barre d'espace agit maintenant commejust-one-space
il est probablement correct de remplacer cette liaison par(insert " ")
.J'ai créé un mode mineur contenant cette fonctionnalité, il est disponible sur github ou dans le package melpa
aggressive-fill-paragraph
.la source
aggressive-fill-paragraph
est beaucoup moins agressif querefill-mode
, ce qui est agressif jusqu'à être assez inutile (car vous ne pouvez même pas citer quelqu'un avec>
sans truc de réarrangement en mode de recharge: même si vous utilisez des expressions régulières pour le remplacement) .Si vous aimez le comportement du mode recharge (je n'aime pas: p) mais pas quand il se comporte, il devrait être relativement facile à corriger en l'inhibant chaque fois que vous n'êtes pas dans les bonnes conditions
Par exemple
Fondamentalement, il supprime la fonction qui déclenche la recharge
after-change-functions
et la remplace par une fonction qui vérifiera en outre que nous sommes dans un commentaire avant de faire exactement la même chose.la source
refill-mode
:) Le problème estrefill-mode
qu'utilisefill-region
au lieu defill-paragraph
, perdant ainsi la capacité d'honorerfill-paragraph-function
et de rendre les choses potentiellement désordonnées