]> git.eshelyaron.com Git - emacs.git/commitdiff
Sync with Org 7.8.09 (bugfix release)
authorBastien Guerry <bastien1@free.fr>
Wed, 11 Apr 2012 10:59:50 +0000 (12:59 +0200)
committerBastien Guerry <bastien1@free.fr>
Wed, 11 Apr 2012 10:59:50 +0000 (12:59 +0200)
13 files changed:
doc/misc/ChangeLog
doc/misc/org.texi
etc/refcards/orgcard.pdf
etc/refcards/orgcard.tex
lisp/org/ChangeLog
lisp/org/ob-C.el
lisp/org/org-agenda.el
lisp/org/org-clock.el
lisp/org/org-footnote.el
lisp/org/org-pcomplete.el
lisp/org/org-special-blocks.el
lisp/org/org-table.el
lisp/org/org.el

index f11792248cfcc727bb12fab0ba8985e5f54a7db8..b96c0489cd36efc807f253aae715914febf88d9b 100644 (file)
@@ -1,3 +1,16 @@
+2012-04-11  Jérémie Courrèges-Anglas  <jca@wxcvbn.org>  (tiny change)
+
+       * org.texi (Deadlines and scheduling): Fix the example: the
+       DEADLINE item should come right after the headline.  We enforce
+       this convention, so it is a bug not to illustrate it correctly in
+       the manual.
+
+2012-04-11  Ippei FURUHASHI  <top.tuna+orgmode@gmail.com>  (tiny change)
+
+       * org.texi (Agenda commands): Fix documentation bug by swapping
+       the equivalent keybindings to `org-agenda-next-line' with the ones
+       to `org-agenda-previous-line'.
+
 2012-04-07  Glenn Morris  <rgm@gnu.org>
 
        * Makefile.in: Replace non-portable use of $< in ordinary rules.
index e033a47aa96a88789134fbe85acb08ad5ff8ba44..67633e1acac7dc118b4be6adb59198d57c1f849a 100644 (file)
@@ -4,8 +4,8 @@
 @setfilename ../../info/org
 @settitle The Org Manual
 
-@set VERSION 7.8.07
-@set DATE March 2012
+@set VERSION 7.8.09
+@set DATE April 2012
 
 @c Use proper quote and backtick for code sections in PDF output
 @c Cf. Texinfo manual 14.2
@@ -5698,8 +5698,8 @@ until the entry is marked DONE.  An example:
 
 @example
 *** TODO write article about the Earth for the Guide
-    The editor in charge is [[bbdb:Ford Prefect]]
     DEADLINE: <2004-02-29 Sun>
+    The editor in charge is [[bbdb:Ford Prefect]]
 @end example
 
 You can specify a different lead time for warnings for a specific
@@ -7852,9 +7852,9 @@ the other commands, the cursor needs to be in the desired line.
 @tsubheading{Motion}
 @cindex motion commands in agenda
 @orgcmd{n,org-agenda-next-line}
-Next line (same as @key{up} and @kbd{C-p}).
+Next line (same as @key{down} and @kbd{C-n}).
 @orgcmd{p,org-agenda-previous-line}
-Previous line (same as @key{down} and @kbd{C-n}).
+Previous line (same as @key{up} and @kbd{C-p}).
 @tsubheading{View/Go to Org file}
 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
 Display the original location of the item in another window.
@@ -9537,12 +9537,12 @@ the web, while the XOXO format provides a solid base for exchange with a
 broad range of other applications.  @LaTeX{} export lets you use Org mode and
 its structured editing functions to easily create @LaTeX{} files.  DocBook
 export makes it possible to convert Org files to many other formats using
-DocBook tools.  OpenDocument Text(ODT) export allows seamless
+DocBook tools.  OpenDocument Text (ODT) export allows seamless
 collaboration across organizational boundaries.  For project management you
 can create gantt and resource charts by using TaskJuggler export.  To
 incorporate entries with associated times like deadlines or appointments into
 a desktop calendar program like iCal, Org mode can also produce extracts in
-the iCalendar format.  Currently Org mode only supports export, not import of
+the iCalendar format.  Currently, Org mode only supports export, not import of
 these different formats.
 
 Org supports export of selected regions when @code{transient-mark-mode} is
