বাফারের আশেপাশের অঞ্চলে মুখগুলি রক্তক্ষরণ থেকে রোধ করবেন কীভাবে?


20

প্রশ্ন: আমি কীভাবে কোনও ভাঁজ শিরোনামের শেষে নির্বাচিত প্রদর্শন বর্ণগুলিতে org-modeরক্তপাত থেকে লিঙ্কের মুখগুলি রক্ষা করতে পারি ...?

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

আমি পোস্ট করা স্ক্রিনশটটি বিষয়টি দেখায়। লাইন তিনটি সমস্যাযুক্ত লাইনটি লিঙ্কের শেষ এবং লাইনের শেষের মধ্যে কোনও অক্ষর ছাড়াই রয়েছে, যখন লাইন চারটি একটি লিঙ্ক দেখায়, তারপরে একটি স্থান থাকবে:

অদ্ভুত লিঙ্ক মুখ আচরণ

প্রথমত, কেন এটি ঘটে? দ্বিতীয়ত, এবং আরও অনেক বিষয়, আমি কীভাবে এটি বন্ধ করব?

আপডেট 1: মন্তব্য অনুসারে নীচে পোস্ট করা শিরোনামগুলি বন্ধ এবং খোলা রয়েছে এমন বাফারের স্ক্রিনশট রয়েছে। আমি ইমাকগুলি কোনও init ফাইল (অর্থাত্‍ emacs -Q), requireডি org-মোড ছাড়াই খুলেছি এবং এই উদাহরণ ফাইলটি খুললাম। সুতরাং: এটি আমার সেটআপে কুক্কুট কিছু বলে মনে হচ্ছে না।

সমস্ত শিরোনাম বন্ধ: অদ্ভুত লিঙ্ক মুখ বন্ধ

সমস্ত শিরোনাম খোলা: অদ্ভুত লিঙ্ক মুখ খোলা

উপরে আমি যে থিমটি ব্যবহার করছি তা হ'ল ইনকপট, যদিও সোলারাইজড থিম ব্যবহার করার সাথে সাথে ডিফল্ট থিম (নতুন স্ক্রিনশটগুলিতে) ব্যবহার করার সময় আমি একই সমস্যা পাই।

ইমাস সংস্করণ 24.3.1। Org সংস্করণ 7.9.3f (অর্থাত্ সেই ইমাক্স সংস্করণটির সাথে একটি বান্ডিলযুক্ত), পাশাপাশি 8.3 বিটা ব্যবহার করার সময় আমি একই ফলাফল পেয়েছি।

আপডেট 2: একটি মন্তব্য অনুরোধের প্রতিক্রিয়া হিসাবে এখানে একটি সর্বনিম্ন কাজের উদাহরণ:

* here's a header with a [[~/somefile.txt][link at the end]]

  - This one's a problem
  - Interesting note:
    + put the cursor immediately *after* the *d* in "end" with the
      header closed/folded
      * the face no longer bleeds over into the dots
    + move the cursor anywhere else
      * the face bleeds over into the dots again

* here's another [[~/someotherfile.txt][go at it]]
  DEADLINE: <2014-10-26 Sun>

  - This one's also a problem

* here's another header with a [[~/anotherfile.txt][link followed by a space]] 

  - No bleed-over onto the dots with this one

