My org-mode TODO keywords are set as follows:

(setq org-todo-keywords
      '((sequence "NITPICKING(!)" "NITS_SENT(!)" "NITS_DONE(!)" "PROOFS_SENT(!)"
          "ACS_DONE(!)" "|" "READY(!)")))

I have a headline that starts in the NITPICKING state. Here is what happens:

  • I press C-c C-t to call org-todo. State changes from NITPICKING to NITS_SENT, as it should, but syntax highlighting gets lost for that headline.
  • I press C-c C-t again, it puts me back in the NITPICKING state, with correct highlighting.
  • I press C-c C-t again, it puts me in the NITS_SENT state, now with correct highlighting.
  • Further calls to org-todo work correctly.

So it's just the first transition that's getting screwed up. Here is what the timestamps look like:

  - State "NITS_SENT"  from "NITPICKING" [2016-05-23 Mon 13:27]
  - State "NITPICKING" from ""           [2016-05-23 Mon 13:26]
  - State "NITS_SENT"  from "NITPICKING" [2016-05-23 Mon 13:25]

It works properly if I use buffer-local keywords instead of defining org-todo-keywords in my init file. But this is the global setup that I need, and I'd prefer to do it the way I've done it.

Is there something wrong with my code? Why would only get messed up for a single state?

Edit (in response to @nispio):

This behavior occurs even when I start emacs with emacs -q and then manually evaluate the setq command above.

After some further experimentation, it also seems that the same behavior occurs regardless of the starting state. So, for instance, if I open a .org file with a headline in the ACS_RECEIVED state and execute org-todo, it puts me in the next (ACS_ASSIGNED) state, but without syntax highlighting; the next execution of org-todo puts me in the initial (NITPICKING) state, with proper syntax highlighting, and it works correctly from there.

Further edit: the problem is that the headlines were empty apart from the TODO state. I wanted the headline to be empty to make my agenda view cleaner, since the name of the org file together with the TODO state is all the info I need at a glance. But it seems that having an empty headline means that the TODO state is interpreted as the title, which is why the first call to org-todo sets me in the initial state.

So, I would like to refine my question to the following: is there any way to have headlines that are empty apart from the TODO state?

  • Can you re-produce it with emacs -q? It works as expected for me.
    – nispio
    May 23 '16 at 21:52
  • @nispio Yes, the same thing happens with emacs -q; I've edited the post to reflect this, and added further information.
    – MTS
    May 24 '16 at 17:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.