2016-04-22 8 views
4

私はTODOリストを見ると、上から下まで読んだので、通常は部分の上半分からしか行かないことに気付きました。やり遂げることができるTODO。だから私は、順序がランダム化されるようにTODOリストをミックスする方法があるのだろうかと疑問に思っていましたか?TODOリストをランダム化しますか?

+1

'ORG-ソートentries'と遊ぶ、それ並べ替えないのはなぜあなたの気分に応じて毎回違う方法ですか? 'Mx describe-function RET org-sort-entries RET' – lawlist

+0

@lawlist GTDの「コンテキスト」を使ってさまざまな状況の異なるアジェンダを表示しますが、コンテキストに関係なく最も頻繁に使用する主なアジェンダが1つあります。それは私がランダム化したいリストです。また、私はTODOのエントリに多くのメタ属性を与えないので、 'org-sor-entries'の多くのオプションは本当に私のためには機能しません。 –

+0

doc-stringの最後に、 '?f'と'?F'のオプションを使用する方法が書かれています。つまり、独自のソート関数(例えば、randomize)を記述し、それを 'org -sort-entries'となります。おそらく誰かが何か助けが必要な場合、誰かがそれを書き留めてくれます。誰も応答しなければ、数日でいつでも報奨金を提供することができます。 – lawlist

答えて

2

オルゴーモードでは、「プロパティ」パネルのキーでソートすることができます。そのためには、検索の開始時にランダムソートキーを設定する方法があります。次のコードはそれだけです。並べ替えが完了すると、並べ替えキーが削除され、空のプロパティの引き出しが削除され、そのままの状態になります。

としては org-sortみましょうあなたがすることによってソートする関数を指定述べ
(defun org-sort-entries-randomly() 
    (interactive) 
    (if (org-at-heading-p) 
     (progn 
     (setq start (point)) 
     (org-end-of-subtree) 
     (while (> (point) start) 
     (if (org-at-heading-p) 
      (org-set-property "sort-key" (format "%d" (+ 10000 (random 10000))))) 
     (previous-line)) 
     (org-sort-entries nil ?r nil nil "sort-key") 
     (goto-char start) 
     (org-end-of-subtree) 
     (while (> (point) start) 
     (if (org-at-heading-p) 
      (org-delete-property "sort-key" "PROPERTIES")) 
     (previous-line))) 
    (message "Not at heading"))) 
2

:F

SORTING-TYPEがある場合、またはF、そしてGETKEY-FUNCがポイントと と呼ばれる関数を指定します?記録の始めに。そのレコードのソートキーとして機能する文字列または数字のいずれかを に戻す必要があります。

発生すると、randomは乱数を返す関数です。したがって、M-x org-sort f randomは、orgファイルのソート順をランダム化します。

ファイルを変更する代わりに、org-agendaを使用して、todosをランダムに表示することができます。 org-agenda-cmp-user-definedを設定すると、ソート順をカスタマイズできます。この関数は2つの引数(比較対象の議題)をとり、いずれのエントリが「より小さい」かによって-1,1または0を返します。ここではそのような機能である:

(defun org-random-cmp (a b) 
    "Return -1,0 or 1 randomly" 
    (- (mod (random) 3) 1)) 

そしてここでは、ランダムな順序ですべてのTODO項目を示し議題ビューは次のとおりです。

(add-to-list 'org-agenda-custom-commands 
    '("r" "All todo items in a random order" 
    alltodo "" 
    ((org-agenda-cmp-user-defined #'org-random-cmp)))) 
+0

正しくソートするには、2つのエンティティを比較するときに同じ結果が返されます。あなたがそれをランダム化すると、ソートは決して終わらないかもしれません。 – justinhj

+0

Hm。これが動作することを確認できますか?私の注文は変更されていないようです。 'org-random-cmp'関数は意図したとおりに動作します。また、これはあなたがorg-agendaを開くたびに順序をランダム化するはずですか? –

+0

'org-sort'関数または議題ビューを意味しますか?どちらも私のために働く。アジェンダの表示は、アジェンダを開くたびにランダム化されます。 – erikstokes

関連する問題