Bagaimana cara memperbaiki paragraf pengisian markdown-mode?

8

markdown-modecukup baik dalam mengisi paragraf secara keseluruhan, tetapi ada satu kelemahan yang benar-benar mengganggu saya. Jika sebuah paragraf berisi garis yang berakhir dalam dua spasi, itu hanya mulai mengisi tidak pernah mengisi baris itu.

Misalnya, ambil contoh berikut ini, di mana baris kedua berakhir dalam dua spasi.

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.

Contoh itu menjelaskan dirinya sendiri. Bahkan jika saya menekan M-qpada awal setiap baris, saya masih tertinggal dengan ini:

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.

Yang ingin saya miliki adalah ini:

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.

T: Bagaimana saya bisa fill-paragraphbersikap seperti ini?

Jelas, markdown-modemenganggap seluruh garis tengah menjadi pemisah paragraf, padahal seharusnya hanya spasi di akhir.

Malabarba
sumber

Jawaban:

1

Jadi salah satu palu yang salah dari solusi untuk ini adalah ditetapkan paragraph-separatesebagai variabel file-lokal. Mode menetapkannya "\\(?:[ \t\f]\\|.* \\)*$"sebagai mode-local-variable; jika saya atur kembali ke nilai default (diambil dari string bantuan untuk paragraph-separate) seperti:

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

maka saya mendapatkan perilaku yang Anda cari:

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.

Komentar dalam git repo yang memperkenalkan ini mengatakan:

Hormati garis keras saat mengisi paragraf

Kelemahan dari tambalan ini adalah bahwa perintah pergerakan paragraf juga akan berhenti pada jeda garis keras, sehingga sedikit mengubah definisi "paragraf" dalam mode ini.

Setelah banyak menelusuri, saya pikir saya punya fungsi yang sebenarnya dipanggil M-qturun ke fill-individual-paragraphs; tapi itu rumit, dan bahkan setelah melihat komentar itu, saya masih belum tahu persis apa yang terjadi ... jadi, palu tumpul, dan saya tidak tahu apa konsekuensi lain yang akan terjadi. Tapi sepertinya berhasil. :-)

Saint Aardvark the Carpeted
sumber
Terima kasih. Sayangnya, ini tidak mendapatkan perilaku yang saya cari. Saya mengisi 2 baris pertama dengan benar, tetapi 3 baris tidak diisi dengan benar. Perhatikan sedikit perbedaan antara paragraf yang Anda miliki di sini dan "hasil yang diinginkan" dalam pertanyaan. Baris ketiga ditarik ke dalam campur aduk, yang mengubah cara sebenarnya paragraf diberikan oleh penurunan harga. Itu tidak diinginkan. Baris ketiga harus tetap menjadi garisnya sendiri. Saya menduga ini adalah batasan logika paragraf isi Emacs, dan hanya dapat diperbaiki dengan fungsi khusus.
Malabarba
Arghh, aku merindukan itu! :-(
Saint Aardvark the Carpeted