diff options
author | Bastien Guerry <bzg@altern.org> | 2012-09-12 18:17:01 +0200 |
---|---|---|
committer | Bastien Guerry <bzg@altern.org> | 2012-09-12 18:17:01 +0200 |
commit | 9742dc86a0bac7a65ffc01be4f136d8d1924fc6c (patch) | |
tree | ee4f63c0f021c8efe3d912c672d13401b3e8eefc | |
parent | b645e8ab221d1eb2976fe7fa857fb28b8e392647 (diff) | |
download | org-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.el | 16 | ||||
-rw-r--r-- | lisp/org.el | 10 |
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) |