সমস্যাটি হ'ল 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কোনও উপায়ে ওভাররাইট হচ্ছে ।