@@ -10869,10 +10869,10 @@ one format (say @samp{csv}) to another format (say @samp{ods} or @samp{xls}).
 If you have a working installation of LibreOffice, a document converter is
 pre-configured for you and you can use it right away.  If you would like to
 use @file{unoconv} as your preferred converter, customize the variable
-@code{org-export-odt-convert-process} to point to @code{unoconv}.  If you
-would like to use a converter of your own choosing or tweak the default
-settings of the default @file{LibreOffice} and @samp{unoconv} converters
-@xref{Configuring a document converter}.
+@code{org-export-odt-convert-process} to point to @code{unoconv}.  You can
+also use your own favorite converter or tweak the default settings of the
+@file{LibreOffice} and @samp{unoconv} converters.  @xref{Configuring a
+document converter}.
 
 @subsubsection Automatically exporting to other formats
 @anchor{x-export-to-other-formats}
@@ -11206,7 +11206,7 @@ that the @file{dvipng} program be available on your system.
 
 For various reasons, you may find embedding @LaTeX{} math snippets in an
 ODT document less than reliable.  In that case, you can embed a
-math equation by linking to its MathML(@file{.mml}) source or its
+math equation by linking to its MathML (@file{.mml}) source or its
 OpenDocument formula (@file{.odf}) file as shown below:
 
 @example
@@ -11269,7 +11269,7 @@ Illustration 2: Bell curve
 Export of literal examples (@pxref{Literal examples}) with full fontification
 is supported.  Internally, the exporter relies on @file{htmlfontify.el} to
 generate all style definitions needed for a fancy listing.@footnote{Your
-@file{htmlfontify.el} library must atleast be at Emacs 24.1 levels for
+@file{htmlfontify.el} library must at least be at Emacs 24.1 levels for
 fontification to be turned on.}  The auto-generated styles have @samp{OrgSrc}
 as prefix and inherit their color from the faces used by Emacs
 @code{font-lock} library for the source language.
@@ -11318,10 +11318,9 @@ the variable @code{org-export-odt-convert-processes}.  Also specify how the
 converter can be invoked via command-line to effect the conversion.
 
 @item Configure its capabilities
-@vindex org-export-odt-convert-capabilities
 
+@vindex org-export-odt-convert-capabilities
 @anchor{x-odt-converter-capabilities}
-
 Specify the set of formats the converter can handle by customizing the
 variable @code{org-export-odt-convert-capabilities}.  Use the default value
 for this variable as a guide for configuring your converter.  As suggested by
@@ -11460,7 +11459,7 @@ regular text.
 @end example
 
 @strong{Hint:} To see the above example in action, edit your
