समस्या यह है कि fill-paragraph
(या बल्कि fill-region-as-paragraph
) नए पैराग्राफ को हटा और फिर से सम्मिलित करेगा जबकि यह आपके पैराग्राफ को तोड़ता है। यह केवल एक पंक्ति है, तो यह बफर को संशोधित नहीं करेगा। आपके द्वारा देखी गई पूर्ववत सूची में कोई विकल्प नहीं है, केवल fill-paragraph
नई सूचियाँ निकाल रहा है और पुन: सम्मिलित कर रहा है।
इससे बचना गैर-तुच्छ है। निम्नलिखित एक बहुत बुरा हैक है, और बड़े बफ़र्स के लिए अत्यधिक अक्षम है, लेकिन शायद यह आपके लिए काम करता है। समान व्यवहार वाले कमांड मिमिक fill-paragraph
( M-q
), सिवाय इसके कि यह कॉल करने से पहले बफर की सामग्री को संग्रहीत करता है, और बाद में, यदि सामग्री समान रहती है, तो यह परिवर्तन से पहले संशोधन राज्य और पूर्ववत सूची को पुनर्स्थापित करेगा। ऐसा करने के लिए, इसे बफर सामग्री की एक प्रतिलिपि (दो, वास्तव में) की आवश्यकता है, इसलिए वास्तव में, यह काफी अक्षम है। :-)
(defun my/fill-paragraph (&optional justify region)
(interactive (progn
(barf-if-buffer-read-only)
(list (if current-prefix-arg 'full) t)))
(let ((old-text (buffer-string))
(old-modified (buffer-modified-p))
(old-undo-list buffer-undo-list))
(fill-paragraph justify region)
(when (equal old-text (buffer-string))
(setq buffer-undo-list old-undo-list)
(set-buffer-modified-p old-modified))))
आप उसे बांध सकते हैं M-q
।
M-q
है - डिफ़ॉल्ट रूप से परिवर्तित बफर को चिह्नित नहीं करता है, कम से कम मेरे परीक्षण से। आप किस विधा का उपयोग कर रहे हैं? मुझे लगता है कि मोडfill-paragraph
किसी तरह से ओवरराइट कर रहा है।