Emacs commentaire région en mode C
Question
Dans GNU Emacs, est-il un bon moyen de changer la commande commentaire région en mode C de
/* This is a comment which extends */
/* over more than one line in C. */
à
/* This is a comment which extends
over more than one line in C. */
? J'ai essayé
(setq comment-multi-line t)
mais cela ne suffit pas. Il y a une , mais il ne mentionne rien.
La solution
Depuis Emacs 21, il y a eu un module nommé 'newcomment
, qui a différents styles de commentaires (voir la 'comment-styles
variable Ce paramètre se rapproche de ce que vous voulez:
(setq comment-style 'multi-line)
(Remarque: vous devriez probablement faire ce paramètre dans 'c-mode-hook
).
Cependant, aucun des paramètres faire les commentaires ressemblent à ce que vous voulez.
La meilleure façon que je voyais pour obtenir ce que vous voulez est d'ajouter ce hack:
(defadvice comment-region-internal (before comment-region-internal-hack-ccs activate)
"override 4th argument to be just spaces"
(when (eq major-mode 'c-mode) ; some condition here
(let ((arg (ad-get-arg 4)))
(when arg
(ad-set-arg 4 (make-string (length arg) ?\ ))))))
Les paramètres actuels de comment-style
préfixe toujours des lignes de commentaire avec « * » (sinon la totalité « / * »).
Si vous n'avez pas Emacs 21, je suppose que vous pouvez simplement télécharger newcomment.el
à partir du référentiel. Je ne sais pas si cela fonctionne en l'état dans les versions antérieures d'Emacs, mais il pourrait être vaut le coup, bien que la mise à niveau Emacs serait une meilleure solution.
Mon bidouille brise le 'uncomment-region
. Une solution appropriée serait de changer 'comment-padright
. Cela prendrait un peu plus de recherche afin de ne pas briser d'autres choses. Le hack ci-dessus ne change que le comportement dans 'c-mode
(ajuster la condition à votre goût).
Autres conseils
la plus approchante avec le soutien des commentaires est intégré si vous définissez comment-style
à multi-line
, qui produira ceci:
/* This is a comment which extends
* over more than one line in C. */
Si cela ne suffit pas à proximité, jetez un oeil à newcomment.el
et définir vos propres fonctions commentent le cas échéant.