किसी ज्ञात निश्चित स्थान पर org-Refile


11

मैं एक फ़ंक्शन लिखने की कोशिश कर रहा हूं, जो एक शीर्षक लेगा और उसे एक विशिष्ट स्थान पर परिशोधित करेगा। के लिए डॉक्टर org-refileहै

(org-refile &optional GOTO DEFAULT-BUFFER RFLOC MSG)

और RFLOCहै

RFLOC can be a refile location obtained in a different way.

लेकिन मुझे कोई सुराग नहीं है कि "एक अलग तरीका" क्या होगा और मैं आधे दिन के लिए गुगली कर रहा हूं और कोई उदाहरण नहीं देखा। मुझे फाइल पता है और मैं लक्ष्य के लिए शीर्षक जानता हूं, लेकिन मुझे यह नहीं पता है कि इसे किस रूप में बनाना है। निकटतम मैं मिल गया है:

(org-refile nil #("~/Org/bookmarks.org")

जो तब मुझे शीर्षक के लिए संकेत देगा, लेकिन निश्चित रूप से मैं इसे संकेत देना नहीं चाहता, मैं इसे प्रदान करना चाहता हूं।

मैं नया हूँ और मैं हर उस वाक्य रचना पर अनुमान लगा रहा हूँ जिसके बारे में मैं सोच सकता हूँ। क्या किसी को पता है कि यह कैसे वाक्यांश है?


ऐसा करने का एक तरीका होना चाहिए कि आप वास्तव में यहाँ क्या चाहते हैं, लेकिन अगर आपको यह नहीं मिलता है, तो यहाँ एक समाधान है: stackoverflow.com/questions/7681326/…
ब्रायन जेड

मैं निम्नलिखित स्निपेट का उपयोग करने के लिए करता हूं जो आप मांग रहे हैं: (let* ( (org-archive-location "/path/to/org-file::* NAME_OF_HEADING") (org-archive-save-context-info nil)) (org-archive-subtree)) मैं शायद इस जवाब में नहीं डालूंगा क्योंकि आपने इसके बारे में पूछा था org-refile, लेकिन स्निपेट काफी अच्छी तरह से काम करता है। दो कोलन कर रहे हैं कर रहे हैं की जरूरत है। मैं हर समय इसका उपयोग करता हूं, और यहां तक org-archive-subtreeकि संदेश को दबाने के लिए एक कस्टम संस्करण भी बनाया है ताकि मेरे पास सैकड़ों नहीं हों जब मैं अपने पूरे ऑर्ग फाइल को स्वचालित रूप से पुनर्गठित करूं।
कानून व्यवस्था

धन्यवाद लॉलिस्ट, यह एक अच्छा स्निपेट है और मैं शायद दूसरे संदर्भ में इसका उपयोग करूंगा। अच्छा है कि यह यहाँ प्रलेखित है।
jtgd

जवाबों:


9

मैंने सोचा है कि RFLOC पहले की तरह दिखना चाहिए, लेकिन कभी जांच नहीं की गई। ऑर्ग सोर्स कोड को देखते हुए, यह एक सूची से युक्त होना चाहिए:

  • शीर्षक
  • फ़ाइल
  • पुनः (नियमित अभिव्यक्ति)
  • स्थिति (लक्ष्य शीर्षक की स्थिति)

मैंने reतत्व के साथ प्रयोग नहीं किया है , लेकिन यहां एक सरल कार्य है जो org-refileकिसी दिए गए फ़ाइल और HEV से निर्मित RFLOC के साथ होगा।

(defun my/refile (file headline)
  (let ((pos (save-excursion
               (find-file file)
               (org-find-exact-headline-in-buffer headline))))
    (org-refile nil nil (list headline file nil pos))))

यह लक्ष्य फ़ाइल खोलता है और लक्ष्य शीर्षक की स्थिति का पता लगाने के लिए एक आरएजी फ़ंक्शन का उपयोग करता है, फिर पास करने के लिए RFLOC सूची बनाता है org-refile


5

बहुत धन्यवाद @glucas, मैंने आपका समाधान अपने अंतिम एक में काम किया है। मुख्य सूचना RFLOC के प्रारूप को जान रही थी। मैंने फ़ाइलनाम और शीर्षक पाठ की एक सूची प्रदान करने के साथ प्रयोग किया था, लेकिन मैं उन अन्य तत्वों और अतिरिक्त शून्य को याद कर रहा था। यह वही है जो मैंने समाप्त किया:

(defun jay/refile-to (file headline)
    "Move current headline to specified location"
    (let ((pos (save-excursion
                 (find-file file)
                 (org-find-exact-headline-in-buffer headline))))
      (org-refile nil nil (list headline file nil pos))))

(defun jay/refile-to-bookmarks ()
    "Move current headline to bookmarks"
    (interactive)
    (org-mark-ring-push)
    (jay/refile-to "~/Org/bookmarks.org" "New")
    (org-mark-ring-goto))

डॉक्टर ने save-excursionकहा कि हम उस स्थान पर लौट आएंगे जहां से हमने शुरुआत की थी, लेकिन यह उस तरह से काम नहीं करता है। यह मुझे लक्ष्य गंतव्य में छोड़ देता है, जो सामान्य के लिए उचित हो सकता है refile-to, लेकिन मैं बस लाइन को स्थानांतरित करना चाहता था और जहां मैं था इसलिए मैं बचा रहा था और भीतर पुनर्स्थापित करना चाहता था refile-to-bookmark

वर्कफ़्लो जो इसके लिए है, वह यह है कि मैं HTML लिंक की एक सूची के साथ शुरू करता हूं जो आरएसएस स्क्रिप्ट पढ़ने के लिए मेरी स्क्रिप्ट से आता है। मेरे पास मूल रूप से स्क्रिप्ट थी mu4e के लिए maildir फाइलें बनाने की, लेकिन किसी भी तरह से ब्राउज़र के लिंक का अनुसरण करते हुए खुद को पाया और फिर रुचि के लोगों को बुकमार्क किया, इसलिए अब मैं सिर्फ ** [[uri][title]]लाइनों की एक सूची तैयार करता हूं । मैं बुकमार्क के बजाय emacs से uzbl ब्राउज़र के लिंक का पालन करने के बाद, (जो लाइनों के समान रूप उत्पन्न करता है) मैं टैग्स सेट करने के बाद लिंक को अपने बुकमार्क्स में स्थानांतरित करने के लिए इस कमांड का उपयोग करता हूं। बस थोड़ी सी तेजी से मैं भी ऑर्गन स्पीड-कमांड का उपयोग करता हूं, tटैग करने के लिए और bइस कमांड के लिए। मैं अब खुश हूँ और अधिक विशिष्ट सीखने के लिए प्यार करता हूँ!


एक युगल विवरण, जो आप यहां कर रहे हैं, उसके लिए सीधे प्रासंगिक नहीं: RFLOC का पहला तत्व वास्तव में कोई भी स्ट्रिंग हो सकता है। इसे केवल लक्ष्य स्थान के लिए एक तार्किक नाम के रूप में उपयोग किया जा रहा है, जिसे "refiled to xxx" संदेश में दिखाया गया है। स्थान वास्तव में केवल फ़ाइल और स्थिति मार्कर द्वारा परिभाषित किया गया है। reRFLOC के तत्व नजरअंदाज कर दिया जाएगा, जहाँ तक मैं बता सकता है। इसका उपयोग org.el में कुछ अन्य कार्यों में किया जाता है जो लक्ष्य स्थानों से निपटते हैं।
ग्लूकोज

1
कारणों मुझे समझ नहीं आता के लिए, मैं अपने प्राप्त करने में सक्षम था refile-toसमारोह के बाद, अंत में इस जोड़कर मूल स्थिति में वापसी करने के लिए let: (switch-to-buffer (current-buffer))। ऐसा लगता है कि यह कुछ भी नहीं करना चाहिए, लेकिन यह मेरे लिए काम करता है।
ग्लूकास

धन्यवाद फिर से @glucas हाँ है कि काम प्रतीत होता है और मैं बदल दिया है मेरी -pushऔर -gotoउस के साथ। यह अजीब लगता है कि आपको एक और बफर में छोड़ दिया गया है और फिर भी यह वर्तमान बफर को पहले वाला मानता है।
jtgd
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.