আমি কীভাবে একটি কাস্টম ব্যাকগ্রাউন্ড রঙ দিয়ে পুরো লাইন নম্বর বারটি পূরণ করতে পারি?


9

নীচের স্ক্রিনশটটিতে আমি কেবল linumমুখের পটভূমিটি কিছু রঙে সেট করেছি , তবে বাফারের শেষে একটি ফাঁকা অঞ্চল রয়েছে এবং লাইন মোড়ক ( global-visual-line-mode) সক্ষম করার সময় লাইনগুলির মধ্যে ফাঁক রয়েছে :

লাইন মোড়ক সহ ভাঙা লিনাম পটভূমি।

আদর্শভাবে পুরো বাম দিকটি একটি অভিন্ন রঙের হওয়া উচিত। এটা কি সম্ভব? আমি কিছু এলিস্প জানি, তাই যদি এটি সম্ভব হয় তবে আমি কিছু নির্দেশাবলীর সাহায্যে নিজেকে ঠিক করে ফেলতে পারি।


থিমগুলি স্যুইচ করার সময় আমি এটি লক্ষ্য করেছি। আমার জন্য কাজটি হচ্ছে ডিফল্ট থিমটিতে ফিরে যাওয়া এবং তারপরে নির্দিষ্ট থিমটি পুনরায় সক্ষম করা। এটি সাধারণত পটভূমির রঙগুলি পুনরায় সেট করে। নির্দিষ্ট মুখগুলির সাথে এটি আরও পরিশ্রমী কিনা এটি ঠিক করার জন্য কোনও ফাংশন কীভাবে লিখতে হয় তার জন্য কোনও সূত্র দিতে পারে কিনা তা দেখার জন্য ডিফল্ট থিম সেটিংসে একবার নজর রাখা সার্থক হতে পারে।
এলারসন

"এর মধ্যে" রঙ ঠিক করা কার্যকর হতে পারে (আমি এটি দিয়ে চেষ্টা করব)। বাফার শেষ হওয়ার পরে রঙ ঠিক করা দুঃখজনকভাবে নয় --- রঙ করার মতো কিছুই নেই।
মালাবারবা

আসলে, আমি প্রায়শই এটি প্রায়শই জিজ্ঞাসা করেছি এটি সম্ভবত একটি উপযুক্ত বৈশিষ্ট্যের অনুরোধ।
মালাবারবা

@ মালবারবা কেন এটি বাফারের নীচের অংশে প্রসারিত করা সম্ভব হচ্ছে না? প্রান্তটি সর্বোপরি এটিও করে।
লেনার হোয়েট

1
@ এমসিবি আপনি এখন কী বোঝাতে চেয়েছেন আমি তা আরও ভালভাবে বুঝতে পারি। প্রান্তটির নিজস্ব চেহারা রয়েছে (যার পটভূমি পর্দার নীচে প্রসারিত), মার্জিনটি হয় না (এটি কেবলমাত্র ডিফল্ট মুখটি ধার করে)।
মালবারবা

উত্তর:


6

সমস্যাটি

এখানে সমস্যাটি হ'ল মার্জিনগুলির উপস্থিতি নিয়ন্ত্রণের জন্য কোনও মুখ নেই। আপনি ওভারলেগুলি ব্যবহার করে মার্জিনে পাঠ্য প্রদর্শন করতে পারেন (এটিই 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)

আমি এটি পরীক্ষা করেছি org-modeএবং দেখে মনে হচ্ছে যে স্ক্রোলিংয়ের সময় কিছুটা পিছিয়ে পড়েছে এবং এটি অভিযোজিত মোড়কে চালু না করে কোনও স্পষ্ট কারণ ছাড়াই ফাঁকগুলি মিস করে। স্ক্রিনশট।
লেনার হোয়েট

@ এমসিবি হ্যাঁ, পারফরম্যান্স এখানে একটি বিষয়, তবে এটির উন্নতি করা একটি দীর্ঘ এবং জটিল বিষয় হবে। যেমন org- মোড সমস্যার কথা, org ওভারলেগুলি ভারী ব্যবহার করে, তাই এটি দ্বন্দ্ব হতে পারে তা বোঝা যায়। আমি এটি ঠিক করার কোনও উপায় সম্পর্কে অবগত নই, তবে আমি এটি কিছুটা চিন্তা করব।
মালবারবা

-1

আপনি আপনার কনফিগারেশনে এটি রাখতে পারেন:

(set-face-background 'fringe "#f4a460")

... স্পষ্টতই আপনি চান রঙিন কোড পরিবর্তন করুন।


2
এটি ফ্রঞ্জের রঙ পরিবর্তন করবে, সীমানা নম্বরগুলি সীমানায় প্রদর্শিত হবে না। (এটি চেষ্টা করুন এবং আপনি পার্থক্যটি দেখতে পাবেন)
মালাবরবা

1
এটি প্রশ্নের স্ক্রিনশটেও দৃশ্যমান: "লাইন নম্বরগুলি কলাম" বাফারের মতো একই পটভূমির রঙ, অন্যদিকে সীমাটি ধূসর বর্ণের, লাইন নম্বর কলাম এবং বাফারের মধ্যবর্তী সামান্য অঞ্চল।
টি। ভেরন

হ্যাঁ আপনি ঠিক. আমি সন্দেহ করি যে আপনি লিনুম-এর আগে-নাম্বারিং-হুকের ফান্টন রানে একটি নতুন ওভারলে প্রবর্তন করতে হবে এবং আপনি সেট করতে পারেন এমন মুখ দিতে হবে।
টিলেগ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.