emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Orgmode] [PATCH] org-agenda: rewrite mode-line


From: Carsten Dominik
Subject: Re: [Orgmode] [PATCH] org-agenda: rewrite mode-line
Date: Fri, 21 Jan 2011 10:25:13 +0100

Hi Julien,

I like the patch, but since it is not critical it remains
on ice until :eval is supported by XEmacs.

Michael, it would be nice if you could put :eval into
XEmacs so that we can use this improved code for the
mode line.  Please make sure to let us know when this is done.

- Carsten

On Dec 6, 2010, at 4:41 PM, Julien Danjou wrote:

* org-agenda.el (org-agenda-filter-apply)
(org-agenda-filter-by-tag-show-all) (org-agenda-change-time-span)
(org-remove-subtree-entries-from-agenda) (org-agenda-entry-text-mode,
org-agenda-clockreport-mode) (org-agenda-toggle-diary,
org-agenda-archives-mode) (org-agenda-toggle-deadlines,
org-agenda-toggle-time-grid): Stop calling org-agenda-set-mode-name.
(org-agenda-set-mode-name): Rewrite mode-name value using dynamic
evaluation with :eval and other advanced format.

Signed-off-by: Julien Danjou <address@hidden>
---
lisp/org-agenda.el | 66 +++++++++++++++++++ +-------------------------------
1 files changed, 26 insertions(+), 40 deletions(-)

diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 20c901a..7624348 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -5936,7 +5936,6 @@ If the line does not have an effort defined, return nil."
  (let (tags)
    (setq org-agenda-filter filter
          org-agenda-filter-form (org-agenda-filter-make-matcher))
-    (org-agenda-set-mode-name)
    (save-excursion
      (goto-char (point-min))
      (while (not (eobp))
@@ -5973,8 +5972,7 @@ If the line does not have an effort defined, return nil."
  (mapc 'delete-overlay org-agenda-filter-overlays)
  (setq org-agenda-filter-overlays nil)
  (setq org-agenda-filter nil)
-  (setq org-agenda-filter-form nil)
-  (org-agenda-set-mode-name))
+  (setq org-agenda-filter-form nil))

(defun org-agenda-manipulate-query-add ()
"Manipulate the query by adding a search term with positive selection.
@@ -6164,7 +6162,6 @@ SPAN may be `day', `week', `month', `year'."
          (list (car org-agenda-last-arguments) sd span t)))
    (org-agenda-redo)
    (org-agenda-find-same-or-today-or-agenda))
-  (org-agenda-set-mode-name)
  (message "Switched to %s view" span))

(defun org-agenda-compute-starting-span (sd span &optional n)
@@ -6258,7 +6255,6 @@ so that the date SD will be in that range."
  "Toggle follow mode in an agenda buffer."
  (interactive)
  (setq org-agenda-follow-mode (not org-agenda-follow-mode))
-  (org-agenda-set-mode-name)
  (if (and org-agenda-follow-mode (org-get-at-bol 'org-marker))
      (org-agenda-show))
  (message "Follow mode is %s"
@@ -6274,7 +6270,6 @@ so that the date SD will be in that range."
       (let ((org-agenda-entry-text-maxlines
              (if (integerp arg) arg org-agenda-entry-text-maxlines)))
         (org-agenda-entry-text-show)))
-  (org-agenda-set-mode-name)
  (message "Entry text mode is %s.  Maximum number of lines is %d"
           (if org-agenda-entry-text-mode "on" "off")
           (if (integerp arg) arg org-agenda-entry-text-maxlines)))
@@ -6288,7 +6283,6 @@ agenda filter."
  (if with-filter
      (setq org-agenda-clockreport-mode 'with-filter)
(setq org-agenda-clockreport-mode (not org-agenda-clockreport- mode)))
-  (org-agenda-set-mode-name)
  (org-agenda-redo)
  (message "Clocktable mode is %s"
           (if org-agenda-clockreport-mode "on" "off")))
@@ -6305,7 +6299,6 @@ With a double `C-u' prefix arg, show *only* log items, nothing else."
            'only
          (if special '(closed clock state)
            (not org-agenda-show-log))))
-  (org-agenda-set-mode-name)
  (org-agenda-redo)
  (message "Log mode is %s"
           (if org-agenda-show-log "on" "off")))
