1
0
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-11-23 07:18:53 +00:00
Commit Graph

282 Commits

Author SHA1 Message Date
John Wiegley
abfc6babca Added feature for resolving clocks due to idleness
See the new manual section on "Resolving idle time".

(org-clock-resolve-clock): If keeping or subtracting time results in a
clock out at a time in the past, and if the resolution occurred due to
idleness or invoking `M-x org-resolve-clocks', remember that past moment
in time.  On the next clock in, the user will be prompted to see if they
want to back-date their new clock to then.

(org-clock-resolve): Do not jump the user to the location of a dangling
clock if the resolution is occuring due to an idle timeout.  In that
case there is typically only one dangling clock, the active one, and
there is no value gained by shuffling their windows around to show it to
them.  Being prompted to resolve an idle clock should be as inobtrusive
as possible.

(org-resolve-clocks-if-idle): New function that resolves only the
currently active clock if the user has exceeded the time returned by
`org-user-idle-seconds', based on the value of `org-clock-idle-time'.

(org-clock-in): If, after resolving clocks,

(org-clock-out): Cancel the `org-clock-idle-timer' on clock out.
2009-10-18 23:43:43 -04:00
Carsten Dominik
a45e7d88c7 Use org-float-time' instead of time-to-seconds' in John's patch 2009-10-17 17:55:59 +02:00
John Wiegley
8490a6c1d5 Added `M-x org-resolve-clocks' command
(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.
2009-10-17 05:09:40 -04:00
John Wiegley
d3f994e01b Added functions for determining the user's idle time
(org-clock-idle-time): New user customizable option for detecting
whether the user has left a clock idle.  Note: it is only used in this
commit to test whether it's worthwhile to check OS X to get the Mac
user's current idle time.  If the Emacs idle time is less than the
value, the user hasn't been away long enough to be worth checking (a
more expensive test than just getting Emacs idle time).

(org-user-idle-seconds, org-mac-idle-seconds)
(org-emacs-idle-seconds): This three functions, in conjunction
with the user customization variable `org-clock-idle-time', return
the number of seconds (as a floating point) that the user has been
away from their Emacs (or, if running on OS X, their computer).
2009-10-17 03:51:32 -04:00
John Wiegley
defe6c3838 Added several new utility functions to org-clock
(org-find-open-clocks): New function that returns a list of all open
clocks in the given FILE.  Note that each clock it returns is a cons
cell of the format (MARKER . START-TIME).  This "clock" value is used by
several of the new clock module utility functions.

(org-is-active-clock): New inline function which tests whether the given
clock value is the same as the currently active clock.  Returns non-nil
if this is the case.

(org-with-clock-position): New macro that evaluates FORMS with point in
the buffer and at the position of the given clock.  Changes to the
current clock are global.

(org-with-clock): New macro that evaluates FORMS with point in the
buffer and at the position of the given clock.  However, changes to the
current clock are local and have no effect on the user's active clock.
This allows, for example, far any clock to be cancelled without
cancelling the active clock.

(org-clock-clock-in): New inline function that switches the active clock
to the given clock.  If either the argument RESUME, or the global
`org-clock-in-resume', are non-nil, it will resume a clock that was
previously left open.

(org-clock-clock-out): New inline function that clocks out the given
clock value without affecting the currently active clock.

