Berikut ini adalah contoh cara memeriksa properti teks dari item yang dihasilkan oleh org-agenda-list
, dan memodifikasi string berdasarkan kriteria tertentu. Dalam contoh ini, nilai properti teks ts-date
diperoleh dan dibandingkan dengan tanggal saat ini - jika sudah lewat waktu, kami menambahkan OLD:
; jika saat ini, kami menambahkan CURRENT:
, jika masa depan, kami menambahkan FUTURE:
. Poster asli dapat mengkustomisasi contoh ini menambahkan baris baru dan / atau garis pembagi di lokasi tertentu. Kustomisasi dapat bervariasi tergantung pada kriteria penyortiran yang dipilih oleh poster asli di org-agenda-sorting-strategy
, dll.
Dalam contoh ini, fungsi org-agenda-finalize-entries
telah dimodifikasi di dekat bagian bawah antara bagian yang berlabel ;; BEGIN modification
dan ;; 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
(tambahkan garis pembagi dan / atau baris baru sebagai Anda menginginkan); Anda dapat memilikistring-equals
atau mencocokkan kriteria tertentu atau kriteria lain yang Anda cari. Periksa properti teks yang ada dengan nilai untuk membiasakan diri dengan apa yang disertakan di luar kotak, dan kemudian gunakan.