From 8b6a617ff53b5713f2e65bae58eb913672cac5c8 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 16 Apr 2018 13:44:52 +0200 Subject: [PATCH] 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 --- lisp/org-inlinetask.el | 33 ++++++++++++++++----------------- lisp/org.el | 3 +++ 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el index 08fc268d0..d95db321a 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 1b074dafe..9b24aa605 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)) -- 2.11.4.GIT