Org- মোডের কার্যসূচীতে বিনামূল্যে ব্লকগুলি দেখান


12

আমি আমার org- মোড এজেন্ডায় সময় মুক্ত ব্লক কোথায় তা সন্ধান করা সহজ করতে চাই।

উদাহরণস্বরূপ, যদি আমার দুটি অ্যাপয়েন্টমেন্ট থাকে একটি সকাল 9:30-10-10:30 টা এবং অন্য 11:30 am 12:30:30 pm, আমি এক নজরে দেখতে চাই যে 10:30 am 11: 15 টা ব্লকটি বিনামূল্যে।

অন্য কথায়, আমি গুগল ক্যালেন্ডারের মতো গ্রাফিক্যাল এজেন্ডায় যেমন করা হয় তত সহজেই ফ্রি সময়কে আলাদা করতে সক্ষম হতে চাই।

সময়ের খালি ব্লকগুলি দেখার সহজ উপায় আছে কি? সম্ভবত প্রদত্ত সংখ্যাগুলির চেয়ে দীর্ঘ যে খালি ব্লকগুলি রঙিন করতে হবে?


2
org-agenda-time-gridআপনার প্রয়োজনের জন্য কি যথেষ্ট নয়? gnu.org/software/emacs/manual/html_node/org/…
আইনজীবি

2
গ্রিডটি পর্যাপ্ত নয়, যেমন সময় ব্যস্ত থাকা সত্ত্বেও এটি আপগুলি দেখায় (উদাহরণস্বরূপ, সকাল সাড়ে ৯-১০-৩০ টা মিটিং থাকলে, সকাল দশটায় গ্রিড লাইন থাকবে)। আমি চাই ব্যস্ত এবং অ-ব্যস্ত সময়গুলির মধ্যে পার্থক্য করা সহজ।
স্কারামাউচে

1
এই কার্যকারিতা সম্পর্কে আমি আরও কিছুটা ভেবেছি। আমি বিশ্বাস করি যে কার্যকর করার জন্য সবচেয়ে কার্যকর এবং সহজতমটি হ'ল সময় ব্লকের রঙ পরিবর্তন করা (কেবলমাত্র সময় ব্লকের নাম, উদাহরণস্বরূপ, 8: 00-9: 00) সেই সময়কৃত ব্লকের যাদের প্রদত্ত পরিমাণের বেশি পরিমাণ রয়েছে ফ্রি সময় (যেমন 15 মিনিটেরও বেশি)। রঙ এবং সর্বনিম্ন ফ্রি সময় উভয়ই ব্যবহারকারী কনফিগারযোগ্য হওয়া উচিত।
স্কারামাউচে

3
org- মোড মেলিং তালিকার একজন ব্যবহারকারী @scaramouche ( orgmode.org/worg/org-mailing-list.html ) জিজ্ঞাসা করেছেন আপনি চেষ্টা করেছেন কিনা calfw( emacswiki.org/emacs/Calfw )।
ডেভেলওয়াল

