Text inside tables did not receive the full treatment of handling sub-
and superscripts, and of special character quoting like %, &, and {}.
This patch does fix this, but I am worried that I am overlooking the
true reason why Bastien did switch off these conversions. We'll see
if and what this will break.
Exporting tables to LaTeX suffered from the problem that Org tables
are often long, but that the tabular environment in LaTeX cannot
handle long tables. This patch fixes this issue.
LaTeX export can now deal with very long tables, by setting an option
in the "ATTR_LaTeX:" line. Also, you can specify the alignment by
hand. Here is an example:
Also, table export now correctly deals with tables that start with a
hline. In such a case, also the LaTeX version will have this extra
hline before the first line.
This patch introduces three improvements to refile target construction,
which should speed these functions up significantly.
1. A faster way to move up a level in the outline hierarchy
2. A better way to construct the outline path, in the case
that the command is scanning the entire hierarchy anyway
3. Avoid comparing the true-names of files.
The last data line in a table is often a line with important data, for
example sums of a column. In tables with varying length, the row
number of this line is constantly changing, which makes it hard to
write programs creating tables and then installing formulas.
This patch introduces @0 as a special reference to the last row, so
that @0$3 would be the field in the last row, 3rd column.
Unique identifiers for entries can now be used more efficiently.
Internally, a hash array has replaced the alist used so far to
keep track of the files in which an ID is defined. This makes it
quite fast to find an entry by ID.
There is now a new link type which looks like this:
id:GLOBALLY-UNIQUE-IDENTIFIER
This link points to a specific entry. When you move the entry to
a different file, for example if you move it to an archive
file, this link will continue to work.
The file /org-id.el/ contains an API that can be used to write
code using these identifiers, including creating IDs and finding
them wherever they are.
Org has its own method to create unique identifiers, but if the
system has /uuidgen/ command installed (Mac's and Linux systems
generally do), it will be used by default. You an also select
the method by hand, using the variable =org-id-method=.
If the ID system ever gets confused about where a certain ID is,
it initiates a global scan of all agenda files with associated
archives, all files previously known containing any IDs, and all
currently visited Org-mode files to rebuild the hash. You can
also initiate this by hand: =M-x org-id-update-id-locations=.
Running this command will also dump into the =*Messages*= buffer
information about any duplicate IDs. These should not exist, but
if you /copy/ an entry with its properties, duplicate IDs will
inevitably be produced. This is unavoidable in a plain text
system that allows you to edit the text in arbitrary ways, and a
portion of care on your side is needed to keep this system clean.
The hash is stored in the file =~/.emacs.d/.org-id-locations=.
This is also a change from previous versions where the file was
=~/.org=id-locations=. Therefore, you can remove this old file
if you have it. I am not sure what will happen if the =.emacs.d=
directory does not exists in your setup, but in modern Emacsen, I
believe it should exist. If you do not want to use IDs across
files, you can avoid the overhead with tracking IDs by
customizing the variable =org-id-track-globally=. IDs can then
still be used for links inside a single file.
IDs will also be used when you create a new link to an Org-mode
buffer. If you use =org-store-link= (normally at =C-c l=) inside
en entry in an Org-mode buffer, and ID property will be created
if it does not exist, and the stored link will be an =id:= link.
If you prefer the much less secure linking to headline text, you
can configure the variable =org-link-to-org-use-id=. The default
setting for this variable is =create-if-interactive=, meaning
that an ID will be created when you store a link interactively,
but not if you happen to be in an Org-mode file while you create
a remember note (which usually has a link to the place where you
were when starting remember).
Tables, and Hyperlinks that represent inlined images, can now be
equipped with additional information that will be used during
export. The information will be taken from the following special
lines in the buffer and apply to the first following table or
link.
- #+CAPTION: :: The caption of the image or table. This string
should be processed according to the export backend, but
this is not yet done.
- #+LABEL: :: A label to identify the figure/table for cross
references. For HTML export, this string will become the
ID for the `<div class="figure">' element that encapsulates
the image tag and the caption. For LaTeX export, this
string will be used as the argument of a `\label{...}'
macro. These lables will be available for internal links
like `[[label][Table] ]'.
- #+ATTR_HTML: :: Attributes for HTML export of image, to be
added as attributes into the `<img...>' tag. This string
will not be processed, so it should have immediately the
right format.
- #+ATTR_LaTeX: :: Attributes for LaTeX export of images, to
be inserted into the optional argument of the
`\includegraphics[...]{file}' command, to specify scaling,
clipping and other options. This string will not be
processed, so it should have immediately the right
format, like `width=5cm,angle=90'
For LaTeX export, if either a caption or a label is given, the
element will be exported as a float, i.e. wrapped into a figure
or table environment.
Xerxes Folupa writes:
> I spotted a little inconsistency in the way Org strips tags when
> processing #+begin_verse ... #+end_verse, and #+begin_quote
> ... #+end_quote blocks, compared with other literal blocks that strip
> superfluous <p> tags correctly (e.g. #+html)
[...]
> Additional question: is the space before the <br/> in verse blocks a
> design decision?
This patch fixes these issues.
Tassilo Horn asked for this, because he finds the default behavior of
silently choosing a different row too confusing. I actually do agree.
The main use of this feature was running averages, if you need this
feature, you can customize the variable
`org-table-error-on-row-ref-crossing-hline'.
Moving trees up or down with XEmacs caused a problem when the tree is
at the beginning if the buffer or narrowed region. This patch
protects the relevant calls to outline-flag-region so that they are
only executed if the range is valid.
Samuel Wales writes:
> It would be really nice if you could set tags to different
> faces the way you can with todo keywords.
>
> For example, you could set :urgent: to a bright color. Or
> set a face for all contexts.
This patch add a new customization variable `org-tag-faces' that can
be used to specify such faces. The rest of the patch implements these
new faces in Org-mode buffers as well as in the agenda.
It seems that CSS and Java-script stuff should be quoted in a very
strange way in order to make sure that the resulting file functions
correct in current browsers *and* validates against various XHTML and
XML standards. To be honest, the quoting technique seem really
strange, but Sebastian Rose argues, that this is the way to handle
this issue.
Gnus uses w3m to wash HTML messages and installs w3m-minor-mode-map in
these buffers. Therefore, this patch makes sure that the special copy
command that converts HTML links to Org-mode links also gets installed
into the minor mode map.
This is as yet untested.
Calling `org-archive-to-archive-sibling' caused problems when used
several times in a row. The new killed subtree would be appended to
the current head of the kill-ring, instead of being pushed there. The
reason for this is that the command `kill-region', which is called by
`org-cut-subtree' changes the variable `this-command', so that during
the next archive command, `kill-region' will think that the previous
command was also a kill and do the append.
Normally this is wanted, to make sure that several kill commands
create one big yank string. But in this case it has to be avoided.
The patch fixes the problem by let-binding (and therefore protecting)
the value of `this-command' around the call to `org-cut-subtree'.
Reported by Bernt Hansen.
Harri Kiiskinen suggested that it might be useful to make the LOCATION
property an inherited property during iCalendar export. In this way
you can have set the LOCATION for a whole set of items by setting it
only in the parent.
While this will slow down iCalendar export for large files, I think it
can be quite useful. This patch does implement the basic code needed
for this functionality. However, you still need to tell Org that
LOCATION should be inherited, by setting org-use-property-inheritance.
If you set it to t, beware that this may trigger a significant
slowdown when creating the match view in the agenda. So it may be
better to set this variable to
(setq org-use-property-inheritance '("LOCATION"))
instead.
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 key needs special treatment, because it needs to work *outside*
tables. The patch introduces a special command to call the
creation/conversion function if there is no conflicting binding to
`C-c |' outside of orgtbl-mode.
S-SPC did lead to an error in orgtbl-mode, because there is no binding
to this key. Now orgtbl-self-insert-command falls back on calling
self-insert-command for such cases.
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.
The creation of an automatic site map in org-publish with the
:auto-index and :index-filename parameter does exclude the index
file name from being added to the index. There was a bug which would
exclude this file name also in all subdirectories in a project. This
patch switches the comparison from looking at file names only to
looking at the complete path.
RET did fail in orgtbl-mode, if the cursor was at the beginning of the
buffer. Now it opens a new line whenever the cursor is at the
beginning of a line, and that includes the beginning of the buffer.....
Org-mode still has a few operations that do not work well when the
first line of a buffer is a headline. One was constructing the clock
table, but this one is eliminated by this patch.
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.
"\\" at the end of a line marks forces line breaks for HTML and LaTeX
export. ASCII export does preserve lines anyway, but these line break
indicators might still be present and need to be removed.
Reported by Rustom Mody.
This patch introduces a new variable,
`org-list-two-spaces-after-bullet-regexp'. It can be a regular
expression matching plain list bullets. When it matches, changing the
bullet type will introduce two spaces instead of one after each
bullet.
For example,
(setq org-list-two-spaces-after-bullet-regexp "[.)]")
will make two spaces after "1." and "1)".
This patch compacts the persistence code. It also make sure that no
variables outside Org's name space are created. Finally, it makes
sure that the resumed clock is not hidden after a restart of Emacs.
Saving the clock history and the running clock could lead to pointers
to non-existing buffer, or to dired buffers of directories. This
patch implements more consistency checks.
It also allows a new value for `org-clock-persist'. When this is
`clock', only the running clock, but not the entire clock history
is saved.
Commands that modify the bullet style of a plain list, or that
renumber such a list may lead to changes in the width of a bullet.
The indentation of the lines below such a bullet is now automatically
adapted.
Also fixes a bug in bullet style cycling.
This removes the ambiguous description that might lead org users
to try to set this variable without a '::' separator. Without
the :: separator C-c C-x C-S fails with
Invalid 'org-archive-location'
Tassilo Horn writes:
here's the promised refactoring of org-gnus.el:
- Rename org-usenet-links-prefer-google to org-gnus-prefer-web-links
- Make that option work for gmane
- Only make weblinks if the article is in a newsgroup
- Only make weblinks if the article has no X-No-Archive header
There is little drawback:
- Gnus stored some headers in an array and makes them instantly
available. Unfortunately that doesn't apply to X-No-Archive, so I
have to select and widen the article buffer and parse anew.
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.
do completion does not work well with values including white space,
which means we cannot use it in completion of values in remember
templates. This patch turns it off for this application.
Report by Richard Riley.
When ID's are created, Org tries to remember in which file the id is
located. However, if an ID is created in a remember buffer, no file
is known. This patch makes sure that this condition does not lead to
an error.
When an org-remember template inserts a property, the template-creating
function tries to support the user by retrieving a list of allowed
values to facilitate completion. So far this was done by getting the
property with inheritance, ignoring that the cursor in the target file
buffer may not be in an entry at all. So now we just look at the global
and file lists of allowed values.
Reported by James TD Smith.
Michael Ekstrand wrote:
I've been trying to work with links to man pages in
Org (using org-man.el). When I try to create a link to a
Perl module in the File package namespace, however,
`org-insert-link' tries to do its same-file link detection
and winds up breaking the link. The result is that the link
man:File::MimeInfo
gets rewritten to
file::MimeInfo
Naturally, this isn't what I want. Looking at
`org-insert-link', it seems that the problem may be that its
same-file link detection is matching 'file:' at
beginning-of-word, which it is in this case. In the general
case for which 'file:' detection is being used, is there a
reason to match against `\<' rather than `^' or
`^[[:space:]]*'? Changing to one of the latter two
expressions would, I believe, keep it From rewriting these
links I am trying to create.
Michael is right, and I have made this change.
The face `org-agenda-column-dateline' can be used to make datelines
with summaries look different from other column view lines.
Requested by George Pearson.
A link to an image can function as the description part of a link, to
create a clickable image. The corresponding image tag was
erroneously processed like normal text. This patch protects such
descriptions from processing.
Reported by Richard Riley.
If you set the variable `org-completion-use-ido' to t, and if you have
ido-mode turned on, most instanced of completion in Org-mode will use
ido-complete.
Thanks to Samuel Wales and Eric Schulte for patches to this effect.
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.
Org allows to define invisible anchors in a document in comment lines
like
If such a line is directly before or after a headline, previously this
anchor was removed, and all references to it were replaced with
references to the anchor that the headline had anyway.
Matthew Lundin pointed out that this makes it impossible to have
permanent links to headlines that can also be used from outside the
current page.
This patch changes his situation by adding the additional targets as
empty anchors to the section heading. If works by creating, during
preprocessing, an alist with targets that do have aliases. During
publishing, these aliases are looked up and converted into anchors.
In LaTeX export, these additional targets become additional labels.
The was a faulty regular expression in this function which never
matched, causing creation of a new picture area to mess up and start
the new area at the end of the previous line instead of the beginning
of the current.
Reported by Bernt Hansen.
This is a bugfix. When the number of headline levels was set to zero,
or if there was no heading at all in the export, the final closing
</div> should not be present.
This sets the bookmark org-remember-last-stored to the location
of the stored remember note when it is filed using C-1 C-c C-c
(the org-refile interface)
Both org-refile-last-stored and org-remember-last-stored bookmarks
will point at the same place after saving the remember buffer.
This makes jumping to the last stored remember note more consistent
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.
iCalendar export has now improved compliance with RFC 2445.
Now all occurrences in data fields of the double quotes are replaced
by two single quotes, and any fields containing comma, colon, or
semicolon are quoted by surrounding them with double quotes.
Org sometimes hits a "Before first heading" error. This error happens
when `outline-back-to-heading' is called before the first heading in a
buffer. In normal use, this is something easy to fix, because of
course you know where you are and you can identify the problem.
However, when Org scans many different buffers, for example to collect
agenda entries, you may not be able to tell easily where this error
happened. This patch introduces a wrapper around
`outline-back-to-heading', with improving the error message by
spelling out buffer and location.
Georg C.F. Greve asked for configurable leaders strings for agenda
display of time ranges. This patch implements these strings, in the
new option `org-agenda-timerange-leaders'.
When an ASCII image is edited with C-c ', it will in the end be quoted
by prepending colons to each line. If tabulators are used in the
image, this may mess up the alignment. Since tabulators are not a
good idea in ASCII images anyway, this patch makes sure that any
tabulators are replaced by spaces.
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.
Bernt Hanses writes:
This changes the default value for Effort during agenda filtering so
that an undefined Effort value is treated as 0 instead of nil. Tasks
with no effort defined now return zero effort when selecting tasks for
the filter.
There was effectively no way to select 'tasks with no effort defined'
using the agenda effort filter. The '<' operator is interpreted as
'<=' and the default effort selection defined in
org-agenda-filter-by-tag starts with zero ("0 0:10 ...") so this
change just treats tasks with no effort defined the same as tasks with
an effort of 0.
This allows fast selection of NEXT tasks with no effort defined.
Column view with follow-mode active in the agenda is great for quickly
filling in the agenda estimated effort values for tasks. Just display
your Next tasks, then / 0 to select tasks with no effort and enter
column mode (C-c C-x C-c) and fill in your effort values with the
quick keys (0-9) for all of the tasks that have blanks in the effort
column.
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.