aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/org/org-agenda.el
diff options
context:
space:
mode:
authorCarsten Dominik <[email protected]>2008-12-07 18:36:02 +0000
committerCarsten Dominik <[email protected]>2008-12-07 18:36:02 +0000
commitff4be292b376c5a753c2da6a33ea291464820fae (patch)
treeade4a68dc60c3c899e9d3480de61b4087aad7f36 /lisp/org/org-agenda.el
parent243de2b47c3f0f60696bc6ce5a04c2d0b9b9580a (diff)
2008-12-07 Carsten Dominik <[email protected]>
* org-id.el (org-id-locations-file): Wrap file name with `convert-standard-filename'. (org-id-files): New variable. (org-id-use-hash): New option. (org-id-update-id-locations): Also search in all files current listed in `org-id-files'. Convert the resulting alist to a hash if the user customation says so. (org-id-locations-save): Handle he case if `org-id-locations' is a hash. (org-id-locations-load): Convert the alist to a hash. (org-id-add-location): Handle the hast case. (kill-emacs-hook): Make sure id locations are saved when Emacs is exited. (org-id-hash-to-alist, org-id-alist-to-hash) (org-id-paste-tracker): New functions. 2008-12-07 Carsten Dominik <[email protected]> * org-agenda.el (org-agenda-goto-calendar): Remove duplicate let bindings of calendar variables. * org-table.el (org-table-find-row-type): Renamed from `org-find-row-type'. (org-table-rewrite-old-row-references): Renamed from `org-rewrite-old-row-references'. (org-table-shift-refpart): Renamed from `org-shift-refpart'. (org-table-cleanup-narrow-column-properties): Renamed from `org-cleanup-narrow-column-properties'. 2008-12-07 Carsten Dominik <[email protected]> * org-table.el (org-find-row-type): New arguments DESC and CLINE, for better error messages. (org-table-get-descriptor-line): Supply the new arguments to `org-find-row-type'. (org-table-error-on-row-ref-crossing-hline): New option. * org.el (org-target-link-regexp): Make buffer-local. (org-move-subtree-down): Fix bug with trees at beginning of buffer. 2008-12-07 Carsten Dominik <[email protected]> * org-faces.el (org-set-tag-faces): New function. (org-tags-special-faces-re): New variable. * org.el (org-font-lock-add-tag-faces, org-get-tag-face): New functions. * org-faces.el (org-tag-faces): New option. (org-tag): Mention `org-tag-faces' in the docstring. 2008-12-07 Carsten Dominik <[email protected]> * org-exp.el (org-export-html-style-default): Implement new quoting. * org-jsinfo.el (org-infojs-template): Implement new quoting. * org-w3m.el (w3m-minor-mode-hook): Also add the special copy command to the `w3m-minor-mode-map'. * org-archive.el (org-archive-to-archive-sibling): Protect `this-command' to avoid appending kills during archiving. * org-exp.el (org-export-with-priority): New variable. (org-export-add-options-to-plist): Use `org-export-plist-vars' instead of internal list of strings and properties. (org-print-icalendar-entries): Retrieve the location property with inheritance. 2008-12-07 Carsten Dominik <[email protected]> * org-exp.el (org-export-with-todo-keywords): New option. (org-export-plist-vars): Include also the keys for the #+OPTIONS line. (org-default-export-plist, org-export-add-options-to-plist) (org-export-as-ascii, org-export-as-html): Use the new structure of `org-export-plist-vars'. * org.el (org-map-entries): Return all values. 2008-12-07 Carsten Dominik <[email protected]> * org.el (org-matcher-time): Recognize more special values. * org-gnus.el (fboundp): Fix defvaralias for XEmacs. 2008-12-07 Carsten Dominik <[email protected]> * org.el (org-tags-exclude-from-inheritance): New option. (org-tag-inherit-p, org-remove-uniherited-tags): Respect `org-tags-exclude-from-inheritance'. * org-agenda.el (org-agenda-show-inherited-tags): New option. (org-format-agenda-item): Add inherited tags to the agenda line string, and make sure that properties are kept when downcasing the tags list. (org-agenda-add-inherited-tags): New function. (org-downcase-keep-props): New function. * org.el (org-scan-tags): Mark inherited tags with a text property. (org-get-tags-at): Mark inherited tags with a text property. (org-add-prop-inherited): New function. * org-agenda.el (org-agenda-add-inherited-tags): New function. (org-agenda-show-inherited-tags): New option. 2008-12-07 Carsten Dominik <[email protected]> * org.el (org-modules): Add org-w3m to the default modules. * org-table.el (orgtbl-self-insert-command): Make S-SPC work in orgtbl-mode. (orgtabl-create-or-convert-from-region): New command. * org-exp.el (org-export-as-ascii): Remove the handling of targets. (org-export-ascii-preprocess): Handle targets already in this function. 2008-12-07 Carsten Dominik <[email protected]> * org-timer.el (org-timer-start-time): Define this variable. (org-timer-item): Make argument optional. * org-list.el (org-insert-item): Automatically insert a timer item if the current list is a timer list. * org-timer.el: New file. * org-publish.el (org-publish-org-index): Only exclude the index file in the main directory from being added to the site-map. (org-publish-get-project-from-filename): If the current project is a component, start publishing from the parent project. 2008-12-07 Carsten Dominik <[email protected]> * org-table.el (orgtbl-ret): Fix RET at beginning-of-buffer. * org-publish.el (org-publish-org-index): Improve removal of temporary buffers.
Diffstat (limited to 'lisp/org/org-agenda.el')
-rw-r--r--lisp/org/org-agenda.el64
1 files changed, 50 insertions, 14 deletions
diff --git a/lisp/org/org-agenda.el b/lisp/org/org-agenda.el
index 743e38041b..8e58fb6ac0 100644
--- a/lisp/org/org-agenda.el
+++ b/lisp/org/org-agenda.el
@@ -6,7 +6,7 @@
;; Author: Carsten Dominik <carsten at orgmode dot org>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://orgmode.org
-;; Version: 6.13a
+;; Version: 6.14
;;
;; This file is part of GNU Emacs.
;;
@@ -945,6 +945,10 @@ When non-nil, this must be the number of minutes, e.g. 60 for one hour."
(integer :tag "Minutes")
(const :tag "No default duration")))
+(defcustom org-agenda-show-inherited-tags t
+ "Non-nil means, show inherited tags in each agenda line."
+ :group 'org-agenda-line-format
+ :type 'boolean)
(defcustom org-agenda-remove-tags nil
"Non-nil means, remove the tags from the headline copy in the agenda.
@@ -1298,7 +1302,7 @@ The following commands are available:
["Show Logbook entries" org-agenda-log-mode
:style toggle :selected org-agenda-show-log
:active (org-agenda-check-type nil 'agenda 'timeline)]
- ["Include archived trees" org-agenda-archives-mode
+ ["Include archived trees" org-agenda-archives-mode
:style toggle :selected org-agenda-archives-mode :active t]
["Include archive files" (org-agenda-archives-mode t)
:style toggle :selected (eq org-agenda-archives-mode t) :active t
@@ -1907,7 +1911,7 @@ higher priority settings."
(cond
((string-match "\\.html?\\'" file)
(set-buffer (htmlize-buffer (current-buffer)))
-
+
(when (and org-agenda-export-html-style
(string-match "<style>" org-agenda-export-html-style))
;; replace <style> section with org-agenda-export-html-style
@@ -2978,7 +2982,7 @@ MATCH is being ignored."
"Get the (Emacs Calendar) diary entries for DATE."
(require 'diary-lib)
(let* ((diary-fancy-buffer "*temporary-fancy-diary-buffer*")
- (fancy-diary-buffer diary-fancy-buffer)
+ (fancy-diary-buffer diary-fancy-buffer)
(diary-display-hook '(fancy-diary-display))
(diary-display-function 'fancy-diary-display)
(pop-up-frames nil)
@@ -3412,7 +3416,7 @@ the documentation of `org-diary'."
(items (if (consp org-agenda-show-log)
org-agenda-show-log
org-agenda-log-mode-items))
- (parts
+ (parts
(delq nil
(list
(if (memq 'closed items) (concat "\\<" org-closed-string))
@@ -3737,6 +3741,9 @@ Any match of REMOVE-RE will be removed from TXT."
(save-match-data
;; Diary entries sometimes have extra whitespace at the beginning
(if (string-match "^ +" txt) (setq txt (replace-match "" nil nil txt)))
+ (when org-agenda-show-inherited-tags
+ ;; Fix the tags part in txt
+ (setq txt (org-agenda-add-inherited-tags txt tags)))
(let* ((category (or category
org-category
(if buffer-file-name
@@ -3836,7 +3843,8 @@ Any match of REMOVE-RE will be removed from TXT."
;; And finally add the text properties
(org-add-props rtn nil
- 'org-category (downcase category) 'tags (mapcar 'downcase tags)
+ 'org-category (downcase category)
+ 'tags (mapcar 'org-downcase-keep-props tags)
'org-highest-priority org-highest-priority
'org-lowest-priority org-lowest-priority
'prefix-length (- (length rtn) (length txt))
@@ -3849,6 +3857,34 @@ Any match of REMOVE-RE will be removed from TXT."
'extra extra
'dotime dotime))))
+(defun org-agenda-add-inherited-tags (txt tags)
+ "Remove tags string from TXT, and add complete list of tags.
+The new list includes inherited tags. If any inherited tags are present,
+a double colon separates inherited tags from local tags."
+ (if (string-match (org-re "\\([ \t]+\\)\\(:[[:alnum:]_@:]+:\\)[ \t]*$") txt)
+ (setq txt (substring txt 0 (match-beginning 0))))
+ (when tags
+ (let ((have-i (get-text-property 0 'inherited (car tags)))
+ i)
+ (setq txt (concat txt " :"
+ (mapconcat
+ (lambda (x)
+ (setq i (get-text-property 0 'inherited x))
+ (if (and have-i (not i))
+ (progn
+ (setq have-i nil)
+ (concat ":" x))
+ x))
+ tags ":")
+ (if have-i "::" ":")))))
+ txt)
+
+(defun org-downcase-keep-props (s)
+ (let ((props (text-properties-at 0 s)))
+ (setq s (downcase s))
+ (add-text-properties 0 (length s) props s)
+ s))
+
(defvar org-agenda-sorting-strategy) ;; because the def is in a let form
(defvar org-agenda-sorting-strategy-selected nil)
@@ -4024,7 +4060,7 @@ HH:MM."
(tb (or (get-text-property 1 'todo-state b) ""))
(la (- (length (member ta org-todo-keywords-for-agenda))))
(lb (- (length (member tb org-todo-keywords-for-agenda))))
- (donepa (member ta org-done-keywords-for-agenda))
+ (donepa (member ta org-done-keywords-for-agenda))
(donepb (member tb org-done-keywords-for-agenda)))
(cond ((and donepa (not donepb)) -1)
((and (not donepa) donepb) +1)
@@ -4228,7 +4264,7 @@ used to narrow the search - the interactive user can also press `-' or `+'
to switch to narrowing."
(interactive "P")
(let* ((alist org-tag-alist-for-agenda)
- (tag-chars (mapconcat
+ (tag-chars (mapconcat
(lambda (x) (if (cdr x) (char-to-string (cdr x)) ""))
alist ""))
(efforts (org-split-string
@@ -4241,7 +4277,7 @@ to switch to narrowing."
(current org-agenda-filter)
char a n tag tags)
(unless char
- (message
+ (message
"%s by tag [%s ], [TAB], [/]:off, [+-]:narrow, [>=<]:effort: "
(if narrow "Narrow" "Filter") tag-chars)
(setq char (read-char)))
@@ -4249,7 +4285,7 @@ to switch to narrowing."
;; Narrowing down
(cond ((equal char ?-) (setq strip t narrow t))
((equal char ?+) (setq strip nil narrow t)))
- (message
+ (message
"Narrow by tag [%s ], [TAB], [/]:off, [>=<]:effort: " tag-chars)
(setq char (read-char)))
(when (member char '(?< ?> ?=))
@@ -5101,7 +5137,9 @@ the new TODO state."
(goto-char (match-beginning 1))
(insert (org-add-props
(make-string (max 1 (- c (current-column))) ?\ )
- (text-properties-at (point))))))))
+ (text-properties-at (point)))))
+ (goto-char (point-min))
+ (org-font-lock-add-tag-faces (point-max)))))
(defun org-agenda-priority-up ()
"Increase the priority of line at point, also in Org-mode file."
@@ -5369,7 +5407,7 @@ The cursor may be at a date in the calendar, or in the Org agenda."
(widen)
(goto-char org-agenda-action-marker)
(eval form))))))))
-
+
(defun org-agenda-clock-in (&optional arg)
"Start the clock on the currently selected item."
(interactive "P")
@@ -5512,8 +5550,6 @@ argument, latitude and longitude will be prompted for."
(calendar-view-holidays-initially-flag nil)
(calendar-view-diary-initially-flag nil)
(view-calendar-holidays-initially nil)
- (calendar-view-diary-initially-flag nil)
- (calendar-view-holidays-initially-flag nil)
(view-diary-entries-initially nil))
(calendar)
(calendar-goto-date date)))