tutorial source program para mac how descargar code emacs elisp

program - emacs source code



Obtener el párrafo de relleno de Emacs para jugar bien con comentarios tipo javadoc (3)

Estoy escribiendo un modo principal de Emacs para un dialecto APL que uso en el trabajo. Obtuve el bloqueo básico de fuentes para que funcionase, y después de configurar comentar-start y comment-start-skip, la región comment / uncomment y fill paragraph también funcionan.

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

Si tengo esto (/ en lugar de javadoc @):

# 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

Intenté configurar el párrafo-inicio y el párrafo-separar los valores apropiados, pero el párrafo de relleno todavía no funciona dentro de un bloque de comentarios. Si elimino los marcadores de comentarios, Mq funciona como quiero, por lo que la expresión regular que uso para el inicio de párrafos parece funcionar.

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


Lo que hago en estos casos es abrir una línea en blanco entre las líneas de los párrafos y las líneas de los argumentos, luego usar Mq para envolver las líneas de los párrafos, luego matar la línea en blanco entre ellos. No es ideal, pero funciona y es bastante fácil de grabar en una macro si necesita repetirlo.


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.


El problema era que la expresión regular párrafo-inicio tiene que coincidir con toda la línea, incluido el carácter de comentario real. La siguiente elisp funciona para el ejemplo que di:

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

Aquí una página que tiene un ejemplo de expresiones regulares para php-mode que hace esto: http://barelyenough.org/blog/2006/10/nicer-phpdoc-comments/