diff options
author | Bastien Guerry <bzg@gnu.org> | 2013-01-13 11:33:16 +0100 |
---|---|---|
committer | Bastien Guerry <bzg@gnu.org> | 2013-01-13 11:33:16 +0100 |
commit | a89c8ef024113dbf993db0d379fabbfb06c86520 (patch) | |
tree | 94b70d44c096cec75cf0dd10686042ef4574928c /lisp/org/org-agenda.el | |
parent | f5e9cbd447d2af41da420a5dde2f28ba75892a37 (diff) |
Merge Org 7.9.3d (commit e8f5b0ad).
Diffstat (limited to 'lisp/org/org-agenda.el')
-rw-r--r-- | lisp/org/org-agenda.el | 148 |
1 files changed, 115 insertions, 33 deletions
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el index 2eb96c2510b..ca8459ca33d 100644 --- a/lisp/org/org-agenda.el +++ b/lisp/org/org-agenda.el @@ -890,7 +890,7 @@ you want to use two-columns display (see `org-agenda-menu-two-columns')." :version "24.1" :type 'boolean) -(org-define-obsolete-variable-alias 'org-agenda-menu-two-column 'org-agenda-menu-two-columns "24.3") +(define-obsolete-variable-alias 'org-agenda-menu-two-column 'org-agenda-menu-two-columns "24.3") (defcustom org-agenda-menu-two-columns nil "Non-nil means, use two columns to show custom commands in the dispatcher. @@ -900,7 +900,7 @@ to nil." :version "24.1" :type 'boolean) -(org-define-obsolete-variable-alias 'org-finalize-agenda-hook 'org-agenda-finalize-hook "24.3") +(define-obsolete-variable-alias 'org-finalize-agenda-hook 'org-agenda-finalize-hook "24.3") (defcustom org-agenda-finalize-hook nil "Hook run just before displaying an agenda buffer. The buffer is still writable when the hook is called. @@ -1648,26 +1648,53 @@ When non-nil, this must be the number of minutes, e.g. 60 for one hour." (const :tag "No default duration"))) (defcustom org-agenda-show-inherited-tags t - "Non-nil means show inherited tags in each agenda line." + "Non-nil means show inherited tags in each agenda line. + +When this option is set to 'always, it take precedences over +`org-agenda-use-tag-inheritance' and inherited tags are shown +in every agenda. + +When this option is set to t (the default), inherited tags are +shown when they are available, i.e. when the value of +`org-agenda-use-tag-inheritance' has been taken into account. + +This can be set to a list of agenda types in which the agenda +must display the inherited tags. Available types are 'todo, +'agenda, 'search and 'timeline. + +When set to nil, never show inherited tags in agenda lines." :group 'org-agenda-line-format - :type 'boolean) + :group 'org-agenda + :version "24.3" + :type '(choice + (const :tag "Show inherited tags when available" t) + (const :tag "Always show inherited tags" 'always) + (repeat :tag "Show inherited tags only in selected agenda types" + (symbol :tag "Agenda type")))) (defcustom org-agenda-use-tag-inheritance '(todo search timeline agenda) "List of agenda view types where to use tag inheritance. In tags/tags-todo/tags-tree agenda views, tag inheritance is controlled by `org-use-tag-inheritance'. In other agenda types, -`org-use-tag-inheritance' is not used when selecting the agenda -entries, but you may want the agenda to use the inherited tags -anyway, e.g. for later tag filtering. +`org-use-tag-inheritance' is not used for the selection of the +agenda entries. Still, you may want the agenda to be aware of +the inherited tags anyway, e.g. for later tag filtering. -The default value reset tags in every agenda type. Setting this -option to nil will speed up non-tags agenda view a lot. +Allowed value are 'todo, 'search, 'timeline and 'agenda. -Allowed value are 'todo, 'search, 'timeline and 'agenda." - :version "24.3" +This variable has no effect if `org-agenda-show-inherited-tags' +is set to 'always. In that case, the agenda is aware of those +tags. + +The default value sets tags in every agenda type. Setting this +option to nil will speed up non-tags agenda view a lot." :group 'org-agenda - :type '(repeat (symbol :tag "Agenda type"))) + :version "24.3" + :type '(choice + (const :tag "Use tag inheritance in all agenda types" t) + (repeat :tag "Use tag inheritance in selected agenda types" + (symbol :tag "Agenda type")))) (defcustom org-agenda-hide-tags-regexp nil "Regular expression used to filter away specific tags in agenda views. @@ -2363,7 +2390,7 @@ For example, if you have a custom agenda command \"p\" and you want this command to be accessible only from plain text files, use this: - '((\"p\" (in-file . \"\\.txt\"))) + '((\"p\" ((in-file . \"\\.txt\")))) Here are the available contexts definitions: @@ -2379,7 +2406,7 @@ accessible if there is at least one valid check. You can also bind a key to another agenda custom command depending on contextual rules. - '((\"p\" \"q\" (in-file . \"\\.txt\"))) + '((\"p\" \"q\" ((in-file . \"\\.txt\")))) Here it means: in .txt files, use \"p\" as the key for the agenda command otherwise associated with \"q\". (The command @@ -3569,8 +3596,14 @@ generating a new one." (save-excursion (next-single-property-change (point-min) 'org-habit-p))) (org-habit-insert-consistency-graphs)) (setq org-agenda-type (org-get-at-bol 'org-agenda-type)) - (when (delq nil (mapcar (lambda (tp) (org-agenda-check-type nil tp)) - org-agenda-use-tag-inheritance)) + (unless (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq org-agenda-type org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (and (listp org-agenda-use-tag-inheritance) + (not (memq org-agenda-type + org-agenda-use-tag-inheritance)))))) (let (mrk) (save-excursion (goto-char (point-min)) @@ -4290,7 +4323,7 @@ in `org-agenda-text-search-extra-files'." 'help-echo (format "mouse-2 or RET jump to location"))) (full-words org-agenda-search-view-force-full-words) (org-agenda-text-search-extra-files org-agenda-text-search-extra-files) - regexp rtn rtnall files file pos + regexp rtn rtnall files file pos inherited-tags marker category category-pos tags c neg re boolean ee txt beg end words regexps+ regexps- hdl-only buffer beg1 str) (unless (and (not edit-at) @@ -4444,7 +4477,13 @@ in `org-agenda-text-search-extra-files'." (setq marker (org-agenda-new-marker (point)) category (org-get-category) category-pos (get-text-property (point) 'org-category-position) - tags (org-get-tags-at nil t) + inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (memq 'todo org-agenda-show-inherited-tags) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'todo org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags)) txt (org-agenda-format-item "" (buffer-substring-no-properties @@ -4974,7 +5013,7 @@ of what a project is and how to check if it stuck, customize the variable (pop-up-frames nil) (diary-list-entries-hook (cons 'org-diary-default-entry diary-list-entries-hook)) - (diary-file-name-prefix-function nil) ; turn this feature off + (diary-file-name-prefix nil) ; turn this feature off (diary-modify-entry-list-string-function 'org-modify-diary-entry-string) entries (org-disable-agenda-to-diary t)) @@ -5250,7 +5289,7 @@ the documentation of `org-diary'." "\\|") "\\)")) (t org-not-done-regexp)))) marker priority category category-pos tags todo-state - ee txt beg end) + ee txt beg end inherited-tags) (goto-char (point-min)) (while (re-search-forward regexp nil t) (catch :skip @@ -5268,7 +5307,14 @@ the documentation of `org-diary'." category-pos (get-text-property (point) 'org-category-position) txt (org-trim (buffer-substring (match-beginning 2) (match-end 0))) - tags (org-get-tags-at nil t) + inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'todo org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'todo org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags)) txt (org-agenda-format-item "" txt category tags t) priority (1+ (org-get-priority txt)) todo-state (org-get-todo-state)) @@ -5395,7 +5441,8 @@ Do we have a reason to ignore this TODO entry because it has a time stamp? "\\|\\(<%%\\(([^>\n]+)\\)>\\)")) marker hdmarker deadlinep scheduledp clockp closedp inactivep donep tmp priority category category-pos ee txt timestr tags - b0 b3 e3 head todo-state end-of-match show-all warntime habitp) + b0 b3 e3 head todo-state end-of-match show-all warntime habitp + inherited-tags) (goto-char (point-min)) (while (setq end-of-match (re-search-forward regexp nil t)) (setq b0 (match-beginning 0) @@ -5447,7 +5494,14 @@ Do we have a reason to ignore this TODO entry because it has a time stamp? (assoc (point) deadline-position-alist)) (throw :skip nil)) (setq hdmarker (org-agenda-new-marker) - tags (org-get-tags-at nil t)) + inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'agenda org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'agenda org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags))) (looking-at "\\*+[ \t]+\\([^\r\n]+\\)") (setq head (or (match-string 1) "")) (setq txt (org-agenda-format-item @@ -5479,7 +5533,7 @@ Do we have a reason to ignore this TODO entry because it has a time stamp? (abbreviate-file-name buffer-file-name)))) (regexp "^&?%%(") marker category extra category-pos ee txt tags entry - result beg b sexp sexp-entry todo-state warntime) + result beg b sexp sexp-entry todo-state warntime inherited-tags) (goto-char (point-min)) (while (re-search-forward regexp nil t) (catch :skip @@ -5497,7 +5551,14 @@ Do we have a reason to ignore this TODO entry because it has a time stamp? (setq marker (org-agenda-new-marker beg) category (org-get-category beg) category-pos (get-text-property beg 'org-category-position) - tags (save-excursion (org-back-to-heading t) (org-get-tags-at nil t)) + inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'agenda org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'agenda org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags)) todo-state (org-get-todo-state) warntime (get-text-property (point) 'org-appt-warntime) extra nil) @@ -5628,7 +5689,7 @@ please use `org-class' instead." 1 11)))) (org-agenda-search-headline-for-time nil) marker hdmarker priority category category-pos tags closedp - statep clockp state ee txt extra timestr rest clocked) + statep clockp state ee txt extra timestr rest clocked inherited-tags) (goto-char (point-min)) (while (re-search-forward regexp nil t) (catch :skip @@ -5666,7 +5727,14 @@ please use `org-class' instead." (setq txt org-agenda-no-heading-message) (goto-char (match-beginning 0)) (setq hdmarker (org-agenda-new-marker) - tags (org-get-tags-at nil t)) + inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'todo org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'todo org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags))) (looking-at "\\*+[ \t]+\\([^\r\n]+\\)") (setq txt (match-string 1)) (when extra @@ -5944,7 +6012,7 @@ FRACTION is what fraction of the head-warning time has passed." deadline-results)) d2 diff pos pos1 category category-pos tags donep ee txt head pastschedp todo-state face timestr s habitp show-all - did-habit-check-p warntime) + did-habit-check-p warntime inherited-tags) (goto-char (point-min)) (while (re-search-forward regexp nil t) (catch :skip @@ -6006,7 +6074,14 @@ FRACTION is what fraction of the head-warning time has passed." pastschedp)) (setq mm (assoc pos1 deadline-position-alist))) (throw :skip nil))) - (setq tags (org-get-tags-at nil t)) + (setq inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'agenda org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'agenda org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags))) (setq head (buffer-substring-no-properties (point) (progn (skip-chars-forward "^\r\n") (point)))) @@ -6061,7 +6136,7 @@ FRACTION is what fraction of the head-warning time has passed." (regexp org-tr-regexp) (d0 (calendar-absolute-from-gregorian date)) marker hdmarker ee txt d1 d2 s1 s2 category category-pos - todo-state tags pos head donep) + todo-state tags pos head donep inherited-tags) (goto-char (point-min)) (while (re-search-forward regexp nil t) (catch :skip @@ -6087,8 +6162,15 @@ FRACTION is what fraction of the head-warning time has passed." (if (not (re-search-backward org-outline-regexp-bol nil t)) (setq txt org-agenda-no-heading-message) (goto-char (match-beginning 0)) - (setq hdmarker (org-agenda-new-marker (point))) - (setq tags (org-get-tags-at nil t)) + (setq hdmarker (org-agenda-new-marker (point)) + inherited-tags + (or (eq org-agenda-show-inherited-tags 'always) + (and (listp org-agenda-show-inherited-tags) + (memq 'agenda org-agenda-show-inherited-tags)) + (and (eq org-agenda-show-inherited-tags t) + (or (eq org-agenda-use-tag-inheritance t) + (memq 'agenda org-agenda-use-tag-inheritance)))) + tags (org-get-tags-at nil (not inherited-tags))) (looking-at "\\*+[ \t]+\\([^\r\n]+\\)") (setq head (match-string 1)) (let ((remove-re @@ -7702,7 +7784,7 @@ When called with a prefix argument, include all archive files as well." ""))) (force-mode-line-update)) -(org-define-obsolete-function-alias +(define-obsolete-function-alias 'org-agenda-post-command-hook 'org-agenda-update-agenda-type "24.3") (defun org-agenda-update-agenda-type () |