diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2018-04-16 13:45:52 +0200 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2018-04-16 13:45:52 +0200 |
commit | 1171d5ef0c183721d961ddc3499739eb70bc53ed (patch) | |
tree | 9e3d4279874f2db087cc2466c3701b3f340ece06 | |
parent | b4422add3745c26ec3b2e11b8da425844b2e9d3d (diff) | |
parent | 8b6a617ff53b5713f2e65bae58eb913672cac5c8 (diff) | |
download | org-mode-1171d5ef0c183721d961ddc3499739eb70bc53ed.tar.gz |
Merge branch 'maint'
-rw-r--r-- | lisp/org-inlinetask.el | 33 | ||||
-rw-r--r-- | lisp/org.el | 3 |
2 files changed, 19 insertions, 17 deletions
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el index 554ad27..7519977 100644 --- a/lisp/org-inlinetask.el +++ b/lisp/org-inlinetask.el @@ -159,24 +159,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." @@ -184,7 +184,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 () @@ -192,16 +192,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 4080f38..01149ed 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -13654,6 +13654,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)) |