@@ -6316,7 +6309,6 @@ When called with a prefix argument, include all archive files as well."
  (interactive "P")
  (setq org-agenda-archives-mode
        (if with-files t (if org-agenda-archives-mode nil 'trees)))
-  (org-agenda-set-mode-name)
  (org-agenda-redo)
  (message
   "%s"
@@ -6335,7 +6327,6 @@ When called with a prefix argument, include all archive files as well."
  (org-agenda-check-type t 'agenda)
  (setq org-agenda-include-diary (not org-agenda-include-diary))
  (org-agenda-redo)
-  (org-agenda-set-mode-name)
  (message "Diary inclusion turned %s"
           (if org-agenda-include-diary "on" "off")))

@@ -6345,7 +6336,6 @@ When called with a prefix argument, include all archive files as well."
  (org-agenda-check-type t 'agenda)
(setq org-agenda-include-deadlines (not org-agenda-include- deadlines))
  (org-agenda-redo)
-  (org-agenda-set-mode-name)
  (message "Deadlines inclusion turned %s"
           (if org-agenda-include-deadlines "on" "off")))

@@ -6355,7 +6345,6 @@ When called with a prefix argument, include all archive files as well."
  (org-agenda-check-type t 'agenda)
  (setq org-agenda-use-time-grid (not org-agenda-use-time-grid))
  (org-agenda-redo)
-  (org-agenda-set-mode-name)
  (message "Time-grid turned %s"
           (if org-agenda-use-time-grid "on" "off")))

@@ -6363,36 +6352,33 @@ When called with a prefix argument, include all archive files as well."
  "Set the mode name to indicate all the small mode settings."
  (setq mode-name
        (list "Org-Agenda"
-             (if (get 'org-agenda-files 'org-restrict) " []" "")
+             '(:eval (when (get 'org-agenda-files 'org-restrict) " []"))
              " "
              '(:eval (org-agenda-span-name org-agenda-current-span))
-             (if org-agenda-follow-mode     " Follow" "")
-             (if org-agenda-entry-text-mode " ETxt"   "")
-             (if org-agenda-include-diary   " Diary"  "")
-             (if org-agenda-include-deadlines " Ddl"  "")
-             (if org-agenda-use-time-grid   " Grid"   "")
-             (if (and (boundp 'org-habit-show-habits)
-                      org-habit-show-habits) " Habit"   "")
-             (if (consp org-agenda-show-log) " LogAll"
-               (if org-agenda-show-log " Log" ""))
-             (if (or org-agenda-filter (get 'org-agenda-filter
-                                            :preset-filter))
-                 (concat " {" (mapconcat
-                               'identity
-                               (append (get 'org-agenda-filter
-                                            :preset-filter)
-                                       org-agenda-filter) "") "}")
-               "")
-             (if org-agenda-archives-mode
-                 (if (eq org-agenda-archives-mode t)
-                     " Archives"
-                   (format " :%s:" org-archive-tag))
-               "")
-             (if org-agenda-clockreport-mode
-                 (if (eq org-agenda-clockreport-mode 'with-filter)
-                     " Clock{}" " Clock")
-               "")))
-  (force-mode-line-update))
+             '(org-agenda-follow-mode " Follow")
+             '(org-agenda-entry-text-mode " ETxt")
+             '(org-agenda-include-diary " Diary")
+             '(org-agenda-include-deadlines " Ddl")
+             '(org-agenda-use-time-grid " Grid")
+             '(:eval (and (boundp 'org-habit-show-habits)
+                          org-habit-show-habits " Habit"))
+             '(:eval (if (consp org-agenda-show-log) " LogAll"
+                       (if org-agenda-show-log " Log" "")))
+             '(:eval (when (or org-agenda-filter (get 'org-agenda-filter
+                                                      :preset-filter))
+                       (concat " {" (mapconcat
+                                     'identity
+                                     (append (get 'org-agenda-filter
+                                                  :preset-filter)
+                                             org-agenda-filter) "") "}")))
+             '(:eval (when org-agenda-archives-mode
+                       (if (eq org-agenda-archives-mode t)
+                           " Archives"
+                         (format " :%s:" org-archive-tag))))
+             '(:eval (if org-agenda-clockreport-mode
+                         (if (eq org-agenda-clockreport-mode 'with-filter)
+                             " Clock{}"
+                           " Clock"))))))

(defun org-agenda-post-command-hook ()
  (setq org-agenda-type
--
1.7.2.3


_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
address@hidden
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

- Carsten






reply via email to

[Prev in Thread] Current Thread [Next in Thread]