2009-10-11 4 views

Répondre

7

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) 

(Note: vous devriez faire probablement .. mise en 'c-mode-hook)

Cependant, aucun des paramètres faire les commentaires ressemblent à ce que vous voulez

La meilleure façon que j'ai vu 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 depuis le dépôt. Je ne sais pas si cela fonctionne comme dans les versions antérieures d'Emacs, mais ça vaut peut-être la peine d'essayer, même si la mise à niveau d'Emacs serait une meilleure solution.

Mon hack casse le 'uncomment-region. Une solution correcte serait de changer 'comment-padright. Cela demanderait un peu plus de recherche pour ne pas casser d'autres choses. Le hack ci-dessus ne change que le comportement en 'c-mode (ajustez la condition à votre convenance).

+0

La seule chose que Google me donne pour "comment-styles" est http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3371 Emacs Ch un comment-styles ne donne rien non plus. –

+0

Il est défini dans Emacs 23.1, utilisez-vous une version plus ancienne? –

+0

J'utilise les Emacs fournis avec Ubuntu/FreeBSD. Sur Windows, j'ai Emacs 23.1 mais j'utilise FreeBSD maintenant et ça dit 22.3.1. Quoi qu'il en soit, votre exemple a fonctionné, alors merci. –

3

la plus approchante avec le soutien de commenter intégré est 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 de commentaire, le cas échéant. .

+0

Merci pour votre réponse. –