-@file{styles.xml}(@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
+@file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
 custom @samp{Highlight} style as shown below.
 
 @example
@@ -11479,7 +11478,7 @@ directive.  For example, to force a page break do the following:
 @end example
 
 @strong{Hint:} To see the above example in action, edit your
-@file{styles.xml}(@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
+@file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
 custom @samp{PageBreak} style as shown below.
 
 @example
index 201bb892dc033907cfeac1088dcaf31ca3785d35..3bedb6f2cf5a62888f6e30cb1cd4e4fb62ac4546 100644 (file)
Binary files a/etc/refcards/orgcard.pdf and b/etc/refcards/orgcard.pdf differ
index d78f2a38021427819759d7f71b99dc497d223467..d06afca808389ac62cbeeb0e3675a533a9931c4f 100644 (file)
@@ -1,5 +1,5 @@
 % Reference Card for Org Mode
-\def\orgversionnumber{7.8.07}
+\def\orgversionnumber{7.8.09}
 \def\versionyear{2012}          % latest update
 \def\year{2012}                 % latest copyright year
 
index 618d5753a464b89a3a7d97708b6d1b07b4e2d73a..0e80ea2fa2e821e91c84035a44dae323bbc62ec2 100644 (file)
@@ -1,3 +1,50 @@
+2012-04-11  Bastien Guerry  <bzg@gnu.org>
+
+       * org.el (org-point-at-end-of-empty-headline): Only try to match
+       ̀org-todo-line-regexp' when the value is non-nil, e.g. in non-org
+       modes.
+       (org-fontify-meta-lines-and-blocks-1): Prevent errors when trying
+       to fontify beyond (point-max).
+
+       * org-clock.el (org-clock-task-overrun-text)
+       (org-task-overrun, org-clock-get-clock-string)
+       (org-clock-update-mode-line)
+       (org-clock-notify-once-if-expired): Rename `org-task-overrun'
+       and `org-task-overrun-text' to `org-clock-task-overrun' and
+       `org-clock-task-overrun-text' respectively.
+       (org-task-overrun-text): New alias.
+
+       * org-table.el (org-table-eval-formula): Fix bug about handling
+       remote references as durations.
+       (org-table-get-range): Fix bug: make sure references to $0 are
+       correctly handled.
+
+       * org-pcomplete.el (pcomplete/org-mode/file-option): Fix bug in
+       `pcomplete/org-mode/file-option'.
+       (org-thing-at-point): Also match line options like LATEX_CLASS
+       when pcompleting from LATEX_.
+
+       * org-agenda.el (org-agenda-filter-make-matcher)
+       (org-agenda-filter-apply): Allow filtering entries out by
+       category.  Using `C-u <' from the agenda view will redisplay
+       the agenda without entries from categories of the current
+       line.
+
+2012-04-11  Eric Schulte  <eric.schulte@gmx.com>
+
+       * ob-C.el (org-babel-C-ensure-main-wrap): Add an explicit return
+       to automatically generated main methods.
+
+2012-04-11  Matt Lundin  <mdl@imapmail.org>
+
+       * org.el (org-after-todo-state-change-hook): Fix docstring to
+       reflect name change of state to `org-state'.
+
+2012-04-11  Mike Sperber  <sperber@deinprogramm.de>  (tiny change)
+
+       * org-footnote.el (org-footnote-normalize): Correctly pass keyword
+       arguments to `org-export-preprocess-string'.
+
 2012-04-03  Bastien Guerry  <bzg@gnu.org>
 
        * org.el (org-todo): Fix regression: rename `state' to
index 5f6c1cb1dd15d0783d51811e09154fc684e75511..583510ac6181d2b38d8bfbc4e50b3dd938f06c12 100644 (file)
@@ -152,7 +152,7 @@ it's header arguments."
   "Wrap body in a \"main\" function call if none exists."
   (if (string-match "^[ \t]*[intvod]+[ \t\n\r]*main[ \t]*(.*)" body)
       body
-    (format "int main() {\n%s\n}\n" body)))
+    (format "int main() {\n%s\nreturn(0);\n}\n" body)))
 
 (defun org-babel-prep-session:C (session params)
   "This function does nothing as C is a compiled language with no
index 324ddd27f9a4bcf8e82ccfcc43c6f842d841df42..3bb0fc84897f80b61b2e62aa84db90371d142590 100644 (file)
@@ -6365,7 +6365,9 @@ to switch to narrowing."
     (dolist (x (delete-dups
                (append (get 'org-agenda-category-filter
                             :preset-filter) org-agenda-category-filter)))
-      (setq f1 (list 'equal (substring x 1) 'cat))
+      (if (equal "-" (substring x 0 1))
+         (setq f1 (list 'not (list 'equal (substring x 1) 'cat)))
+       (setq f1 (list 'equal (substring x 1) 'cat)))
       (push f1 f))
     (cons 'and (nreverse f))))
 
@@ -6396,9 +6398,13 @@ If the line does not have an effort defined, return nil."
   (let (tags cat)
     (if (eq type 'tag)
        (setq org-agenda-tag-filter filter)
-      (setq org-agenda-category-filter filter
-           org-agenda-filtered-by-category t))
+      (setq org-agenda-category-filter filter))
     (setq org-agenda-filter-form (org-agenda-filter-make-matcher))
+    (if (and (eq type 'category)
+            (not (equal (substring (car filter) 0 1) "-")))
+       ;; Only set `org-agenda-filtered-by-category' to t
+       ;; when a unique category is used as the filter
+       (setq org-agenda-filtered-by-category t))
     (org-agenda-set-mode-name)
     (save-excursion
       (goto-char (point-min))
@@ -6412,7 +6418,7 @@ If the line does not have an effort defined, return nil."
              (beginning-of-line 2))
          (beginning-of-line 2))))
     (if (get-char-property (point) 'invisible)
-       (org-agenda-previous-line))))
+       (ignore-errors (org-agenda-previous-line)))))
 
 (defun org-agenda-filter-hide-line (type)
   (let (ov)
index 7105bfe13dca71f1cb3ea40fa1fae95b90b66c83..434f6a1d5f6a00e527c98454cc984f7b1f30129e 100644 (file)
@@ -219,7 +219,8 @@ auto     Automatically, either `all', or `repeat' for repeating tasks"
          (const :tag "All task time" all)
          (const :tag "Automatically, `all' or since `repeat'" auto)))
 
-(defcustom org-task-overrun-text nil
+(defvaralias 'org-task-overrun-text 'org-clock-task-overrun-text)
+(defcustom org-clock-task-overrun-text nil
   "The extra modeline text that should indicate that the clock is overrun.
 The can be nil to indicate that instead of adding text, the clock time
 should get a different face (`org-mode-line-clock-overrun').
@@ -495,7 +496,7 @@ pointing to it."
        (insert (format "[%c] %-15s %s\n" i cat task))
        (cons i marker)))))
 
-(defvar org-task-overrun nil
+(defvar org-clock-task-overrun nil
   "Internal flag indicating if the clock has overrun the planned time.")
 (defvar org-clock-update-period 60
   "Number of seconds between mode line clock string updates.")
@@ -516,7 +517,7 @@ If not, show simply the clocked time like 01:50."
               (work-done-str
                (org-propertize
                 (format org-time-clocksum-format h m)
-                'face (if (and org-task-overrun (not org-task-overrun-text))
+                'face (if (and org-clock-task-overrun (not org-clock-task-overrun-text))
                           'org-mode-line-clock-overrun 'org-mode-line-clock)))
               (effort-str (format org-time-clocksum-format effort-h effort-m))
               (clockstr (org-propertize
@@ -532,7 +533,7 @@ If not, show simply the clocked time like 01:50."
 (defun org-clock-update-mode-line ()
   (if org-clock-effort
       (org-clock-notify-once-if-expired)
-    (setq org-task-overrun nil))
+    (setq org-clock-task-overrun nil))
   (setq org-mode-line-string
        (org-propertize
         (let ((clock-string (org-clock-get-clock-string))
@@ -546,10 +547,10 @@ If not, show simply the clocked time like 01:50."
         'local-map org-clock-mode-line-map
         'mouse-face (if (featurep 'xemacs) 'highlight 'mode-line-highlight)
         ))
-  (if (and org-task-overrun org-task-overrun-text)
+  (if (and org-clock-task-overrun org-clock-task-overrun-text)
       (setq org-mode-line-string
            (concat (org-propertize
-                    org-task-overrun-text
+                    org-clock-task-overrun-text
                     'face 'org-mode-line-clock-overrun) org-mode-line-string)))
   (force-mode-line-update))
 
@@ -606,7 +607,7 @@ Notification is shown only once."
   (when (org-clocking-p)
     (let ((effort-in-minutes (org-duration-string-to-minutes org-clock-effort))
          (clocked-time (org-clock-get-clocked-time)))
-      (if (setq org-task-overrun
+      (if (setq org-clock-task-overrun
                (if (or (null effort-in-minutes) (zerop effort-in-minutes))
                    nil
                  (>= clocked-time effort-in-minutes)))
index 34fc31f39d69c27a422bc42a6ef85d6a5888ffc0..9319e0813c0528b5165ead2dff50185de0bfa698 100644 (file)
@@ -704,7 +704,7 @@ Additional note on `org-footnote-insert-pos-for-preprocessor':
                                     (org-combine-plists
                                      export-props
                                      '(:todo-keywords t :tags t :priority t))))
-                               (org-export-preprocess-string def parameters))
+                               (apply #'org-export-preprocess-string def parameters))
                            def)
                          ;; Reference beginning position is a marker
                          ;; to preserve it during further buffer
index 0ca8777878cd84cdd70f579d17eacd78005d3a74..5950d8e26da420cc79655b21b02730caf2b84bea 100644 (file)
@@ -69,7 +69,7 @@ The return value is a string naming the thing at point."
        (re-search-backward "^[ \t]*#\\+\\([A-Z_]+\\):.*"
                            (line-beginning-position) t))
       (cons "file-option" (match-string-no-properties 1)))
-     ((string-match "\\`[ \t]*#\\+[a-zA-Z]*\\'" line-to-here)
+     ((string-match "\\`[ \t]*#\\+[a-zA-Z_]*\\'" line-to-here)
       (cons "file-option" nil))
      ((equal (char-before beg) ?\[)
       (cons "link" nil))
@@ -144,7 +144,7 @@ When completing for #+STARTUP, for example, this function returns
                              (if (string-match "^#\\+\\([A-Z_]+:?\\)" x)
                                  (match-string 1 x)))
                            (org-split-string (org-get-current-options) "\n"))
-                   org-additional-option-like-keywords)))))
+                   (copy-sequence org-additional-option-like-keywords))))))
    (substring pcomplete-stub 2)))
 
 (defvar org-startup-options)
