সমস্যাটি
এখানে সমস্যাটি হ'ল মার্জিনগুলির উপস্থিতি নিয়ন্ত্রণের জন্য কোনও মুখ নেই। আপনি ওভারলেগুলি ব্যবহার করে মার্জিনে পাঠ্য প্রদর্শন করতে পারেন (এটিই linum-mode
হয়) তবে ইমাক্সের কোনও পাঠ্যের মতো এটি বাফারের সীমাতে সীমাবদ্ধ। সুতরাং আপনার বাফারের শেষ লাইনের বাইরে মার্জিন ডিসপ্লেতে কোনও নিয়ন্ত্রণ থাকতে পারে না।
আপনি যা করতে পারেন তা হ'ল এই ত্রুটিযুক্ত রেখাগুলিকে মধ্যেই ঠিক করা।
সেখানে কী রাখবেন
এই ভেরিয়েবলটি দুটি লজিকাল লাইনের "মধ্যবর্তী" ভিজ্যুয়াল লাইনে আপনি কী প্রদর্শন করতে চান তা নিয়ন্ত্রণ করে। গুরুত্বপূর্ণ অংশটি হ'ল 'face 'linum
, যা নিশ্চিত করে যে এই রেখাগুলি উপস্থিতি অনুসরণ করবে linum-mode
। "-----"
অংশ প্রদর্শনমূলক হয়, তাহলে আপনি স্পেস বা যাই হোক না কেন আপনি চান এটি পরিবর্তন করতে পারেন।
(defvar endless/margin-display
`((margin left-margin) ,(propertize "-----" 'face 'linum))
"String used on the margin.")
এটা কিভাবে করতে হবে
নীচের কোডটি বাফারের মধ্য দিয়ে যায় এবং linum-mode
প্রতিটি লাইনে ওভারলেগুলি ( যা ব্যবহার করে তার সমান ) রাখে যা "বাস্তব" নয়।
(defvar-local endless/margin-overlays nil
"List of overlays in current buffer.")
(defun endless/setup-margin-overlays ()
"Put overlays on each line which is visually wrapped."
(interactive)
(let ((ww (- (window-width)
(if (= 0 (or (cdr fringe-mode) 1)) 1 0)))
ov)
(mapc #'delete-overlay endless/margin-overlays)
(save-excursion
(goto-char (point-min))
(while (null (eobp))
;; On each logical line
(forward-line 1)
(save-excursion
(forward-char -1)
;; Check if it has multiple visual lines.
(while (>= (current-column) ww)
(endles/make-overlay-at (point))
(forward-char (- ww))))))))
(defun endles/make-overlay-at (p)
"Create a margin overlay at position P."
(push (make-overlay p (1+ p)) endless/margin-overlays)
(overlay-put
(car endless/margin-overlays) 'before-string
(propertize " " 'display endless/margin-display)))
এবং আমরা এটি চালাতে চাই যখনই linum-mode
লাইন নম্বরগুলি আপডেট করে।
(add-hook 'linum-before-numbering-hook #'endless/setup-margin-overlays)