summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2012-09-12 18:17:01 +0200
committerBastien Guerry <bzg@altern.org>2012-09-12 18:17:01 +0200
commit9742dc86a0bac7a65ffc01be4f136d8d1924fc6c (patch)
treeee4f63c0f021c8efe3d912c672d13401b3e8eefc
parentb645e8ab221d1eb2976fe7fa857fb28b8e392647 (diff)
downloadorg-mode-9742dc86a0bac7a65ffc01be4f136d8d1924fc6c.tar.gz
Continue fixing b508ff69.
* org.el (org-outline-level): Go at the beginning of the headline first to always return a sensible result. * org-agenda.el (org-search-view, org-agenda-get-todos) (org-agenda-get-timestamps, org-agenda-get-sexps) (org-agenda-get-progress, org-agenda-get-deadlines) (org-agenda-get-scheduled, org-agenda-get-blocks): Return the correct level depending on `org-odd-levels-only'.
-rw-r--r--lisp/org-agenda.el16
-rw-r--r--lisp/org.el10
2 files changed, 14 insertions, 12 deletions
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index 3678ede..18d45c9 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -4283,7 +4283,7 @@ in `org-agenda-text-search-extra-files'."
(goto-char beg)
(setq marker (org-agenda-new-marker (point))
category (org-get-category)
- level (make-string (1- (or (org-outline-level) 1)) ? )
+ level (make-string (org-reduced-level (org-outline-level)) ? )
category-pos (get-text-property (point) 'org-category-position)
tags (org-get-tags-at (point))
txt (org-agenda-format-item
@@ -5010,7 +5010,7 @@ the documentation of `org-diary'."
txt (org-trim
(buffer-substring (match-beginning 2) (match-end 0)))
tags (org-get-tags-at (point))
- level (make-string (1- (or (org-outline-level) 1)) ? )
+ level (make-string (org-reduced-level (org-outline-level)) ? )
txt (org-agenda-format-item "" txt level category tags)
priority (1+ (org-get-priority txt))
todo-state (org-get-todo-state))
@@ -5186,7 +5186,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
(throw :skip nil))
(setq hdmarker (org-agenda-new-marker)
tags (org-get-tags-at)
- level (make-string (1- (or (org-outline-level) 1)) ? ))
+ level (make-string (org-reduced-level (org-outline-level)) ? ))
(looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
(setq head (or (match-string 1) ""))
(setq txt (org-agenda-format-item
@@ -5234,7 +5234,7 @@ This function is invoked if `org-agenda-todo-ignore-deadlines',
(setq result (org-diary-sexp-entry sexp sexp-entry date))
(when result
(setq marker (org-agenda-new-marker beg)
- level (make-string (1- (or (org-outline-level) 1)) ? )
+ level (make-string (org-reduced-level (org-outline-level)) ? )
category (org-get-category beg)
category-pos (get-text-property beg 'org-category-position)
tags (save-excursion (org-backward-heading-same-level 0)
@@ -5408,7 +5408,7 @@ please use `org-class' instead."
(goto-char (match-beginning 0))
(setq hdmarker (org-agenda-new-marker)
tags (org-get-tags-at)
- level (make-string (1- (or (org-outline-level) 1)) ? ))
+ level (make-string (org-reduced-level (org-outline-level)) ? ))
(looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
(setq txt (match-string 1))
(when extra
@@ -5619,7 +5619,7 @@ See also the user option `org-agenda-clock-consistency-checks'."
(setq txt org-agenda-no-heading-message)
(goto-char (match-end 0))
(setq pos1 (match-beginning 0))
- (setq level (make-string (1- (or (org-outline-level) 1)) ? ))
+ (setq level (make-string (org-reduced-level (org-outline-level)) ? ))
(setq tags (org-get-tags-at pos1))
(setq head (buffer-substring-no-properties
(point)
@@ -5750,7 +5750,7 @@ FRACTION is what fraction of the head-warning time has passed."
(setq mm (assoc pos1 deadline-position-alist)))
(throw :skip nil)))
(setq tags (org-get-tags-at))
- (setq level (make-string (1- (or (org-outline-level) 1)) ? ))
+ (setq level (make-string (org-reduced-level (org-outline-level)) ? ))
(setq head (buffer-substring-no-properties
(point)
(progn (skip-chars-forward "^\r\n") (point))))
@@ -5834,7 +5834,7 @@ FRACTION is what fraction of the head-warning time has passed."
(goto-char (match-beginning 0))
(setq hdmarker (org-agenda-new-marker (point)))
(setq tags (org-get-tags-at))
- (setq level (make-string (1- (or (org-outline-level) 1)) ? ))
+ (setq level (make-string (org-reduced-level (org-outline-level)) ? ))
(looking-at "\\*+[ \t]+\\([^\r\n]+\\)")
(setq head (match-string 1))
(let ((remove-re
diff --git a/lisp/org.el b/lisp/org.el
index eaabeb3..3ee307e 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -5878,13 +5878,15 @@ between words."
(defun org-outline-level ()
"Compute the outline level of the heading at point.
-This function assumes that the cursor is at the beginning of a line matched
-by `outline-regexp'. Otherwise it returns garbage.
If this is called at a normal headline, the level is the number of stars.
Use `org-reduced-level' to remove the effect of `org-odd-levels'."
(save-excursion
- (looking-at org-outline-regexp)
- (1- (- (match-end 0) (match-beginning 0)))))
+ (if (not (condition-case nil
+ (org-back-to-heading t)
+ (error nil)))
+ 0
+ (looking-at org-outline-regexp)
+ (1- (- (match-end 0) (match-beginning 0))))))
(defvar org-font-lock-keywords nil)