Sau đây là một ví dụ về cách kiểm tra các thuộc tính văn bản của các mục được tạo bởi org-agenda-list
và sửa đổi chuỗi dựa trên các tiêu chí nhất định. Trong ví dụ này, giá trị của thuộc tính văn bản ts-date
được lấy và so sánh với ngày hiện tại - nếu quá hạn, chúng tôi thêm OLD:
; nếu nó là hiện tại, chúng tôi thêm CURRENT:
, nếu tương lai của nó, chúng tôi thêm FUTURE:
. Người đăng ban đầu có thể tùy chỉnh ví dụ này thêm một dòng mới và / hoặc một dòng chia tại các vị trí được chọn. Tùy chỉnh có thể thay đổi tùy theo tiêu chí sắp xếp được chọn bởi người đăng ban đầu trong org-agenda-sorting-strategy
, v.v.
Trong ví dụ này, hàm org-agenda-finalize-entries
đã được sửa đổi ở gần cuối giữa các phần được gắn nhãn ;; BEGIN modification
và ;; 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
(thêm dòng chia và / hoặc dòng mới như bạn mong muốn); bạn có thể có mộtstring-equals
hoặc phù hợp với tiêu chí nhất định hoặc bất kỳ tiêu chí nào khác mà bạn tìm kiếm. Kiểm tra các thuộc tính văn bản hiện có với các giá trị để làm quen với những gì được đưa ra ngoài hộp, sau đó sử dụng chúng.