2
@ ডেভালোল, মেলিং তালিকা আলোচনার দিকে নির্দেশ করার জন্য অনেক ধন্যবাদ। আমি কেবল বাছুর চেষ্টা করেছি (এবং এটি সুন্দর!) তবে এটি যে ফাংশনটি চাইছে তা (মনে হয় না দিনে দৃশ্যমানভাবে খোলা সময় সন্ধান করতে) বলে মনে হয় না। যারা বাছুর + org চেষ্টা করতে চান তাদের জন্য (অত্যন্ত প্রস্তাবিত): মেলপা থেকে বাছুর পান init.el, অন্তর্ভুক্ত করুন (require 'calfw-org), এবং ক্যালেন্ডারটি করতে কল করুন M-x cfw:open-org-calendar
স্কারামাউচে

উত্তর:


2

আমার নিজের প্রশ্নের এই কারণেই আমি ফাংশনটির দিকে চেয়েছিলাম org-agenda-add-time-grid-maybeযা সময় গ্রিড তৈরি করে। সেখানে পোস্ট করা কোড (যা আমার দ্বারা লিখিত হয় না) যদি ওপির মন্তব্যে অনুরোধ অনুযায়ী সময় ব্যস্ত থাকে তবে একটি গ্রিড লাইন সরিয়ে দেয়।

আপনার মতো আমিও কোনও উপায়ে ভিজ্যুয়াল ব্লক তৈরি করতে চেয়েছিলাম। org-agenda-add-time-grid-maybeঅন্যান্য থ্রেডে পোস্ট করা মাইকেল একস্ট্র্যান্ডের মূল কোড এবং ডিফ্যাডভাইসটি মিশ্রিত করে আমি নিম্নলিখিত কোডটি নিয়ে এসেছি org-agenda-add-time-grid-maybe। এটি গ্রিড লাইনগুলিকে আলাদা রঙে আউটপুট দেবে (মুহুর্তে আমি মুখটি ব্যবহার করি org-archived) এবং সময়গুলি একটি ভিন্ন স্ট্রিংয়ের পরে অনুসরণ করবে। উভয়ই আপনার পছন্দ অনুসারে পরিবর্তন করা যেতে পারে।

(defun org-agenda-add-time-grid-maybe (list ndays todayp)
  "Add a time-grid for agenda items which need it.

LIST is the list of agenda items formatted by `org-agenda-list'.
NDAYS is the span of the current agenda view.
TODAYP is t when the current agenda view is on today."

  (catch 'exit
   (cond ((not org-agenda-use-time-grid) (throw 'exit list))
         ((and todayp (member 'today (car org-agenda-time-grid))))
         ((and (= ndays 1) (member 'daily (car org-agenda-time-grid))))
         ((member 'weekly (car org-agenda-time-grid)))
         (t (throw 'exit list)))
   (let* ((blocks (mapcar (lambda (x)
                            (let ((start (get-text-property 1 'time-of-day x))
                                  (dur (get-text-property 1 'duration x)))
                              (cond
                               ((and start dur) (cons start
                                                      (org-time-from-minutes
                                                       (truncate
                                                        (+ dur (org-time-to-minutes start))))))
                               (start start)
                               (t nil))))
                          list))
          (have (delq nil (mapcar
                           (lambda (x) (get-text-property 1 'time-of-day x))
                           list)))
          (string (nth 3 org-agenda-time-grid))
          (gridtimes (nth 1 org-agenda-time-grid))
          (req (car org-agenda-time-grid))
          (remove (member 'remove-match req))
          new time)
     (if (and (member 'require-timed req) (not have))
         ;; don't show empty grid
         (throw 'exit list))

     (while (setq time (pop gridtimes))
       (unless (and remove (member time have))
         (let* ((windows (delq nil blocks))
                (hit nil))
           (dolist (busy windows)
             (unless hit
               (when (and (>= time (car busy))
                          (< time (cdr busy)))
                 (setq hit t))))
           (setq time (replace-regexp-in-string " " "0" (format "%04s" time)))
           (if hit
               (progn
                 (push (org-agenda-format-item
                        (concat string " dito") string nil "" nil
                        (concat (substring time 0 -2) ":" (substring time -2)))
                       new)
                 (put-text-property 2 (length (car new)) 'face 'org-archived (car new)))
             (progn
               (push (org-agenda-format-item
                      nil string nil "" nil
                      (concat (substring time 0 -2) ":" (substring time -2)))
                     new)
               (put-text-property 2 (length (car new)) 'face 'org-time-grid (car new))))
           (setq hit nil))))

     (when (and todayp org-agenda-show-current-time-in-grid)
       (push (org-agenda-format-item
              nil org-agenda-current-time-string nil "" nil
              (format-time-string "%H:%M "))
             new)
       (put-text-property
        2 (length (car new)) 'face 'org-agenda-current-time (car new)))

     (if (member 'time-up org-agenda-sorting-strategy-selected)
         (append new list)
       (append list new)))))

(defun org-time-to-minutes (time)
  "Convert an HHMM TIME to minutes."
  (+ (* (/ time 100) 60) (% time 100)))

(defun org-time-from-minutes (minutes)
  "Convert a number of MINUTES to an HHMM time."
  (+ (* (/ minutes 60) 100) (% minutes 60)))

স্পষ্টতই, ডিফাডভাইসটি ব্যবহার করা আরও মার্জিত হবে তবে ঠিক কোথায় হস্তক্ষেপ করতে হবে তা আমি বুঝতে পারি না। ফাংশনটি নিজেই প্রতিটি গ্রিডের সময় পেরিয়ে যায় (সেট করা থাকে org-agenda-time-grid) এবং মুখগুলি (নতুন) সহ চূড়ান্ত গ্রিড সহ একটি নতুন তালিকা তৈরি করে।


1
দরকারী, তবে আমি সত্যই প্রত্যাশা করি যে কেউ এমন একটি সমাধান নিয়ে এসেছেন যা এতে সরাসরি কোনও ক্রিয়াকে ওভাররাইড করার সাথে জড়িত না org-agenda
হলোক্রনউইভার

আমি একেবারে একমত! দুর্ভাগ্যক্রমে, এলিস্প এবং org- মোড কোড সম্পর্কে আমার জ্ঞান একটি কার্যক্ষম ডিফডভাইস নিয়ে যথেষ্ট নয়। সম্ভবত, অন্য কেউ সম্ভবত এখানে "আমার" কোডটি ব্যবহার করে এখানে সাহায্য করতে পারে।
ফ্যাবিয়ান
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.