forked from mirrors/org-mode
Implement actions tied to cursor date in agenda.
This commit is contained in:
parent
e8202bf861
commit
be026ff5ad
|
@ -21,8 +21,8 @@ thanks for all the great ideas.
|
||||||
|
|
||||||
** Overview
|
** Overview
|
||||||
|
|
||||||
|
- Use cursor position in agenda for remember, scheduling and deadlines
|
||||||
- New API for mapping a function over all or selected entries
|
- New API for mapping a function over all or selected entries
|
||||||
- Remember templates can now use the cursor date in the agenda
|
|
||||||
- Remember templates can be filed to beginning/end of a file
|
- Remember templates can be filed to beginning/end of a file
|
||||||
- Visiting a filed remember buffer immediately
|
- Visiting a filed remember buffer immediately
|
||||||
- BBDB anniversaries are now links
|
- BBDB anniversaries are now links
|
||||||
|
@ -31,7 +31,48 @@ thanks for all the great ideas.
|
||||||
- Direct, single key access to allowed values in column view
|
- Direct, single key access to allowed values in column view
|
||||||
- New hook to hack exported iCalendar files
|
- New hook to hack exported iCalendar files
|
||||||
|
|
||||||
|
** Incompatible changes
|
||||||
|
|
||||||
|
*** `C-c C-x C-k' now calls `org-mark-entry-for-agenda-action'
|
||||||
|
It used to call =org-cut-special=, but that is also at bound
|
||||||
|
to the key =C-c C-x C-w=.
|
||||||
** Details
|
** Details
|
||||||
|
|
||||||
|
*** Making use of the cursor position in the agenda
|
||||||
|
|
||||||
|
The date at the cursor in the agenda (and also in the
|
||||||
|
calendar) can now be used to schedule entries, or to set the
|
||||||
|
date in a remember template correctly. It is also designed
|
||||||
|
to make it easier to move an entry to a date picked in the
|
||||||
|
agenda. Thanks to Thomas Baumann for starting the thread
|
||||||
|
that led to this development.
|
||||||
|
|
||||||
|
**** Calling remember with the cursor date in the agenda
|
||||||
|
|
||||||
|
If you want to use the date at the agenda cursor in a
|
||||||
|
remember template, start remember from the agenda with the
|
||||||
|
keys =k r=. While the template is being filled in, the
|
||||||
|
default date for all time stamps, and also for all
|
||||||
|
interactive escapes like =%^t= is now the date at the cursor
|
||||||
|
in the agenda. The exact same command can also be used from
|
||||||
|
the calendar if you prefer that.
|
||||||
|
|
||||||
|
**** Picking a date for scheduling/deadline in the agenda
|
||||||
|
|
||||||
|
You may now pick the date for scheduling an item or for
|
||||||
|
setting a deadline in the agenda, where you have the best
|
||||||
|
overview over free time slots. This is a two step process.
|
||||||
|
|
||||||
|
1. First you pick the entry that should be acted upon. In
|
||||||
|
the agenda, you use the keys =k m=. In an org-mode file,
|
||||||
|
this is on =C-c C-x C-k=.
|
||||||
|
|
||||||
|
2. Then you find the agenda date you want to apply. When the
|
||||||
|
cursor is anywhere in the block belonging to that date,
|
||||||
|
press =k s= to schedule, or =k d= to put a deadline. The
|
||||||
|
agenda is not updated immediately, press =r= if you want
|
||||||
|
it to show the affected entry in the right place.
|
||||||
|
|
||||||
*** New API for mapping a function over all or selected entries
|
*** New API for mapping a function over all or selected entries
|
||||||
|
|
||||||
Org has sophisticated mapping capabilities to find all
|
Org has sophisticated mapping capabilities to find all
|
||||||
|
@ -87,12 +128,9 @@ keyword =WAITING=, in all agenda files.
|
||||||
*** Changes in Remember templates
|
*** Changes in Remember templates
|
||||||
|
|
||||||
**** Remember templates can now use the cursor date in the agenda
|
**** Remember templates can now use the cursor date in the agenda
|
||||||
Two new escapes in remember templates, %v and %V, act like %t
|
|
||||||
and %T. The only difference is that if the remember process
|
Thanks to Thomas Baumann for starting up a thread
|
||||||
is started from the agenda or from the calendar, the date at
|
that let to this idea.
|
||||||
the cursor becomes the default for the date inserted, or (in
|
|
||||||
interactive use like %^V), the default date for the date/time
|
|
||||||
prompt. Thanks to Thomas Baumann for this idea.
|
|
||||||
|
|
||||||
**** Filing remember templates to the beginning or end of a file
|
**** Filing remember templates to the beginning or end of a file
|
||||||
You may now set the heading part of a remember template
|
You may now set the heading part of a remember template
|
||||||
|
|
|
@ -49,8 +49,9 @@ has been posted [[http://www.philfam.co.uk/pete/GTD/org-mode/update-org.sh][here
|
||||||
|
|
||||||
**** Get the development version
|
**** Get the development version
|
||||||
|
|
||||||
You can check out the latest Org development version by using git.
|
You can check out the latest Org development version (along with every
|
||||||
More information on this page: http://repo.or.cz/w/org-mode.git
|
release we ever had) by using git. More information on this page:
|
||||||
|
http://repo.or.cz/w/org-mode.git
|
||||||
|
|
||||||
* Documentation
|
* Documentation
|
||||||
** Manual and Reference card
|
** Manual and Reference card
|
||||||
|
@ -64,6 +65,11 @@ More information on this page: http://repo.or.cz/w/org-mode.git
|
||||||
produced by Takeshi Okano.
|
produced by Takeshi Okano.
|
||||||
- The [[file:faq.org][FAQ]] is not very up-to-date, but may still answer some of your
|
- The [[file:faq.org][FAQ]] is not very up-to-date, but may still answer some of your
|
||||||
questions. Please have a look before posting to emacs-orgmode@gnu.org.
|
questions. Please have a look before posting to emacs-orgmode@gnu.org.
|
||||||
|
- The Org manual is a GNU Manual released under the GFDL. If you
|
||||||
|
want to redistribute Org with a distribution that does not allow
|
||||||
|
the GFDL to be used, and if you see no other way to resolve this
|
||||||
|
licensing conflict, you must use the special [[file:org_dual_license.texi][dual-license version]]
|
||||||
|
of the manual.
|
||||||
|
|
||||||
* Links
|
* Links
|
||||||
|
|
||||||
|
|
51
doc/org.texi
51
doc/org.texi
|
@ -42,9 +42,9 @@ Permission is granted to copy, distribute and/or modify this document
|
||||||
under the terms of the GNU Free Documentation License, Version 1.1 or
|
under the terms of the GNU Free Documentation License, Version 1.1 or
|
||||||
any later version published by the Free Software Foundation; with no
|
any later version published by the Free Software Foundation; with no
|
||||||
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
|
||||||
and with the Back-Cover Texts as in (a) below. A copy of the
|
and with the Back-Cover Texts as in (a) below. You should have received a
|
||||||
license is included in the section entitled ``GNU Free Documentation
|
copy of the ``GNU Free Documentation License'' with GNU Emacs. If not, see
|
||||||
License.
|
@url{http://www.gnu.org/licenses/}.
|
||||||
|
|
||||||
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
(a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
|
||||||
this GNU Manual, like GNU software. Copies published by the Free
|
this GNU Manual, like GNU software. Copies published by the Free
|
||||||
|
@ -4502,6 +4502,15 @@ Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
|
||||||
happen in the line directly following the headline. Any CLOSED
|
happen in the line directly following the headline. Any CLOSED
|
||||||
timestamp will be removed. When called with a prefix argument, remove
|
timestamp will be removed. When called with a prefix argument, remove
|
||||||
the scheduling date from the entry.
|
the scheduling date from the entry.
|
||||||
|
@c
|
||||||
|
@kindex C-c C-x C-k
|
||||||
|
@kindex k a
|
||||||
|
@kindex k s
|
||||||
|
@item C-c C-x C-k
|
||||||
|
Mark the current entry for agenda action. After you have marked the entry
|
||||||
|
like this, you can open the agenda or the calendar to find an appropriate
|
||||||
|
date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
|
||||||
|
schedule the marked item.
|
||||||
@end table
|
@end table
|
||||||
|
|
||||||
@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
|
@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
|
||||||
|
@ -4797,6 +4806,11 @@ stored: Just call @code{org-remember} with a prefix argument. If you
|
||||||
use two prefix arguments, Org jumps to the location where the last
|
use two prefix arguments, Org jumps to the location where the last
|
||||||
remember note was stored.
|
remember note was stored.
|
||||||
|
|
||||||
|
You can also call @code{org-remember} in a special way from the agenda,
|
||||||
|
using the @kbd{k r} key combination. With this access, any time stamps
|
||||||
|
inserted by the selected remember template (see below) will default to
|
||||||
|
the cursor date in the agenda, rather than to the current date.
|
||||||
|
|
||||||
@node Remember templates, Storing notes, Setting up Remember, Remember
|
@node Remember templates, Storing notes, Setting up Remember, Remember
|
||||||
@section Remember templates
|
@section Remember templates
|
||||||
@cindex templates, for remember
|
@cindex templates, for remember
|
||||||
|
@ -4870,8 +4884,6 @@ insertion of content:
|
||||||
%t @r{time stamp, date only}
|
%t @r{time stamp, date only}
|
||||||
%T @r{time stamp with date and time}
|
%T @r{time stamp with date and time}
|
||||||
%u, %U @r{like the above, but inactive time stamps}
|
%u, %U @r{like the above, but inactive time stamps}
|
||||||
%v, %V @r{like %t,%T, but when called from agenda or calendar, use the}
|
|
||||||
@r{cursor date as the default date.}
|
|
||||||
%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
|
%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
|
||||||
@r{You may define a prompt like @code{%^@{Birthday@}t}}
|
@r{You may define a prompt like @code{%^@{Birthday@}t}}
|
||||||
%n @r{user name (taken from @code{user-full-name})}
|
%n @r{user name (taken from @code{user-full-name})}
|
||||||
|
@ -5853,6 +5865,21 @@ Schedule this item
|
||||||
@item C-c C-d
|
@item C-c C-d
|
||||||
Set a deadline for this item.
|
Set a deadline for this item.
|
||||||
@c
|
@c
|
||||||
|
@kindex k
|
||||||
|
@item k
|
||||||
|
Agenda actions, to set dates for selected items to the cursor date.
|
||||||
|
This command also works in the calendar! The command prompts for an
|
||||||
|
additonal key:
|
||||||
|
@example
|
||||||
|
m @r{Mark the entry at point for action. You can also make entries}
|
||||||
|
@r{in Org files with @kbd{C-c C-x C-k}.}
|
||||||
|
d @r{Set the deadline of the marked entry to the date at point.}
|
||||||
|
s @r{Schedule the marked entry at the date at point.}
|
||||||
|
r @r{Call @code{org-remember} with the cursor date as default date.}
|
||||||
|
@end example
|
||||||
|
Press @kbd{r} afterwards to refresh the agenda and see the effect of the
|
||||||
|
command.
|
||||||
|
@c
|
||||||
@kindex S-@key{right}
|
@kindex S-@key{right}
|
||||||
@item S-@key{right}
|
@item S-@key{right}
|
||||||
Change the time stamp associated with the current line by one day into the
|
Change the time stamp associated with the current line by one day into the
|
||||||
|
@ -9377,6 +9404,9 @@ let me know.
|
||||||
@item
|
@item
|
||||||
@i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
|
@i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
|
||||||
@item
|
@item
|
||||||
|
@i{Christophe Bataillon} created the great unicorn logo that we use on the
|
||||||
|
Org-mode website.
|
||||||
|
@item
|
||||||
@i{Alex Bochannek} provided a patch for rounding time stamps.
|
@i{Alex Bochannek} provided a patch for rounding time stamps.
|
||||||
@item
|
@item
|
||||||
@i{Charles Cave}'s suggestion sparked the implementation of templates
|
@i{Charles Cave}'s suggestion sparked the implementation of templates
|
||||||
|
@ -9512,11 +9542,12 @@ keyword.
|
||||||
system.
|
system.
|
||||||
@item
|
@item
|
||||||
@i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
|
@i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
|
||||||
@file{muse.el}, which have similar goals as Org. Initially the development
|
@file{muse.el}, which have similar goals as Org. Initially the
|
||||||
of Org was fully independent because I was not aware of the existence of
|
development of Org was fully independent because I was not aware of the
|
||||||
these packages. But with time I have accasionally looked at John's code and
|
existence of these packages. But with time I have accasionally looked
|
||||||
learned a lot from it. John has also contributed a number of great ideas and
|
at John's code and learned a lot from it. John has also contributed a
|
||||||
patches directly to Org, including the file @code{org-mac-message.el}'
|
number of great ideas and patches directly to Org, including the file
|
||||||
|
@code{org-mac-message.el}'
|
||||||
@item
|
@item
|
||||||
@i{Carsten Wimmer} suggested some changes and helped fix a bug in
|
@i{Carsten Wimmer} suggested some changes and helped fix a bug in
|
||||||
linking to Gnus.
|
linking to Gnus.
|
||||||
|
|
|
@ -1,18 +1,28 @@
|
||||||
|
2008-06-16 Carsten Dominik <dominik@science.uva.nl>
|
||||||
|
|
||||||
|
* org.el (org-calendar-agenda-action-key): New option.
|
||||||
|
(org-get-cursor-date): New function.
|
||||||
|
(org-mark-entry-for-agenda-action): New command.
|
||||||
|
(org-overriding-default-time): New variable.
|
||||||
|
(org-read-date): Respect `org-overriding-default-time'.
|
||||||
|
|
||||||
|
* org-remember.el (org-remember-apply-template): Respect the
|
||||||
|
ovverriding default time.
|
||||||
|
|
||||||
|
* org-agenda.el (org-agenda-action-marker): New variable.
|
||||||
|
(org-agenda-action): New command.
|
||||||
|
(org-agenda-do-action): New function.
|
||||||
|
|
||||||
2008-06-15 Carsten Dominik <dominik@science.uva.nl>
|
2008-06-15 Carsten Dominik <dominik@science.uva.nl>
|
||||||
|
|
||||||
* org.el (org-schedule, org-deadline): Protect scheduled and
|
* org.el (org-schedule, org-deadline): Protect scheduled and
|
||||||
deadline tasks against changes that accidently remove the
|
deadline tasks against changes that accidently remove the
|
||||||
repeater.
|
repeater. Also show a message with the new date when done.
|
||||||
|
|
||||||
* org-remember.el (org-remember-apply-template): Access the
|
|
||||||
default time stored by `org-store-link'.
|
|
||||||
|
|
||||||
* org.el (org-store-link-set-default-date): New function.
|
|
||||||
|
|
||||||
2008-06-15 Carsten Dominik <dominik@science.uva.nl>
|
2008-06-15 Carsten Dominik <dominik@science.uva.nl>
|
||||||
|
|
||||||
* org.el (org-beginning-of-line): Cater for the case when there
|
* org.el (org-beginning-of-line): Cater for the case when there
|
||||||
are toags but no headline text.
|
are tags but no headline text.
|
||||||
(org-align-tags-here): Convert to tabs only when indent-tabs-mode
|
(org-align-tags-here): Convert to tabs only when indent-tabs-mode
|
||||||
it set.
|
it set.
|
||||||
|
|
||||||
|
|
|
@ -1087,6 +1087,8 @@ The following commands are available:
|
||||||
(org-defkey org-agenda-mode-map "y" 'org-agenda-year-view)
|
(org-defkey org-agenda-mode-map "y" 'org-agenda-year-view)
|
||||||
(org-defkey org-agenda-mode-map "\C-c\C-z" 'org-agenda-add-note)
|
(org-defkey org-agenda-mode-map "\C-c\C-z" 'org-agenda-add-note)
|
||||||
(org-defkey org-agenda-mode-map "z" 'org-agenda-add-note)
|
(org-defkey org-agenda-mode-map "z" 'org-agenda-add-note)
|
||||||
|
(org-defkey org-agenda-mode-map "k" 'org-agenda-action)
|
||||||
|
(org-defkey org-agenda-mode-map "\C-c\C-x\C-k" 'org-agenda-action)
|
||||||
(org-defkey org-agenda-mode-map [(shift right)] 'org-agenda-date-later)
|
(org-defkey org-agenda-mode-map [(shift right)] 'org-agenda-date-later)
|
||||||
(org-defkey org-agenda-mode-map [(shift left)] 'org-agenda-date-earlier)
|
(org-defkey org-agenda-mode-map [(shift left)] 'org-agenda-date-earlier)
|
||||||
(org-defkey org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later)
|
(org-defkey org-agenda-mode-map [?\C-c ?\C-x (right)] 'org-agenda-date-later)
|
||||||
|
@ -1193,6 +1195,11 @@ The following commands are available:
|
||||||
["Schedule" org-agenda-schedule t]
|
["Schedule" org-agenda-schedule t]
|
||||||
["Set Deadline" org-agenda-deadline t]
|
["Set Deadline" org-agenda-deadline t]
|
||||||
"--"
|
"--"
|
||||||
|
["Mark item" org-agenda-action :active t :keys "k m"]
|
||||||
|
["Show mark item" org-agenda-action :active t :keys "k v"]
|
||||||
|
["Schedule marked item" org-agenda-action :active t :keys "k s"]
|
||||||
|
["Set Deadline for marked item" org-agenda-action :active t :keys "k d"]
|
||||||
|
"--"
|
||||||
["Change Date +1 day" org-agenda-date-later (org-agenda-check-type nil 'agenda 'timeline)]
|
["Change Date +1 day" org-agenda-date-later (org-agenda-check-type nil 'agenda 'timeline)]
|
||||||
["Change Date -1 day" org-agenda-date-earlier (org-agenda-check-type nil 'agenda 'timeline)]
|
["Change Date -1 day" org-agenda-date-earlier (org-agenda-check-type nil 'agenda 'timeline)]
|
||||||
["Change Date to ..." org-agenda-date-prompt (org-agenda-check-type nil 'agenda 'timeline)])
|
["Change Date to ..." org-agenda-date-prompt (org-agenda-check-type nil 'agenda 'timeline)])
|
||||||
|
@ -4166,12 +4173,12 @@ written as 2-digit years."
|
||||||
(setq org-agenda-ndays 7)
|
(setq org-agenda-ndays 7)
|
||||||
(org-agenda-change-time-span 'week iso-week))
|
(org-agenda-change-time-span 'week iso-week))
|
||||||
(defun org-agenda-month-view (&optional month)
|
(defun org-agenda-month-view (&optional month)
|
||||||
"Switch to daily view for agenda.
|
"Switch to monthly view for agenda.
|
||||||
With argument MONTH, switch to that month."
|
With argument MONTH, switch to that month."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(org-agenda-change-time-span 'month month))
|
(org-agenda-change-time-span 'month month))
|
||||||
(defun org-agenda-year-view (&optional year)
|
(defun org-agenda-year-view (&optional year)
|
||||||
"Switch to daily view for agenda.
|
"Switch to yearly view for agenda.
|
||||||
With argument YEAR, switch to that year.
|
With argument YEAR, switch to that year.
|
||||||
If MONTH has more then 2 digits, only the last two encode the
|
If MONTH has more then 2 digits, only the last two encode the
|
||||||
month. Any digits before this encode a year. So 200712 means
|
month. Any digits before this encode a year. So 200712 means
|
||||||
|
@ -4922,6 +4929,69 @@ be used to request time specification in the time stamp."
|
||||||
(org-agenda-show-new-time marker ts "S"))
|
(org-agenda-show-new-time marker ts "S"))
|
||||||
(message "Deadline for this item set to %s" ts)))
|
(message "Deadline for this item set to %s" ts)))
|
||||||
|
|
||||||
|
(defun org-agenda-action ()
|
||||||
|
"Select entry for agenda action, or execute an agenda action.
|
||||||
|
This command prompts for another letter. Valid inputs are:
|
||||||
|
|
||||||
|
m Mark the entry at point for an agenda action
|
||||||
|
s Schedule the marked entry to the date at the cursor
|
||||||
|
d Set the deadline of the marked entry to the date at the cursor
|
||||||
|
r Call `org-remember' with cursor date as the default date
|
||||||
|
SPC Show marked entry in other window
|
||||||
|
TAB Visit marked entry in other window
|
||||||
|
|
||||||
|
The cursor may be at a date in the calendar, or in the Org agenda."
|
||||||
|
(interactive)
|
||||||
|
(let (pos ans)
|
||||||
|
(message "Select action: [m]ark | [s]chedule [d]eadline [r]emember [ ]show")
|
||||||
|
(setq ans (read-char-exclusive))
|
||||||
|
(cond
|
||||||
|
((equal ans ?m)
|
||||||
|
;; Mark this entry
|
||||||
|
(if (eq major-mode 'org-agenda-mode)
|
||||||
|
(let ((m (or (get-text-property (point) 'org-hd-marker)
|
||||||
|
(get-text-property (point) 'org-marker))))
|
||||||
|
(if m
|
||||||
|
(progn
|
||||||
|
(move-marker org-agenda-action-marker
|
||||||
|
(marker-position m) (marker-buffer m))
|
||||||
|
(message "Entry marked for action; press `k' at desired date in agenda or calendar"))
|
||||||
|
(error "Don't know which entry to mark")))
|
||||||
|
(error "This command works only in the agenda")))
|
||||||
|
((equal ans ?s)
|
||||||
|
(org-agenda-do-action '(org-schedule nil org-overriding-default-time)))
|
||||||
|
((equal ans ?d)
|
||||||
|
(org-agenda-do-action '(org-deadline nil org-overriding-default-time)))
|
||||||
|
((equal ans ?r)
|
||||||
|
(org-agenda-do-action '(org-remember) t))
|
||||||
|
((equal ans ?\ )
|
||||||
|
(let ((cw (selected-window)))
|
||||||
|
(org-switch-to-buffer-other-window
|
||||||
|
(marker-buffer org-agenda-action-marker))
|
||||||
|
(goto-char org-agenda-action-marker)
|
||||||
|
(org-show-context 'agenda)
|
||||||
|
(select-window cw)))
|
||||||
|
((equal ans ?\C-i)
|
||||||
|
(org-switch-to-buffer-other-window
|
||||||
|
(marker-buffer org-agenda-action-marker))
|
||||||
|
(goto-char org-agenda-action-marker)
|
||||||
|
(org-show-context 'agenda))
|
||||||
|
(t (error "Invalid agenda action %c" ans)))))
|
||||||
|
|
||||||
|
(defun org-agenda-do-action (form &optional current-buffer)
|
||||||
|
"Evaluate FORM at the entry pointed to by `org-agenda-action-marker'."
|
||||||
|
(let ((org-overriding-default-time (org-get-cursor-date)))
|
||||||
|
(if current-buffer
|
||||||
|
(eval form)
|
||||||
|
(if (not (marker-buffer org-agenda-action-marker))
|
||||||
|
(error "No entry has bee selected for agenda action")
|
||||||
|
(with-current-buffer (marker-buffer org-agenda-action-marker)
|
||||||
|
(save-excursion
|
||||||
|
(save-restriction
|
||||||
|
(widen)
|
||||||
|
(goto-char org-agenda-action-marker)
|
||||||
|
(eval form))))))))
|
||||||
|
|
||||||
(defun org-agenda-clock-in (&optional arg)
|
(defun org-agenda-clock-in (&optional arg)
|
||||||
"Start the clock on the currently selected item."
|
"Start the clock on the currently selected item."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
|
@ -5184,3 +5254,5 @@ belonging to the \"Work\" category."
|
||||||
;; arch-tag: 77f7565d-7c4b-44af-a2df-9f6f7070cff1
|
;; arch-tag: 77f7565d-7c4b-44af-a2df-9f6f7070cff1
|
||||||
|
|
||||||
;;; org-agenda.el ends here
|
;;; org-agenda.el ends here
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -123,14 +123,16 @@ Furthermore, the following %-escapes will be replaced with content:
|
||||||
%t time stamp, date only
|
%t time stamp, date only
|
||||||
%T time stamp with date and time
|
%T time stamp with date and time
|
||||||
%u, %U like the above, but inactive time stamps
|
%u, %U like the above, but inactive time stamps
|
||||||
%v, %V like %t,%T, but use agenda/calendar date as default.
|
%^t like %t, but prompt for date. Similarly %^T, %^u, %^U.
|
||||||
%^t like %t, but prompt for date. Similarly %^T, %^u, %^U, %^v %^V
|
You may define a prompt like %^{Please specify birthday
|
||||||
You may define a prompt like %^{Please specify birthday}t
|
|
||||||
%n user name (taken from `user-full-name')
|
%n user name (taken from `user-full-name')
|
||||||
%a annotation, normally the link created with org-store-link
|
%a annotation, normally the link created with org-store-link
|
||||||
%i initial content, the region active. If %i is indented,
|
%i initial content, the region active. If %i is indented,
|
||||||
the entire inserted text will be indented as well.
|
the entire inserted text will be indented as well.
|
||||||
%c content of the clipboard, or current kill ring head
|
%c current kill ring head
|
||||||
|
%x content of the X clipboard
|
||||||
|
%^C Interactive selection of which kill or clip to use
|
||||||
|
%^L Like %^C, but insert as link
|
||||||
%^g prompt for tags, with completion on tags in target file
|
%^g prompt for tags, with completion on tags in target file
|
||||||
%^G prompt for tags, with completion all tags in all agenda files
|
%^G prompt for tags, with completion all tags in all agenda files
|
||||||
%:keyword specific information for certain link types, see below
|
%:keyword specific information for certain link types, see below
|
||||||
|
@ -313,9 +315,9 @@ This function should be placed into `remember-mode-hook' and in fact requires
|
||||||
to be run from that hook to function properly."
|
to be run from that hook to function properly."
|
||||||
(if org-remember-templates
|
(if org-remember-templates
|
||||||
(let* ((entry (org-select-remember-template use-char))
|
(let* ((entry (org-select-remember-template use-char))
|
||||||
|
(ct (or org-overriding-default-time (org-current-time)))
|
||||||
(tpl (car entry))
|
(tpl (car entry))
|
||||||
(plist-p (if org-store-link-plist t nil))
|
(plist-p (if org-store-link-plist t nil))
|
||||||
(default-time (plist-get org-store-link-plist :default-time))
|
|
||||||
(file (if (and (nth 1 entry) (stringp (nth 1 entry))
|
(file (if (and (nth 1 entry) (stringp (nth 1 entry))
|
||||||
(string-match "\\S-" (nth 1 entry)))
|
(string-match "\\S-" (nth 1 entry)))
|
||||||
(nth 1 entry)
|
(nth 1 entry)
|
||||||
|
@ -325,10 +327,8 @@ to be run from that hook to function properly."
|
||||||
(v-x (or (org-get-x-clipboard 'PRIMARY)
|
(v-x (or (org-get-x-clipboard 'PRIMARY)
|
||||||
(org-get-x-clipboard 'CLIPBOARD)
|
(org-get-x-clipboard 'CLIPBOARD)
|
||||||
(org-get-x-clipboard 'SECONDARY)))
|
(org-get-x-clipboard 'SECONDARY)))
|
||||||
(v-t (format-time-string (car org-time-stamp-formats) (org-current-time)))
|
(v-t (format-time-string (car org-time-stamp-formats) ct))
|
||||||
(v-T (format-time-string (cdr org-time-stamp-formats) (org-current-time)))
|
(v-T (format-time-string (cdr org-time-stamp-formats) ct))
|
||||||
(v-v (format-time-string (car org-time-stamp-formats) (or default-time (org-current-time))))
|
|
||||||
(v-V (format-time-string (cdr org-time-stamp-formats) (or default-time (org-current-time))))
|
|
||||||
(v-u (concat "[" (substring v-t 1 -1) "]"))
|
(v-u (concat "[" (substring v-t 1 -1) "]"))
|
||||||
(v-U (concat "[" (substring v-T 1 -1) "]"))
|
(v-U (concat "[" (substring v-T 1 -1) "]"))
|
||||||
;; `initial' and `annotation' are bound in `remember'
|
;; `initial' and `annotation' are bound in `remember'
|
||||||
|
@ -371,7 +371,7 @@ to be run from that hook to function properly."
|
||||||
(or (cdr org-remember-previous-location) "???"))))
|
(or (cdr org-remember-previous-location) "???"))))
|
||||||
(insert tpl) (goto-char (point-min))
|
(insert tpl) (goto-char (point-min))
|
||||||
;; Simple %-escapes
|
;; Simple %-escapes
|
||||||
(while (re-search-forward "%\\([tTuUvVaiAcx]\\)" nil t)
|
(while (re-search-forward "%\\([tTuUaiAcx]\\)" nil t)
|
||||||
(when (and initial (equal (match-string 0) "%i"))
|
(when (and initial (equal (match-string 0) "%i"))
|
||||||
(save-match-data
|
(save-match-data
|
||||||
(let* ((lead (buffer-substring
|
(let* ((lead (buffer-substring
|
||||||
|
@ -425,7 +425,7 @@ to be run from that hook to function properly."
|
||||||
(org-set-local 'org-remember-default-headline headline))
|
(org-set-local 'org-remember-default-headline headline))
|
||||||
;; Interactive template entries
|
;; Interactive template entries
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGuUtTvVCL]\\)?" nil t)
|
(while (re-search-forward "%^\\({\\([^}]*\\)}\\)?\\([gGtTuUCL]\\)?" nil t)
|
||||||
(setq char (if (match-end 3) (match-string 3))
|
(setq char (if (match-end 3) (match-string 3))
|
||||||
prompt (if (match-end 2) (match-string 2)))
|
prompt (if (match-end 2) (match-string 2)))
|
||||||
(goto-char (match-beginning 0))
|
(goto-char (match-beginning 0))
|
||||||
|
@ -471,12 +471,10 @@ to be run from that hook to function properly."
|
||||||
'(clipboards . 1)
|
'(clipboards . 1)
|
||||||
(car clipboards))))))
|
(car clipboards))))))
|
||||||
(char
|
(char
|
||||||
|
;; These are the date/time related ones
|
||||||
(setq org-time-was-given (equal (upcase char) char))
|
(setq org-time-was-given (equal (upcase char) char))
|
||||||
(setq time (org-read-date (equal (upcase char) "U") t nil
|
(setq time (org-read-date (equal (upcase char) "U") t nil
|
||||||
prompt
|
prompt))
|
||||||
(if (equal (upcase char) "V")
|
|
||||||
default-time
|
|
||||||
nil)))
|
|
||||||
(org-insert-time-stamp time org-time-was-given
|
(org-insert-time-stamp time org-time-was-given
|
||||||
(member char '("u" "U"))
|
(member char '("u" "U"))
|
||||||
nil nil (list org-end-time-was-given)))
|
nil nil (list org-end-time-was-given)))
|
||||||
|
|
91
lisp/org.el
91
lisp/org.el
|
@ -2000,9 +2000,19 @@ forth between agenda and calendar."
|
||||||
:group 'org-agenda
|
:group 'org-agenda
|
||||||
:type 'sexp)
|
:type 'sexp)
|
||||||
|
|
||||||
|
(defcustom org-calendar-agenda-action-key [?k]
|
||||||
|
"The key to be installed in `calendar-mode-map' for agenda-action.
|
||||||
|
The command `org-agenda-action' will be bound to this key. The
|
||||||
|
default is the character `k' because we use the same key in the agenda."
|
||||||
|
:group 'org-agenda
|
||||||
|
:type 'sexp)
|
||||||
|
|
||||||
(eval-after-load "calendar"
|
(eval-after-load "calendar"
|
||||||
'(org-defkey calendar-mode-map org-calendar-to-agenda-key
|
'(progn
|
||||||
'org-calendar-goto-agenda))
|
(org-defkey calendar-mode-map org-calendar-to-agenda-key
|
||||||
|
'org-calendar-goto-agenda)
|
||||||
|
(org-defkey calendar-mode-map org-calendar-agenda-action-key
|
||||||
|
'org-agenda-action)))
|
||||||
|
|
||||||
(defgroup org-latex nil
|
(defgroup org-latex nil
|
||||||
"Options for embedding LaTeX code into Org-mode."
|
"Options for embedding LaTeX code into Org-mode."
|
||||||
|
@ -6524,7 +6534,6 @@ For file links, arg negates `org-context-in-file-links'."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(org-load-modules-maybe)
|
(org-load-modules-maybe)
|
||||||
(setq org-store-link-plist nil) ; reset
|
(setq org-store-link-plist nil) ; reset
|
||||||
(org-store-link-set-default-date)
|
|
||||||
(let (link cpltxt desc description search txt)
|
(let (link cpltxt desc description search txt)
|
||||||
(cond
|
(cond
|
||||||
|
|
||||||
|
@ -6659,24 +6668,6 @@ For file links, arg negates `org-context-in-file-links'."
|
||||||
(setq org-store-link-plist
|
(setq org-store-link-plist
|
||||||
(plist-put org-store-link-plist key value)))))
|
(plist-put org-store-link-plist key value)))))
|
||||||
|
|
||||||
(defun org-store-link-set-default-date ()
|
|
||||||
"Store the date at the cursor so that remember templates can access it.
|
|
||||||
This works in the calendar, and in the Org Agenda. It is a no-op in
|
|
||||||
any other modes."
|
|
||||||
(let (date day defd)
|
|
||||||
(cond
|
|
||||||
((eq major-mode 'calendar-mode)
|
|
||||||
(setq date (calendar-cursor-to-date)
|
|
||||||
defd (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
|
|
||||||
((eq major-mode 'org-agenda-mode)
|
|
||||||
(setq day (get-text-property (point) 'day))
|
|
||||||
(if day
|
|
||||||
(setq date (calendar-gregorian-from-absolute day)
|
|
||||||
defd (encode-time 0 0 0 (nth 1 date) (nth 0 date)
|
|
||||||
(nth 2 date))))))
|
|
||||||
(when defd
|
|
||||||
(org-store-link-props :default-time defd))))
|
|
||||||
|
|
||||||
(defun org-email-link-description (&optional fmt)
|
(defun org-email-link-description (&optional fmt)
|
||||||
"Return the description part of an email link.
|
"Return the description part of an email link.
|
||||||
This takes information from `org-store-link-plist' and formats it
|
This takes information from `org-store-link-plist' and formats it
|
||||||
|
@ -8704,9 +8695,11 @@ of `org-todo-keywords-1'."
|
||||||
(message "%d TODO entries found"
|
(message "%d TODO entries found"
|
||||||
(org-occur (concat "^" outline-regexp " *" kwd-re )))))
|
(org-occur (concat "^" outline-regexp " *" kwd-re )))))
|
||||||
|
|
||||||
(defun org-deadline (&optional remove)
|
(defun org-deadline (&optional remove time)
|
||||||
"Insert the \"DEADLINE:\" string with a timestamp to make a deadline.
|
"Insert the \"DEADLINE:\" string with a timestamp to make a deadline.
|
||||||
With argument REMOVE, remove any deadline from the item."
|
With argument REMOVE, remove any deadline from the item.
|
||||||
|
When TIME is set, it should be an internal time specification, and the
|
||||||
|
scheduling will use the corresponding date."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(if remove
|
(if remove
|
||||||
(progn
|
(progn
|
||||||
|
@ -8714,11 +8707,14 @@ With argument REMOVE, remove any deadline from the item."
|
||||||
(message "Item no longer has a deadline."))
|
(message "Item no longer has a deadline."))
|
||||||
(if (org-get-repeat)
|
(if (org-get-repeat)
|
||||||
(error "Cannot change deadline on task with repeater, please do that by hand")
|
(error "Cannot change deadline on task with repeater, please do that by hand")
|
||||||
(org-add-planning-info 'deadline nil 'closed))))
|
(org-add-planning-info 'deadline time 'closed)
|
||||||
|
(message "Deadline on %s" org-last-inserted-timestamp))))
|
||||||
|
|
||||||
(defun org-schedule (&optional remove)
|
(defun org-schedule (&optional remove time)
|
||||||
"Insert the SCHEDULED: string with a timestamp to schedule a TODO item.
|
"Insert the SCHEDULED: string with a timestamp to schedule a TODO item.
|
||||||
With argument REMOVE, remove any scheduling date from the item."
|
With argument REMOVE, remove any scheduling date from the item.
|
||||||
|
When TIME is set, it should be an internal time specification, and the
|
||||||
|
scheduling will use the corresponding date."
|
||||||
(interactive "P")
|
(interactive "P")
|
||||||
(if remove
|
(if remove
|
||||||
(progn
|
(progn
|
||||||
|
@ -8726,7 +8722,8 @@ With argument REMOVE, remove any scheduling date from the item."
|
||||||
(message "Item is no longer scheduled."))
|
(message "Item is no longer scheduled."))
|
||||||
(if (org-get-repeat)
|
(if (org-get-repeat)
|
||||||
(error "Cannot reschedule task with repeater, please do that by hand")
|
(error "Cannot reschedule task with repeater, please do that by hand")
|
||||||
(org-add-planning-info 'scheduled nil 'closed))))
|
(org-add-planning-info 'scheduled time 'closed)
|
||||||
|
(message "Scheduled to %s" org-last-inserted-timestamp))))
|
||||||
|
|
||||||
(defun org-remove-timestamp-with-keyword (keyword)
|
(defun org-remove-timestamp-with-keyword (keyword)
|
||||||
"Remove all time stamps with KEYWORD in the current entry."
|
"Remove all time stamps with KEYWORD in the current entry."
|
||||||
|
@ -10600,6 +10597,8 @@ Return the position where this entry starts, or nil if there is no such entry."
|
||||||
;;;; Timestamps
|
;;;; Timestamps
|
||||||
|
|
||||||
(defvar org-last-changed-timestamp nil)
|
(defvar org-last-changed-timestamp nil)
|
||||||
|
(defvar org-last-inserted-timestamp nil
|
||||||
|
"The last time stamp inserted with `org-insert-time-stamp'.")
|
||||||
(defvar org-time-was-given) ; dynamically scoped parameter
|
(defvar org-time-was-given) ; dynamically scoped parameter
|
||||||
(defvar org-end-time-was-given) ; dynamically scoped parameter
|
(defvar org-end-time-was-given) ; dynamically scoped parameter
|
||||||
(defvar org-ts-what) ; dynamically scoped parameter
|
(defvar org-ts-what) ; dynamically scoped parameter
|
||||||
|
@ -10689,6 +10688,7 @@ So these are more for recording a certain time/date."
|
||||||
|
|
||||||
(defvar org-plain-time-of-day-regexp) ; defined below
|
(defvar org-plain-time-of-day-regexp) ; defined below
|
||||||
|
|
||||||
|
(defvar org-overriding-default-time nil) ; dynamically scoped
|
||||||
(defvar org-read-date-overlay nil)
|
(defvar org-read-date-overlay nil)
|
||||||
(defvar org-dcst nil) ; dynamically scoped
|
(defvar org-dcst nil) ; dynamically scoped
|
||||||
|
|
||||||
|
@ -10746,7 +10746,7 @@ user."
|
||||||
(if (equal with-time '(16)) '(0 0) org-time-stamp-rounding-minutes))
|
(if (equal with-time '(16)) '(0 0) org-time-stamp-rounding-minutes))
|
||||||
(org-dcst org-display-custom-times)
|
(org-dcst org-display-custom-times)
|
||||||
(ct (org-current-time))
|
(ct (org-current-time))
|
||||||
(def (or default-time ct))
|
(def (or org-overriding-default-time default-time ct))
|
||||||
(defdecode (decode-time def))
|
(defdecode (decode-time def))
|
||||||
(dummy (progn
|
(dummy (progn
|
||||||
(when (< (nth 2 defdecode) org-extend-today-until)
|
(when (< (nth 2 defdecode) org-extend-today-until)
|
||||||
|
@ -11110,7 +11110,7 @@ The command returns the inserted time stamp."
|
||||||
(insert-before-markers extra)
|
(insert-before-markers extra)
|
||||||
(forward-char 1))
|
(forward-char 1))
|
||||||
(insert-before-markers (or post ""))
|
(insert-before-markers (or post ""))
|
||||||
stamp))
|
(setq org-last-inserted-timestamp stamp)))
|
||||||
|
|
||||||
(defun org-toggle-time-stamp-overlays ()
|
(defun org-toggle-time-stamp-overlays ()
|
||||||
"Toggle the use of custom time stamp formats."
|
"Toggle the use of custom time stamp formats."
|
||||||
|
@ -12488,7 +12488,7 @@ The images can be removed again with \\[org-ctrl-c-ctrl-c]."
|
||||||
(org-defkey org-mode-map "\C-c:" 'org-toggle-fixed-width-section)
|
(org-defkey org-mode-map "\C-c:" 'org-toggle-fixed-width-section)
|
||||||
(org-defkey org-mode-map "\C-c\C-x\C-f" 'org-emphasize)
|
(org-defkey org-mode-map "\C-c\C-x\C-f" 'org-emphasize)
|
||||||
|
|
||||||
(org-defkey org-mode-map "\C-c\C-x\C-k" 'org-cut-special)
|
(org-defkey org-mode-map "\C-c\C-x\C-k" 'org-mark-entry-for-agenda-action)
|
||||||
(org-defkey org-mode-map "\C-c\C-x\C-w" 'org-cut-special)
|
(org-defkey org-mode-map "\C-c\C-x\C-w" 'org-cut-special)
|
||||||
(org-defkey org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
|
(org-defkey org-mode-map "\C-c\C-x\M-w" 'org-copy-special)
|
||||||
(org-defkey org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
|
(org-defkey org-mode-map "\C-c\C-x\C-y" 'org-paste-special)
|
||||||
|
@ -13856,6 +13856,37 @@ not an indirect buffer."
|
||||||
(save-match-data
|
(save-match-data
|
||||||
(string-match (org-image-file-name-regexp) file)))
|
(string-match (org-image-file-name-regexp) file)))
|
||||||
|
|
||||||
|
(defun org-get-cursor-date ()
|
||||||
|
"Return the date at cursor in as a time.
|
||||||
|
This works in the calendar and in the agenda, anywhere else it just
|
||||||
|
returns the current time."
|
||||||
|
(let (date day defd)
|
||||||
|
(cond
|
||||||
|
((eq major-mode 'calendar-mode)
|
||||||
|
(setq date (calendar-cursor-to-date)
|
||||||
|
defd (encode-time 0 0 0 (nth 1 date) (nth 0 date) (nth 2 date))))
|
||||||
|
((eq major-mode 'org-agenda-mode)
|
||||||
|
(setq day (get-text-property (point) 'day))
|
||||||
|
(if day
|
||||||
|
(setq date (calendar-gregorian-from-absolute day)
|
||||||
|
defd (encode-time 0 0 0 (nth 1 date) (nth 0 date)
|
||||||
|
(nth 2 date))))))
|
||||||
|
(or defd (current-time))))
|
||||||
|
|
||||||
|
(defvar org-agenda-action-marker (make-marker)
|
||||||
|
"Marker pointing to the entry for the next agenda action.")
|
||||||
|
|
||||||
|
(defun org-mark-entry-for-agenda-action ()
|
||||||
|
"Mark the current entry as target of an agenda action.
|
||||||
|
Agenda actions are actions executed from the agenda with the key `k',
|
||||||
|
which make use of the date at the cursor."
|
||||||
|
(interactive)
|
||||||
|
(move-marker org-agenda-action-marker
|
||||||
|
(save-excursion (org-back-to-heading t) (point))
|
||||||
|
(current-buffer))
|
||||||
|
(message
|
||||||
|
"Entry marked for action; press `k' at desired date in agenda or calendar"))
|
||||||
|
|
||||||
;;; Paragraph filling stuff.
|
;;; Paragraph filling stuff.
|
||||||
;; We want this to be just right, so use the full arsenal.
|
;; We want this to be just right, so use the full arsenal.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue