Arthur Miller writes: If anyone is interested, this is how I understand the org TODO per file parsing: The file is parsed in org-collect-keywords-1 in org.el. Each #+TODO: line is lumped into one single string, which is a problem when strings with spaces a concerned. Multiple #+TODO: lines will end up in final multiple strings added into an alist which has a first element a "TODO" string. The right thing would be to parse multiple strings per each #+TODO: line. Now the org-collect-keyword-1 is not a trivial one, so it would take me quite some time to understand, so I'll pass. The thing I did that worked for me is wrong super-hackish thing, just an experiment, so to say. I have simply refactored the code where the string obtained from org-collect-keywords is parsed, which is the very last part of org-set-regexps-and-options, where main action seems to take place. That let's me do what I wanted. It will completely replace whatever was specified with #+ syntax, and the fontification won't be done either. Also if file is reverted than #+ will completely replace what was set with lisp. So not a clean thing, probably nothing to be used by anyone, but it does what I roughly need for my init file :-).