Running a command that would use the tag scanner could suffer a large
slow-down when many entries match, because the tag list with
inheritance forces each matching entry to walk the hierarchy.
Now, it is possible to avoid this penalty by using the variable
`org-scanner-tags', or by binding the `org-trust-scanner-tags' to t
around calls to `org-get-tags-at' and `org-entry-properties' when
retrieving tags and properties for the current entry in the
scanner/mapper.
An agenda item carries a full list of tags. The list must normally be
made, but not during a tags scan. So now the tags scan does pass on
its list instead, which should make things faster.
Jeff Mickey writes:
> Hey all,
>
> To reproduce:
>
> * TODO Make Bicycle :project:workshop:
> ** TODO Buy stuff
> ** TODO Build stuff
> ** TODO Test stuff
>
> (setq org-use-tag-inheritance t)
> (setq org-tags-exclude-from-inheritance '("project"))
>
> <C-a m> to type in a match string to search, I type in "project"
>
> I expected to see:
> TODO Make Bicycle
>
> I saw:
> TODO Make Bicycle
> .TODO Buy stuff
> .TODO Build stuff
> .TODO Test stuff
>
> I assume this isn't what is supposed to happen. I'm currently at work
> so I can't investigate and provide a diff, but it seems like there
> needs to be a check in org.el:10144:org-get-tags-at to remove tags
> that are explicitly excluded from inheritance.
This commit fixes the bug.
Custom commands can now bind `org-agenda-filter-preset'. This filter
will then be present in the agenda view and persist through refresh
and further filtering. Only a new agenda command will remove the
filter again.
uuidgen ids may start with a number and therefore are not valid names
in HTML. Therefore we now use and "ID-" prefix for such IDs when
exporting to HTML.
The variable org-priority-faces can now be used to set special faces
for different priority cookies.
Also, in the agenda, the default is now to fontify only the priority
cookie, not the entire task. See the variable
`org-agenda-fontify-priorities'.
Before, the bibliography will exist inside the outline structure, as
part of the last section. This commit adds code to find it, cut it
out, and move it to a better location.
Before this patch, org-agenda-quit would delete the agenda window if
the frame had more than one window. This patch changes that behavior
slightly so that if org-agenda-window-setup is 'current-window, the
agenda window won't be deleted.
Org erroneously filed top-level headings as level 2, because it
assumes that if should file below some heading. However, if there is
no heading to file under, this should be turned off.
Patch by igrekster.
When inserting new list entries, sometime empty lines will be
inserted automatically. This, however, makes only sense if empty
lines do not terminate the list, as configured by
`org-empty-line-terminates-plain-lists'.
This commit makes sure that, if
`org-empty-line-terminates-plain-lists' is set, automatic empty lines
will never be inserted.
Ian Barton writes:
>
> This has been happening for a while. I suspect it's something in my
> settings, but I can't work out what. When I publish a single file, I
> get the following error:
>
> Debugger entered--Lisp error: (wrong-type-argument arrayp nil)
> file-truename(nil)
> org-publish-file("/home/ian/nfs/firewall/Documents/org/holiday/holiday.org")
> org-publish-current-file(nil)
> call-interactively(org-publish-current-file)
> org-export(nil)
> call-interactively(org-export)
>
> Publishing a whole project works fine.
This was caused by an attempt of the publishing code to always find
the top enclosing project. While this makes sense when publishing a
project, for a single file we want just the smallest enclosing
project. This commit makes sure that this difference is treated
correctly.
A new hook is introduced, `org-agenda-before-write-hook'.
A function that ca be added to this hook is
`org-agenda-add-entry-text'. When this is done, each of the entries
shown in the agenda is amended with text that in the original buffer
is part of the entry text below the headline. Drawers are not copied,
and also the line with scheduling and deadline information is not
used. Finally, the number of ines to be added is imited by
`org-agenda-add-entry-text-maxlines'.
Links with description not create a note before the next headline that
contains the link. In the text, the description will be shown.
The new variable `org-export-ascii-links-to-notes' can be configured
to turn off this behavior, then the reference will be inserted inline
in the text. If the line becomes too long because of this, it will
be wrapped.
If the headline contains a time-of-day in one format or another, it
will be used to sort the entry into the time sequence of items for a
day. Some people have time stamps in the headline that refer to the
creation time or so, and then this produces an unwanted side effect.
If this is the case for your, use the new option
`org-agenda-search-headline-for-time' to turn off searching the
headline for a time.
Undo will now remove up to 20 characters typed consecutively, just
like Emacs normally does. We need a special implementation for this
because Org has its own self-insert command.
The code for doing this is a patch by Martin Pohlack.
A line: #+MARCO: name replacement text
can be referenced by {{{name}}}. As special cases, {{{title}}} will
reference #+TITLE, and similar with similar lines.
Alan E. Davis writes:
> I have found the behavior of the cursor at the beginning of
> the line to be clumsy, and troublesome. I cannot easily set
> a region, for example.
>
> However, the special setting of ctrl-e is extremely useful.
>
> A single variable controls these two variables, in a unified
> way. This variable also has two aliases. The aliases are
> not recognized by the functions that are affected by these
> variables in org.el: org-beginning-of-line, and
> org-end-of-line. As far as I can see, there seems no reason
> to keep these two aliased variables as references to a
> single unified variable, insofar as the underlying code is
> concerned.
>
> Because, at least for me, the behaviors have sufficiently
> distinct behaviors, I propose these should be separated.
This is a reasonable request, and this commit implements it.
To have separate values, set org-special-ctrl-a/e to a cons
cell with the setting for C-a in the car and the setting for
C-e in the cdr.
This commit fixes the bug discussed in:
http://thread.gmane.org/gmane.emacs.orgmode/11106
The reason for the empty line being inserted is subtle:
The function `org-add-planning-info' is used to add and remove planning
info time stamps (deadline, scheduled, closed) from the second line in
an entry. Usually, the function is called to add something, with an
optional argument to also remove something. In doing so, it assumes
that the second line must be there, and if it is not there, it creates
it.
Now, sometimes `org-add-planning-info' is called only to remove a time
stamp. In this particular case it was to remove the CLOSED time
stamp. This happens when the state is changed from a DONE or nil
state to a not-done state. The idea behind this is that maybe to
entry was marked earlier as DONE, but the user has changed his mind,
so the timestamp recording when it was finished should be removed.
So in this case, an empty line was created, assuming that there would
be something to add - only nothing was added.
This commit arranges for checking if there is something to add before
creating an empty line.