This patch improves the internal handling of the large number of
export options that Org-mode has. In particular, it now defines a
single constant, `org-export-plist-vars' that contains the full list
of options, and how these can be accessed through variables, and
through the #+OPTIONS line. Before the patch, there used to be a
separate list or the OPTIONS handling, which has gotten out of sync.
This now no longer can happen.
Also, this patch adds two new variables, `org-export-with-priority',
and `org-export-with-todo-keywords', which can be used to turn the
export of TODO keywords and priority cookies on and off, so that these
can simply disappear and not be shown in the exported file. In fact,
the default for the priority cookie is to remove it.
There were bugs in the mapping API, pointed to by Samuel Wales:
Manual says:
The following example counts the number of entries with TODO keyword
WAITING, in all agenda files.
(length (org-map-entries t "/+WAITING" nil 'agenda))
Org says invalid function for the string.
First of all, the example in the manual was wrong, the "nil" should be
gone. Second, the mapping function did not return all results in a
list, so that `length' could not count them.
This patch fixes these issues.
In addition to "<now>", "<today>", "<yesterday>", and
"<tomorrow>", there are more special values accepted now in
time comparisons in property searches: You may use strings
like =<+3d>= or =<-2w>=, with units d, w, m, and y for day,
week, month, and year, respectively
Thanks to Linday Todd for this proposal.
So far, the only way to select tags for inheritance was to
allow it for all tags, or to do a positive selection using
one of the more complex settings for
`org-use-tag-inheritance'. It may actually be better to
allow inheritance for all but a few tags, which was difficult
to achieve with this methodology.
This patch introduces a new option,
`org-tags-exclude-from-inheritance' which allows to specify an
exclusion list for inherited tags.
This patch does a lot of things. First, it makes sure that the tags
transferred to the agenda as text properties on each line are do carry
information about there origin (in the form of an `inherited' text
property). Then it modifies the function creating agenda lines so
that inherited tags will be listed and identified as such in the
agenda.
This new feature can be turned off with a new variable,
`org-agenda-show-inherited-tags'.
This file implements a special function to copy text from a w3m buffer
in a way that when the text is yanked back into an Org-mode buffer,
the links will be translated to Org syntax.
This cleans up the implementation of the timer. Most important change
is that, after starting a time list with `C-c C-x -', you can then
simply use M-RET to add new items, which is addictive!
This patch implements a relative time for taking timed notes, useful
for example while watching a video, or during a meeting which is also
recorded. Here are the new commands:
- `C-c C-x .' ::
Insert a relative time into the buffer. The first time
you use this, the timer will be started. When called
with a prefix argument, the timer is reset to 0.
- `C-c C-x -' ::
Insert a description list item with the current relative
time. With a prefix argument, first reset the timer to 0.
- `C-c C-x 0' ::
Reset the timer without inserting anything into the buffer.
By default, the timer is reset to 0. When called with a
`C-u' prefix, reset the timer to specific starting
offset. The user is prompted for the offset, with a
default taken from a timer string at point, if any, So this
can be used to restart taking notes after a break in the
process. When called with a double prefix argument
`C-c C-u', change all timer strings in the active
region by a certain amount. This can be used to fix timer
strings if the timer was not started at exactly the right
moment.
When starting the publishing process with
`org-publish-current-project' from a file that is located in a project
that is also a component of a parent project, this patch now makes
sure that the entire parent project is published instead.
When the export skips the text before the first headline, we now
include the comment line before the first headline, if any.
This makes sure that we can specify an anchor for this headline.
This patch defines a new minor mode, `org-remember-mode', which is
turned on when Org-mode is used to handle a remember buffer. This
provides a safe way to modify keybindings (in
`org-remember-mode-map'), without overwriting keys in `org-mode-map'.
Since Org put remember buffers into Org-mode, remember-mode-map will
be entirely ignored.
There was a bug in the implementation of the "<today>" tag for time
comparison during property matching, and new tags "<yesterday>" and
"<tomorrow>" have been introduced.
Patch by Piotr Zielinski.
This patch implements the possibility to translate links.
It can be useful if use both planner and Org-mode, if you sometimes
copy text from one side to the other and you do not want to worry
about link syntax. This patch allows links created with planner to
function correctly in Org-mode. I would probably be simple to
implement the reverse conversion in planner as well.
This patch is a first shot at this functionality and very likely can
be improved.
Org's `org-yank' now identifies itself as being `yank' by setting
`this-command', and by making sure that the mark is set correctly. In
this way, `yank-pop' will work correctly after using `C-y' in an
Org-mode buffer. Org-mode does not have its own implementation, to
`yank-pop' will insert content plainly, without adjusting tree levels,
and without folding.
Samuel Wales pointed out that `yank-pop' doe not work anymore.
Org-mode's `org-yank' command is used as a replacement for the normal
`yank' command. It differs by giving special treatment to subtrees or
sets of subtrees when yanking them, by adjusting the level to fit the
outline, and by folding the trees after the yank.
This patch does fine-tune this behavior.
First of all, if any prefix argument is given to the command, it
immediately hands over the action to the standard `yank' command. In
particular, you can use `C-u C-y' to yank as-is, with the only minor
side effect that the cursor will end up at the beginning of the yanked
text.
Secondly, the folding of the yanked trees will only happen if there is
no text directly after the insertion point that would be swallowed by
the folding process. This was confusing in the past and is much
better now, with a message announcing that folding has been
suppressed.
The refile command allows to move a subtree to under some other
heading, in the current file or even in a different file.
Sometimes one has a number of sibling subtrees that should all be
refiled to the same location. This patch implements a simplification
for this process. You can mark the region of subtrees (using
transient-mark-mode in required for this) and then move them all with
a single command.
Org-mode produces summaries of clocked items in the form of Org-mode
tables. This patch implements the possibility to define formulas that
should be applied to the clock tables, in order to do additional
analysis.
Formulas for clock tables are supported in two ways.
First, a formula can simply be added by hand to a table. Part of this
patch makes sure that, when the previous version of the table contains
a #+TBLFM: line, it will be copied to the new version.
Secondly, the clocktable definition allows a new parameter
`:formula'. The string value of this parameter will be installed as
the formula line for the table. If a formula parameter is given, it
will overrule any previous formula line.
As a special case, using the symbol `%' as the formula will install a
formula that will compute the fraction of total time that was spent in
a subtree.
In both cases, the formulas will be immediately evaluated after the
table has been created.
Jurgen Defume asked for a way to display only logging information in
the agenda. This patch implements such a possibility. It works by
calling `org-agenda-log-mode' (bound to `l' in the agenda) with a
double prefix arg. This sets the variable `org-agenda-show-log' to a
special value `only' which is then interpreted by the agenda-creating
functions.
Org records (depending on setup) various information about progress
achieved with projects and tasks. It can record when an item is done
(when it is "closed"), it can record time spent working on these
entries (clocking), and it can record state changes.
In the daily/weekly agenda, turning on logbook mode with the `l' key
will lists the tasks closed or clocked on a day.
This patch implements showing recorded state changes in the agenda
logbook. By default, showing state changes is not turned on. But you
can configure the new variable `org-agenda-log-mode-items' to trigger
inclusion of state changes. An alternative way is to press `C-u l' in
the agenda, to temporarily force inclusion of all possible entries
(closed, clock, state) into the agenda display.
In passing, this patch renames the function `org-agenda-get-closed' to
the now more appropriate `org-agenda-get-progress'. The old name
continues to be available as an alias, but its use is deprecated.
Org-mode uses a special setup with a number of different customization
variables to specify how a file should be opened when following a
:file:..." link with `C-c C-o'. By using a `C-u' prefix, it was
possible to overrule the customized setup and to force opening the
file in Emacs.
Samuel Wales requested to amend this process, so that a double prefix
argument would do the opposite: force opening the application *outside*
of Emacs, using a system default application. This is what this patch
implements.
Internally this works through a new entry in system specific constants
`org-file-apps-defaults-gnu', org-file-apps-defaults-macosx', and
`org-file-apps-defaults-windowsnt'. The new entry has the car
`system' and specifies the command that should be used for the double
C-u calls. As before, the user option `org-file-apps' can overrule
these default settings.
Note that all this only applies to following "file:" links, and does
not make a difference for, for example, "http:" links.
Rick Moynihan noticed that a function name in an example does not
reflect correctly the purpose of this function, which does skip all
entries that do not have a WAITING tag.
This patch renames the function to remedy this situation.
Org-mode does sometimes included CSS definitions directly
into an exported XHTML file. To pass validation tests
for XHTML, these sections need to be wrapped in
order to pass as CDATA, not PCDATA. This patch
(written by Sebastian Rose) does implement this change.
It also fixes some typos.
On 28 Oct 2008, Eric Schulte wrote:
> Hi Charles, The patch looks great, I vote we drop it 'as is' into
> org-plot.el. The only enhancement that comes to mind would be to
> expose the `time-ind' variable as a plot option. Allowing users to
> specify different time formats, but really if they're that
> sophisticated in their use of gnuplot, then they can do that on their
> own through the `set:' option. Thanks for the addition! -- Eric
If I understand you correctly, then what we want to expose is the
"timefmt" that is put into the data file and then passed to gnuplot.
The following patch is a complete one against current which adds this
(it works for me, at least), and documents the new +PLOT option
behavior.
The one thing I'm not sure about is my method of passing the timefmt
parameter all the way into the temp file creation function. I made a
buffer-local variable there to do it. That seemed the least intrusive
way to accomplish this, but it seemed like poor practice. Thoughts?
You know, I really ought to allow a person to customize this variable (I
mean, using customize).
------------------------------------------------------------------------
Changes in origin/master
Modified doc/org.texi
C-c C-c still works with the cursor in a headline,
but I wanted a special binding as the default, mainly
in order to be able to set tags in a remember buffer.
This used to be Einstein's quote, but this is already in use for
demonstrating #+BEGIN_QUOTE. I've picked up AlexSchroeder's Haiku
as found here: http://www.emacswiki.org/cgi-bin/wiki/EmacsHaiku
trees that are marked with the ARCHIVE tag and even archive files
can now temporarily be included into an agenda view.
Press `v' in the agenda to get trees with ARCHIVE tags.
Press `C-u v' to get archive files included.
This only lead to a contributed file, this is neither robust nor fast.
But maybe throwing the existing code into a contrib file
will make someone come up with an idea.
Now we have separate ChangeLog files in the lisp and doc
directories. Also, in the lisp directory, all the old changes
have moved into ChangeLog.01.
These changes will help me to simplify synchronization with Emacs.
The #+STARTUP etc lines that define settings on a per-file
basis can now be collected in a separate file and included
with a line:
#+SETUPFILE: "/path/to/setup.org"
This has been a frequent request in the past, now it is
finally possible.
These are implemented as part of plain lists, so a leading
"-" or "+" is still needed. Maybe this is not the most pretty
implementation, but it works without rewriting the quite
complex list formatting code. So all the list formatting
continues to work just fine. The description tag
is highlighted in bold, so still easy to spot.
The HTML exporter does export these already, the LaTeX
exporter still needs to be adapted.
Clock-related markers and agenda markers used to get lost
when editing a file using cut and paste. Now some cut
and past operations move the markers with them. In particular,
structure editing like moving subtrees up and down.
Also, when exiting a remember buffer with a running clock, the clock
can now be moved along with the entry to the target location.
Recently clocked tasks are now remembered as well as a default
task and an interrupted task.
There is no automatic clock-in yet.
Also, a number of bug fixes have sneaked into this patch,
sorry for the mess.
You can slice a single table full of calculations in different ways
into separate destinations. Or you can format the table differently.
There are many fun and exciting possible uses.
A fancier implementation would scan the document *once* for the
set of destinations. That could help implement another function
to update all destinations from all sources.
Refactor orgtbl-to-generic; explicitly separate heading from body.
Support last-line specializers.
Allow functions for some orgtbl parameters.
Add a :remove-nil-lines parameter to orgtbl-to-generic.
This is a new display mode in the agenda view. It appends a clock
table to the daily/weekly agenda view that covers clocked time
for the time span shown in the agenda, and also limited to the
files that were used to create the current view.
The default is now taken from the entry at point or the first
entry in the agenda, an can originate from a property, from
a #+COLUMNS line, or from the variable `org-columns-default-format'.
I have found it handy to track these, they represent standards in some
way. The other aspell files change too randomly and often to bother
tracking so they are just ignored.