Hello,

Could you try the following patch and tell me if it fixes your issue?

As a side note (to maintainers), the second patch isn't really needed,
but I thought, while I was at it, that it would make sense
(`org-inlinetask-min-level' doesn't need to be a boolean).

Regards,

-- Nicolas

>From ab4b86b56654887be564d0519dd9e4407d9fc732 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <n.goaz...@gmail.com>
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

>From 89caeaa34fb2e76626954226e51f29590ecaba91 Mon Sep 17 00:00:00 2001
From: Nicolas Goaziou <n.goaz...@gmail.com>
Date: Mon, 11 Oct 2010 08:25:53 +0200
Subject: [PATCH 2/2] inlinetask: Make `org-inlinetask-min-level' an integer 
instead of a boolean.

* org-footnote.el (org-footnote-normalize): Remove unnecessary check
  for org-inlinetask-min-level.
* org-inlinetask.el (org-inlinetask-min-level): Variable is now of
  type integer.
* org-inlinetask.el (org-inlinetask-in-task-p): Remove unnecessary check
  for org-inlinetask-min-level.
* org-inlinetask.el (org-inlinetask-export-handler): Remove unnecessary check
  for org-inlinetask-min-level.
* org-inlinetask.el (org-inlinetask-fontify): Remove unnecessary check
  for org-inlinetask-min-level.
---
 lisp/org-footnote.el   |    1 -
 lisp/org-inlinetask.el |   14 +++++++-------
 lisp/org.el            |    1 -
 3 files changed, 7 insertions(+), 9 deletions(-)

diff --git a/lisp/org-footnote.el b/lisp/org-footnote.el
index 36fcfb2..55c7665 100644
--- a/lisp/org-footnote.el
+++ b/lisp/org-footnote.el
@@ -358,7 +358,6 @@ referenced sequence."
   ;; This is based on Paul's function, but rewritten.
   (let* ((limit-level
          (and (boundp 'org-inlinetask-min-level)
-              org-inlinetask-min-level
               (1- org-inlinetask-min-level)))
         (nstars (and limit-level
                      (if org-odd-levels-only
diff --git a/lisp/org-inlinetask.el b/lisp/org-inlinetask.el
index e18dce8..54b997e 100644
--- a/lisp/org-inlinetask.el
+++ b/lisp/org-inlinetask.el
@@ -90,7 +90,7 @@ or to a number smaller than this one.  In fact, when 
`org-cycle-max-level' is
 not set, it will be assumed to be one less than the value of smaller than
 the value of this variable."
   :group 'org-inlinetask
-  :type 'boolean)
+  :type 'integer)
 
 (defcustom org-inlinetask-export t
   "Non-nil means export inline tasks.
@@ -133,8 +133,8 @@ If prefix arg NO-STATE is set, ignore 
`org-inlinetask-defaut-state'."
   "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)))
+                      (1- (* 2 org-inlinetask-min-level))
+                    org-inlinetask-min-level))
           (stars-re (concat "^\\(?:\\*\\{"
                             (format "%d" (- nstars 1))
                             ",\\}\\)[ \t]+"))
@@ -152,8 +152,8 @@ If prefix arg NO-STATE is set, ignore 
`org-inlinetask-defaut-state'."
 Either remove headline and meta data, or do special formatting."
   (goto-char (point-min))
   (let* ((nstars (if org-odd-levels-only
-                    (1- (* 2 (or org-inlinetask-min-level 200)))
-                  (or org-inlinetask-min-level 200)))
+                    (1- (* 2 org-inlinetask-min-level))
+                  org-inlinetask-min-level))
         (re1 (format "^\\(\\*\\{%d,\\}\\) .*\n" nstars))
         (re2 (concat "^[ \t]*" org-keyword-time-regexp))
         headline beg end stars content indent)
@@ -226,8 +226,8 @@ Either remove headline and meta data, or do special 
formatting."
 (defun org-inlinetask-fontify (limit)
   "Fontify the inline tasks."
   (let* ((nstars (if org-odd-levels-only
-                    (1- (* 2 (or org-inlinetask-min-level 200)))
-                  (or org-inlinetask-min-level 200)))
+                    (1- (* 2 org-inlinetask-min-level))
+                  org-inlinetask-min-level))
         (re (concat "^\\(\\*\\)\\(\\*\\{"
                    (format "%d" (- nstars 3))
                    ",\\}\\)\\(\\*\\* .*\\)")))
diff --git a/lisp/org.el b/lisp/org.el
index d9e26e9..b6805cc 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -5768,7 +5768,6 @@ in special contexts.
     (let* ((limit-level
            (or org-cycle-max-level
                (and (boundp 'org-inlinetask-min-level)
-                    org-inlinetask-min-level
                     (1- org-inlinetask-min-level))))
           (nstars (and limit-level
                      (if org-odd-levels-only
-- 
1.7.3.1

_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode

Reply via email to