বাচ্চাদের চেকবক্সগুলির সাথে কীভাবে একটি অর্গ টাস্কের অবস্থাটি স্বয়ংক্রিয়ভাবে সমন্বয় করা যায়


10

আমার অরগ ফাইলে আমার বেশ কয়েকটি টাস্ক রয়েছে, যার একটিতে আইটেম রয়েছে একটি চেকবাক্স দিয়ে শুরু করা (তবে কেবল সেগুলি)। তাদের সবার শেষে একটি পরিসংখ্যান কুকি রয়েছে ([n / m])।

আমি স্বয়ংক্রিয়ভাবে থেকে পিতা বা মাতা টাস্ক আপডেট করার জন্য একটি উপায় খুঁজছি TODOকরতে DONEএকবার চেকবাক্সগুলি সব হিসাবে হিসাবে ভাল কাজ করেছেন চিহ্নিত করা হয়েছে।

নথি বলছে:

আপনি যদি সমস্ত বাচ্চাদের কাজ শেষ করার পরে স্বয়ংক্রিয়ভাবে ডোনতে পরিবর্তনের জন্য একটি টোডো এন্ট্রি চান, আপনি নীচের সেটআপটি ব্যবহার করতে পারেন [...]

আরেকটি সম্ভাবনা হ'ল বিপুল সংখ্যক সাবটাস্ক (চেকবক্সগুলি দেখুন) সনাক্ত করার জন্য চেকবক্সগুলি ব্যবহার করা।

আমি যেভাবে শেষ অংশটি বুঝতে পারি তা হ'ল যদি বাচ্চাদের আইটেমগুলি চেকবক্স হয় তবে প্যারেন্ট স্টেটটি ইতিমধ্যে স্বয়ংক্রিয়ভাবে আপডেট হওয়া উচিত (যা ক্ষেত্রে নয়)।

আমি কী মিস করছি?


সম্পাদনা:

থেকে org-after-todo-statistics-hookএর ডকুমেন্টেশন (org.el):

একটি TODO পরিসংখ্যান কুকি আপডেট হওয়ার পরে যে হুক বলা হয়। প্রতিটি ফাংশন দুটি আর্গুমেন্ট সহ ডাকা হয়: না সম্পন্ন এন্ট্রি সংখ্যা এবং সম্পন্ন এন্ট্রি সংখ্যা।

যার অর্থ orgmode.org থেকে প্রস্তাবিত কোড:

(defun org-summary-todo (n-done n-not-done)
  "Switch entry to DONE when all subentries are done, to TODO otherwise."
  (let (org-log-done org-log-states)   ; turn off logging
    (org-todo (if (= n-not-done 0) "DONE" "TODO"))))

(add-hook 'org-after-todo-statistics-hook 'org-summary-todo)

চেকবক্স আইটেম গণনা করা হবে না।


শিরোনামে আপনার কাছে কোনও পরিসংখ্যান কুকি আছে? এটি পছন্দ করুন:* Heading [0/1]
এরিকস্টোক

হ্যা এখানে. বিটটি আমার খারাপটি উল্লেখ করতে ভুলে গেছেন।
ম্যাথিউ মার্কস

1
আমার মনে হয় এই ভুল বোঝাবুঝি এই ক্ষেত্রে org ম্যানুয়াল থেকে এতটা স্পষ্ট হচ্ছে না comes "আর একটি সম্ভাবনা চেকবক্স ব্যবহার ..." শুরু হওয়া লাইনটি "সাবটাস্কগুলিতে ব্রেকিং টাস্কগুলি ডাউন করুন" শিরোনামে একটি নতুন অনুচ্ছেদ। আমি মনে করি যে "অন্য সম্ভাবনা" এই ক্ষেত্রে সাব টাস্কগুলিতে কাজগুলি ভাঙ্গার জন্য আরেকটি সম্ভাবনার কথা উল্লেখ করছে যা স্বয়ংক্রিয়ভাবে টোডো রাষ্ট্র পরিবর্তনের জন্য অন্য সম্ভাবনা নয় । হতে পারে তাদের প্রস্তাবিত ফাংশন এবং হুক চেষ্টা করুন (যদিও আমি এটি wokr এ পেতে পারি না)
এলেথন

আমার ধারণা, ইলেথান আসলে এটি উপলব্ধি করে। হ্যাঁ আমার সম্পাদনা দেখুন :)
ম্যাথিউ মার্কস

উত্তর:


6