(org-clock-clock-cancel): New inline function that cancels the given
clock value without affecting the currently active clock.
2009-10-17 03:51:32 -04:00
John Wiegley
cc039d9016 Add new parameter to the `org-clock-out' command
(org-clock-out): Accept new third parameter `at-time', which permits a
clock to be clocked out at a specific time.  Note that no attempt is
made to verify that the clock out time is later than the clock in time.
2009-10-17 03:51:32 -04:00
John Wiegley
b6594a03df Prevent mode-line timers from being duplicated
(org-clock-in): Before creating `org-clock-mode-line-timer', check to
make sure an older timer is not currently running.
2009-10-17 03:51:32 -04:00
Carsten Dominik
785da1420a Remove some duplicate words from docstrings
Patch by Juanma Barranquero.
2009-10-04 08:36:18 +02:00
Carsten Dominik
edc5e73ba9 Fix that bug again 2009-10-02 10:59:37 +02:00
Carsten Dominik
d82366ee01 Fix bug in org-clock.el 2009-10-02 10:58:12 +02:00
Carsten Dominik
3ce0a4a9e2 Fix position error when clocking in while buffer is narrowed
Bernt Hansen writes:

> If you narrow to subtree when there is a following task the narrowed
> buffer has a blank line at the end.  If you are on this line and
> clock-in it starts the clock for the _following_ task (outside the
> narrowed subtree) and not the task you are looking at.
>
> I stumbled across this today because the following task was already
> over the estimated limit when I clocked it in - which triggered my
> alarm sound.
>
> ,----[ test.org ]
> | #+STARTUP:
> | * TODO One
> | * TODO Two
> `----
>
> ,----[ 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)
> `----
>
> Key sequence to reproduce:
>
> $ emacs -q -l minimal.emacs test.org
>
> | Key                           | Notes                         |
> |-------------------------------+-------------------------------|
> | C-n                           | Go to first task '* TODO One' |
> | M-x org-narrow-to-subtree RET | Narrow to subtree             |
> | C-n                           | Move to last blank line       |
> | C-c C-x C-i                   | Clock in (next) task          |
> |-------------------------------+-------------------------------|
>
> -Bernt
>
> Emacs  : GNU Emacs 22.2.1 (i486-pc-linux-gnu, GTK+ Version 2.12.11)
> of 2008-11-09 on raven, modified by Debian
> Package: Org-mode version 6.31trans (release_6.31.8.g7485)
2009-10-02 08:40:02 +02:00
Carsten Dominik
8d2cbde0c9 Fix typos 2009-10-02 08:30:18 +02:00
Carsten Dominik
4020e2a8c4 Fix bug in canceling clocks
Peter Frings writes:

> Clocking in on any task (C-c C-x C-i) and cancelling afterwards (C-c C-x
> C-x) results in the following backtrace:
> ,----
> | Debugger entered--Lisp error: (wrong-type-argument markerp org-clock-marker)
> |   move-marker(org-clock-marker nil)
> |   org-clock-cancel()
> |   call-interactively(org-clock-cancel nil nil)
> `----
> Culprit are two erroneous quotes in front of org-clock-marker in org-clock-el. The patch (output
> of git diff -u on a clean checkout) fixes the problem:
>
> diff --git a/lisp/org-clock.el b/lisp/org-clock.el
> index e279898..91a4bcb 100644
> --- a/lisp/org-clock.el
> +++ b/lisp/org-clock.el
> @@ -818,8 +818,8 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set."
>     (set-buffer (marker-buffer org-clock-marker))
>     (goto-char org-clock-marker)
>     (delete-region (1- (point-at-bol)) (point-at-eol)))
> -  (move-marker 'org-clock-marker nil)
> -  (move-marker 'org-clock-hd-marker nil)
> +  (move-marker org-clock-marker nil)
> +  (move-marker org-clock-hd-marker nil)
>   (setq global-mode-string
> 	(delq 'org-mode-line-string global-mode-string))
>   (force-mode-line-update)
2009-10-01 20:01:01 +02:00
Carsten Dominik
6b0a251eea Push version number to 6.31trans 2009-10-01 11:57:17 +02:00
Carsten Dominik
1b37d5e07c Release 6.31a 2009-10-01 09:13:58 +02:00
Carsten Dominik
c11e0b44ae Release 6.31 2009-09-30 16:03:17 +02:00
Carsten Dominik
cbafbe5f08 Make default clocktable properties configurable
Jeff Kowalczyk writes:

> I frequently use clocktables, and always use scope: subtree. The
> default scope is file.
>
> If it doesn't exist already (I didn't find it with grep), an org
> customization variable for this preference would be very helpful.
2009-09-17 07:35:23 +01:00
Carsten Dominik
291a6db848 Release number back to 6.30trans 2009-09-04 10:39:01 +02:00
Carsten Dominik
12ab55ca43 Release 6.30d 2009-09-03 13:53:46 +02:00
Carsten Dominik
adfa87282d Push version number to 6.30trans 2009-09-03 08:10:36 +02:00
Carsten Dominik
63e1714288 Release 6.30c 2009-09-02 14:40:56 +02:00
Carsten Dominik
1152565013 Avoid using time-to-seconds 2009-09-02 14:37:47 +02:00
Carsten Dominik
fc332703bf Release 6.30b 2009-09-02 11:33:10 +02:00
Carsten Dominik
1d04b205e6 Release 6.30a 2009-09-02 09:00:23 +02:00
Carsten Dominik
db70cdb13b Release 6.30 2009-09-01 06:09:23 +02:00
Carsten Dominik
6bddc14c20 New effort-setting commands
To set the effort property without going to column view.
2009-08-29 20:21:15 +02:00
Bastien Guerry
c34ca53f2f org-notify: bugfix by Bernt Hansen. 2009-08-26 11:28:25 +08:00
Bastien Guerry
754694dd4b Use org-notify to show a notification and possibly play a sound. 2009-08-24 02:44:29 +08:00
Carsten Dominik
0af5133334 Mark running clock in the agenda.
If the entry currently being clocked is present in the agenda, mark it.
2009-08-07 11:00:16 +02:00
Carsten Dominik
bfdd3d3fd3 Push version number to 6.29trans 2009-08-06 12:07:20 +02:00
Carsten Dominik
0864163024 Release 6.29c 2009-08-06 06:26:23 +02:00
Carsten Dominik
d6b37ddbea Release 6.29b 2009-08-05 12:34:30 +02:00
Carsten Dominik
1c25048e48 Release 6.29a 2009-08-04 23:54:22 +02:00
Carsten Dominik
d67a9be8a2 Release 6.29 2009-08-04 23:06:39 +02:00
Carsten Dominik
2eecb4c43c Fix white-space errors 2009-08-03 17:30:30 +02:00
Bastien Guerry
1a79ec6e31 Bugfix: recognize timestamps with an abbreviated format for days.
Emacs recently (when?) changed the abbreviated format for days.
The clock was confused when trying to mach this format.  This patch
by Nicolas Goaziou fixes it.
2009-07-29 13:44:52 +08:00
Bastien Guerry
7a1a62d2f2 Udate the docstring of org-show-notification. 2009-07-27 01:11:51 +08:00
Bastien Guerry
402448cb4c Code cleanup. 2009-07-26 21:00:52 +08:00
Bastien Guerry
aed038294a Fix typo. 2009-07-26 20:59:49 +08:00
Bastien Guerry
575192b4a4 Code cleanup. 2009-07-26 20:58:35 +08:00
Bastien Guerry
593022a66e Add a new :timestamp option for clock reports.
Using :timetamp t as an option in a clock report now allows
insertion of the timestamp for the clocked entry.  Timestamps
are searched for in this order: SCHEDULING, TIMESTAMP, DEADLINE
and TIMESTAMP_IA.
2009-07-26 06:05:09 +08:00
Bastien Guerry
12a9381803 Add and use a new option: org-show-notification-handler
This option lets the user customize the notification mechanism.
For example, she might want to use todochiku.el.

This option defaults to nil, hence doesn't change the previous
behavior: if the program notify-send is installed on the system,
use it, and falls back on using (message [notification]) if not.
2009-07-23 17:33:52 +02:00
Bastien Guerry
fa7e23ec39 Add org-clock-in-prepare-hook. Doc update.
This hook is called in org-clock-in earlier than the existing
org-clock-in-hook.  This is useful for functions that need to
modify the Effort property, for example.
2009-07-17 09:02:56 +02:00
Carsten Dominik
7087902788 Fix bug in org-narrow-to-subtree, which could lead to clock errors
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.
2009-07-08 14:29:18 +02:00
Carsten Dominik
e16c5b7b64 Fix typos 2009-07-06 22:30:39 +02:00
Carsten Dominik
f648323253 Push version number to 6.28trans 2009-06-26 17:26:50 +02:00
Carsten Dominik
cd4e52a5ef Release 6.28d 2009-06-26 17:23:27 +02:00
Carsten Dominik
00ddc4dba7 Release 6.28c 2009-06-26 09:27:50 +02:00
Carsten Dominik
e7ffcc1d4d Release 6.28b 2009-06-25 09:01:20 +02:00
Carsten Dominik
7906427aa6 Release 6.28 2009-06-25 08:59:59 +02:00