बफर के आसपास के क्षेत्रों में रक्तस्राव से चेहरे को कैसे रोका जाए?


20

प्रश्न: मैं मुड़े हुए शीर्षलेख के अंत में चयनात्मक प्रदर्शन पात्रों org-modeमें रक्तस्राव से लिंक चेहरे को कैसे रख सकता हूं ...?

यह एक विज़ुअल टिक है जो मुझे थोड़ा अखरोट देता है। जब, में org-mode, एक लिंक एक लाइन पर बहुत आखिरी चीज होती है, तो लिंक फेस ब्लीड्स ...उस पर इंगित करता है कि हेडर ऊपर मुड़ा हुआ है। अगर, कहते हैं, लिंक के बाद एक खाली जगह है, वहाँ कोई खून बह रहा है।

मैंने जो स्क्रीनशॉट पोस्ट किया है वह इस मुद्दे को प्रदर्शित करता है। पंक्ति तीन लिंक की समाप्ति और पंक्ति के अंत के बीच कोई वर्ण नहीं है, जबकि पंक्ति चार एक लिंक दिखाती है, उसके बाद एक स्थान होता है:

अजीब लिंक चेहरा व्यवहार

सबसे पहले, ऐसा क्यों होता है? दूसरा, और इस बिंदु पर, मैं इसे कैसे रोक सकता हूं?

अद्यतन 1: टिप्पणियों के अनुसार, नीचे पोस्ट किए गए बफर के स्क्रीनशॉट हेडर बंद और खुले हैं। मैंने एमएसीएस को बिना इनिट फ़ाइल (यानी emacs -Q), requireडी ऑर्ग-मोड के साथ खोला है और इस उदाहरण फ़ाइल को खोला है। इसलिए: यह मेरे सेटअप में कुछ कुकर्मी प्रतीत नहीं होता है।

सभी हेडर बंद: अजीब लिंक चेहरा बंद

सभी हेडर खुले: अजीब लिंक चेहरा खुला

ऊपर मैं जिस विषय का उपयोग कर रहा हूं वह इंकपॉट है, हालाँकि मुझे सोलराइज्ड थीम के साथ-साथ डिफ़ॉल्ट थीम (नए स्क्रीनशॉट में) का उपयोग करते समय भी यही समस्या आती है।

एमएसीएस संस्करण 24.3.1 है। मुझे वही परिणाम मिलते हैं जब org संस्करण 7.9.3f (यानी, उस Emacs संस्करण के साथ बंडल किया जाता है) का उपयोग करते हुए, साथ ही साथ 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
मैं एक कठिन समय Emacs 24.3.1 और इसके साथ आने वाले org- मोड पर पुन: पेश कर रहा हूं। यहां तक ​​कि आपके द्वारा बताए गए प्रजनन चरणों के साथ भी। क्या आप कच्चे ऑर्ग-मोड बफर दिखा सकते हैं? (उस ने कहा, मुझे लगता है कि यह ऑर्ग-मोड में एक बग है। क्या एक अतिरिक्त न्यूलाइन मदद को जोड़ना है?)
10

@Aerique के समान, मैं इसे यहाँ नहीं देखता। तो, शायद यह Emacs संस्करण पर निर्भर करता है, या वें Org मोड बफर के कुछ विवरण।
स्टीफन

@, जिज्ञासा से बाहर, आप किस विषय का उपयोग कर रहे हैं?
ल्यूक

1
@ क्या आप परीक्षण के लिए एक उदाहरण org फ़ाइल का स्रोत प्रदान कर सकते हैं?
विल्फ्रेड ह्यूजेस

2
@ क्या मैं आपके द्वारा प्रदान की गई फ़ाइल के साथ Emacs 24.4 पर इसे पुन: पेश कर सकता हूं।
16

जवाबों:


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, फिर पाठ गुणों 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!), लेकिन यह समाधान मेरे लिए काम नहीं कर रहा है। के [[~/somefile.txt][link label]]रूप में link label(जहां इटैलिक लिंक के लिए मानक चेहरे को इंगित करता है) को सही करने के बजाय , यह बन जाता है link label]](चेहरे में कोई बदलाव नहीं)। मैं एक बग रिपोर्ट दर्ज करूंगा।
दान

हम्म, अजीब है। मेरी परिभाषा में एकमात्र परिवर्तन के साथ org-activate-bracket-linksबदल रहा 'invisible non-nilहै 'display "", इसलिए इसे अभी भी लिंक चेहरे को पहले की तरह लागू करना चाहिए। यह निश्चित रूप से मेरे लिए Emacs 24.4 में काम करता है, लेकिन मुझे लगता है कि ऊर्जा मेरी हैक काम करने की कोशिश करने के बजाय बग रिपोर्ट पर बेहतर खर्च करती है ... :)
rekado
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.