org-habit.el: New file, which implements code to build a "habit
consistency graph".
org-agenda.el (org-agenda-get-deadlines)
(org-agenda-get-scheduled): Display consistency graphs when outputting
habits into the agenda. The graphs are always relative to the current
time.
(org-format-agenda-item): Added new parameter `habitp', which indicates
whether we are formatting a habit or not. Do not display "extra"
leading information if habitp is true.
(org-repeat-re): Improved regexp to include .+ and ++ leaders for repeat
strings.
(org-get-repeat): Now takes a string parameter `tagline', so the caller
can obtain the SCHEDULED repeat, or the DEADLINE repeat.
(org-clock-resolve-clock): New function that resolves a clock to a
specific time, closing or resuming as need be, and possibly even
starting a new clock.
(org-clock-resolve): New function used by `org-resolve-clocks' that sets
up for the call to `org-clock-resolve-clock'. It determines the time to
resolve to based on a single-character selection from the user to either
keep time, subtract away time or cancel the clock.
(org-resolve-clocks): New user command which resolves dangling clocks --
that is, open but not active -- anywhere in the file list returned by
`org-files-list'.
(org-clock-in): Automatically resolve dangling clocks whenever a user
clocks in.
(org-clock-cancel): If the user cancels the solely clock in a LOGBOOK,
remove the empty drawer.
(org-files-list): New utility function for returning a list of all open
org-mode buffers, plus all files used to build the agenda buffer. Note
that not all the files will necessarily be visited by a buffer at time
of call.
(org-entry-beginning-position): Like the function
`line-beginning-position', this inline function returns the beginning
position of the current heading/entry.
(org-entry-end-position): Like the function `line-end-position', this
inline function returns the end position of the current heading/entry.
PT writes:
> Currently, I'm using Google Calendar and it's quick add syntax is very
> convenient:
>
> http://www.google.com/support/calendar/bin/answer.py?hl=en&answer=36604#text
>
>
> Of course, Org has similar capabilites, but I found one thing which
> google calendar does better: if it's 4pm and I add an event for 8am
> then GCal schedules it for 8am tomorrow.
>
> Org, on the the other hand, schedules it for 8am today even if that
> time is already passed.
>
> I never add past events and I think it's quite atypical. Shouldn't be
> an option similar to org-read-date-prefer-future for times too, so
> that timestamps also prefer the future when no date given?
This is now possible, but it is not the default. You need to set
(setq org-read-date-prefer-future 'time)
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.