2009-12-29 13 views
6

Tengo una pregunta que es muy similar a Getting Emacs fill-paragraph to play nice with javadoc-like comments, pero no estaba seguro de si obtendría muchas respuestas en un hilo de un año.Emacs c-modo relleno-párrafo con Doxygen Comentarios

De todos modos, tengo código C que tiene algunos comentarios Doxygen que se parecen a lo siguiente:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

Ahora, cuando uso Mq en emacs, quiero lo siguiente:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
*      to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

Pero , actual recibo lo siguiente:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
* to be wrapped.> @param[in,out] var2 : <Description2> 
*/ 

Investigando, parecía que tenía que configurar el parag Raph-start variable en emacs para reconocer el "@param". Encontré otra pregunta sobre el desbordamiento de pila (Getting Emacs fill-paragraph to play nice with javadoc-like comments), que tenía una expresión regular de muestra. Lo modifiqué un poco para adaptarlo a mis requisitos, y lo probé dentro de Search-> Regex Forward, y destacó cada frase de @param correctamente.

que utiliza la siguiente expresión regular "^\s-*\*\s-*\(@param\).*$"

tanto, he intentado establecer la expresión regular dada como mi punto de inicio (con la 's requerida para la sintaxis elisp \ añadido) archivo en mi .emacs. Cuando abrí una nueva ventana de emacs y probé la M-q, estaba ocurriendo el mismo error. ¿Hay algo que este olvidando? ¿M-q se usa de manera diferente en modo c? ¿Debo revisar mi archivo .emacs para encontrar algo que pueda estar causando un error aquí? Cualquier ayuda sería apreciada.

Gracias, Ryan

Respuesta

3

cuanto a su pregunta, "¿Es la M-Q usados ​​de manera diferente en el modo C-?", describe-key (ligado a C-h k) es su amigo. Mientras visita el búfer con el archivo C, escriba C-h k M-q y le dirá exactamente a qué función está obligado M-q. En este caso, es c-fill-paragraph, que finalmente usa paragraph-start, la variable que encontró en esa otra pregunta.

encontré que esta expresión regular se utiliza como paragraph-start envolverá líneas y tratar a cada @param como un nuevo párrafo:

"^[ ]*\\(//+\\|\\**\\)[ ]*\\([ ]*$\\|@param\\)\\|^\f"

Sin embargo, no va a sangrar los wrappedlines como desee. Hará que su ejemplo se vea así:

/** 
* Description 
* 
* @param[in,out] var1 : <Long description that needs 
* to be wrapped.> 
* @param[in,out] var2 : <Description2> 
*/ 

Espero que aún funcione mejor para usted. Avísame si descubres el sangrado.

+0

Intenté agregar la expresión regular que mencionaste en mi archivo .emacs, pero sigo teniendo el mismo problema con el segundo @param que no se reconoce como un nuevo párrafo. Me doy cuenta de que corregir el estado de párrafo no resolverá mi problema de sangría, pero este sería un lugar muy útil para comenzar =). Después de escribir la publicación inicial, me di cuenta de que debería haber notado que en realidad era una pregunta en dos partes: 1) Reconocer el @param como un nuevo párrafo. 2) Sangra apropiadamente las descripciones. – DuneBug

+0

Cuando está en el búfer con este archivo, ¿qué devuelve 'C-h v paragraph-start'? Si no es la expresión regular anterior, entonces puede haberlo configurado globalmente y puede estar sobreescrito por el modo c. Si ese es el caso, entonces puede configurar esto en un gancho c-mode. – Neil

Cuestiones relacionadas