Làm cách nào để sửa đoạn điền của markdown-mode?


8

markdown-modelà khá tốt trong việc điền vào các đoạn tổng thể, nhưng có một lỗ hổng thực sự làm phiền tôi. Nếu một đoạn chứa một dòng kết thúc bằng hai khoảng trắng, nó chỉ bắt đầu điền không bao giờ điền vào dòng đó.

Ví dụ, lấy ví dụ sau, trong đó dòng thứ hai kết thúc ở hai khoảng trắng.

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.

Ví dụ giải thích chính nó. Ngay cả khi tôi nhấn M-qvào đầu mỗi dòng, tôi vẫn để lại điều này:

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.

Những gì tôi muốn có là đây:

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: Làm thế nào tôi có fill-paragraphthể cư xử như thế này?

Rõ ràng, markdown-modeđang xem xét toàn bộ đường giữa là một dấu phân cách đoạn, khi nó chỉ là khoảng trắng ở cuối.

Câu trả lời:


1

Vì vậy, một búa không thể thiếu của một giải pháp cho việc này là đặt paragraph-separatelàm biến cục bộ tệp. Chế độ đặt nó thành "\\(?:[ \t\f]\\|.* \\)*$"một biến chế độ cục bộ; nếu tôi đặt nó trở về giá trị mặc định của nó (lấy từ chuỗi trợ giúp paragraph-separate) như vậy:

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

sau đó tôi nhận được hành vi bạn đang tìm kiếm:

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.

Nhận xét trong repo git giới thiệu này nói:

Tôn trọng ngắt dòng cứng khi điền đoạn văn

Một nhược điểm của bản vá này là các lệnh di chuyển đoạn cũng sẽ dừng ở các ngắt dòng cứng, do đó thay đổi một chút định nghĩa của "đoạn" trong chế độ này.

Sau rất nhiều lần truy tìm, tôi nghĩ rằng tôi đã có chức năng thực sự được gọi M-qxuống fill-individual-paragraphs; nhưng nó phức tạp, và thậm chí sau khi xem bình luận đó, tôi vẫn không biết chính xác chuyện gì đang xảy ra ... do đó, búa cùn, và tôi không biết nó sẽ gây ra hậu quả gì khác. Nhưng nó dường như làm việc. :-)


Cảm ơn. Thật không may, điều này không có được hành vi tôi đang tìm kiếm. Tôi điền chính xác 2 dòng đầu tiên, nhưng 3 dòng được điền không chính xác. Lưu ý sự khác biệt nhỏ giữa đoạn bạn có ở đây và "kết quả mong muốn" trong câu hỏi. Dòng thứ ba bị kéo vào mớ bòng bong, thay đổi cách thực tế đoạn văn được hiển thị bằng cách đánh dấu. Đó là điều không mong muốn. Dòng thứ ba nên vẫn là một dòng của riêng nó. Tôi nghi ngờ đây là một hạn chế của logic đoạn văn của Emacs và chỉ có thể được sửa bằng một hàm chuyên dụng.
Malabarba

Arghh, tôi đã bỏ lỡ điều đó! :-(
Saint Aardvark trải thảm
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.