* [PATCH] Agenda: Fortnight time span
@ 2013-05-01 2:54 Michael Gauland
2013-08-09 9:43 ` Carsten Dominik
0 siblings, 1 reply; 2+ messages in thread
From: Michael Gauland @ 2013-05-01 2:54 UTC (permalink / raw)
To: emacs-orgmode
Agenda: Add fortnight as a time span
* lisp/org-agenda.el (org-agenda-custom-commands-local-options): Add
fortnight as a choice for org-agenda-span.
(org-agenda-span): Add fortnight as a choice for customising org-agenda-span.
(): Add 'Fortnight View' to the org-agenda-menu
(org-agenda-list): If number of days is 14, start the agenda on weekday (as
done for week-long agendas).
(org-agenda-ndays-to-span): Return 14 for 'fortnight'.
(org-agenda-span-to-ndays): Return 'fortnight' for a 14-day span
(org-agenda-later): Go forward 14 days for a fortnight.
(org-agenda-view-mode-dispatch): Add 't' for fortnight view.
(org-agenda-fortnight-view): New function; similar to org-agenda-week-view.
(org-agenda-change-time-span): Recognise 'fortnight' as a span.
(org-agenda-compute-starting-span): Recognise 'fortnight' as a span.
I find it convenient to use org-agenda to look two weeks ahead; others may also.
---
lisp/org-agenda.el | 32 ++++++++++++++++++++++++++------
1 files changed, 26 insertions(+), 6 deletions(-)
diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
index fe2c743..1d3b323 100644
--- a/lisp/org-agenda.el
+++ b/lisp/org-agenda.el
@@ -328,6 +328,7 @@ the daily/weekly agenda, see `org-agenda-skip-function'.")
(const org-agenda-span)
(choice (const :tag "Day" 'day)
(const :tag "Week" 'week)
+ (const :tag "Fortnight" 'fortnight)
(const :tag "Month" 'month)
(const :tag "Year" 'year)
(integer :tag "Custom")))
@@ -1135,6 +1136,7 @@ Custom commands can set this variable in the options
section."
:group 'org-agenda-daily/weekly
:type '(choice (const :tag "Day" day)
(const :tag "Week" week)
+ (const :tag "Fortnight" fortnight)
(const :tag "Month" month)
(const :tag "Year" year)
(integer :tag "Custom")))
@@ -2334,7 +2336,11 @@ The following commands are available:
["Week View" org-agenda-week-view
:active (org-agenda-check-type nil 'agenda)
:style radio :selected (eq org-agenda-current-span 'week)
- :keys "v w (or just w)"]
+ :keys "v w"]
+ ["Fortnight View" org-agenda-fortnight-view
+ :active (org-agenda-check-type nil 'agenda)
+ :style radio :selected (eq org-agenda-current-span 'fortnight)
+ :keys "v f"]
["Month View" org-agenda-month-view
:active (org-agenda-check-type nil 'agenda)
:style radio :selected (eq org-agenda-current-span 'month)
@@ -4170,7 +4176,7 @@ items if they have an hour specification like [h]h:mm."
(sd (or start-day today))
(ndays (org-agenda-span-to-ndays span sd))
(org-agenda-start-on-weekday
- (if (eq ndays 7)
+ (if (or (eq ndays 7) (eq ndays 14))
org-agenda-start-on-weekday))
(thefiles (org-agenda-files nil 'ifmode))
(files thefiles)
@@ -4339,6 +4345,7 @@ items if they have an hour specification like [h]h:mm."
(cond ((symbolp n) n)
((= n 1) 'day)
((= n 7) 'week)
+ ((= n 14) 'fortnight)
(t n)))
(defun org-agenda-span-to-ndays (span &optional start-day)
@@ -4347,6 +4354,7 @@ START-DAY is an absolute time value."
(cond ((numberp span) span)
((eq span 'day) 1)
((eq span 'week) 7)
+ ((eq span 'fortnight) 14)
((eq span 'month)
(let ((date (calendar-gregorian-from-absolute start-day)))
(calendar-last-day-of-month (car date) (caddr date))))
@@ -7825,6 +7833,8 @@ With prefix ARG, go forward that many times the
current span."
(setq sd (+ arg sd)))
((eq span 'week)
(setq sd (+ (* 7 arg) sd)))
+ ((eq span 'fortnight)
+ (setq sd (+ (* 14 arg) sd)))
((eq span 'month)
(setq greg2 (list (+ (car greg) arg) (nth 1 greg) (nth 2 greg))
sd (calendar-absolute-from-gregorian greg2))
@@ -7854,7 +7864,7 @@ With prefix ARG, go backward that many times the
current span."
(defun org-agenda-view-mode-dispatch ()
"Call one of the view mode commands."
(interactive)
- (message "View: [d]ay [w]eek [m]onth [y]ear
[SPC]reset [q]uit/abort
+ (message "View: [d]ay [w]eek for[t]night [m]onth
[y]ear [SPC]reset [q]uit/abort
time[G]rid [[]inactive [f]ollow [l]og [L]og-all [c]lockcheck
[a]rch-trees [A]rch-files clock[R]eport include[D]iary
[E]ntryText")
(let ((a (read-char-exclusive)))
@@ -7862,6 +7872,7 @@ With prefix ARG, go backward that many times the
current span."
(?\ (call-interactively 'org-agenda-reset-view))
(?d (call-interactively 'org-agenda-day-view))
(?w (call-interactively 'org-agenda-week-view))
+ (?t (call-interactively 'org-agenda-fortnight-view))
(?m (call-interactively 'org-agenda-month-view))
(?y (call-interactively 'org-agenda-year-view))
(?l (call-interactively 'org-agenda-log-mode))
@@ -7900,6 +7911,15 @@ week 12 of year 2007. Years in the range 1938-2037
can also be
written as 2-digit years."
(interactive "P")
(org-agenda-change-time-span 'week iso-week))
+(defun org-agenda-fortnight-view (&optional iso-week)
+ "Switch to daily view for agenda.
+With argument ISO-WEEK, switch to the corresponding ISO week.
+If ISO-WEEK has more then 2 digits, only the last two encode the
+week. Any digits before this encode a year. So 200712 means
+week 12 of year 2007. Years in the range 1938-2037 can also be
+written as 2-digit years."
+ (interactive "P")
+ (org-agenda-change-time-span 'fortnight iso-week))
(defun org-agenda-month-view (&optional month)
"Switch to monthly view for agenda.
With argument MONTH, switch to that month."
@@ -7921,7 +7941,7 @@ written as 2-digit years."
(defun org-agenda-change-time-span (span &optional n)
"Change the agenda view to SPAN.
-SPAN may be `day', `week', `month', `year'."
+SPAN may be `day', `week', `fortnight', `month', `year'."
(org-agenda-check-type t 'agenda)
(let* ((args (get-text-property (min (1- (point-max)) (point))
'org-last-args))
(curspan (nth 2 args)))
@@ -7942,7 +7962,7 @@ SPAN may be `day', `week', `month', `year'."
(defun org-agenda-compute-starting-span (sd span &optional n)
"Compute starting date for agenda.
-SPAN may be `day', `week', `month', `year'. The return value
+SPAN may be `day', `week', `fortnight', `month', `year'. The return value
is a cons cell with the starting date and the number of days,
so that the date SD will be in that range."
(let* ((greg (calendar-gregorian-from-absolute sd))
@@ -7955,7 +7975,7 @@ so that the date SD will be in that range."
(setq sd (+ (calendar-absolute-from-gregorian
(list mg 1 yg))
n -1))))
- ((eq span 'week)
+ ((or (eq span 'week) (eq span 'fortnight))
(let* ((nt (calendar-day-of-week
(calendar-gregorian-from-absolute sd)))
(d (if org-agenda-start-on-weekday
--
1.7.9
^ permalink raw reply related [flat|nested] 2+ messages in thread
* Re: [PATCH] Agenda: Fortnight time span
2013-05-01 2:54 [PATCH] Agenda: Fortnight time span Michael Gauland
@ 2013-08-09 9:43 ` Carsten Dominik
0 siblings, 0 replies; 2+ messages in thread
From: Carsten Dominik @ 2013-08-09 9:43 UTC (permalink / raw)
To: Michael Gauland; +Cc: emacs-orgmode
Hi Michael,
I tried to apply this patch and failed - possibly because it is a bit too old. Could I ask you to make an updated version of the patch for me to evaluate and resubmit?
Thank you
- Carsten
On 1.5.2013, at 04:54, Michael Gauland <mikelygee@amuri.net> wrote:
> Agenda: Add fortnight as a time span
>
> * lisp/org-agenda.el (org-agenda-custom-commands-local-options): Add
> fortnight as a choice for org-agenda-span.
> (org-agenda-span): Add fortnight as a choice for customising org-agenda-span.
> (): Add 'Fortnight View' to the org-agenda-menu
> (org-agenda-list): If number of days is 14, start the agenda on weekday (as
> done for week-long agendas).
> (org-agenda-ndays-to-span): Return 14 for 'fortnight'.
> (org-agenda-span-to-ndays): Return 'fortnight' for a 14-day span
> (org-agenda-later): Go forward 14 days for a fortnight.
> (org-agenda-view-mode-dispatch): Add 't' for fortnight view.
> (org-agenda-fortnight-view): New function; similar to org-agenda-week-view.
> (org-agenda-change-time-span): Recognise 'fortnight' as a span.
> (org-agenda-compute-starting-span): Recognise 'fortnight' as a span.
>
> I find it convenient to use org-agenda to look two weeks ahead; others may also.
>
>
> ---
> lisp/org-agenda.el | 32 ++++++++++++++++++++++++++------
> 1 files changed, 26 insertions(+), 6 deletions(-)
>
> diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el
> index fe2c743..1d3b323 100644
> --- a/lisp/org-agenda.el
> +++ b/lisp/org-agenda.el
> @@ -328,6 +328,7 @@ the daily/weekly agenda, see `org-agenda-skip-function'.")
> (const org-agenda-span)
> (choice (const :tag "Day" 'day)
> (const :tag "Week" 'week)
> + (const :tag "Fortnight" 'fortnight)
> (const :tag "Month" 'month)
> (const :tag "Year" 'year)
> (integer :tag "Custom")))
> @@ -1135,6 +1136,7 @@ Custom commands can set this variable in the options
> section."
> :group 'org-agenda-daily/weekly
> :type '(choice (const :tag "Day" day)
> (const :tag "Week" week)
> + (const :tag "Fortnight" fortnight)
> (const :tag "Month" month)
> (const :tag "Year" year)
> (integer :tag "Custom")))
> @@ -2334,7 +2336,11 @@ The following commands are available:
> ["Week View" org-agenda-week-view
> :active (org-agenda-check-type nil 'agenda)
> :style radio :selected (eq org-agenda-current-span 'week)
> - :keys "v w (or just w)"]
> + :keys "v w"]
> + ["Fortnight View" org-agenda-fortnight-view
> + :active (org-agenda-check-type nil 'agenda)
> + :style radio :selected (eq org-agenda-current-span 'fortnight)
> + :keys "v f"]
> ["Month View" org-agenda-month-view
> :active (org-agenda-check-type nil 'agenda)
> :style radio :selected (eq org-agenda-current-span 'month)
> @@ -4170,7 +4176,7 @@ items if they have an hour specification like [h]h:mm."
> (sd (or start-day today))
> (ndays (org-agenda-span-to-ndays span sd))
> (org-agenda-start-on-weekday
> - (if (eq ndays 7)
> + (if (or (eq ndays 7) (eq ndays 14))
> org-agenda-start-on-weekday))
> (thefiles (org-agenda-files nil 'ifmode))
> (files thefiles)
> @@ -4339,6 +4345,7 @@ items if they have an hour specification like [h]h:mm."
> (cond ((symbolp n) n)
> ((= n 1) 'day)
> ((= n 7) 'week)
> + ((= n 14) 'fortnight)
> (t n)))
>
> (defun org-agenda-span-to-ndays (span &optional start-day)
> @@ -4347,6 +4354,7 @@ START-DAY is an absolute time value."
> (cond ((numberp span) span)
> ((eq span 'day) 1)
> ((eq span 'week) 7)
> + ((eq span 'fortnight) 14)
> ((eq span 'month)
> (let ((date (calendar-gregorian-from-absolute start-day)))
> (calendar-last-day-of-month (car date) (caddr date))))
> @@ -7825,6 +7833,8 @@ With prefix ARG, go forward that many times the
> current span."
> (setq sd (+ arg sd)))
> ((eq span 'week)
> (setq sd (+ (* 7 arg) sd)))
> + ((eq span 'fortnight)
> + (setq sd (+ (* 14 arg) sd)))
> ((eq span 'month)
> (setq greg2 (list (+ (car greg) arg) (nth 1 greg) (nth 2 greg))
> sd (calendar-absolute-from-gregorian greg2))
> @@ -7854,7 +7864,7 @@ With prefix ARG, go backward that many times the
> current span."
> (defun org-agenda-view-mode-dispatch ()
> "Call one of the view mode commands."
> (interactive)
> - (message "View: [d]ay [w]eek [m]onth [y]ear
> [SPC]reset [q]uit/abort
> + (message "View: [d]ay [w]eek for[t]night [m]onth
> [y]ear [SPC]reset [q]uit/abort
> time[G]rid [[]inactive [f]ollow [l]og [L]og-all [c]lockcheck
> [a]rch-trees [A]rch-files clock[R]eport include[D]iary
> [E]ntryText")
> (let ((a (read-char-exclusive)))
> @@ -7862,6 +7872,7 @@ With prefix ARG, go backward that many times the
> current span."
> (?\ (call-interactively 'org-agenda-reset-view))
> (?d (call-interactively 'org-agenda-day-view))
> (?w (call-interactively 'org-agenda-week-view))
> + (?t (call-interactively 'org-agenda-fortnight-view))
> (?m (call-interactively 'org-agenda-month-view))
> (?y (call-interactively 'org-agenda-year-view))
> (?l (call-interactively 'org-agenda-log-mode))
> @@ -7900,6 +7911,15 @@ week 12 of year 2007. Years in the range 1938-2037
> can also be
> written as 2-digit years."
> (interactive "P")
> (org-agenda-change-time-span 'week iso-week))
> +(defun org-agenda-fortnight-view (&optional iso-week)
> + "Switch to daily view for agenda.
> +With argument ISO-WEEK, switch to the corresponding ISO week.
> +If ISO-WEEK has more then 2 digits, only the last two encode the
> +week. Any digits before this encode a year. So 200712 means
> +week 12 of year 2007. Years in the range 1938-2037 can also be
> +written as 2-digit years."
> + (interactive "P")
> + (org-agenda-change-time-span 'fortnight iso-week))
> (defun org-agenda-month-view (&optional month)
> "Switch to monthly view for agenda.
> With argument MONTH, switch to that month."
> @@ -7921,7 +7941,7 @@ written as 2-digit years."
>
> (defun org-agenda-change-time-span (span &optional n)
> "Change the agenda view to SPAN.
> -SPAN may be `day', `week', `month', `year'."
> +SPAN may be `day', `week', `fortnight', `month', `year'."
> (org-agenda-check-type t 'agenda)
> (let* ((args (get-text-property (min (1- (point-max)) (point))
> 'org-last-args))
> (curspan (nth 2 args)))
> @@ -7942,7 +7962,7 @@ SPAN may be `day', `week', `month', `year'."
>
> (defun org-agenda-compute-starting-span (sd span &optional n)
> "Compute starting date for agenda.
> -SPAN may be `day', `week', `month', `year'. The return value
> +SPAN may be `day', `week', `fortnight', `month', `year'. The return value
> is a cons cell with the starting date and the number of days,
> so that the date SD will be in that range."
> (let* ((greg (calendar-gregorian-from-absolute sd))
> @@ -7955,7 +7975,7 @@ so that the date SD will be in that range."
> (setq sd (+ (calendar-absolute-from-gregorian
> (list mg 1 yg))
> n -1))))
> - ((eq span 'week)
> + ((or (eq span 'week) (eq span 'fortnight))
> (let* ((nt (calendar-day-of-week
> (calendar-gregorian-from-absolute sd)))
> (d (if org-agenda-start-on-weekday
> --
> 1.7.9
>
>
>
>
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2013-08-09 9:43 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-05-01 2:54 [PATCH] Agenda: Fortnight time span Michael Gauland
2013-08-09 9:43 ` Carsten Dominik
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.