¿Cómo arreglar el párrafo de relleno del modo de reducción?

8

markdown-modees bastante bueno para llenar párrafos en general, pero hay una falla que realmente me molesta. Si un párrafo contiene una línea que termina en dos espacios, solo comienza a llenarse, nunca llena esa línea.

Por ejemplo, tome el siguiente ejemplo, donde la segunda línea termina en dos espacios.

If I hit M-q right here at the start, this line will get broken into two, but the others won't.
If I hit M-q right here only the NEXT line will get split. All because this line here ends in two spaces.__
If I hit M-q right here, this line will get broken into two, but the others won't.

El ejemplo se explica solo. Incluso si golpeo M-qal comienzo de cada línea, todavía me queda esto:

If I hit M-q right here at the start this line will get broken into
two, but the others won't.
If I hit M-q right here only the NEXT line will get split. All because this line here ends in two spaces.__
If I hit M-q right here, this line will get broken into two, but the
others won't.

Lo que me gustaría tener es esto:

If I hit M-q right here at the start this line will get broken into
two, but the others won't. If I hit M-q right here only the NEXT line
will get split. All because this line here ends in two spaces.__
If I hit M-q right here, this line will get broken into two, but the
others won't.

P: ¿Cómo puedo llegar fill-paragrapha comportarme así?

Claramente, markdown-modeestá considerando que toda la línea media es un separador de párrafos, cuando debería ser solo los espacios al final.

Malabarba
fuente

Respuestas:

1

Entonces, una solución poco elegante para esto es establecer paragraph-separatecomo una variable local de archivo. El modo lo establece "\\(?:[ \t\f]\\|.* \\)*$"como una variable local de modo; si lo vuelvo a establecer en su valor predeterminado (tomado de la cadena de ayuda para paragraph-separate) así:

-*- mode: markdown; paragraph-separate: "[  ^L]*$" -*-

entonces obtengo el comportamiento que estás buscando:

If I hit M-q right here at the start, this line will get broken into
two, but the others won't.  If I hit M-q right here only the NEXT line
will get split. All because this line here ends in two spaces.__If I
hit M-q right here, this line will get broken into two, but the others
won't.

El comentario en el repositorio de git que presenta esto dice:

Respeta los saltos de línea dura al llenar párrafos

Una desventaja de este parche es que los comandos de movimiento de párrafo también se detendrán en los saltos de línea dura, cambiando así ligeramente la definición de "párrafo" en este modo.

Después de una gran cantidad de rastreo, que creo que tengo la función de hecho invocado por M-qa fill-individual-paragraphs; pero es complicado, e incluso después de mirar ese comentario todavía no he descubierto exactamente qué está pasando ... por lo tanto, martillo contundente, y no sé qué otras consecuencias tendrá. Pero parece funcionar. :-)

San Aardvark el Alfombrado
fuente
Gracias. Lamentablemente, esto no consigue el comportamiento que estoy buscando. Rellena correctamente las primeras 2 líneas, pero la línea 3 se llena incorrectamente. Tenga en cuenta la ligera diferencia entre el párrafo que tiene aquí y el "resultado deseado" en la pregunta. La tercera línea se introduce en el revoltijo, lo que cambia la forma real en que el párrafo se representa mediante rebajas. Eso no es deseable. La tercera línea debe seguir siendo una línea propia. Sospecho que esto es una limitación de la lógica de párrafo de relleno de Emacs, y solo se puede solucionar con una función dedicada.
Malabarba
¡Arghh, me perdí eso! :-(
San Aardvark el Alfombrado