org: টোডো এবং তারপরে অগ্রাধিকার অনুসারে শিরোনামগুলি কীভাবে সাজানো যায়?


24

আমার প্রায়শই এরকম একটি তালিকা থাকে:

* Main heading
** TODO [#A] Make world better
** TODO [#B] Make Emacs better 
** TODO [#B] Customize emacs 
** DONE [#C] some task
** TODO [#A] Launch rocket to mars

আমি প্রথমে এটি 'টোডো' টাস্কওয়ার্ড অনুসারে বাছাই করতে চাই। তারপরে সাজানো টুডোর আইটেমগুলি আমি অগ্রাধিকার অনুসারে বাছাই করতে চাই। (এটি "প্রচেষ্টা" অনুসারে আরও বাছাই করে ভাল লাগবে)।

এবং আমার অর্থ বর্তমানে আমি প্রধান শিরোনামে ক্লিক করতে এবং বাচ্চাদের ইতিমধ্যে অগ্রাধিকার দ্বারা বা টোডো কীওয়ার্ড দ্বারা বাছাই করতে পারি তবে দুটোই নয়।

উভয় দ্বারা বাছাই করা যেমন বাছাই-কৌশল যেমন সম্ভব?


বর্তমানে আমার দুটি শিরোনাম রয়েছে

* Tasks
** TODO [#A] meh
** TODO [#B] meh2
* Completed.
** DONE [#B] meh3.

তবে এই পদ্ধতির সাথে সমস্যাটি হ'ল আমি যখন কাজগুলি শেষ করি তখন নিয়মিত কাজগুলিকে ঘুরিয়ে ফেলতে হয়।

[Edit]
এই ধরণ অনুরূপ এই ছাড়া যে আমি তার উত্তর জানার আমার চাহিদা স্থানান্তর করতে পারলাম না?


1
ফাংশনটি org-sort-entriesহয় সমস্ত উপ-শিরোনামের প্রধান শিরোনামে কাজ করবে বা এটি নির্বাচিত অঞ্চলে কী রয়েছে তা বাছাই করতে পারে। আপনার চয়ন করার জন্য ইন্টারেক্টিভ বিকল্প রয়েছে। আপনি প্রোগ্রামিয়ালি এটি ব্যবহার করতে পারেন এবং বিভিন্ন ধরণের সম্ভব - আমি প্রায়শই a, o, p, t ব্যবহার করি (এর পরে একের পর এক 4 স্তর বাছাই করার মানদণ্ড)) উদাহরণস্বরূপ, আপনি প্রথমে বর্ণমালা দ্বারা, তারপরে টুডো কীওয়ার্ড দ্বারা, তারপরে অগ্রাধিকার দ্বারা এবং তারপরে সময় অনুসারে সবকিছুকে সাজান করতে পারেন।
আইনজীবি

হ্যালো, আমি বাচ্চার কার্যগুলি বাছাই করার জন্য org-सॉर्ट-এন্ট্রি বিকল্প সম্পর্কে সচেতন। আমি প্রশ্নটি আপডেট করেছি যাতে এটি আরও ভালভাবে প্রতিবিম্বিত হয়। আপনার মন্তব্যের জন্য ধন্যবাদ.
লিও উফিমটসেভ

: এখানে প্রোগ্রামেটিক্যালি একটি সংস্থা-মোড বাফার বাছাইয়ের জন্য একটি বিস্তারিত পদ্ধতির একটি লিঙ্ক stackoverflow.com/a/22232709/2112489
lawlist

আমার প্রশ্নটিতে আমার এই লিঙ্কটি ইতিমধ্যে রয়েছে। উপরেরটি কারও নির্দিষ্ট প্রয়োজন অনুসারে বিন্দুযুক্ত। আরও সাধারণ উদ্দেশ্য / সহজ পদ্ধতির কি আছে?
লিও উফিমটসেভ

1
@LooUfimtsev এর org-refile-targetsমতো কিছু স্থাপনের চেষ্টা করুন (setq org-refile-targets '((nil . (:maxlevel . 6))))। এটি org-modeরিফিলিংয়ের সময় 6 এর গভীরতা পর্যন্ত শো শিরোনাম তৈরি করবে । আপনি org-refile-targetsআরও তথ্যের জন্য ডকুমেন্টেশন চেক করতে পারেন ।
itjeyd

উত্তর:


19

এটির org-agenda-sorting-stratagyসাথে কাজ করার মতো কিছু থাকলে তা দুর্দান্ত হবে, তবে এমনটি org-sort-entriesমনে হয় না। আমরা এটিকে নকল করতে পারি যেহেতু org-sort-entriesপ্রতিটি শিরোনামে একটি (স্ট্রিং বা সংখ্যা) কী বরাদ্দকৃত একটি ফাংশন নির্দিষ্ট করে একটি যুক্তি গ্রহণ করতে পারে, যা ?fবাছাইয়ের ধরণটি দেওয়া হলে প্রবেশগুলি সাজানোর জন্য ব্যবহৃত হবে । আমাদের যা করতে হবে তা হল টোডো এবং অগ্রাধিকারের বৈশিষ্ট্যগুলির জন্য একটি স্ট্রিং। কৌশলটি হ'ল আমরা TODO বৈশিষ্ট্যটিকে org-todo-keywordsবর্ণানুক্রমিকভাবে নয়, এর অবস্থানে রেখে বাছাই করতে চাই ।

(require 'cl)
(require 'dash)

(defun todo-to-int (todo)
    (first (-non-nil
            (mapcar (lambda (keywords)
                      (let ((todo-seq
                             (-map (lambda (x) (first (split-string  x "(")))
                                   (rest keywords)))) 
                        (cl-position-if (lambda (x) (string= x todo)) todo-seq)))
                    org-todo-keywords))))

(defun my/org-sort-key ()
  (let* ((todo-max (apply #'max (mapcar #'length org-todo-keywords)))
         (todo (org-entry-get (point) "TODO"))
         (todo-int (if todo (todo-to-int todo) todo-max))
         (priority (org-entry-get (point) "PRIORITY"))
         (priority-int (if priority (string-to-char priority) org-default-priority)))
    (format "%03d %03d" todo-int priority-int)
    ))

(defun my/org-sort-entries ()
  (interactive)
  (org-sort-entries nil ?f #'my/org-sort-key))

M-x my/org-sort-entriesটো কীওয়ার্ড অনুসারে বাছাই করবে এবং অগ্রাধিকারের সাথে সম্পর্ক ছিন্ন করবে ( org-default-priorityযখন অগ্রাধিকার দেওয়া হয় না তখন ব্যবহার করে )। আপনার যদি 1000 টিও বেশি টোডো কীওয়ার্ড থাকে তবে এটি ভেঙে যাবে যা এটি না করার একটি ভাল কারণ।


ওম, স্ক্রিপ্টের জন্য আপনাকে ধন্যবাদ। একটি সমস্যা: আমি ড্যাশ ইনস্টল করেছি। এরপরে স্ক্রিপ্টটি চেষ্টা করে দেখতে পেলাম তবে আমি একটি ত্রুটি পাচ্ছি: প্রতীক সংজ্ঞাটি বাতিল: টুডু-টু-ইন্ট। আমি অনুমান করতে চাইছি আপনি আপনার .emacs ফাইলের কোথাও এই ফাংশনটি পেয়েছেন তবে উপরের মধ্যে অন্তর্ভুক্তটি ভুলে গেছেন? বা কিছু টাইপো হতে পারে?
লিও উফিম্টসেভ

আমি আমার ফাংশনটি পরিবর্তন করেছিলাম যা আমার কীওয়ার্ডটি todo-to-intআমার উত্তরটি আটকে দেওয়ার পরে একটি কী- ওয়ার্ডকে ইনট্রে রূপান্তর করে। এটা এখন ঠিক।
এরিকস্টোক

1
এখন সব কাজ। বাবু, আপনার সমস্ত প্রচেষ্টার জন্য আপনাকে ধন্যবাদ, খুব প্রশংসিত :- ডি।
লিও উফিম্টসেভ

1
এনবি: ডক্স অনুসারে এটি আর ক্লাব ব্যবহার করার পরামর্শ দেওয়া হয় না ।
ক্যাম্মিল

1

আপনার ফাইলে নিম্নলিখিতগুলি যুক্ত করুন:

#+ARCHIVE: :: * Completed.

এবং বদলে যাওয়া সংরক্ষণাগার হয়ে যায়

এন্ট্রিগুলি বাছাই করার পরিবর্তে, বাছাই করা ভিউ সম্পর্কে কীভাবে?

(setq org-agenda-custom-commands
      '(("cx" "TODOs sorted by state, priority, effort"
         todo "*"
         ((org-agenda-overriding-header "\nTODOs sorted by state, priority, effort")
          (org-agenda-sorting-strategy '(todo-state-down priority-down effort-up))))))

এটি দিয়ে বর্তমান ফাইলে সীমাবদ্ধ করুন <। আপনি সাজানো ভিউ থেকে ডোন এবং সংরক্ষণাগারটিকে চিহ্নিত করতে পারেন।


1

আপনি একটি org-agenda-cmp-user-definedফাংশন সংজ্ঞায়িত করতে এবং এটিতে যুক্ত করতে পারেন org-agenda-sorting-strategy। এটি আমি উদাহরণ হিসাবে তৈরি করেছি।

(setq org-todo-sort-order '("WAIT" "TODO" "DOING" "CANCELED" "DONE"))

(defun my:user-todo-sort (a b)
  "Sort todo based on which I want to see first"
  (when-let ((state-a (get-text-property 14 'todo-state a))
             (state-b (get-text-property 14 'todo-state b))
             (cmp (--map (cl-position-if (lambda (x)
                                           (equal x it))
                                         org-todo-sort-order)
                         (list state-a state-b))))
    (cond ((apply '> cmp) 1)
          ((apply '< cmp) -1)
          (t nil))))
(setq org-agenda-cmp-user-defined 'my:user-todo-sort)

1

আপনি আমার তৈরি এই লাইব্রেরিটি ব্যবহার করতে পারেন: https://github.com/felipelalli/org-sort-tasks

এটি বি এর চেয়ে কোনও টাস্ক A এর চেয়ে বেশি গুরুত্বপূর্ণ কিনা তা জিজ্ঞাসা করে ব্যবহারকারীকে জিজ্ঞাসা করে এইটিকে মার্জ করুন বাছাই অ্যালগো ব্যবহার করে এবং তারপরে একটি সাজানো তালিকা তৈরি করে।


এটি কী করে এবং বিশেষত এটি অন্যান্য উত্তর থেকে কীভাবে আলাদা হয় তার কিছু বিবরণ যুক্ত করতে পারেন।
অ্যান্ড্রু সোয়ান

এটি বি এর তুলনায় কোনও টাস্ক A এর চেয়ে বেশি গুরুত্বপূর্ণ কিনা তা জিজ্ঞাসা করে ব্যবহারকারীকে জিজ্ঞাসা করে সারণি আলগো ব্যবহার করে, এবং তার পরে বাছাই করা তালিকা তৈরি করে।
ফিলিপ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.