2009-10-11 33 views

Respuesta

7

Desde Emacs 21, ha habido un módulo denominado 'newcomment, que tiene diferentes estilos de comentarios (véase la variable 'comment-styles Este ajuste se acerca a lo que quiere:

(setq comment-style 'multi-line) 

(Nota: probablemente debería hacer esa .. puesta en 'c-mode-hook)

Sin embargo, ninguno de los ajustes hacen que los comentarios se parecen a lo que quiere

La forma más fácil vi a conseguir lo que quieres es añadir este truco:

(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) ?\)))))) 

Los valores actuales de comment-style siempre el prefijo líneas de comentario con "*" (si no el conjunto "/ *").

Si no tiene Emacs 21, supongo que podría simplemente descargar newcomment.el del repositorio. No sé si funciona como está en versiones anteriores de Emacs, pero podría valer la pena, aunque actualizar Emacs sería una mejor solución.

Mi hack rompe el 'uncomment-region. Una solución adecuada sería cambiar 'comment-padright. Eso requeriría un poco más de investigación para no romper otras cosas. El truco anterior solo cambia el comportamiento en 'c-mode (ajuste la condición a su gusto).

+0

Lo único que me da Google para "comment-estilos" es http://emacsbugs.donarmstrong.com/cgi-bin/bugreport.cgi?bug=3371 Emacs Ch a comment-estilos no da nada ya sea. –

+0

Está definido en Emacs 23.1, ¿está utilizando una versión anterior? –

+0

Estoy usando los Emacs que vienen con Ubuntu/FreeBSD. En Windows tengo Emacs 23.1 pero ahora estoy usando FreeBSD y dice 22.3.1. De todos modos tu ejemplo funcionó, así que gracias. –

3

más cercano que pude encontrar con la incorporada al comentar el apoyo es si se establece comment-style-multi-line, que producirá esto:

/* This is a comment which extends 
* over more than one line in C. */ 

Si eso no es lo suficientemente cerca, echar un vistazo a newcomment.el y definir sus propias funciones de comentarios según corresponda. .

+0

Gracias por la respuesta. –