2008-09-16 6 views
11

Estoy escribiendo un modo principal de Emacs para un dialecto APL que uso en el trabajo. He obtenido bloqueo de fuente básico para que funcione, y después de establecer comentario-inicio y comment-start-skip, comentar/descomentar región y llenar el párrafo también trabajo.Obtener el párrafo de relleno de Emacs para jugar bien con los comentarios tipo javadoc

Sin embargo, los bloques de comentarios a menudo contienen comentarios de estilo javadoc y yo me gustaría rellenar el párrafo para evitar pegar líneas que comienzan con dichos comandos.

Si tengo este (\ javadoc en lugar de @):

# This is a comment that is long and should be wrapped. 
# \arg Description of argument 
# \ret Description of return value 

Mq me da:

# This is a comment that is long and 
# should be wrapped. \arg Description 
# of argument \ret Description of 
# return value 

Pero yo quiero:

# This is a comment that is long and 
# should be wrapped. 
# \arg Description of argument 
# \ret Description of return value 

He tratado de establecer hasta paragraph-start y paragraph-separate a valores apropiados, pero fill-paragraph aún no funciona dentro de un bloque de comentarios. Si elimino los marcadores de comentarios, M-q funciona como quiero , por lo que la expresión regular que uso para el inicio de párrafo parece funcionar.

¿Debo escribir un párrafo de relleno personalizado para mi modo principal ? cc-mode tiene uno que maneja casos como este, pero en realidad es complejo, me gustaría evitarlo si es posible.

Respuesta

4

El problema es que la regexp párrafo-inicio tiene que coincidir con toda la línea para trabajar, incluido el carácter de comentario real. El siguiente elisp trabaja para el ejemplo que di:

(setq paragraph-start "^\\s-*\\#\\s-*\\\\\\(arg\\|ret\\).*$") 

Aquí una página que tiene una expresión regular ejemplo para php modo que hace esto: http://barelyenough.org/blog/2006/10/nicer-phpdoc-comments/

1

Hay otros modos que tienen funciones menos complejas utilizadas para fill-paragraph-function. Navegando a través de mi instalación, parece que los que están en ada-mode y make-mode son buenos ejemplos.

1

Lo que hago en estos casos es abrir una línea en blanco entre las líneas de párrafo y las líneas de argumento, luego usar M-q para envolver las líneas de párrafo, luego matar la línea en blanco entre ellas. No es ideal, pero funciona y es bastante fácil de grabar en una macro si necesita repetirlo.

+0

Esto es lo que hago, así – Branan

Cuestiones relacionadas