# HG changeset patch # User Edward M. Reingold # Date 761971103 0 # Node ID 324bb3410cfb6221558f600028ace72cca02a906 # Parent 7e9984c9a36eb01fd9401f846a60ecd62ec664ba Fix calendar-cursor-to-date to handle starred days correctly. diff -r 7e9984c9a36e -r 324bb3410cfb lisp/calendar/calendar.el --- a/lisp/calendar/calendar.el Wed Feb 23 00:33:13 1994 +0000 +++ b/lisp/calendar/calendar.el Wed Feb 23 02:38:23 1994 +0000 @@ -1946,24 +1946,27 @@ "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.