From c93b9aaef9b7e3e1228632e986f85d9ee41193f1 Mon Sep 17 00:00:00 2001 From: "Edward M. Reingold" Date: Wed, 23 Feb 1994 02:38:23 +0000 Subject: [PATCH] Fix calendar-cursor-to-date to handle starred days correctly. --- lisp/calendar/calendar.el | 39 +++++++++++++++++++++------------------ 1 file changed, 21 insertions(+), 18 deletions(-) diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index e4823e590ae..8aefa785b80 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -1946,24 +1946,27 @@ If in the calendar buffer, also sets the current date local variables." "Returns a list of the month, day, and year of current cursor position. If cursor is not on a specific date, signals an error if optional parameter ERROR is t, otherwise just returns nil." - (if (and (looking-at "[*0-9]") - (< 2 (count-lines (point-min) (point)))) - (save-excursion - (re-search-backward "[^*0-9]") - (forward-char 1) - (let* - ((day (string-to-int (buffer-substring (point) (+ 3 (point))))) - (day (if (= 0 day) starred-day day)) - (segment (/ (current-column) 25)) - (month (% (+ displayed-month segment -1) 12)) - (month (if (= 0 month) 12 month)) - (year - (cond - ((and (= 12 month) (= segment 0)) (1- displayed-year)) - ((and (= 1 month) (= segment 2)) (1+ displayed-year)) - (t displayed-year)))) - (list month day year))) - (if error (error "Cursor is not on a date!")))) + (let* ((segment (/ (current-column) 25)) + (month (% (+ displayed-month segment -1) 12)) + (month (if (= 0 month) 12 month)) + (year + (cond + ((and (= 12 month) (= segment 0)) (1- displayed-year)) + ((and (= 1 month) (= segment 2)) (1+ displayed-year)) + (t displayed-year)))) + (if (and (looking-at "[0-9]") + (< 2 (count-lines (point-min) (point)))) + (save-excursion + (re-search-backward "[^0-9]") + (list month + (string-to-int (buffer-substring (1+ (point)) (+ 4 (point)))) + year)) + (if (looking-at "\\*") + (save-excursion + (re-search-backward "[^*]") + (if (looking-at ".\\*\\*") + (list month starred-day year) + (if error (error "Cursor is not on a date!")))))))) (defun calendar-cursor-to-nearest-date () "Move the cursor to the closest date.