เส้นแบ่งในวาระการประชุมองค์กร?


12

ถาม : ฉันสามารถใส่เส้นแบ่งในorgมุมมองกำหนดการของฉันได้หรือไม่?

บัฟเฟอร์ของวาระการประชุมของฉันอาจยุ่งเล็กน้อยเมื่อฉันครบกำหนด ความยุ่งเหยิงนี้มีผลในทางลบทำให้ฉันหลีกเลี่ยงการดูวาระของฉันเพราะมันทำให้ฉันประหลาดใจ ฉันกำลังมองหาวิธีที่จะทำให้มันดูน่ากลัวน้อยลง

สิ่งหนึ่งที่ฉันต้องการคือสามารถใส่เส้นแบ่ง (เช่นเส้นประ) ในระหว่างวาระการประชุมที่:

  • มีกำหนดวันนี้
  • ผ่านพ้นกำหนดส่ง (เกินกำหนด X วัน) และ
  • มีกำหนดส่งใหม่ (ครบกำหนดใน X วัน)

เป็นไปได้หรือไม่ที่จะใส่เส้นแบ่งในมุมมองกำหนดการ ถ้าใช่ฉันจะทำอย่างไร


ในคำถามกึ่งคำถามที่จะได้รับข้อมูลดิบสำหรับวาระองค์กรโหมดโดยไม่ต้องดูวาระได้อย่างไร ฉันโพสต์คำตอบที่แสดงวิธีรับข้อมูลดิบ: emacs.stackexchange.com/a/12563/2287 คุณสามารถแก้ไขข้อมูลนั้นเพื่อให้เหมาะกับความต้องการของคุณรวมถึง แต่ไม่ จำกัด เฉพาะ: replace-regexp-in-string(เพิ่มบรรทัดตัวแบ่งและ / หรือบรรทัดใหม่เป็น คุณต้องการ); คุณสามารถมีstring-equalsหรือตรงกับเกณฑ์บางอย่างหรือเกณฑ์อื่น ๆ ที่คุณต้องการ ตรวจสอบคุณสมบัติข้อความที่มีอยู่ด้วยค่าเพื่อทำความคุ้นเคยกับสิ่งที่รวมอยู่ในกล่องแล้วใช้งาน
กฎหมาย

ด้วยกาแฟสดในมือฉันคิดวิธีที่ง่ายขึ้นโดยใช้org-modeข้อมูลดิบที่ไม่เกี่ยวข้องกับการจัดการข้อมูลด้วยการแทนที่ส่วนใด ๆ ของสตริง นั่นคือเพียงแค่ตรวจสอบคุณสมบัติข้อความและหากตรงกับเกณฑ์ของคุณให้แทรกบางสิ่งบางอย่างเช่นบรรทัดก่อนหรือหลังเนื่องจากบัฟเฟอร์ถูกเติมโดยmapcarในตัวอย่างของลิงก์ด้านบน โครงการนี้จะตกทอดไปได้บางเวลาที่จะใช้ในการสร้างที่กำหนดเองorg-agendaบัฟเฟอร์และเป็นตัวอย่างไม่ไม่เป็นปัจจุบันorg-search-viewหรือorg-tags-view- org-agenda-listคือเพียง
กฎหมาย

คำตอบ:


2

org-agenda-block-separator

ตัวคั่นระหว่างบล็อกในวาระการประชุม ถ้านี่คือสตริงมันจะถูกใช้เป็นตัวคั่นด้วยการขึ้นบรรทัดใหม่ หากเป็นตัวอักษรจะมีการทำซ้ำเพื่อเติมความกว้างของหน้าต่าง ถ้าไม่มีตัวคั่นถูกปิดใช้งาน ใน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และแก้ไขสตริงตามเกณฑ์ที่แน่นอน ในตัวอย่างนี้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.