আমি কিভাবে স্বয়ংক্রিয়ভাবে org- মোড বাফারগুলি সংরক্ষণ করব?


22

আমার org-modeকরণীয় তালিকাকে লক্ষ্য রাখতে আমি নিয়মিত এবং এজেন্ডাটি ব্যবহার করি। যেহেতু আমি আমার তালিকা সিঙ্ক করতে ড্রপবক্স ব্যবহার করি, তাই সমস্ত কম্পিউটারে আমার একই কাজগুলি উপলব্ধ থাকতে হবে। কখনও কখনও আমার ক্লিনআপ চলাকালীন আমি আমার পরিবর্তনগুলি সংরক্ষণ করতে ভুলে যাব, অফিসে যাওয়ার সময় বাড়িতে ইম্যাক খোলা রেখে (এভাবে আমাকে বন্ধ ইম্যাকগুলি সংরক্ষণ করার অনুরোধ করা হয় না)। আমি কীভাবে স্বয়ংক্রিয়ভাবে *.orgএজেন্ডার মাধ্যমে সংশোধিত এজেন্ডা বাফারগুলিতে পরিবর্তনগুলি সংরক্ষণ করতে পারি ?

সম্পাদনা: স্পষ্ট করার জন্য, আমি আমার কাজগুলি সম্পর্কে একটি সংক্ষিপ্ত বিবরণ দেখানোর এজেন্ডা ভিউ ব্যবহার করি। সেই দৃশ্য থেকে, আমি কার্যগুলির স্থিতি পরিবর্তন করতে পারি। অতিরিক্তভাবে, আমি নতুন কার্যগুলি যুক্ত করতে স্মৃতি-মোড ব্যবহার করি, যা এজেন্ডা ভিউতে পুনরায় শ্রেণিবদ্ধ করা যেতে পারে। এজেন্ডায় এই পরিবর্তনগুলির পরিবর্তিত org- মোড এজেন্ডা বাফারগুলির ফলস্বরূপ, যা অবশ্যই সংরক্ষণ করতে হবে। যখন এই পরিবর্তনগুলি করা হয়, আমি চাই বাফারগুলি স্বয়ংক্রিয়ভাবে সংরক্ষিত হোক।


আপনি কী পরিষ্কার করতে পারেন "আমি এজেন্টের মাধ্যমে সংশোধিত * .org এজেন্ডা বাফারগুলিতে কীভাবে স্বয়ংক্রিয়ভাবে পরিবর্তনগুলি সংরক্ষণ করতে পারি?" ? আমি সিদ্ধান্ত নিতে পারছি না যে এটি "স্বয়ংক্রিয়ভাবে ... এজেন্ডার মাধ্যমে সংরক্ষণ করুন" (যা স্ববিরোধী বলে মনে হয়) বা "এজেন্ডার মাধ্যমে সংশোধিত বাফারগুলি" (যা আমি বুঝতে পারি না)
সিগমা

@ সিগমা স্পষ্ট করে প্রশ্নটি আপডেট করেছি।
রায়ান

1
আমার সমাধান এখন পর্যন্ত আমার আঙ্গুলগুলি পুনরায় প্রশিক্ষণ দেওয়া হয়েছে sএজেন্ডা ভিউতে থাকা অবস্থায় ঘন ঘন চাবিটি টেপ করতে ।
মানকফ

@ মানকফ আমার মনে হয় আমি যখনই কোনও org- C-x C-sএজেন্ডা-ফাইলে (এজেন্ডা থেকে বা সরাসরি) কোনও পরিবর্তন আনতে আঘাত করতে নিজেকে পুনরায় প্রশিক্ষণ করেছি । স্বয়ংক্রিয় নয় তবে সমস্ত কিছু সংরক্ষণ করে।
জোনাথন লেচ-পেপিন

উত্তর:


16

একটি দ্রুত হ্যাক, যা আমি নিশ্চিত না যে আপনার ব্যবহারের ক্ষেত্রে সন্তুষ্ট হবে

(add-hook 'org-agenda-mode-hook
          (lambda ()
            (add-hook 'auto-save-hook 'org-save-all-org-buffers nil t)
            (auto-save-mode)))

যতক্ষণ না অরগ এজেন্ডা বাফার খোলা থাকে, সমস্ত org বাফারগুলি পর্যায়ক্রমে সংরক্ষণ করা হবে (এটি sএজেন্ডা ভিউ থেকে নিয়মিত চাপলে কী হত তা সমতুল্য )।

এটি কিছুটা আপত্তিজনক auto-save-modeকারণ এজেন্ডা বাফার নিজেই যতটা উদাসীন তা বিবেচনা করে না auto-save

যদি আপনি এই হ্যাকটি ব্যবহার করে থাকেন তবে আপনি নিশ্চিত হয়েছিলেন যে ব্যাকআপ ফাইলগুলি আপনার সমস্ত .org ফাইলের জন্য নিরাপদ দিকে রাখা আছে।


1
এই পদ্ধতির একটি বড় সমস্যা হ'ল অটো-সেভ সক্রিয় ডিরেক্টরিতে থাকা কোনও ফাইলের এজেন্ডা বাফারকে সংরক্ষণ করবে। এটি আমার ফাইল সিস্টেমে ছড়িয়ে ছিটিয়ে থাকা বিশাল সংখ্যক অনাথ অটো-সেভ ফাইল তৈরি করেছে। কীভাবে প্রতিকার করবেন তা নিশ্চিত নয়।
হলোক্রনউইভার 22

7

