Come correggere il paragrafo di riempimento della modalità markdown?


8

markdown-modeè abbastanza bravo a riempire i paragrafi in generale, ma c'è un difetto che mi disturba davvero. Se un paragrafo contiene una linea che termina in due spazi, inizia solo a riempire e non riempie mai quella linea.

Ad esempio, prendi il seguente esempio, in cui la seconda riga termina in due spazi.

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.

L'esempio si spiega da solo. Anche se ho colpito M-qall'inizio di ogni riga, mi rimane ancora questo:

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.

Quello che vorrei avere è questo:

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.

Q: Come posso fill-paragraphcomportarmi in questo modo?

Chiaramente, markdown-modesta considerando l'intera linea mediana come un separatore di paragrafo, quando dovrebbe essere solo gli spazi alla fine.

Risposte:


1

Quindi un martello inelegante di una soluzione per questo è impostare paragraph-separatecome una variabile file-local. La modalità lo imposta "\\(?:[ \t\f]\\|.* \\)*$"come una modalità-variabile locale; se lo ripristino al suo valore predefinito (preso dalla stringa di aiuto per paragraph-separate) in questo modo:

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

quindi ottengo il comportamento che stai cercando:

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.

Il commento nel repository git che introduce questo dice:

Rispettare le interruzioni di riga quando si riempiono i paragrafi

Un aspetto negativo di questa patch è che i comandi di spostamento dei paragrafi si fermeranno anche alle interruzioni di riga, modificando leggermente la definizione di "paragrafo" in questa modalità.

Dopo molte tracce, penso di aver effettivamente invocato la funzione M-qfino a fill-individual-paragraphs; ma è complicato, e anche dopo aver visto quel commento non ho ancora capito esattamente cosa sta succedendo ... quindi, martello smussato, e non so quali altre conseguenze avrà. Ma sembra funzionare. :-)


Grazie. Sfortunatamente, questo non ottiene il comportamento che sto cercando. Ho riempito correttamente le prime 2 righe, ma le 3 righe non sono state riempite correttamente. Nota la leggera differenza tra il paragrafo che hai qui e il "risultato desiderato" nella domanda. La terza riga viene inserita nel jumble, che cambia il modo effettivo in cui il paragrafo viene visualizzato mediante markdown. Questo è indesiderabile. La terza riga dovrebbe rimanere una riga a sé stante. Sospetto che questa sia una limitazione della logica del paragrafo di riempimento di Emacs e che possa essere risolta solo con una funzione dedicata.
Malabarba,

Arghh, l'ho perso! :-(
Saint Aardvark the Carpeted
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.