Org-mode has many context-sensitive keys. A new hook system now
allows add-ons to add functionality to these keys for contexts that
are special for the add-on.
For example, if an add-on wants to use C-c C-c in a special context,
if must add a function to `org-ctrl-c-ctrl-c-hook' that will check for
the context and run its command when the context is present.
Selecting files for publishing was strictly based on extension.
Richard Klinda provided this patch to allow the symbol `any' as an
indicator to actually take all files in a directory.
Wanrong Lin writes:
2. Can we put all of those state change history logging messages
into a drawer like "STATE-HIST" (when the drawer is defined in
org-drawers), so it is less intrusive in the file?
Yes we can. This commit provides this functionality. It introduces a
new drawer, LOGBOOK. When the variable
`org-log-state-notes-into-drawer' is set, state change time stamps and
notes will go into this drawer, or another one specified by that
variable.
When the variable org-log-states-order-reversed was nil, so that notes
would be appended to the list of notes, the indentation of the item
was wrong. This commit fixes the problem.
Wanrong Lin writes:
Right now in the HTML export the TODO keywords have either
class="todo", or class="done". That loses all the face properties
in the original TODO keywords. I think the TODO keywords faces are
important visual aids to differentiate different types of TODO
items, so I just wonder whether it is possible to keep the faces
in the HTML.
This makes sense. This commit adds, to each TODO keyword, an
additional class named after the keyword. For example:
<span class="todo WAITING">WAITING</span>
So each todo keyword gets class "todo" or "done" depending on which
general type it is. And in addition it gets itself as class.
So go to your CSS file and configure like this:
.todo { font-weight:bold; }
.done { font-weight:bold; }
.TODO { color:red; }
.WAITING { color:orange; }
.DONE { color:green; }
Thanks to Sebastian Rose for the multiple-classes trick.
Wanrong Lin writes:
My TODO sequence is set up as following:
(setq org-todo-keywords '((sequence "TODO(t)" "STARTED(s!)"
"WAITING(w@/!)" "MAYBE(m/!)" "DELEGATED(g@/!)"
"DEFERRED(d!/!)" "HOLD(h!/!)" "|" "DONE(x)" "CANCELED(c)")))
The state change logging is great, but I wonder whether we can
further improve it:
1. Can we also include the original state in the log message?
i.e.: instead of having - State "DEFERRED" [2009-02-11 Wed 11:38]
we can have
- State "DEFERRED" from "HOLD" [2009-02-11 Wed 11:38]
The message will be clearer, and useful even when somebody edited
the TODO keyword in place without using the "org-todo" command
(in that case, simply looking at all the "destination states" in
the log message does not give us the right information).
This strikes me like a good idea, so I have implemented it with this
commit.
Consider a file with 2 lines:
------------------
**** heading
------------------
Place the cursor at line 2 (where you can type). Then use C-c C-x C-i
to start a clock.
You have now 3 lines:
------------------
**** heading
CLOCK: [2009-02-07 sb 01:06]
------------------
However, the cursor is still placed at line 2, like before. I think
it would be more useful if it were moved to line 3 so that you can
start writing right away, just as before. This saves you the C-n
needed to move again to a blank line.
This commit implements exactly this request.
Daniel Clemente noticed that the clock drawer, when it is created for
the second clock entry, will swallow a plain list item after it,
because it thinks it might be a clock note.
This commit makes this function check for indentation. If the plain
list item is indented less than the last clock line, it will be
assumed that it does not belong to the clocking line, and the drawer
will not swallow the item.
Now any line like
#+XYZ_TODO:
will be assumed to define some kind of TODO chain. If the handlers in
`org-todo-setup-filter-hook' do not do anything with this sequence, it
will be treated as `sequence'.
William Henney writes:
Consider a structure like this:
* first
** second
*** third
**** fourth
Currently, if I export the "third" sub-tree to html (via "C-c @
C-x C-e h"), then "third" becomes an <h1> heading, but "fourth"
becomes an <h5> heading. I would rather it were <h2>, i.e. that
all heading levels be relative to the root of the sub-tree. Is
there any way to achieve this?
This was not possible so far, but this commit measures the first
headline of the subtree and applies an offset to all level values.
Hsui-Khuern Tang writes:
I have a table where one column consists of inactive dates, such as
this:
| Date | OK? |
|------------------+-----|
| [2009-01-30 Fri] | x |
| [2009-01-27 Tue] | x |
| [2009-01-28 Wed] | x |
I can't sort the table by that column. If I change the dates to
active, then sorting (by time) works fine. Is this behavior
intentional?
Yes, intentional, because the same routine also does sorting of
entries and should prefer active time stamps. However, I realize that
we can still look for an inactive time stamp when no active one can be
found. This is what this commit implements.
Patch by Andrew Hyatt
Andrew Hyatt writes:
I like to schedule items I'm supposed to be working on, so I like
when I complete a task that the next sibling task gets the
schedule from the previous one. This implements that kind of
workflow with the org-depend contrib package.
I've also added a few methods to org.el to make working with
schedules & deadlines easier.
When there were multiple cookies in a headline, the counting would be
double. Also the hook got called always, even if no cookie was
present.
Fixed now.
Turns out a number of people set their variables too late so that
activating dependencies does not work correctly. We now double-check
in the mode hook that everything is in order.....
This causes problems in tables.
You have now two ways to make verbatim things. Use ~xyz~ or =xyz=
depending on whether ~ or = might occur in the string......
When org-depend.el is loaded, running the blocker hook will already
toggle a tag. However, when dimming the agenda, we do not want that.
Reported by Dan Griswold.
The id for the footnotes div is now called "text-footnotes", not
"footnotes-text", to be more consistent with other divs used in
Org-mode.
Requested by Sebastian Rose.
Using `C-c C-x C-b' in a headline now again toggles all checkboxes
below hat headline. This feature got lost during a recent overhaul of
this function.
Reported by Chris Randle.
This commit adds a key (`C-c C-x o') to toggle the ORDERED property of
a tree. And it adds menu entries for doing this, which also reflect
the current state of the tree.
When a line now contains several statistics cookies, all of them will
be updated.
Jari Aalto submitted a patch to this effect which I did end up not
using. Thanks anyway!
David Bremner writes:
I have a clocktable that begins like this.
#+BEGIN: clocktable :maxlevel 2 :block 2009-W05 :scope agenda-with-archives
Clock summary at [2009-01-27 Tue 17:15], for week 2009-W04.
[contents snipped]
#+END:
Whatever week I put in :block, it puts one less in the title. It
seems actually gather the clock data from the right week, but the
title is wrong? Or I misunderstand something as usual :-).
There was a problem wit the week starting date.
A user setting of
(setq org-show-entry-below t)
could overrule a visibility property with value FOLDED. This commit
fixes this by turning off the above setting for the context of setting
startup visibility.
I have changed my mind and turned off shift-selection support again by
default, because it causes confusing behavior, sometimes calling an Org
command and sometimes doing shift selection. The default behavior is
now:
- in special contexts, execute Org commands
- outside special contexts, create an error that will point users to
configure the variable `org-support-shift-select'. Hopefully that
will make them read the docstring and then decide for themselves
what to do.
Emacs 23 introduces `shift-selection-mode', and even turns it on by
default. Therefore, it is fair to assume that users of Emacs 23 will
expect to be able to select a region by holding down shift will moving
the cursor. This conflicts with the use of shifted cursor keys in
Org-mode for other purposes, in particular to "change the item under
the cursor", like it is done for time stamps, item bullet types, TODO
keywords and priorities.
This commit tries to support `shift-selection-mode' as much as possible,
while retaining these valuable commands keys for Org-mode. The
following things are changed:
1. The range of contexts where Org's commands do act is reduced.
- S-up and S-down no longer jump to the previous and next plain list
item - you can use the paragraph commands C-up and C-down for this
quite well.
- S-left and S-right only change the bullet type of a plain list
item when the cursor is *exactly* on the bullet, not just anywhere
in the item line.
2. When a S-cursor key is used outside a special context, a region is
started or extended.
3. When a region has already been started, it will be continue to
extend even if the S-cursor keys move the cursor into a special
context.
4. If you want S-cursor selection to work in headlines as well, you
can set the variable `org-support-shift-select' to
`even-in-headlines'. Then you need to rely on `C-c C-t' to set
TODO keywords, and on `C-c ,' to set priorities.
If you want everything to behave the way it was, set
`org-support-shift-select' to nil.
There were two bugs:
1. Timestamp processing did not honor the setting of
`org-export-with-timestamps' in the text before the first
headline.
2. When `org-export-with-timestamps' was nil, time stamps were removed
even in tables. I think this is incorrect, so in tables, time
stamps are now never removed.