যখনই কোনও নির্দিষ্ট এজেন্ডা ফাংশন বলা হয় আপনি সমস্ত org বাফারগুলি সংরক্ষণ করতে পারেন। উদাহরণস্বরূপ, আপনি এজেন্ডাটি ছাড়ার পরে সমস্ত org বাফারগুলি সংরক্ষণ করতে:

(advice-add 'org-agenda-quit :before 'org-save-all-org-buffers)

বিকল্পভাবে, আপনি প্রতিটি সম্পাদনার পরে সমস্ত org- বাফার সংরক্ষণ করতে পারেন, একটি সময়সীমা যুক্ত হওয়ার পরে বলুন:

(advice-add 'org-deadline :after 'org-save-all-org-buffers)

এটি org- এজেন্ডা এবং org বাফার উভয় ক্ষেত্রেই কাজ করবে। org-agenda-deadlineআপনি যদি এজেন্ডাতে স্ব-সংরক্ষণকে সীমাবদ্ধ রাখতে চান তবে পরিবর্তে ব্যবহার করুন ।

যে কোনও org ফাংশনের জন্য আপনি একই কাজ করতে পারেন, সুতরাং এই পদ্ধতিটি আপনাকে কখন বাছাই করা বাছাই করতে বাছাই করতে দেয় allows এই পদ্ধতির কিছু কোণার বিষয়গুলি রয়েছে যা @ সিগমা দ্বারা পদ্ধতিটি মিস করে: আপনি এজেন্ডাটি auto-saveট্রিগার করার আগে বা এজেন্ডার বাইরে পরিবর্তন করে সেগুলি সংরক্ষণ করতে ভুলে গেলেও আপনি আপনার এজেন্ডা পরিবর্তনগুলি সংরক্ষণ করতে পারেন । আমি ব্যক্তিগতভাবে আমার সমস্ত ঘাঁটি কভার করার জন্য দুটি পদ্ধতি ব্যবহার করি। [সম্পাদনা করুন: আমি কেন তার সমাধানটি আর ব্যবহার করি না তার জন্য @ সিগমা সমাধান সম্পর্কে মন্তব্য দেখুন]]


2
এটি আমার পক্ষে গ্রহণযোগ্য উত্তরের চেয়ে আরও ভাল কাজ করেছে যেহেতু আমি রিফাইল করার পরে কেবলমাত্র আমি সংরক্ষণ করতে ভুলে যাই। (advice-add 'org-refile :after 'org-save-all-org-buffers)আমি বিভিন্ন ফাইলগুলিতে রিফিল করার পরে org ফাইলগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ করেছিলাম।
এই ব্যবহারকারী

এটি সর্বোত্তম উত্তর, কারণ এটি আপনি যে কোনও org ফাংশনগুলিতে প্রয়োগ করতে পারেন।
কেভিনজি

আমি দেখতে পেয়েছি যে এটিকে প্রয়োগ করার org-refileঅর্থ হ'ল আমি org-refileউপসর্গের সাথে যুক্তির মাধ্যমে একটি নির্দিষ্ট শিরোনাম (কার্সারের নীচে
রিফিলিংয়ের বিপরীতে

6

আমি অনেক উত্তর দেখতে পাচ্ছি যেগুলি আরও জটিল, এটি আমার জন্য কাজ করেছে:

`(add-hook 'auto-save-hook 'org-save-all-org-buffers)`

নিষ্ক্রিয়তার ৩০ সেকেন্ড পরে অটোর সংরক্ষণ ডিফল্ট (এবং ম্যানুয়ালটিতে নথিভুক্ত অন্যান্য অ-সম্পর্কিত পরিস্থিতিতে )


ঠিক আমি খুঁজছেন ছিল কি.
এলভিবি

4

নতুন ক্যাপচারের পরে সমস্ত এজেন্ডা মোড বাফারগুলি স্বয়ংক্রিয়ভাবে সংরক্ষণ করার জন্য আমি নীচের স্নিপেটটি ব্যবহার করি তবে আপনি এটি যে কোনও জায়গায় হুক করতে পারেন:

(defun my/save-all-agenda-buffers ()
  "Function used to save all agenda buffers that are
currently open, based on `org-agenda-files'."
  (interactive)
  (save-current-buffer
    (dolist (buffer (buffer-list t))
      (set-buffer buffer)
      (when (member (buffer-file-name)
                    (mapcar 'expand-file-name (org-agenda-files t)))
        (save-buffer)))))

;; save all the agenda files after each capture
(add-hook 'org-capture-after-finalize-hook 'my/save-all-agenda-buffers)

পরিবর্তন 'org-capture-after-finalize-hookকরার জন্য 'org-agenda-finalize-hook, যা আমি বিশ্বাস করি শুধু বিষয়সূচি বাফার প্রদর্শন করার আগে বলা হয়।


আমার ফাংশনটি উল্লেখ করতে ভুলে গেছেন ড্যাশ.এল উপলব্ধ থাকতে হবে, তাই এটি মনে রাখবেন।
লি এইচ

2
ক্যাপচার করার সময়, আপনি অবিলম্বে যে কোনও org-refile-targetsগন্তব্যগুলিতে আইটেমগুলি পুনরায় ফাইল করতে পারেন , সুতরাং এটি সংরক্ষণের org-agenda-filesপক্ষে যথেষ্ট নয়। আমি সম্ভবত org-save-all-org-buffersনিজেকে ফোন করব।
sanityinc

1
পিএসকে dashসেখানে ব্যবহার করার দরকার নেই: mapcarঅন্তর্নির্মিত এবং একই জিনিসটি করে।
sanityinc

@ স্যানাসিটিআইঙ্ক ধন্যবাদ, আমি mapcarড্যাশের পরিবর্তে কোডটি ব্যবহার করার জন্য আপডেট করেছি !
লি এইচ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.