다음은에 의해 생성되는 항목의 텍스트 속성을 검사하고 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")))
replace-regexp-in-string
(같은 분할 선 및 / 또는 줄 바꿈을 추가 당신이 원합니다);string-equals
특정 기준 또는 원하는 다른 기준을 갖 거나 일치 시킬 수 있습니다 . 기존 텍스트 속성을 값으로 검사하여 기본 제공되는 내용을 익히고 사용하십시오.