From: Julien Danjou <julien@danjou.info>
To: emacs-orgmode@gnu.org
Cc: Julien Danjou <julien@danjou.info>
Subject: [PATCH] org-agenda: rewrite mode-line
Date: Mon, 6 Dec 2010 16:41:59 +0100 [thread overview]
Message-ID: <1291650119-13804-1-git-send-email-julien@danjou.info> (raw)
* 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 <julien@danjou.info>
---
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
next reply other threads:[~2010-12-06 15:42 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-06 15:41 Julien Danjou [this message]
2010-12-12 8:32 ` [PATCH] org-agenda: rewrite mode-line Carsten Dominik
2010-12-12 18:55 ` Julien Danjou
2010-12-13 14:49 ` Carsten Dominik
2010-12-21 7:36 ` Carsten Dominik
2010-12-21 8:53 ` Michael Sperber
2011-01-21 9:25 ` Carsten Dominik
2011-03-04 22:09 ` Bastien
2011-03-05 10:12 ` Michael Sperber
2011-03-05 10:50 ` Bastien
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1291650119-13804-1-git-send-email-julien@danjou.info \
--to=julien@danjou.info \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).