पार्टी के अंत तक (और मेरी पहली पोस्ट यहाँ, वैसे), लेकिन मुझे लगता है कि यह दूसरों के लिए भी उपयोगी हो सकता है। स्वीकार किए गए उत्तर पूरी तरह से काम करते हैं जब ईमैक फिर से अंदर जाता है, लेकिन सिस्टम क्लिपबोर्ड पर कॉपी किया गया वास्तविक पाठ अभी भी पूर्ण ऑर्ग-मोड सिंटैक्स है। मैं कुछ ऐसा चाहता था जो org-mode और emacs दोनों के लिंक को कॉपी कर सके । मामलों का उपयोग करें: मैं हाल ही में बहुत सारे वेब देव कर रहा हूं, और मैं अक्सर कई ब्राउज़रों का उपयोग करता हूं। उनमें से केवल एक C-c c-o
शॉर्टकट के लिए डिफ़ॉल्ट हो सकता है , और कभी-कभी मैं एक गैर-डिफ़ॉल्ट में एक लिंक खोलना चाहता हूं। इसके अलावा, स्लैक, वगैरह पर सहकर्मियों के लिए लिंक चिपकाना।
लंबी कहानी छोटी, मैं स्वीकृत उत्तर को मिलाते और मिलाते हुए इस समाधान के साथ आया हूँ :
(defun my-org-export-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(string-match org-bracket-link-regexp text)
(kill-new (substring text (match-beginning 1) (match-end 1))))))
यह क्लिपबोर्ड लिंक को ऑर्ग-मोड लिंक के केवल भाग पर कॉपी करेगा।
वास्तव में, मैंने पिछले उत्तर के समाधान और मेरे अंदर के इस नए कार्य को एकीकृत किया है .emacs
, प्रत्येक की अपनी कीबाइंडिंग के साथ। पूर्ण कोड यहाँ:
(defun my-yank-org-link (text)
(if (derived-mode-p 'org-mode)
(insert text)
(string-match org-bracket-link-regexp text)
(insert (substring text (match-beginning 1) (match-end 1)))))
(defun my-org-copy-smart-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(add-text-properties 0 (length text) '(yank-handler (my-yank-org-link)) text)
(kill-new text))))
(global-set-key (kbd "C-c c") 'my-org-copy-smart-url)
(defun my-org-export-url ()
(interactive)
(let* ((link-info (assoc :link (org-context)))
(text (when link-info
(buffer-substring-no-properties (or (cadr link-info) (point-min))
(or (caddr link-info) (point-max))))))
(if (not text)
(error "Not in org link")
(string-match org-bracket-link-regexp text)
(kill-new (substring text (match-beginning 1) (match-end 1))))))
(global-set-key (kbd "C-c e") 'my-org-export-url)
मैंने C-c e
और C-c c
कीबाइंडिंग को चुना है क्योंकि वे e
xport और c
opy के लिए अच्छे mnemonics हैं और वे org-mode में अप्रयुक्त हैं। वे भी किसी न किसी तरह पहले से ही मौजूद कीबाइंडिंग के C-c C-o
लिए o
लिंक के साथ फिट होते हैं ।
if
, क्योंकि GUI Emacs का उपयोग करते समय यह हमेशा[[a]][b]]
URL लिंक के बजाय पूरे लिंक ( ) को कॉपी करता थाa