>From ab4b86b56654887be564d0519dd9e4407d9fc732 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Mon, 11 Oct 2010 08:10:31 +0200 Subject: [PATCH 1/2] Fix indentation of text after an inline task. * org.el (org-indent-line-function): Conditionnaly indent text inside and outside indented tasks. Also skip any list above point. * org-inlinetask.el (org-inlinetask-in-task-p): new function. --- lisp/org-inlinetask.el | 16 ++++++++++++++++ lisp/org.el | 21 ++++++++++----------- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el index fce515d..e18dce8 100644 --- a/lisp/org-inlinetask.el +++ b/lisp/org-inlinetask.el @@ -129,6 +129,22 @@ If prefix arg NO-STATE is set, ignore `org-inlinetask-defaut-state'." (end-of-line -1)) (define-key org-mode-map "\C-c\C-xt" 'org-inlinetask-insert-task) +(defun org-inlinetask-in-task-p () + "Return true if point is inside an inline task." + (save-excursion + (let* ((nstars (if org-odd-levels-only + (1- (* 2 (or org-inlinetask-min-level 200))) + (or org-inlinetask-min-level 200))) + (stars-re (concat "^\\(?:\\*\\{" + (format "%d" (- nstars 1)) + ",\\}\\)[ \t]+")) + (task-beg-re (concat stars-re "\\(?:.*\\)")) + (task-end-re (concat stars-re "\\(?:END\\|end\\)"))) + (beginning-of-line) + (or (looking-at task-beg-re) + (and (re-search-forward "^\\*+[ \t]+" nil t) + (progn (beginning-of-line) (looking-at task-end-re))))))) + (defvar htmlp) ; dynamically scoped into the next function (defvar latexp) ; dynamically scoped into the next function (defun org-inlinetask-export-handler () diff --git a/lisp/org.el b/lisp/org.el index a80286f..d9e26e9 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -18601,6 +18601,8 @@ which make use of the date at the cursor." (itemp (org-at-item-p)) (case-fold-search t) (org-drawer-regexp (or org-drawer-regexp "\000")) + (inline-task-p (and (featurep 'org-inlinetask) + (org-inlinetask-in-task-p))) column bpos bcol tpos tcol bullet btype bullet-type) ;; Find the previous relevant line (beginning-of-line 1) @@ -18656,7 +18658,14 @@ which make use of the date at the cursor." ;; what to do. (t (beginning-of-line 0) - (while (and (not (bobp)) (looking-at "[ \t]*[\n:#|]") + (while (and (not (bobp)) + ;; skip comments, verbatim, empty lines, tables, + ;; inline tasks + (or (looking-at "[ \t]*[\n:#|]") + (and (org-in-item-p) (goto-char (org-list-top-point))) + (and (not inline-task-p) + (featurep 'org-inlinetask) + (org-inlinetask-in-task-p))) (not (looking-at "[ \t]*:END:")) (not (looking-at org-drawer-regexp))) (beginning-of-line 0)) @@ -18675,16 +18684,6 @@ which make use of the date at the cursor." ((looking-at "\\([ \t]*\\):END:") (goto-char (match-end 1)) (setq column (current-column))) - ;; There was a list that since ended: indent relatively to - ;; current heading. - ((org-in-item-p) - (outline-previous-heading) - (if (and org-adapt-indentation - (looking-at "\\*+[ \t]+")) - (progn - (goto-char (match-end 0)) - (setq column (current-column))) - (setq column 0))) ;; Else, nothing noticeable found: get indentation and go on. (t (setq column (org-get-indentation)))))) (goto-char pos) -- 1.7.3.1