summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2018-04-16 13:44:52 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2018-04-16 13:44:52 +0200
commit8b6a617ff53b5713f2e65bae58eb913672cac5c8 (patch)
tree86c9e31dc64bb2ca4a3a9bda1daba409720f9b10
parent1a1e47198f685697bd208ad4777cf6b0574c5b36 (diff)
downloadorg-mode-8b6a617ff53b5713f2e65bae58eb913672cac5c8.tar.gz
Remove inlinetask END part from Agenda view
* lisp/org-inlinetask.el (org-inlinetask-end-p): New function. (org-inlinetask-at-task-p): (org-inlinetask-in-task-p): (org-inlinetask-goto-beginning): (org-inlinetask-goto-end): * lisp/org.el (org-scan-tags): Use new function. Reported-by: Alain.Cochard@unistra.fr <http://lists.gnu.org/r/emacs-orgmode/2018-04/msg00235.html>
-rw-r--r--lisp/org-inlinetask.el33
-rw-r--r--lisp/org.el3
2 files changed, 19 insertions, 17 deletions
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el
index 08fc268..d95db32 100644
--- a/lisp/org-inlinetask.el
+++ b/lisp/org-inlinetask.el
@@ -152,24 +152,24 @@ The number of levels is controlled by `org-inlinetask-min-level'."
org-inlinetask-min-level)))
(format "^\\(\\*\\{%d,\\}\\)[ \t]+" nstars)))
+(defun org-inlinetask-end-p ()
+ "Return a non-nil value if point is on inline task's END part."
+ (let ((case-fold-search t))
+ (org-match-line (concat (org-inlinetask-outline-regexp) "END[ \t]*$"))))
+
(defun org-inlinetask-at-task-p ()
- "Return true if point is at beginning of an inline task."
- (save-excursion
- (beginning-of-line)
- (and (looking-at (concat (org-inlinetask-outline-regexp) "\\(.*\\)"))
- (not (string-match "^end[ \t]*$" (downcase (match-string 2)))))))
+ "Return non-nil if point is at beginning of an inline task."
+ (and (org-match-line (concat (org-inlinetask-outline-regexp) "\\(.*\\)"))
+ (not (org-inlinetask-end-p))))
(defun org-inlinetask-in-task-p ()
"Return true if point is inside an inline task."
(save-excursion
(beginning-of-line)
- (let* ((case-fold-search t)
- (stars-re (org-inlinetask-outline-regexp))
- (task-beg-re (concat stars-re "\\(?:.*\\)"))
- (task-end-re (concat stars-re "END[ \t]*$")))
- (or (looking-at-p task-beg-re)
+ (let ((case-fold-search t))
+ (or (looking-at-p (concat (org-inlinetask-outline-regexp) "\\(?:.*\\)"))
(and (re-search-forward "^\\*+[ \t]+" nil t)
- (progn (beginning-of-line) (looking-at-p task-end-re)))))))
+ (org-inlinetask-end-p))))))
(defun org-inlinetask-goto-beginning ()
"Go to the beginning of the inline task at point."
@@ -177,7 +177,7 @@ The number of levels is controlled by `org-inlinetask-min-level'."
(let ((case-fold-search t)
(inlinetask-re (org-inlinetask-outline-regexp)))
(re-search-backward inlinetask-re nil t)
- (when (looking-at-p (concat inlinetask-re "END[ \t]*$"))
+ (when (org-inlinetask-end-p)
(re-search-backward inlinetask-re nil t))))
(defun org-inlinetask-goto-end ()
@@ -185,16 +185,15 @@ The number of levels is controlled by `org-inlinetask-min-level'."
Return point."
(save-match-data
(beginning-of-line)
- (let* ((case-fold-search t)
- (inlinetask-re (org-inlinetask-outline-regexp))
- (task-end-re (concat inlinetask-re "END[ \t]*$")))
+ (let ((case-fold-search t)
+ (inlinetask-re (org-inlinetask-outline-regexp)))
(cond
- ((looking-at-p task-end-re)
+ ((org-inlinetask-end-p)
(forward-line))
((looking-at-p inlinetask-re)
(forward-line)
(cond
- ((looking-at-p task-end-re) (forward-line))
+ ((org-inlinetask-end-p) (forward-line))
((looking-at-p inlinetask-re))
((org-inlinetask-in-task-p)
(re-search-forward inlinetask-re nil t)
diff --git a/lisp/org.el b/lisp/org.el
index 1b074da..9b24aa6 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -14162,6 +14162,9 @@ headlines matching this string."
(re-search-forward re nil t))
(setq org-map-continue-from nil)
(catch :skip
+ ;; Ignore closing parts of inline tasks.
+ (when (and (fboundp 'org-inlinetask-end-p) (org-inlinetask-end-p))
+ (throw :skip t))
(setq todo
;; TODO: is the 1-2 difference a bug?
(when (match-end 1) (match-string-no-properties 2))