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বার্তাটি দমন করার জন্য একটি কাস্টম সংস্করণও তৈরি করেছি যাতে আমি আমার সম্পূর্ণ org ফাইলটি স্বয়ংক্রিয়ভাবে পুনর্বিন্যাস করার সময় সেগুলিতে শত শত না থাকে।
আইনজীবি

ধন্যবাদ আইনজীবি, এটি একটি দুর্দান্ত স্নিপেট এবং আমি সম্ভবত এটি অন্য প্রসঙ্গে ব্যবহার করব। এটি এখানে নথিভুক্ত করা ভাল।
jtgd

উত্তর:


9

আমি ভাবছিলাম যে আরএফএলসি এর আগে দেখতে কেমন হওয়া উচিত, তবে কখনও তদন্ত হয়নি। Org সোর্স কোডটি দেখে এটির তালিকা থাকা উচিত:

  • শিরোনাম
  • ফাইল
  • পুনরায় (নিয়মিত প্রকাশ)
  • পোস্ট (লক্ষ্য শিরোনামের অবস্থান)

আমি reউপাদানটির সাথে পরীক্ষা নিরীক্ষা করিনি , তবে এখানে একটি সরল ফাংশন যা org-refileপ্রদত্ত ফাইল এবং শিরোনাম থেকে তৈরি একটি আরএফএলকি দিয়ে প্রার্থনা করবে :

(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))))

এটি লক্ষ্যবস্তু ফাইলটি খোলে এবং লক্ষ্য শিরোনামের অবস্থানটি খুঁজে পেতে একটি org ফাংশন ব্যবহার করে, তারপরে পাস করার জন্য আরএফএলসি তালিকা তৈরি করে org-refile


5

অনেক ধন্যবাদ @ গ্লুকাস, আমি আপনার সমাধানটি আমার চূড়ান্ত সমাধানে কাজ করেছি। মূল তথ্যটি ছিল আরএফএলকের ফর্ম্যাটটি জানা। আমি ফাইলের নাম এবং শিরোনাম পাঠ্যের একটি তালিকা সরবরাহের জন্য পরীক্ষা করেছি, তবে আমি সেই অন্যান্য উপাদানগুলি এবং অতিরিক্ত শূন্যতা অনুপস্থিত। এটিই আমি শেষ করেছি:

(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

এর জন্য যে ওয়ার্কফ্লোটি বোঝানো হচ্ছে তা হল আমি আরএসএস ফিডগুলি পড়ার জন্য আমার লিপি থেকে আসা এইচটিএমএল লিঙ্কগুলির একটি তালিকা দিয়ে শুরু করি। আমি স্ক্রিপ্টটি মূলত mu4e এর জন্য মাইল্ডির ফাইল তৈরি করেছিলাম তবে যে কোনও উপায়ে ব্রাউজারের লিঙ্কগুলি অনুসরণ করে এবং তারপরে আগ্রহীদের বুকমার্কিং করে নিজেকে খুঁজে পেয়েছি, এখন আমি কেবল ** [[uri][title]]লাইনের একটি তালিকা তৈরি করি । আমি ইমাক্স থেকে ইউজবিএল ব্রাউজারে লিঙ্কটি অনুসরণ করার পরে, বুকমার্কিংয়ের পরিবর্তে (যা লাইনগুলির একই রূপ তৈরি করে) আমি ট্যাগটি সেট করার পরে এই লিঙ্কটি আমার বুকমার্ক.অর্গগুলিতে স্থানান্তরিত করতে ব্যবহার করি। আমি আরগ স্পিড-কমান্ডগুলি tট্যাগ করতে এবং bএই কমান্ডটি ব্যবহার করার পরে কিছুটা দ্রুত আমি এখন খুশি এবং আরও বেশি শিখতে ভালবাসি!


আপনি এখানে যা করছেন তার সাথে সরাসরি প্রাসঙ্গিক নয় এমন কয়েকটি বিবরণ: আরএফএলকের প্রথম উপাদানটি আসলে কোনও স্ট্রিং হতে পারে। এটি কেবলমাত্র লক্ষ্য অবস্থানের জন্য একটি যৌক্তিক নাম হিসাবে ব্যবহৃত হচ্ছে, "রিফিল্ড টু এক্সএক্সএক্স" বার্তায় দেখানো হয়েছে in অবস্থানটি কেবলমাত্র ফাইল এবং অবস্থানের চিহ্নিতকারী দ্বারা সংজ্ঞায়িত করা হয়েছে। reRFLOC উপাদান উপেক্ষা করা হবে, যতটা আমি বলতে পারেন। এটি org.el এর কয়েকটি অন্যান্য ফাংশনে ব্যবহৃত হয় যা লক্ষ্যগুলির অবস্থানগুলি নিয়ে কাজ করে।
গ্লুকাস

1
আমি বুঝতে না পারার কারণে, আমি : refile-toশেষে এই শেষে যুক্ত করে আপনার ফাংশনটি মূল অবস্থানে ফিরে আসতে সক্ষম হয়েছি । এটি দেখে মনে হচ্ছে এটি কিছু করা উচিত নয়, তবে এটি আমার পক্ষে কাজ করে। let(switch-to-buffer (current-buffer))
গ্লুকাস

ধন্যবাদ আবার @ glucas। হ্যাঁ এটি কাজ করে বলে মনে হচ্ছে এবং আমি আমার -pushএবং এটির -gotoসাথে প্রতিস্থাপন করেছি । আপনি যে অন্য বাফারে পড়ে গেছেন তা এখনও অদ্ভুত বলে মনে হচ্ছে এবং এটি বর্তমান বাফারটিকে আগের হিসাবে বিবেচনা করে।
jtgd
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.