আপনি যেমনটি আপনার আপডেট করা প্রশ্নে উল্লেখ করেছেন, org-after-todo-statistics-hookআপনি যা চান তা নয়। আপনি কি চান org-checkbox-statistics-hook

আপনি যা বর্ণনা করেছেন তা করার জন্য আমি এই ফাংশনটি ব্যবহার করি (তাদের সত্যিকার অর্থে এই কার্যকারিতাটি org- মোডে পাওয়া উচিত):

(defun my/org-checkbox-todo ()
  "Switch header TODO state to DONE when all checkboxes are ticked, to TODO otherwise"
  (let ((todo-state (org-get-todo-state)) beg end)
    (unless (not todo-state)
      (save-excursion
    (org-back-to-heading t)
    (setq beg (point))
    (end-of-line)
    (setq end (point))
    (goto-char beg)
    (if (re-search-forward "\\[\\([0-9]*%\\)\\]\\|\\[\\([0-9]*\\)/\\([0-9]*\\)\\]"
                   end t)
        (if (match-end 1)
        (if (equal (match-string 1) "100%")
            (unless (string-equal todo-state "DONE")
              (org-todo 'done))
          (unless (string-equal todo-state "TODO")
            (org-todo 'todo)))
          (if (and (> (match-end 2) (match-beginning 2))
               (equal (match-string 2) (match-string 3)))
          (unless (string-equal todo-state "DONE")
            (org-todo 'done))
        (unless (string-equal todo-state "TODO")
          (org-todo 'todo)))))))))

(add-hook 'org-checkbox-statistics-hook 'my/org-checkbox-todo) আপনি যখন কোনও চেকবক্স টগল করবেন তখনই কি এটি কল করবে?

এটি প্রয়োজন আপনি একটি পরিসংখ্যান কুকি (জিনিস আপনার সাথে পেতে আছে [/]বা [%]তারপর C-c C-c) হেডারের মধ্যে।


1
আপনি কি এমন কোনও সংস্করণ পেয়েছেন যা, যখন টোডো পুনরাবৃত্তি করার সময় নির্ধারিত হয়, তফসিলের জন্য আবার চেকলিস্টটি আনচেক করে? :)
16:40 '

0

আমি এমন একটি সংস্করণ চেয়েছিলাম যা @ কটিজেজে যা খুঁজছে তা করে - চেকলিস্টের আইটেমগুলির জন্য চেকবক্সের রাজ্যে টগল কর। আমি কল করার চেষ্টা করেছি org-reset-checkbox-state-subtreeকিন্তু অনেকগুলি নেস্টেড ফ্রেম সম্পর্কে ত্রুটি পেয়েছি (আমি স্পেসম্যাক ব্যবহার করছি)।

এখানে আমার কাজের সমাধান:

    (defun my/org-reset-checkbox-state-subtree ()
    "Simplified version of org-list builtin"
    ;; Begin copy from org-reset-checkbox-subtree
    (org-narrow-to-subtree)
      (org-show-subtree)
      (goto-char (point-min))
      (let ((end (point-max)))
        (while (< (point) end)
          (when (org-at-item-checkbox-p)
            (replace-match "[ ]" t t nil 1))
          (beginning-of-line 2)))
      (org-update-checkbox-count-maybe 'all)
    ;; End copy from org-reset-checkbox-subtree
    )

  (defun my/org-checkbox-todo ()
    "Switch header TODO state to DONE when all checkboxes are ticked, to TODO otherwise"
    (let ((todo-state (org-get-todo-state)) beg end)
      (unless (not todo-state)
        (save-excursion
          (org-back-to-heading t)
          (setq beg (point))
          (end-of-line)
          (setq end (point))
          (goto-char beg)
          (if (re-search-forward "\\[\\([0-9]*%\\)\\]\\|\\[\\([0-9]*\\)/\\([0-9]*\\)\\]"
                                 end t)
              (if (match-end 1)
                  (if (equal (match-string 1) "100%")
                      (unless (string-equal todo-state "DONE")
                        (my/org-reset-checkbox-state-subtree)
                        (org-todo 'done))
                    (unless (string-equal todo-state "TODO")
                      (org-todo 'todo)))
                (if (and (> (match-end 2) (match-beginning 2))
                         (equal (match-string 2) (match-string 3)))
                    (unless (string-equal todo-state "DONE")
                      (my/org-reset-checkbox-state-subtree)
                      (org-todo 'done))
                  (unless (string-equal todo-state "TODO")
                    (org-todo 'todo)))))))))
  (add-hook 'org-checkbox-statistics-hook 'my/org-checkbox-todo)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.