प्रश्न: मैं orgस्वचालित रूप से विवरण डालने के लिए एक कस्टम लिंक फ़ंक्शन कैसे प्राप्त कर सकता हूं ?
मैं orgएक diredबफर में फ़ाइलों के लिंक को स्टोर करना चाहता हूं , लेकिन यह पसंद करेगा कि लिंक का विवरण फ़ाइल का नाम पथ हो, बजाय पूर्ण पथ की रिपोर्ट करने के, यानी:
file:~/the/full/path/myfile.ext ; default, but no thanks
myfile.ext ; what I want
अब: डिफ़ॉल्ट प्रदान करने के लिए org-store-linkहार्डकोड लिंक से dired। इसके बजाय, मैंने एक कस्टम फ़ंक्शन (हार्ड-कोडित फ़ंक्शन से क्रिबिंग) लिखा है और इसे इसमें जोड़ा गया है org-store-link-functions:
(defun dired-store-link ()
(when (derived-mode-p 'dired-mode)
(let ((file (dired-get-filename nil t)))
(setf file (if file
(abbreviate-file-name (expand-file-name file))
default-directory))
(org-store-link-props :type "dired"
:link file
:description (file-name-nondirectory file))
file)))
(add-to-list 'org-store-link-functions #'dired-store-link)
अब तक बहुत अच्छा है, और यह उम्मीद के मुताबिक काम करता है, लेकिन एक बात के लिए:
- जब
org-insert-linkबिल्ट-इन, डिफ़ॉल्ट व्यवहार के साथ कॉल किया जाता है, तो यह केवल मुझसे विवरण के बिना लिंक सम्मिलित करता है। org-insert-linkमेरे कस्टम फ़ंक्शन के साथ कॉल करते समय, यह मुझे एक विवरण दर्ज करने के लिए संकेत देता है (जो कि यह:descriptionसंपत्ति में संग्रहीत फ़ाइल नाम के साथ सही ढंग से पॉप्युलेट करता है)।
मुझे हर बार विवरण के लिए संकेत नहीं दिया जाता है, और कस्टम फ़ंक्शन सेट org-insert-linkके मूल्य का उपयोग करना चाहते हैं :description।
मैं इसके लिए मुझे संकेत दिए बिना स्वचालित रूप org-insert-linkसे उपयोग करने के लिए कैसे मना कर सकता हूं :description?
link-locationयाdefault-descriptionफ़ंक्शन मेंorg-insert-linkकोई मदद करता है ? यदि LINK-LOCATION पैरामीटर गैर-शून्य है, तो यह मान एक संवादात्मक रूप से पढ़ने के बजाय लिंक स्थान के रूप में उपयोग किया जाएगा। यदि DEFAULT-DESCRIPTION पैरामीटर गैर-शून्य है, तो यह मान डिफ़ॉल्ट विवरण के रूप में उपयोग किया जाएगा।