summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2014-04-17 02:31:23 +0200
committerBastien Guerry <bzg@altern.org>2014-04-17 02:31:23 +0200
commiteb0f8afdf42d696c1dd53d38a10ceaec3ae4c4f3 (patch)
tree039429daf4c44aef2c444029f1d00378ae8c6d4b
parent241764b2d11e1d3b7448e75faf0c44b494a866a2 (diff)
downloadorg-mode-eb0f8afdf42d696c1dd53d38a10ceaec3ae4c4f3.tar.gz
org-agenda.el: Fix bug when displaying the changed date
* org-agenda.el (org-agenda-mode): Disable `indent-tabs-mode'. (org-agenda-dim-blocked-tasks): Make overlays intangible. (org-agenda-show-new-time): Fix bug when deleting a timestamp right after changing it. (org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item) (org-agenda-get-sexps, org-agenda-filter-by-regexp) (org-agenda-filter-top-headline-apply): Fix indentation. Thanks to Fletcher Charest and Nick Dokos for reporting issues in this area. There is one bug left: in a filtered agenda, changing a timestamp will not always correctly display the warning. This happens when the headline at point is followed by hidden headlines, because `org-agenda-show-new-time' tries to set a text property at a point where there is an overlay that hides then text. Because the overlay is now intangible, the warning text will be displayed too far on the right, and may be outside of the window.
-rw-r--r--lisp/org-agenda.el33
1 files changed, 19 insertions, 14 deletions
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 7055ff0..6bff693 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -2144,6 +2144,7 @@ The following commands are available:
;; Keep global-font-lock-mode from turning on font-lock-mode
(org-set-local 'font-lock-global-modes (list 'not major-mode))
(setq mode-name "Org-Agenda")
+ (setq indent-tabs-mode nil)
(use-local-map org-agenda-mode-map)
(easy-menu-add org-agenda-menu)
(if org-startup-truncated (setq truncate-lines t))
@@ -3851,11 +3852,12 @@ dimming them."
e (point-at-eol)
ov (make-overlay b e))
(if invis1
- (overlay-put ov 'invisible t)
+ (progn (overlay-put ov 'invisible t)
+ (overlay-put ov 'intangible t))
(overlay-put ov 'face 'org-agenda-dimmed-todo-face))
(overlay-put ov 'org-type 'org-blocked-todo))))))
- (when (org-called-interactively-p 'interactive)
- (message "Dim or hide blocked tasks...done")))
+ (when (org-called-interactively-p 'interactive)
+ (message "Dim or hide blocked tasks...done")))
(defvar org-agenda-skip-function nil
"Function to be called at each match during agenda construction.
@@ -5454,7 +5456,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
;;;###autoload
(defun org-agenda-check-for-timestamp-as-reason-to-ignore-todo-item
- (&optional end)
+ (&optional end)
"Do we have a reason to ignore this TODO entry because it has a time stamp?"
(when (or org-agenda-todo-ignore-with-date
org-agenda-todo-ignore-scheduled
@@ -5691,10 +5693,10 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
(setq txt "SEXP entry returned empty string"))
(setq txt (org-agenda-format-item extra txt level category tags 'time))
(org-add-props txt props 'org-marker marker
- 'org-category category 'date date 'todo-state todo-state
- 'org-category-position category-pos 'tags tags
- 'level level
- 'type "sexp" 'warntime warntime)
+ 'org-category category 'date date 'todo-state todo-state
+ 'org-category-position category-pos 'tags tags
+ 'level level
+ 'type "sexp" 'warntime warntime)
(push txt ee)))))
(nreverse ee)))
@@ -7372,7 +7374,7 @@ With two prefix arguments, remove the regexp filters."
(read-from-minibuffer
(if (equal strip '(4))
"Filter out entries matching regexp: "
- "Narrow to entries matching regexp: ")))))
+ "Narrow to entries matching regexp: ")))))
(push flt org-agenda-regexp-filter)
(org-agenda-filter-apply org-agenda-regexp-filter 'regexp))
(org-agenda-filter-show-all-re)
@@ -7647,7 +7649,7 @@ When NO-OPERATOR is non-nil, do not add the + operator to returned tags."
(let* ((pos (org-get-at-bol 'org-hd-marker))
(tophl (and pos (org-find-top-headline pos))))
(if (and tophl (funcall (if negative 'identity 'not)
- (string= hl tophl)))
+ (string= hl tophl)))
(org-agenda-filter-hide-line 'category)))
(beginning-of-line 2)))
(if (get-char-property (point) 'invisible)
@@ -7657,10 +7659,11 @@ When NO-OPERATOR is non-nil, do not add the + operator to returned tags."
(defun org-agenda-filter-hide-line (type)
"Hide lines with TYPE in the agenda buffer."
- (let (ov)
- (setq ov (make-overlay (max (point-min) (1- (point-at-bol)))
- (point-at-eol)))
+ (let* ((b (max (point-min) (1- (point-at-bol))))
+ (e (point-at-eol))
+ (ov (make-overlay b e)))
(overlay-put ov 'invisible t)
+ (overlay-put ov 'intangible t)
(overlay-put ov 'type type)
(cond ((eq type 'tag) (push ov org-agenda-tag-filter-overlays))
((eq type 'category) (push ov org-agenda-cat-filter-overlays))
@@ -9163,7 +9166,9 @@ Called with a universal prefix arg, show the priority instead of setting it."
(goto-char (point-max))
(while (not (bobp))
(when (equal marker (org-get-at-bol 'org-marker))
+ (remove-text-properties (point-at-bol) (point-at-eol) '(display))
(org-move-to-column (- (window-width) (length stamp)) t)
+
(org-agenda-fix-tags-filter-overlays-at (point))
(if (featurep 'xemacs)
;; Use `duplicable' property to trigger undo recording
@@ -9174,7 +9179,7 @@ Called with a universal prefix arg, show the priority instead of setting it."
ex (list 'invisible t 'end-glyph gl 'duplicable t))
(insert-extent ex (1- (point)) (point-at-eol)))
(add-text-properties
- (1- (point)) (point-at-eol)
+ (1- (point)) (point-at-eol)
(list 'display (org-add-props stamp nil
'face 'secondary-selection))))
(beginning-of-line 1))