index 5bf8362357fca24f5a45f33e7bfff3806c225280..43b37c640169307d6387705e9cafa4a1e883166a 100644 (file)
@@ -80,17 +80,17 @@ seen.  This is run after a few special cases are taken care of."
 (add-hook 'org-export-latex-after-blockquotes-hook
          'org-special-blocks-convert-latex-special-cookies)
 
-(defvar org-special-blocks-line)
+(defvar line)
 (defun org-special-blocks-convert-html-special-cookies ()
   "Converts the special cookies into div blocks."
-  ;; Uses the dynamically-bound variable `org-special-blocks-line'.
-  (when (string-match "^ORG-\\(.*\\)-\\(START\\|END\\)$" org-special-blocks-line)
+  ;; Uses the dynamically-bound variable `line'.
+  (when (string-match "^ORG-\\(.*\\)-\\(START\\|END\\)$" line)
     (message "%s" (match-string 1))
-    (when (equal (match-string 2 org-special-blocks-line) "START")
+    (when (equal (match-string 2 line) "START")
       (org-close-par-maybe)
-      (insert "\n<div class=\"" (match-string 1 org-special-blocks-line) "\">")
+      (insert "\n<div class=\"" (match-string 1 line) "\">")
       (org-open-par))
-    (when (equal (match-string 2 org-special-blocks-line) "END")
+    (when (equal (match-string 2 line) "END")
       (org-close-par-maybe)
       (insert "\n</div>")
       (org-open-par))
index ae12cee2abea02b5ae7c2e48a552c4a2a6e00e1e..08981b57e498762183c6f2978d7086205e9b47c8 100644 (file)
@@ -2526,8 +2526,13 @@ not overwrite the stored one."
                (replace-match
                 (save-match-data
                   (org-table-make-reference
-                   (org-table-get-remote-range
-                    (match-string 1 form) (match-string 2 form))
+                   (let ((rmtrng (org-table-get-remote-range
+                                  (match-string 1 form) (match-string 2 form))))
+                     (if duration
+                         (if (listp rmtrng)
+                             (mapcar (lambda(x) (org-table-time-string-to-seconds x)) rmtrng)
+                           (org-table-time-string-to-seconds rmtrng))
+                       rmtrng))
                    keep-empty numbers lispp))
                 t t form)))
        ;; Insert complex ranges
@@ -2663,8 +2668,8 @@ in the buffer and column1 and column2 are table column numbers."
 ;      (setq r2 (or r2 r1) c2 (or c2 c1))
       (if (not r1) (setq r1 thisline))
       (if (not r2) (setq r2 thisline))
-      (if (not c1) (setq c1 col))
-      (if (not c2) (setq c2 col))
+      (if (or (not c1) (= 0 c1)) (setq c1 col))
+      (if (or (not c2) (= 0 c2)) (setq c2 col))
       (if (and (not corners-only)
               (or (not rangep) (and (= r1 r2) (= c1 c2))))
          ;; just one field
index 0f13223d0c1a6c77964f237a696738861cb7c2f4..c2cc2354439018767217a4d66b182b9567455117 100644 (file)
@@ -6,7 +6,7 @@
 ;; Maintainer: Bastien Guerry <bzg at gnu dot org>
 ;; Keywords: outlines, hypermedia, calendar, wp
 ;; Homepage: http://orgmode.org
-;; Version: 7.8.08
+;; Version: 7.8.09
 ;;
 ;; This file is part of GNU Emacs.
 ;;
@@ -206,7 +206,7 @@ identifier."
 
 ;;; Version
 
-(defconst org-version "7.8.08"
+(defconst org-version "7.8.09"
   "The version number of the file org.el.")
 
 ;;;###autoload
@@ -2225,7 +2225,7 @@ property and include the word \"recursive\" into the value."
 (defcustom org-after-todo-state-change-hook nil
   "Hook which is run after the state of a TODO item was changed.
 The new state (a string with a TODO keyword, or nil) is available in the
-Lisp variable `state'."
+Lisp variable `org-state'."
   :group 'org-todo
   :type 'hook)
 
@@ -5427,7 +5427,8 @@ will be prompted for."
            (when (re-search-forward
                   (concat "^[ \t]*#\\+end" (match-string 4) "\\>.*")
                   nil t)  ;; on purpose, we look further than LIMIT
-             (setq end (match-end 0) end1 (1- (match-beginning 0)))
+             (setq end (min (point-max) (match-end 0))
+                   end1 (min (point-max) (1- (match-beginning 0))))
              (setq block-end (match-beginning 0))
              (when quoting
                (remove-text-properties beg end
@@ -5455,11 +5456,12 @@ will be prompted for."
                                     '(face org-block))) ; end of source block
               ((not org-fontify-quote-and-verse-blocks))
               ((string= block-type "quote")
-               (add-text-properties beg1 (1+ end1) '(face org-quote)))
+               (add-text-properties beg1 (min (point-max) (1+ end1)) '(face org-quote)))
               ((string= block-type "verse")
-               (add-text-properties beg1 (1+ end1) '(face org-verse))))
+               (add-text-properties beg1 (min (point-max) (1+ end1)) '(face org-verse))))
              (add-text-properties beg beg1 '(face org-block-begin-line))
-             (add-text-properties (1+ end) (1+ end1) '(face org-block-end-line))
+             (add-text-properties (min (point-max) (1+ end)) (min (point-max) (1+ end1))
+                                  '(face org-block-end-line))
              t))
           ((member dc1 '("title:" "author:" "email:" "date:"))
            (add-text-properties
@@ -5475,7 +5477,7 @@ will be prompted for."
           ((not (member (char-after beg) '(?\  ?\t)))
            ;; just any other in-buffer setting, but not indented
            (add-text-properties
-            beg (1+ (match-end 0))
+            beg (match-end 0)
             '(font-lock-fontified t face org-meta-line))
            t)
           ((or (member dc1 '("begin:" "end:" "caption:" "label:"
@@ -13422,8 +13424,7 @@ With prefix ARG, realign all tags in headings in the current buffer."
        ;; Get a new set of tags from the user
        (save-excursion
          (setq table (append org-tag-persistent-alist
-                             org-tag-alist
-                             (org-get-buffer-tags)
+                             (or org-tag-alist (org-get-buffer-tags))
                              (and
                               org-complete-tags-always-offer-all-agenda-tags
                               (org-global-tags-completion-table
@@ -13725,11 +13726,9 @@ Returns the new tags string, or nil to not change the current settings."
                  (condition-case nil
                      (setq tg (org-icompleting-read
                                "Tag: "
-                               (delete-dups
-                                (append (or buffer-tags
-                                            (with-current-buffer buf
-                                              (mapcar 'car (org-get-buffer-tags))))
-                                        (mapcar 'car table)))))
+                               (or buffer-tags
+                                   (with-current-buffer buf
+                                     (org-get-buffer-tags)))))
                    (quit (setq tg "")))
                  (when (string-match "\\S-" tg)
                    (add-to-list 'buffer-tags (list tg))
@@ -20775,11 +20774,12 @@ This version does not only check the character property, but also
 If the heading only contains a TODO keyword, it is still still considered
 empty."
   (and (looking-at "[ \t]*$")
-       (save-excursion
-         (beginning-of-line 1)
-        (let ((case-fold-search nil))
-          (looking-at org-todo-line-regexp)))
-       (string= (match-string 3) "")))
+       (when org-todo-line-regexp
+        (save-excursion
+          (beginning-of-line 1)
+          (let ((case-fold-search nil))
+            (looking-at org-todo-line-regexp)
+            (string= (match-string 3) ""))))))
 
 (defun org-at-heading-or-item-p ()
   (or (org-at-heading-p) (org-at-item-p)))