1
আমি এটি ইম্যাক্স 24.3.1 এবং এর সাথে আগত org-মোডে পুনরুত্পাদন করতে বেশ কষ্ট পাচ্ছি। এমনকি আপনি উল্লেখ করেছেন পুনরুত্পাদন পদক্ষেপগুলিও। আপনি কাঁচা org- মোড বাফার দেখাতে পারেন? (এটি বলেছিল, আমি ধরে নিলাম এটি একটি
org-

@ আরিক হিসাবে একই, আমি এটি এখানে দেখতে না। সুতরাং, সম্ভবত এটি ইমাস সংস্করণে বা থের অর্গ মোড বাফারের কিছু বিশদের উপর নির্ভরশীল।
স্টিফান

@ ড্যান, কৌতূহলের বাইরে আপনি কোন থিমটি ব্যবহার করছেন?
লুক

1
@ ড্যান আপনি কি দয়া করে পরীক্ষার জন্য একটি উদাহরণ org ফাইলের উত্স সরবরাহ করতে পারেন?
উইলফ্রেড হিউজ

2
@ ড্যান আমি আপনার সরবরাহিত ফাইল সহ ইমাস 24.4 এ পুনরুত্পাদন করতে পারি।
রেখাডো

উত্তর:


10

একটি বাগ মত এই সৌন্দর্য দ্বারা আলোড়ন সৃষ্টি org-mode'র org-activate-bracket-linksফাংশন।

এই ফাংশনটি দেখতে এটির মতো:

(defun org-activate-bracket-links (limit)
  "Run through the buffer and add overlays to bracketed links."
  (if (and (re-search-forward org-bracket-link-regexp limit t)
       (not (org-in-src-block-p)))
      (let* ((hl (org-match-string-no-properties 1))
         (help (concat "LINK: " (save-match-data (org-link-unescape hl))))
         (ip (org-maybe-intangible
          (list 'invisible 'org-link
            'keymap org-mouse-map 'mouse-face 'highlight
            'font-lock-multiline t 'help-echo help
            'htmlize-link `(:uri ,hl))))
         (Vp (list 'keymap org-mouse-map 'mouse-face 'highlight
               'font-lock-multiline t 'help-echo help
               'htmlize-link `(:uri ,hl))))
    ;; We need to remove the invisible property here.  Table narrowing
    ;; may have made some of this invisible.
    (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
    (remove-text-properties (match-beginning 0) (match-end 0)
                '(invisible nil))
    (if (match-end 3)
        (progn
          (add-text-properties (match-beginning 0) (match-beginning 3) ip)
          (org-rear-nonsticky-at (match-beginning 3))
          (add-text-properties (match-beginning 3) (match-end 3) vp)
          (org-rear-nonsticky-at (match-end 3))
          (add-text-properties (match-end 3) (match-end 0) ip)
          (org-rear-nonsticky-at (match-end 0)))
      (add-text-properties (match-beginning 0) (match-beginning 1) ip)
      (org-rear-nonsticky-at (match-beginning 1))
      (add-text-properties (match-beginning 1) (match-end 1) vp)
      (org-rear-nonsticky-at (match-end 1))
      (add-text-properties (match-end 1) (match-end 0) ip)
      (org-rear-nonsticky-at (match-end 0)))
    t)))

এটা একটা বন্ধনী করা লিঙ্কের জন্য ম্যাচের জন্য অনুসন্ধান করে (যেমন [[target][label]], লুকায় [[target][যোগ করে অংশ ipটেক্সট বৈশিষ্ট্য, তারপর linkifies labelযোগ করে vpটেক্সট বৈশিষ্ট্য, এবং পরিশেষে চিহ্ন সরিয়ে ফেলা ]]যোগ করে ipআবার টেক্সট বৈশিষ্ট্য।

এই সব ঠিক আছে। org-rear-nonsticky-atসম্পত্তি রক্তপাত যত্ন নেওয়া উচিত।

এই আচরণটি ট্রিগার করে (add-text-properties (match-end 3) (match-end 0) ip), যা পিছনে লুকায় ]]। কেবল 'invisible 'org-linkসম্পত্তি এই আচরণকে ট্রিগার করে, অন্যান্য সম্পত্তি নিরীহ বলে মনে হয়।

আপনি ওভাররাইট পারে org-activate-bracket-linksযেমন যে ipআর সেট 'invisibleকিন্তু 'display "", যা একই প্রভাব রয়েছে:

(defun org-activate-bracket-links (limit)
  "Run through the buffer and add overlays to bracketed links."
  (if (and (re-search-forward org-bracket-link-regexp limit t)
       (not (org-in-src-block-p)))
      (let* ((hl (org-match-string-no-properties 1))
         (help (concat "LINK: " (save-match-data (org-link-unescape hl))))
         (ip (org-maybe-intangible
          (list 'display ""
            'keymap org-mouse-map 'mouse-face 'highlight
            'font-lock-multiline t 'help-echo help
            'htmlize-link `(:uri ,hl))))
         (Vp (list 'keymap org-mouse-map 'mouse-face 'highlight
               'font-lock-multiline t 'help-echo help
               'htmlize-link `(:uri ,hl))))
    ;; We need to remove the invisible property here.  Table narrowing
    ;; may have made some of this invisible.
    (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0))
    (remove-text-properties (match-beginning 0) (match-end 0)
                '(invisible nil))
    (if (match-end 3)
        (progn
          (add-text-properties (match-beginning 0) (match-beginning 3) ip)
          (org-rear-nonsticky-at (match-beginning 3))
          (add-text-properties (match-beginning 3) (match-end 3) vp)
          (org-rear-nonsticky-at (match-end 3))
          (add-text-properties (match-end 3) (match-end 0) ip)
          (org-rear-nonsticky-at (match-end 0)))
      (add-text-properties (match-beginning 0) (match-beginning 1) ip)
      (org-rear-nonsticky-at (match-beginning 1))
      (add-text-properties (match-beginning 1) (match-end 1) vp)
      (org-rear-nonsticky-at (match-end 1))
      (add-text-properties (match-end 1) (match-end 0) ip)
      (org-rear-nonsticky-at (match-end 0)))
    t)))

স্পষ্টতই, এটি একটি কুরুচিপূর্ণ হ্যাক। তবে এটি আমার পক্ষে কাজ করে এবং আপনার পক্ষে কাজ করে। আমি এখনও একটি বাগ রিপোর্ট ফাইল করার পরামর্শ দিচ্ছি।


প্রচেষ্টার জন্য আপনাকে ধন্যবাদ (তার জন্য +1), কিন্তু এই সমাধানটি আমার পক্ষে কার্যকর হচ্ছে না। বরং propertizing চেয়ে [[~/somefile.txt][link label]]যেমন link label(যেখানে তির্যক লিঙ্কের জন্য মান মুখ ইঙ্গিত), এটা হয়ে link label]](মুখে কোন পরিবর্তনের সঙ্গে)। আমি একটি বাগ রিপোর্ট ফাইল করব।
ড্যান

হুম, অদ্ভুত। আমার সংজ্ঞাটির একমাত্র পরিবর্তনটি org-activate-bracket-linksপ্রতিস্থাপন 'invisible non-nilকরা হচ্ছে 'display "", সুতরাং এটি এখনও আগের মতো লিঙ্কের মুখটি প্রয়োগ করা উচিত। এটি অবশ্যই ইমাক্স ২৪.৪ এ আমার জন্য কাজ করে, তবে আমার অনুমান যে শক্তিটি আমার হ্যাকের কাজটি করার চেয়ে বরং বাগের প্রতিবেদনে আরও ভাল ব্যয় করা হয়েছে ... :)
রেকাডো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.