組織のアジェンダの仕切り線?


12

Qorgアジェンダビューに分割線を配置できますか?

予定がたくさんあると、アジェンダバッファが少し忙しくなります。この忙しさは、私を驚かせてしまうので、私の議題を見ることを避けさせる逆効果的な効果があります。視覚的に手間がかからない方法を探しています。

私がしたいことの1つは、次のような議題項目の間に区切り線(たとえば、ダッシュの1行)を配置できるようにすることです。

  • 今日締め切りがある
  • 期限を過ぎている(期限切れX日)
  • 期限が近づいています(X日後)。

アジェンダビューに分割線を配置することは可能ですか?はいの場合、どうすればいいですか?


議題ビューなしで組織モードの議題の生データを取得する方法という題の半関連の質問で、私は生のデータを取得する方法を示すの答え投稿: emacs.stackexchange.com/a/12563/2287 あなたは含めて、ニーズに合わせてそのデータを変更することができるが、これらに限定されない: replace-regexp-in-string(として除算器ラインおよび/または改行を追加しますあなたが望む); string-equals特定の基準または求める他の基準を設定するか、一致させることができます。既存のtext-propertiesを値で調べて、すぐに使用できるものに慣れてから、それらを使用します。
法律家

新鮮なコーヒーを片手に、org-mode生データを使用して、文字列の一部を置き換えることでデータを操作する必要さえない、より簡単な方法を考えました。つまり、テキストのプロパティを調べて、それらが条件に一致するmapcar場合は、上記のリンクの例でバッファに値が入力される前または後に行のようなものを挿入します。このプロジェクトでは、カスタム作成するために実装するために伴ういくつかの時間が考えられる可能性org-agendaバッファーを、そして例がないではない企図org-search-vieworg-tags-view-すなわち、のみorg-agenda-list
ローリスト

回答:


2

org-agenda-block-separator

アジェンダ内のブロック間のセパレータ。これが文字列の場合、区切り文字として使用され、改行が追加されます。文字の場合、ウィンドウ幅を埋めるために繰り返されます。nilの場合、セパレータは無効になります。これorg-agenda-custom-commandsは、現在のブロックと前のブロックの間の区切りに対応しています。


org-agenda-compact-blocks

非ゼロは、ブロックのアジェンダをよりコンパクトにすることを意味します。これは、議題のスパン名や週番号などの行または区切り線を除外することにより、グローバルに行われます。


1
感謝しますが、これをアジェンダビューでどのように使用するか例を示してください。
ダン

1

アジェンダビューに複数のブロックを作成し、いくつかのカスタムコマンドを連結するだけで、それぞれ独自の検索を行うことができます。

(setq org-agenda-custom-commands
      '(("D" "Deadlines"
         ((tags-todo "DEADLINE=\"<today>\""
                     ((org-agenda-overriding-header "Due Today"))
                     )
          (tags-todo "DEADLINE<\"<today>\""
                     ((org-agenda-overriding-header "You're Late")))
          (tags-todo "+DEADLINE<\"<+5d>\"+DEADLINE>\"<today>\""
                     ((org-agenda-overriding-header "Better get on it")))
         ))))

すべてのブロックに適用されるオプションのリストを最後に配置することもできます。

この欠点は、各ブロックが個別に計算されるため、単一のアジェンダとして生成するのに3倍の時間がかかることです。


1

以下は、によって生成されるアイテムのテキストプロパティを調べ、org-agenda-list特定の基準に基づいて文字列を変更する方法の例です。この例では、textプロパティの値ts-dateが取得され、現在の日付と比較されます。期限が過ぎている場合は追加しOLD:ます。現在の場合は追加しCURRENT:、将来の場合は追加しFUTURE:ます。元のポスターは、この例をカスタマイズして、選択した場所に新しい行や区切り線を追加できます。カスタマイズはorg-agenda-sorting-strategy、などで元のポスターによって選択されたソート基準に応じて異なる場合があります。

この例では、関数org-agenda-finalize-entries;; BEGIN modificationとのラベルが付いたセクションの間の下部近くで変更されてい;; END modificationます。

(require 'org-agenda)

(defun org-agenda-finalize-entries (list &optional type)
  "Sort, limit and concatenate the LIST of agenda items.
The optional argument TYPE tells the agenda type."
  (let ((max-effort (cond ((listp org-agenda-max-effort)
         (cdr (assoc type org-agenda-max-effort)))
        (t org-agenda-max-effort)))
  (max-todo (cond ((listp org-agenda-max-todos)
       (cdr (assoc type org-agenda-max-todos)))
      (t org-agenda-max-todos)))
  (max-tags (cond ((listp org-agenda-max-tags)
       (cdr (assoc type org-agenda-max-tags)))
      (t org-agenda-max-tags)))
  (max-entries (cond ((listp org-agenda-max-entries)
          (cdr (assoc type org-agenda-max-entries)))
         (t org-agenda-max-entries))) l)
    (when org-agenda-before-sorting-filter-function
      (setq list
      (delq nil
      (mapcar
       org-agenda-before-sorting-filter-function list))))
    (setq list (mapcar 'org-agenda-highlight-todo list)
    list (mapcar 'identity (sort list 'org-entries-lessp)))
    (when max-effort
      (setq list (org-agenda-limit-entries
      list 'effort-minutes max-effort 'identity)))
    (when max-todo
      (setq list (org-agenda-limit-entries list 'todo-state max-todo)))
    (when max-tags
      (setq list (org-agenda-limit-entries list 'tags max-tags)))
    (when max-entries
      (setq list (org-agenda-limit-entries list 'org-hd-marker max-entries)))
    ;; BEGIN modification
    (setq list
      (mapcar
        (lambda (string)
          (let* (
              (current-date (time-to-days (current-time)))
              (ts-date (get-text-property 0 'ts-date string)) )
            (if ts-date
              (cond
                ((< ts-date current-date)
                  (message "The task dated %s is overdue." ts-date)
                  ;; The new value of `string' is returned/thrown as a result.
                  (replace-regexp-in-string "^" "OLD:  " string))
                ((= ts-date current-date)
                  (message "The task dated %s is due today." ts-date)
                  ;; The new value of `string' is returned/thrown as a result.
                  (replace-regexp-in-string "^" "CURRENT:  " string))
                ((> ts-date current-date)
                  (message "The task dated %s is not due yet." ts-date)
                  ;; The new value of `string' is returned/thrown as a result.
                  (replace-regexp-in-string "^" "FUTURE:  " string)))
              string)))
        list))
    ;; END modification
    (mapconcat 'identity list "\n")))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.