priority
So far the headline had to match the one specified in the template
exactly, except for tags. Now a TODO keyword and a priority can be
added, and the headline will still be found.
Reported by Samuel Wales and Bernt Hansen.
Peter Westlake writes:
> Could I request this as a small feature enhancement, please?
> Commands like org-refile have an agenda equivalent so that
> the same keys work in the agenda, and it would be very nice
> to be able to store a link to an item that way as well.
When odd levels are being used, change the interpretation of a
numerical arg to S-TAB.
Michael Brand writes:
> I like the org-indent-mode with the soft-indentation but even more I
> like the hard-indentation with `#+STARTUP: odd hidestars' instead for
> which I have a question.
>
> This is the content of the example file oddeven:
> -*- mode: org -*-
> #+STARTUP: oddeven hidestars content
> * 1 Org Mode
> ** 1.1 Introduction
> *** 1.1.1 Installation
>
> This is the content of the example file odd:
> -*- mode: org -*-
> #+STARTUP: odd hidestars content
> * 1 Org Mode
> *** 1.1 Introduction
> ***** 1.1.1 Installation
>
> The different _Emacs-faces_ (colors) for the heading levels are the same
> when comparing the two files. This Emacs-internal adaptation I
> appreciate a lot.
>
> C-u 2 S-Tab shows _two_ levels with the file oddeven but only _one_ with
> the file odd. Is this how it is intended to work for the file odd?
org.el (org-offer-links-in-entry): Don't use "Select link" as a prompt
in the temporary window.
org-agenda.el (org-agenda-bulk-mark): Use a slightly soberer prefix for
marked entries in the agenda view.
Matt Lundin writes:
> When I call org-remember or org-store-link above the first headline in
> an org buffer, I receive the following error message:
>
> Before first headline at position 1 in buffer index.org
>
> It seems that either org-remember or org-store-link (or both) calls
> org-back-to-heading in order to grab the relevant heading for
> annotation. As a result, if I try to store a link above the first
> heading, emacs spits out the error message above because there is no
> heading to return to.
>
> Is this the intended behavior? Sometimes I prefer to create a link to
> the file as a whole rather than to a particular headline. E.g., I might
> want to create a todo to organize notes.org, which is not an agenda
> file. In this instance, it does not matter whether org-remember creates
> a link to a particular headline. In fact, I would prefer a link to the
> file as a whole and thus expect to be able to store a link while on the
> first empty line of the file or on #+TITLE.
Tassilo Horn writes:
> When I want to set a tag using `C-c C-q TAB' I get a iswitchb completion
> prompt, cause org-completion-use-iswitchb is t. I also use iswitchb's
> virtual files feature (iswitchb-use-virtual-buffers set to t), which
> includes files that aren't opened in a buffer, but are in the recentf
> list. This is a cool thing when switching buffers (I barely use C-x C-f
> anymore and switch to the virtual buffer instead), but totally useless
> and annoying for tab completion in org.
>
> So when completing anything (files/tags/...) in org with iswitchb,
> switchb-use-virtual-buffers should be let-bound to nil before.
PT writes:
> I tried this new setting with 6.30 and it works well, thanks for
> this.
>
> The only strange case is when a header line doesn't have any
> content, only empty lines.
>
> So if there are 2 empty lines between headers
>
> * header1
>
>
> * header2
>
>
> Then the first empty line after header1 is folded regardless of
> the -1 setting. If I understand the feature correctly no folding
> should occur in this case either.
The category can contain a bracket link. This commit makes sure that
the prefix in the agenda looks OK if there is a link, and that the
link is accessible with `C-c C-o 0'.
Karl Stump writes:
> Table Editing Cycle With Multiple Windows On One Buffer Does Not
> Return to Start State
>
> When I have two windows open on two buffers, one to a table in a
> file that I'm editing, the other to some other file of interest,
> the editing cycle of C-` ... C-c C-c works great, meaning that
> when the cycle is finished, the windows are restored to the start
> state.
>
> But when I have two windows open on the same buffer, one window
> on the table, and the other window somewhere else, the editing
> cycle does not restore to the beginning state.
Bernt Hansen writes:
> I ran into this a few weeks ago and it's been bugging me.
>
> I reorganized a project which had a deadline on the main task and moved
> it down to multiple subtasks in the project.
>
> ,----
> | * TODO Project task
> | DEADLINE: <2009-08-28 Fri>
> | ** TODO Step 1
> | ** TODO Step 2
> | ...
> | ** TODO Step n
> `----
>
> I decided the DEADLINE really doesn't belong at the top -- since the
> deadline was for step 2 (and a few other tasks)... so I moved it the
> hard way. Instead of cutting it out and pasting it back in the right
> tree I just used C-c C-d and entered the same date on step 2 (because I
> was moving the date a bit from the original date).
>
> ,----
> | * TODO Project task
> | DEADLINE: <2009-08-28 Fri>
> | ** TODO Step 1
> | ** TODO Step 2
> | DEADLINE: <2009-08-28 Fri>
> | ...
> | ** TODO Step n
> `----
>
> Now to remove the deadline from the Project task I just did C-u C-c C-d
> on the Project task but this removed all the deadlines in the subtree
> and my deadline in Step 2 (and others) is now gone.
>
> AFAICT SCHEDULED: works the same way. This doesn't feel natural to me
> but I know it is documented this way.
>
> Does the way it works now really make sense or would just removing the
> deadline from the task you are working on be better.
>
> C-c C-d sets a deadline just for this task, so it felt natural to me
> that C-u C-c C-d would remove the deadline just for this task -- but
> that's what I get for not reading the manual (or forgetting since I read
> it ;)
Bernt Hansen writes:
> I think I have something that is reproducible.
>
> ,----[ /tmp/x.org ]
> |
> | * Refile Targets
> | ** TODO One
> | ** TODO Two
> | ** TODO Three
> | ** TODO Four
> | ** TODO Five
> | ** TODO Six
> | *** TODO Six.one
> | *** TODO Six.two
> | **** TODO Clock me
> | ** TODO Seven
> | ** TODO Eight
> | ** TODO Nine
> | ** TODO Ten
> | * Refile Tasks
> | ** TODO Refile Me
> `----
>
> ,----[ /tmp/minimal.emacs ]
> | (add-to-list 'load-path (expand-file-name "~/git/org-mode/lisp"))
> | (add-to-list 'auto-mode-alist '("\\.\\(org\\|org_archive\\|txt\\)$" . org-mode))
> | (require 'org-install)
> |
> | (global-set-key "\C-cl" 'org-store-link)
> | (global-set-key "\C-ca" 'org-agenda)
> | (global-set-key "\C-cb" 'org-iswitchb)
> |
> | (setq org-log-done (quote time))
> | (setq org-log-into-drawer t)
> | (setq org-agenda-files '("/tmp/x.org"))
> | (setq user-init-file "/tmp/custom.el")
> |
> | (setq org-refile-allow-creating-parent-nodes nil)
> | (setq org-refile-targets (quote ((nil :maxlevel . 2) (org-agenda-files :maxlevel . 2))))
> | (setq org-refile-use-outline-path nil)
> | (setq org-todo-keywords (quote ((sequence "TODO(t!)" "STARTED(s!)" "|" "DONE(d!/!)") (sequence "WAITING(w@/!)" "SOMEDAY(S!)" "OPEN(O@)" "|" "CANCELLED(c@/!)") (sequence "QUOTE(q!)" "QUOTED(Q!)" "|" "APPROVED(A@)" "EXPIRED(E@)" "REJECTED(R@)"))))
> `----
>
> Steps to reproduce:
>
> 1. Save the files /tmp/x.org and /tmp/minimal.emacs
> 2. emacs -q -l /tmp/minimal.emacs /tmp/x.org
> 3. Go to CONTENTS view with S-TAB twice
> 4. Put point on **** TODO Clock Me
> 5. Clock in the task with C-c C-x C-i
>
> This adds a logbook drawer with the clock
>
> 6. Fold to OVERVIEW view with S-TAB
>
> So it looks like this
>
> ,----[ x.org folder ]
> |
> | * Refile Targets...
> | * Refile Tasks...
> `----
>
> 7. M-x org-clock-goto
>
> This reveals the buffer like so:
>
> ,----
> |
> | * Refile Targets...
> | **** TODO Clock me
> | :LOGBOOK:...
> | ...
> | * Refile Tasks...
> `----
>
> I think this is the critical step.
>
> 8. Put point on Refile Tasks
> 9. Show task to refile with TAB
> 10. Put point on ** TODO Refile Me
> 11. Refile to Ten with C-c C-w Ten RET
> 12. Put point on Refile Me
> 13. Reveal with C-c C-r
>
> Shows that we are under TODO Ten. So far so good
>
> ,----
> |
> | * Refile Targets...
> | **** TODO Clock me
> | :LOGBOOK:...
> | ...
> | ** TODO Ten
> | *** TODO Refile Me
> | * Refile Tasks
> `----
>
> 14. Now repeat steps 10-13 but refile to 'Two' instead of 'Ten'
>
> This goes to the wrong place. This files under Nine for me
>
> ,----
> |
> | * Refile Targets...
> | **** TODO Clock me
> | :LOGBOOK:...
> | ...
> | ** TODO Nine
> | *** TODO Refile Me
> | ** TODO Ten
> | * Refile Tasks
> `----
>
> 15. Repeat steps 10-13 with refiling to 'Two' each time
>
> This moves Refile Me up one task at a time until it gets to Two
> ie. it refiles to Eight, then Seven, then Six, then Five, then
> Four then Three, then Two.
>
> If you show contents view with S-TAB and then refile it goes to the
> right place immediately. So this definitely has something to do with
> the folded view of the org file.
>
Longmin Wang writes:
> Hi,
>
> I am using org-mode integrated in emacs 23.1.1. When I export
> the org file to html file, the enumerations will be interrupted
> by some displayed math formulae. For example, the codes
>
> 1. The first.
>
> 2. A displayed formula: \[ \int_0^{+\infty} \frac{c}{1+x^2}dx=1. \]
>
> 3. The third.
>
> will generate
>
> 1. The first.
> 2. A displayed formula:
> <the formula>
> 1. The third.
>
> Is it a bug? Or I made some mistakes in the source file.
`org-cycle-separator-lines' can now get a negative value, to indicate
that, if the number of empty lines before a visible entry is greater
than the specified number, then *all* empty lines should be shown.
Nick Dokos writes:
> I define a LaTeX macro at the top of my document, like so:
>
> ,----
> | ...
> | #+LATEX_HEADER: \newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
> | #+LATEX_HEADER: #1\ignorespaces
> | #+LATEX_HEADER: }
> | ...
> `----
>
> and export - I get the following inserted:
>
> ,----
> | ...
> | \begin{document}
> |
> |
> |
> |
> |
> | \$\^{}{1}\$ FOOTNOTE DEFINITION NOT FOUND: 1
> | ...
> `----
>
> Obviously, the macro argument spec is mistaken for a footnote.
Adds the output of 'git describe' to the org-version string if we are running
from a git repository. This identifies exactly what commit is checked out in
the org-mode git repository when reporting the org-mode version number.
org-version returns something like:
Org-mode version 6.29trans (release_6.29c.42.g5996)
which shows 6.29trans (somewhere after the last release tag) which
is 42 commits after release_6.29c at git commit 5996.
The git describe information is not included if org mode is not
running from a git repository.
An entry `#+TODO:' without content make `M-x org-mode' fail.
While it may cause problems to have no TODO keywords defined, this
should not make entering the mode fail.
It is possible that the regular expressions for LaTeX snippets match
at nested locations. For example, Nick Dokos submitted this:
,----
| #+LaTeX_HEADER: \usepackage{amsmath}
|
| * foo
|
| \[
| \begin{matrix}
| 1&d\\
| d&d\\
| \end{matrix}
| \]
|
`----
where the snippet regexps match at \[ ... \] and also at
\\begin{matrix}.
This would lead to two nested overlays being placed. With this
commit, only the outer one will remain.
Leo writes:
> Hi there,
>
> ,----[ (info "(org)Structure editing") ]
> | `C-<RET>'
> | Just like `M-<RET>', except when adding a new heading below the
> | current heading, the new heading is placed after the body instead
> | of before it. This command works from anywhere in the entry.
> `----
>
> Inside a substree and with the point at the beginning of a line, C-RET
> turns the current line into a heading. In the following example, ><
> indicates where the point is.
>
> ----------------
> * Sample
> < This is not a heading
> ----------------
>
> After C-RET, it changes to
> ----------------
> * Sample
> * This is not a heading
> ----------------
>
> I can reproduce this with org 6.29c as included in Emacs. Can someone
> else reproduce this bug?
Gregory Grubbs writes:
> When exporting a table with ido-mode active, an error is
> raised in org-ido-completing-read. I think
> ido-completing-read is being called with incorrect
> arguments, but the fix is beyond me.
>
> Steps to reproduce the error:
> Org-mode version: 6.28trans
> Emacs version: GNU Emacs 23.0.91.1 (i486-pc-linux-gnu, GTK+ Version
> 2.16.0) of 2009-04-05 on palmer, modified by Debian
>
>
> Turn on ido-mode: M-x ido-mode RET
> visit a file using C-x C-f /tmp/test.org RET
> Create a simple table:
> |column a|column b|
> |-
> |one|two|
> |three|four|
>
> Org-magic-tabelize it by hitting TAB somewhere in a column
>
> M-x org-table-export RET /tmp/test.csv
>
> Here's the backtrace I get:
>
> Debugger entered--Lisp error: (wrong-type-argument listp "orgtbl-to-tsv")
This error is due to the fact that org-ido-completing-read does
convert alists to flat lists for completion. Now we check if the list
really is an alist before converting it.
The first cycle command on a line did not work correctly, to always
switched to FOLD. This was due to an error in new, faster code to
find the next visible line.
* contrib/lisp/org-checklist.el
- Fix some problems with the print/export feature in org-checklist.
- Add custom options for this module
- Fix some interaction with a2ps
- Only reset checkboxes if TODO state is done.
* lisp/org.el
- Add org-checklist to org-modules
Changing the priority of a task when the point is after the heading
(anywhere inside the task) worked but aligning the tags failed with
a "not on a heading" error due to the save-excursion not including
the tag alignment. This change moves back to the heading and
includes that during tag alignment to remove the error text.
Patch by Bernt Hansen.
Write \n instead of \xa in the regexp, this is clearer.
And make the \n optional so that also lines at the end of
the buffers will still be matched as headlines.
This commit defines three new functions in org-timer.el:
- org-timer-set-timer, bound to `C-c C-x ;' in Org buffers
and to `;' in Org agenda buffers. This function sets a
timer for the headline the cursor is currently it. Up to
three timers can be set.
- org-timer-show-remaining-time: this shows the remaining
time for the last set timer.
- org-timer-reset-timers: this reset all timers.
This functionality was requested by Samuel Wales and emulates
that of tea-time.el -- see the emacswiki doc about tea-time.el:
http://www.emacswiki.org/emacs/tea-time
When org-provide-todo-statistics is set to 'all-headlines, the
statistics are performed against all headlines, including those
with no TODO keyword.
This was requested by David A. Gershman.
Non-nil means modify the regexp in org-set-font-lock-defaults so
that headlines are fontified till the end of the line. This is
useful when setting a background color for the org-level-* faces.
This defaults to nil so that the old behavior is preserved.
For this we took another look at when drawers actually have to be
hidden again and found that CONTENTS view does not need it, and that
CHILDREN view only needs it before the first child.
The second speed-up comes from advising outline-end-of-subtree to use
the Org version when in org-mode.
The third speed-up comes from using a better way to find the next
visible line, using `next-single-char-property-change'.
Finally, `org-forward-same-level' and `org-backward-same-level' are
faster versions of their outline equivalents and are now bound to
`C-c C-f' and `C-c C-b'.
`org-read-date' was loosing the focus when the calendar was displayed on
a separate frame. This patch by Robert Goldman solves it by introducing
a new macro `org-save-frame-excursion' which preserve the frame focus.
See this thread: http://article.gmane.org/gmane.emacs.orgmode/15528
(This fixes the issue I was trying to fix in a previous commit.)
This was a proposal by Samuel Wales. After the user selected a
refiles target, we make sure that the fully qualified target is in the
history, so that next time, UP will bring back exactly this target.
Before this patch the completion mechanism was this: TAB let's you
complete through link prefixes (gnus: file: bbdb: ...) then RET allows
completion if a completion mechanism is available for the chosen prefix.
Navigating through the history of stored links was a separate process,
available through the up/down M-n/M-p keys.
Now TAB not only completes through link prefixes but also through stored
links. This behavior matches other Emacs completion mechanisms a bit
more closely.
If you have a TODO keyword like "DELEGATED" and an entry like
"* Delegated this stuff to X", then you want this entry to be
in the list of possible targets. For that we need to distinguish
between DELEGATED as a keyword and "Delegated" as a simple word,
so (case-fold-search nil) seems relevant.
This default to t, so the default behavior of org-mode doesn't
change. But the user might want to keep at least one blank line
at the end of the remembered subtree, this option lets her do it.
Bernt Hansen writes:
> I have a monthly repeated task (Archive tasks) that has lots of
> old clock time on it currently but has never been marked DONE
> since the creation of the property LAST_REPEAT_TIME. If this
> task is clocking when Emacs exits and you restart emacs and
> answer Yes to continue the clock - the modeline has the total
> time for the parent task (151:04 instead of the total time for
> this task (5:04). If I clock the task in again the modeline is
> correct.
Many different people want to set many different variables in a
buffer-local way for export. This cannot be done with file variables,
because the Org buffer is not current while the exporter is running.
Lots of variables can be set with the #+OPTIONS lines, but finding
abbreviations goes only so far.
Therefore we have now a general mechanism that can be used to bind
variables during export operations.
a line like: #+BIND: variable value
will bind the variable to value. For example,
the line
>> #+OPTIONS: toc:nil
can now equivalently be written as
>> #+BIND: org-export-with-toc nil
Bernt Hansen writes:
> I recently noticed that using SPACE or TAB in the agenda displays
> the task in the other window but all of the drawers are exposed.
> If you fold the org file with S-TAB to Overview or Contents
> display and then switch to the agenda and SPACE or TAB on a
> folded task it unfolds the entire thing including the drawers.
>
> Expanding the file to SHOW ALL and then using follow mode from
> the agenda shows me the view I'm really looking for so that's
> what I'm doing as a workaround right now.
>
> While doing my weekly review of tasks I use follow mode to view
> task detail and the expanded :LOGBOOK: and :PROPERTIES: drawers
> hide detail scrolled off the bottom of the window. My :LOGBOOK:
> drawer for repeated tasks tends to be l-o-n-g and shoves detail
> way down the file (such as my weekly review checklist :) ).
>
> Is it possible to control expansion of the drawers when
> displaying a task from the agenda? The view I'm looking for is
> the same as SHOW ALL from S-TAB. It seems that if the task is
> expanded from the agenda it expands everything including the
> drawers.
Customize the new variable org-footnote-auto-adjust or use the STARTUP
option fnadjust to get automatic renumbering and sorting of footnotes
after each insertion/deletion.
Agenda bulk commands on marked entries now can also set the scheduling
date or a deadline. Normally, all entries will be set to the
specified date. However, when writing the change as "++5d" or "++2w",
then each time stamp will independently be shifted by that amount.
TAB now cycles visibility in plain lists if the cursor is in a plain
list. This corresponds now to the new default value `t' of
`org-cycle-include-plain-lists'. If you want to treat plain list
items as part of the outline hierarchy during cycling of outline
headings (this is what a `t' value used to mean), set this variable to
`integrate'.
Patrick Bahr writes:
> I use tags-todo searches in my custom agenda
> commands. Unfortunately, tags-todo does not honour the
> org-agenda-todo-list-sublevels variable which I want to use in
> order to ignore nested todo items. Is there a way to persuade
> tags-todo to do this? I know that there is a variable
> org-agenda-tags-todo-honor-ignore-options which does this for
> org-agenda-todo-ignore-with-date etc. It would be nice if there
> is something similar to this for
> org-agenda-todo-list-sublevels. Even better would be if this
> could be adjusted per individual tags-todo search. For example
> for certain cases I do not want to see nested TODO items but I do
> want to see nested WAITING items. With two tags-todo searches
> having different behaviour on nested todo items this would be
> feasible.
This behavior is a loft-over from the old days, and I am changing
this now.
This commit implements refiling directly from the agenda.
It also implements a mechanism for selecting a number of entries in
the agenda and then executing a command on all of them. Possible
actions include archive, refile, todo state setting, and more.
Michael Brand writes:
> 2) One could like to have configurable left/right alignment, even
> combinable with column width, e. g.
>
> | <l10> | <r> |
> | 3.14 | 0x10 |
> | 3.141592=> | 0x32 0x10 |
Good idea, I would say.
When yasnippet is active, it is the official binding of TAB. That
means, the org-mode self-insert command must know that it may blank
table fields if the last command was yas/expand.
Clicking on the clock in the mode line now pops up a menu with
clocking options.
A new command `C-c C-x C-e' allows to set or change the effort
estimate of the task currently being clocked. This is mainly useful
when using an alert notification when the task should be finished.
Based on a patch by Konstantin Antipin.
When the variable `org-treat-S-cursor-todo-selection-as-state-change'
is turned off, switching TODO keywords with S-cursor will not only
turn off logging, but also blocking.
This commit changes which time is shown in the mode line while
clocking. Normally this will now be the total time ever clocked on
this task and its children.
However, when the task is a repeating one, only the time since the
last reset of the task will be shown. The time of the last reset is
now recorded in a LAST_REPEAT property.
You can also set the CLOCK_MODELINE_TOTAL property to the value
"current" to only show the current clocking instance. Or it may be
the value "today", to only add up the time spent today on this task.
Other possible values are "repeat", "all", or "auto".
Finally, you can set your default for this property with
`org-clock-modeline-total'.
The content of blocks like #+begin_example will be marked with a
separate face. That same face is also used for single lines
introducing text for specific backends.
This commit introduces two new variables:
- org-treat-insert-todo-heading-as-state-change
Default is nil. When set to t, adding a new TODO item will be done
by adding an item and the executing an "official" state change which
potentially will trigger state logging.
- org-treat-S-cursor-todo-seletion-as-state-change
Default is t. When set to nil, selecting a TODO state with
S-left/right will not trigger logging, only selecting a new state
with `C-c C-t'. I actually like this a lot and would even consider
making this the default.
Setting the new option `org-hierarchical-todo-statistics' to nil will
make TODO statistics to be computed recursively. This means, not only
the direct children of a node contribute to its TODO statistics, but
the entire subtree.
You can also set the COOKIE_DATA property and add the word "recursive"
there to get recursive statistics for a specific tree.
Hsiu-Khuern Tang writes:
> Hi Carsten,
>
> You recently changed org-edit-src-code to use a separate buffer
> instead of an indirect buffer. One side effect of this is that I
> can no longer edit several code examples at the same time:
> opening the second buffer will silently discard any changes made
> in the first. I would prefer this behavior: when opening the
> second edit source buffer, write any changes in the first buffer
> to the originating Org buffer (but don't save it, of course).
>
> Another approach is to use different buffer names.
The better approach is clearly to allow several buffers, now
implemented with this commit.
The commit implements a general mechanism for providing special
(e.g. completion) support for specific link types when entering links
with `C-c C-l'. After calling `C-c C-l', you may now press RET after
inserting a link prefix, and Org will look for a function
`org-PREFIX-complete-link'. Such functions may be defined for any
link types, including link abbreviations. Currently, Org has
`org-file-complete-link' for file name completion, and
`org-bbdb-complete-link' for completion of record names from BBDB.
Peter Westlake writes:
> On Fri, 8 May 2009 06:24:54 +0200, "Carsten Dominik"
> <carsten.dominik@gmail.com> said:
>
> I anyone could make an example that allos me to reproduce this
> problem, then I might be able to fix it.
>
> It's trivial:
>
> * top
> ** sub 1
> Set org-cycle-include-plain-lists.
> Type TAB on this line, and the whole of top gets folded.
>
> ** sub 2
> This entry is not needed to reproduce the bug. It just
> makes it more visible.
There was indeed a bug, I think it is fixed now.
Editing source code examples and pictures is not done in a truly
separate buffer, not in an indirect buffer. Indirect buffers had
caused problems with fontification, for example.
Thomas Morgan writes:
> I just tried exporting an Org file with LaTeX fragments to HTML
> on a computer that doesn't have dvipng. There were error messages
> in *Messages* ("Failed to create png file..."), but this wasn't
> obvious to me at first glance because those messages were replaced
> in the echo area by "Exporting... done" before I could see them.
>
> So I was wondering, is there a good way to make the user aware of
> those errors? Maybe by printing "Exporting... done (with errors)"?
There is now a better error message when either the latex or the
dvipng program does not exist.
Matt Lundin writes:
> If it's not too much trouble, I was wondering if I could
> request the following properties to set export options for
> subtrees:
>
> EXPORT_AUTHOR
> EXPORT_DATE
>
> In addition to specifying an EXPORT_FILE and EXPORT_TITLE
> for a subtree, I often find myself wanting to change the
> date and author lines.
The variable `org-refile-target-verify-function' can be set to a
function that will be called to verify a refile target. The function
must return t if the target is valid.
Sometimes refiling a task displays the next task heading after ... at the
end of a folded task. This keeps the next task the cursor is on starting
in column 1 which feels more natural.
When refiling, you can now create new parent nodes on the fly. To do
this, set the variable `org-refile-allow-creating-parent-nodes' to
`confirm'. Then, at a refiling prompt, proceed with completion until
you have an existing heading, and then add "/new heading", i.e. a
slash followed by the new heading. That heading will be created as a
child of the existing heading, and the entry to be refiled will end up
under that new heading.
Time stamps in LaTeX export now also honor custom time stamp formats.
Furthermore, the new option `org-export-latex-timestamp-markup' can
specify special markup for time stamps.
Samuel Wales writes:
> A lower case version of a todo kw at the beginning of a
> headline, when in lower case, causes sort to ignore the
> word.
>
> Also, setting priority with shift down causes the cookie to
> be inserted in the wrong place.
Both problems are address in this commit.
The following contributed packages are (partially) obsolete.
org-browser-url.el
org-annotation-helper.el
The functionality of both these packages is a subset of
org-protocol.el, which is now part of the Emacs core
and is recommended.
org-depend.el
A significant fraction of the org-depend functionality
dependence on siblings, children, and parents) is now
built-in into the Org core. Org-depend remains
in the distribution as a proof-of-concept fro complex
and remote dependencies.
org-interactive-query.el
I believe that much of what this package was build for
is now available with tag filtering.
These packages are now marked in org-modules as such.
The command org-reload did not only reload any loaded files, but all
lisp files in the Org distribution. Also, it actually never reloaded
any files from the contrib directory. Both of these problems are now
fixed.
Mapping call a function for each matching entry. So far this has
always assumed that the entry stays in the buffer and search can
continue from there. However, when the mapper function removes the
tree, more control is needed to specify from where the search should
continue.
The action function handed to the mapping function can now set the
variable `org-map-continue-from' to the position from where mapping
should continue.
Daniel Hochheimer writes:
> It seems there is a bug in the handling of simple dependencies.
> I think an example tree is the best solution, to show you the bug:
>
> * Projects
> #+CATEGORY: Projects
> *** TODO foo bar project
> :PROPERTIES:
> :ORDERED: t
> :END:
> ***** TODO foo subproject :FooSubproject:
> ******* TODO Task 1
> ***** TODO bar subproject :BarSubproject:
> ******* TODO Task 1
>
> This is in my .emacs file:
> (setq org-enforce-todo-dependencies t)
> (setq org-agenda-dim-blocked-tasks 'invisible)
> (setq org-odd-levels-only t)
>
> the expected global todo agenda view imho is:
>
> Projects: Task 1 :FooSubproject:
>
> but actual it is unfortunately:
>
> Projects: Task 1 :FooSubproject:
> Projects: Task 1 :BarSubproject:
>
>
> Imho "Task 1" from "bar subproject" should not be visible,
> because "bar subproject " is blocked because of the
> ORDERED property (therefore it's childs should be blocked, too)
>
>
> Is it easy / possible to fix this bug? My whole GTD system is
> heavily based on such project / subproject-Constructs. But with
> this bug my global todo agenda view is unfortunately "polluted"
> a little bit with tasks from projects that shouldn't be active.
After some back and forth, Daniel convinced me, and this is now done
correctly.
With the setting
(setq org-refile-use-outline-path 'file)
the file names ended up twice, like
"xxx.org/level 1/level 2 (xxx.org)"
Now the second occurrence is omitted.
Rustom Mody writes:
> The last two lines of my org file are
>
> *** Vishnu Sahasranam
> *** Ram Navami
>
> without a newline at the end
>
> Trying to reorder these two lines I do a M-S-down on second last
> line I get
>
> *** Ram Navami*** Vishnu Sahasranam
This module implements inline tasks in Org-mode. Inline tasks are
tasks that have all the properties of normal outline nodes, including
the ability to store meta data like scheduling dates, TODO state, tags
and properties. However, these nodes are treated specially by the
visibility cycling and export commands.
RefTeX can now be used to create a citation in Org-mode buffers.
Setup the buffer with #+BIBLIOGRAPHY: bibbase style
and create citations with `C-c C-x ['.
Chris Leyon writes:
> For some semi-short time, org-ido-switchb has been broken, complaining
> about wrong type arguments. The attached one-line patch corrects
> this.
Patch by Chris fixes this problem.
Harri Kiiskinen writes:
> It seems that org-use-tag-inheritance set to regexp, the use of
> #+FILETAGS: and org-todo-list do not work together. It seems, that a
> regexp in org-use-tag-inheritance matching a tag set in #+FILETAGS
> causes this error:
>
> Debugger entered--Lisp error: (wrong-type-argument stringp nil)
> string-match("^ +" nil)
> [...]
> when org-use-tag-inheritance is set to regexp "te"
> with this file:
>
> --------
> #+STARTUP:
> #+FILETAGS: tea
> * TODO testing :test:
> ** TODO too :data:
> -----
>
> When the regexp is "tes", so that the FILETAG does not match,
> org-todo-list produces a correct list.
This is indeed a bug. The all to `org-get-tags-at' does change the
match data if there is a match for the inheritance regexp. This
problem is now avoided by first extracting (match-string 1), and then
getting the tags.
Studying this bug also exposed another one, namely that file tags are
not marked as inherited tags. This is now fixed, immediately when
the #+FILETAGS line is parsed.
Items are listed in the agenda sometimes in bright colors, to draw
attention to important tasks or deadlines. When such an item is
switched to DONE, the state change is reflected by the new TODO
keyword, but the line itself might still be bright. Org de-emphasizes
the line by changing the face of the line. It used to change it to
the face `org-done', but now we use a new, independent face
`org-agenda-done'.
When a tags/property match does match an entry and its sublevels, the
sublevels used to be indented by dots, to indicate that the matches
likely result from tag inheritance. This is now no longer the
default, but you can get it back with
(setq org-tags-match-list-sublevels 'indented)
This commit implements an important change: When, during a
stuck-project search, a project tree is identified as not stuck, so
far the search would continue after the end of the project tree. From
now on, the search continues in the subtree, so that stuck subprojects
can still be identified.
When a note is taken, the new drawer is created before the note is
taken. Now the drawer is removed again if the note gets aborted and
if the drawer is empty.
Anupam Sengupta writes:
> I routinely use time ranges (and occasionally time-stamp ranges)
> in my org files to document the scheduled block of time for a
> meeting or activity. As an example, I will mark meetings as:
>
> * A Meeting
> <2009-03-12 Thu 10:00-11:00>
>
> As often happens with meetings, rescheduling needs to be done and
> I use S-<up> or S-<down> on the time-stamp to make the
> modifications. While this works fine, it usually leads to a
> duplication when the *time* part of the time-stamp needs to be
> changed.
>
> For the same example above, if the time-block has now changed to
> 11:00-12:00, then I need to do S-<up> on both the "10:00" and the
> "11:00" string. I.e,
>
>
> * A Meeting
> <2009-03-12 Thu 11:00-11:00>
> ^
> +---------------- After the first S-<up>
>
> * A Meeting
> <2009-03-12 Thu 11:00-12:00>
> ^
> +---------------- After the second S-<up>
>
> Can we have a feature (with a toggle option perhaps) which would
> *move* the block (i.e., both time entries) by the same amount
> when either one is moved in the same direction. I.e., the
> proposal is to have:
>
> * A Meeting
> <2009-03-12 Thu 11:00-12:00>
> ^ ^
> | |
> | +---------- Automatically shifted
> +---------------- After the S-<up>
This is in fact how changing time works in many applications, and
it does make sense here as well. The commits implements this
change.
It also implements a way to change the start time of an entry from
the agenda. The date is normally changed with S-right/left.
Now, if you add a C-u prefix, the hour will be changed. If you
immediately press S-right/left again, hours will continue to be
changed.
A double prefix will do the same for minutes.
Wanrong Lin writes:
> Suppose I have an org file with following lines:
>
> * Test1
> Test2
>
> Now if I put the cursor at the beginning of the "Test2" line and
> press "M-S-RET" (Alt-Shift-Return on my machine), I got this:
>
> * Test1
> * Test2TODO
>
> The "TODO" keyword was inserted at the end instead of the
> beginning of the task text. This seems a bug to me.
Yes, this is a bug that occurs in the special case when the
heading stars are inserted in front of an existing line. The
commit adds code to make sure the correct position is used.
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.
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'.
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.
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.
orgstruct++-mode is an enhanced version of orgstruct mode that
also imports all indentation and paragraph settings into the major
mode. Furthermore, it now allows to use M-RET and M-S-RET in items
after the first line. The latter change was a request by Austin
Frank.
The new command `org-reload' allows to reload all Org lisp files.
By default it will load compiled files if these are available. If
not, or when called with a C-u prefix argument, uncompiled code will
be loaded. This is good for producing a meaningful backtrace when an
error occurs.
Org has a number of places where the value read by completing-read may
contains spaces. For these occasions, the space character needs to be
a normal character.
The recent support for ido.el invalidated these special cases because
ido has its own way of dealing with spaces.
This commit now makes sure that ido is off for the critical cases
where completion must allow spaces.
John Rakestraw writes:
> I noticed today that, at least in my set-up, setting these variables
> this way:
>
> (setq org-agenda-dim-blocked-tasks 'invisible)
> (setq org-enforce-todo-checkbox-dependencies t)
>
> means that a TODO task with checkboxes doesn't get included in the
> agenda. However, the sub-tasks in the checkbox list don't get included,
> either. So the TODO task with checkboxes doesn't show up in the agenda.
>
> It makes sense given the way the variables work. However, I wonder if
> it makes more sense for a task with checklisted sub-tasks to be
> included in the agenda so that the tasks and sub-tasks don't get lost.
> Or, to put the point slightly differently, I think that a TODO that's
> blocked because it has dependent TODOs might be treated differently in
> agenda listings than a TODO that's blocked because it has dependent
> checklist items.
>
> Not a big deal to me because I don't typically use checkboxes for TODO
> items. But I thought I'd raise it for consideration.
I agree with this view and the commit implements exactly this.
(org-indent-line-function): Make sure this works even if there is not
`org-drawer-regexp' defined. This can happen when orgstruct-mode is
used in a non-org buffer.
This commit makes it possible to force new lines and even empty lines
in the fast tag selection interface, either by splitting tags
definition into several lines, or by inserting "\n" into the tags
list, or by inserting (:newline) into the tags alist.
This is largely a patch from Christopher Suckling
The :END: line is now indented like the line starting the drawer. And
the first line after the drawer is now indented like the :END: line.
The latter problem was pointed out by Christopher Suckling.
Clock lines are now by default captured into the drawer LOGBOOK. This
means that, if state notes are also captured into a drawer, they will
be mixed with notes.
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.
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:
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.
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'.
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 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!
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.