Org के एजेंडे में विभक्त लाइनें?


12

प्रश्न : क्या मैं अपने orgएजेंडा दृश्य में विभक्त लाइनें डाल सकता हूं ?

जब मेरे पास बहुत सारी चीजें होने के कारण मेरा एजेंडा बफर थोड़ा व्यस्त हो सकता है। यह व्यस्तता मुझे अपने एजेंडे को देखने से बचने के लिए प्रतिकूल प्रभाव डालती है क्योंकि यह मुझे बाहर निकालता है। मैं इसे नेत्रहीन कम चुनौतीपूर्ण बनाने का एक तरीका ढूंढ रहा हूं।

एक बात मैं चाहूंगा कि एजेंडा आइटम के बीच डिवाइडर लाइनें (जैसे, डैश की एक लाइन) डाल सकें:

  • आज एक समय सीमा है,
  • उनकी समय सीमा (एक्स एक्स दिनों से अधिक), और
  • आगामी समय सीमा (एक्स दिनों में) है।

क्या एजेंडा दृश्य में विभक्त लाइनों को डालना संभव है? यदि हाँ, तो मैं कैसे करूँगा?


एक अर्ध-संबंधित प्रश्न में, बिना एजेंडा दृश्य के ऑर्ग-मोड एजेंडा के लिए कच्चा डेटा कैसे प्राप्त किया जाए? , मैंने एक जवाब पोस्ट किया कि कच्चे डेटा कैसे प्राप्त किया जाए: emacs.stackexchange.com/a/12563/2287 आप अपनी आवश्यकताओं के अनुरूप उस डेटा को संशोधित कर सकते हैं, जिसमें शामिल नहीं हैं, लेकिन यह तक सीमित नहीं है: replace-regexp-in-string(डिवाइडर लाइनें और / या newlines जोड़ें) तुम्हारी कामना है); आपके पास string-equalsकुछ मापदंड या आपके द्वारा खोजे जाने वाले अन्य मापदंड हो सकते हैं। मौजूदा टेक्स्ट-प्रॉपर्टीज को मानों के साथ परखें कि वे खुद को बाहर के बॉक्स से क्या शामिल करते हैं, और फिर उनका उपयोग करें।
कानून

हाथ में कॉफी के एक ताजा कप के साथ, मैंने org-modeकच्चे डेटा का उपयोग करने के लिए एक आसान विधि के बारे में सोचा जो स्ट्रिंग के किसी भी हिस्से को बदलने के साथ डेटा को हेरफेर करने में भी शामिल नहीं है। Ie, बस पाठ गुणों की जांच करें और यदि वे आपके मानदंडों से मेल खाते हैं, तो पहले या बाद में बफर 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")))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.