diff options
Diffstat (limited to 'lisp/calendar')
-rw-r--r-- | lisp/calendar/appt.el | 15 | ||||
-rw-r--r-- | lisp/calendar/cal-bahai.el | 4 | ||||
-rw-r--r-- | lisp/calendar/cal-coptic.el | 2 | ||||
-rw-r--r-- | lisp/calendar/cal-dst.el | 8 | ||||
-rw-r--r-- | lisp/calendar/cal-french.el | 192 | ||||
-rw-r--r-- | lisp/calendar/cal-html.el | 2 | ||||
-rw-r--r-- | lisp/calendar/cal-menu.el | 6 | ||||
-rw-r--r-- | lisp/calendar/cal-persia.el | 2 | ||||
-rw-r--r-- | lisp/calendar/cal-tex.el | 20 | ||||
-rw-r--r-- | lisp/calendar/calendar.el | 14 | ||||
-rw-r--r-- | lisp/calendar/diary-lib.el | 18 | ||||
-rw-r--r-- | lisp/calendar/holidays.el | 2 | ||||
-rw-r--r-- | lisp/calendar/icalendar.el | 88 | ||||
-rw-r--r-- | lisp/calendar/iso8601.el | 25 | ||||
-rw-r--r-- | lisp/calendar/parse-time.el | 64 | ||||
-rw-r--r-- | lisp/calendar/solar.el | 2 | ||||
-rw-r--r-- | lisp/calendar/time-date.el | 6 | ||||
-rw-r--r-- | lisp/calendar/timeclock.el | 2 | ||||
-rw-r--r-- | lisp/calendar/todo-mode.el | 18 |
19 files changed, 325 insertions, 165 deletions
diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index 281b89e088f..f523863440f 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el @@ -402,11 +402,12 @@ displayed in a window: (appt-display-message string-list min-list)) (when appt-display-mode-line (setq appt-mode-string - (concat " " (propertize - (appt-mode-line (mapcar #'number-to-string - min-list) - t) - 'face 'mode-line-emphasis)))) + (concat (propertize + (appt-mode-line (mapcar #'number-to-string + min-list) + t) + 'face 'mode-line-emphasis) + " "))) ;; Reset count to 0 in case we display another appt on the next cycle. (setq appt-display-count (if (eq '(0) min-list) 0 (1+ prev-appt-display-count)))) @@ -700,7 +701,7 @@ ARG is positive, otherwise off." (let ((appt-active appt-timer)) (setq appt-active (if arg (> (prefix-numeric-value arg) 0) (not appt-active))) - (remove-hook 'write-file-functions #'appt-update-list 'local) + (remove-hook 'write-file-functions #'appt-update-list) (or global-mode-string (setq global-mode-string '(""))) (delq 'appt-mode-string global-mode-string) (when appt-timer @@ -708,7 +709,7 @@ ARG is positive, otherwise off." (setq appt-timer nil)) (if appt-active (progn - (add-hook 'write-file-functions #'appt-update-list nil t) + (add-hook 'write-file-functions #'appt-update-list) (setq appt-timer (run-at-time t 60 #'appt-check) global-mode-string (append global-mode-string '(appt-mode-string))) diff --git a/lisp/calendar/cal-bahai.el b/lisp/calendar/cal-bahai.el index c2e4205c0bc..350b7e51cb1 100644 --- a/lisp/calendar/cal-bahai.el +++ b/lisp/calendar/cal-bahai.el @@ -27,7 +27,7 @@ ;; This collection of functions implements the features of calendar.el ;; and diary-lib.el that deal with the Bahá’í calendar. -;; The Bahá’í (http://www.bahai.org) calendar system is based on a +;; The Bahá’í (https://www.bahai.org) calendar system is based on a ;; solar cycle of 19 months with 19 days each. The four remaining ;; "intercalary" days are called the Ayyám-i-Há (days of Há), and are ;; placed between the 18th and 19th months. They are meant as a time @@ -126,7 +126,7 @@ Defaults to today's date if DATE is not given." "" ; pre-Bahai (let ((m (calendar-extract-month bahai-date)) (d (calendar-extract-day bahai-date))) - (calendar-dlet* + (calendar-dlet ((monthname (if (and (= m 19) (<= d 0)) "Ayyám-i-Há" diff --git a/lisp/calendar/cal-coptic.el b/lisp/calendar/cal-coptic.el index 346585e1817..11785c48f10 100644 --- a/lisp/calendar/cal-coptic.el +++ b/lisp/calendar/cal-coptic.el @@ -116,7 +116,7 @@ Defaults to today's date if DATE is not given." (m (calendar-extract-month coptic-date))) (if (< y 1) "" - (calendar-dlet* + (calendar-dlet ((monthname (aref calendar-coptic-month-name-array (1- m))) (day (number-to-string (calendar-extract-day coptic-date))) (dayname nil) diff --git a/lisp/calendar/cal-dst.el b/lisp/calendar/cal-dst.el index 9e6c2959286..29864110a3e 100644 --- a/lisp/calendar/cal-dst.el +++ b/lisp/calendar/cal-dst.el @@ -200,7 +200,7 @@ The result has the proper form for `calendar-daylight-savings-starts'." (calendar-persian-to-absolute `(7 1 ,(- year 621)))))))) (prevday-sec (- -1 utc-diff)) ; last sec of previous local day new-rules) - (calendar-dlet* ((year (1+ y))) + (calendar-dlet ((year (1+ y))) ;; Scan through the next few years until only one rule remains. (while (cdr candidate-rules) (dolist (rule candidate-rules) @@ -397,7 +397,7 @@ This function respects the value of `calendar-dst-check-each-year-flag'." (or (let ((expr (if calendar-dst-check-each-year-flag (cadr (calendar-dst-find-startend year)) (nth 4 calendar-current-time-zone-cache)))) - (calendar-dlet* ((year year)) + (calendar-dlet ((year year)) (if expr (eval expr)))) ;; New US rules commencing 2007. https://www.iana.org/time-zones (and (not (zerop calendar-daylight-time-offset)) @@ -409,7 +409,7 @@ This function respects the value of `calendar-dst-check-each-year-flag'." (or (let ((expr (if calendar-dst-check-each-year-flag (nth 2 (calendar-dst-find-startend year)) (nth 5 calendar-current-time-zone-cache)))) - (calendar-dlet* ((year year)) + (calendar-dlet ((year year)) (if expr (eval expr)))) ;; New US rules commencing 2007. https://www.iana.org/time-zones (and (not (zerop calendar-daylight-time-offset)) @@ -419,7 +419,7 @@ This function respects the value of `calendar-dst-check-each-year-flag'." (defun dst-in-effect (date) "True if on absolute DATE daylight saving time is in effect. Fractional part of DATE is local standard time of day." - (calendar-dlet* ((year (calendar-extract-year + (calendar-dlet ((year (calendar-extract-year (calendar-gregorian-from-absolute (floor date))))) (let* ((dst-starts-gregorian (eval calendar-daylight-savings-starts)) (dst-ends-gregorian (eval calendar-daylight-savings-ends)) diff --git a/lisp/calendar/cal-french.el b/lisp/calendar/cal-french.el index 639bae700cc..1789f16445f 100644 --- a/lisp/calendar/cal-french.el +++ b/lisp/calendar/cal-french.el @@ -40,12 +40,13 @@ (defconst calendar-french-month-name-array ["Vendémiaire" "Brumaire" "Frimaire" "Nivôse" "Pluviôse" "Ventôse" - "Germinal" "Floréal" "Prairial" "Messidor" "Thermidor" "Fructidor"] + "Germinal" "Floréal" "Prairial" "Messidor" "Thermidor" "Fructidor" + "jour complémentaire"] "Array of month names in the French calendar.") (defconst calendar-french-day-name-array ["Primidi" "Duodi" "Tridi" "Quartidi" "Quintidi" "Sextidi" "Septidi" - "Octidi" "Nonidi" "Decadi"] + "Octidi" "Nonidi" "Décadi"] "Array of day names in the French calendar.") (define-obsolete-variable-alias 'calendar-french-multibyte-special-days-array @@ -56,6 +57,144 @@ "de la Révolution"] "Array of special day names in the French calendar.") +(defconst calendar-french-feasts-array + [;; Vendémiaire + "du Raisin" "du Safran" "de la Châtaigne" + "de la Colchique" "du Cheval" "de la Balsamine" + "de la Carotte" "de l'Amarante" "du Panais" + "de la Cuve" "de la Pomme de terre" "de l'Immortelle" + "du Potiron" "du Réséda" "de l'Âne" + "de la Belle de nuit" "de la Citrouille" "du Sarrasin" + "du Tournesol" "du Pressoir" "du Chanvre" + "de la Pêche" "du Navet" "de l'Amaryllis" + "du Bœuf" "de l'Aubergine" "du Piment" + "de la Tomate" "de l'Orge" "du Tonneau" + ;; Brumaire + "de la Pomme" "du Céleri" "de la Poire" + "de la Betterave" "de l'Oie" "de l'Héliotrope" + "de la Figue" "de la Scorsonère" "de l'Alisier" + "de la Charrue" "du Salsifis" "de la Macre" + "du Topinambour" "de l'Endive" "du Dindon" + "du Chervis" "du Cresson" "de la Dentelaire" + "de la Grenade" "de la Herse" "de la Bacchante" + "de l'Azerole" "de la Garance" "de l'Orange" + "du Faisan" "de la Pistache" "du Macjon" + "du Coing" "du Cormier" "du Rouleau" + ;; Frimaire + "de la Raiponce" "du Turneps" "de la Chicorée" + "de la Nèfle" "du Cochon" "de la Mâche" + "du Chou-fleur" "du Miel" "du Genièvre" + "de la Pioche" "de la Cire" "du Raifort" + "du Cèdre" "du Sapin" "du Chevreuil" + "de l'Ajonc" "du Cyprès" "du Lierre" + "de la Sabine" "du Hoyau" "de l'Érable-sucre" + "de la Bruyère" "du Roseau" "de l'Oseille" + "du Grillon" "du Pignon" "du Liège" + "de la Truffe" "de l'Olive" "de la Pelle" + ;; Nivôse + "de la Tourbe" "de la Houille" "du Bitume" + "du Soufre" "du Chien" "de la Lave" + "de la Terre végétale" "du Fumier" "du Salpêtre" + "du Fléau" "du Granit" "de l'Argile" + "de l'Ardoise" "du Grès" "du Lapin" + "du Silex" "de la Marne" "de la Pierre à chaux" + "du Marbre" "du Van" "de la Pierre à plâtre" + "du Sel" "du Fer" "du Cuivre" + "du Chat" "de l'Étain" "du Plomb" + "du Zinc" "du Mercure" "du Crible" + ;; Pluviôse + "de la Lauréole" "de la Mousse" "du Fragon" + "du Perce-neige" "du Taureau" "du Laurier-thym" + "de l'Amadouvier" "du Mézéréon" "du Peuplier" + "de la Cognée" "de l'Ellébore" "du Brocoli" + "du Laurier" "de l'Avelinier" "de la Vache" + "du Buis" "du Lichen" "de l'If" + "de la Pulmonaire" "de la Serpette" "du Thlaspi" + "du Thymelé" "du Chiendent" "de la Traînasse" + "du Lièvre" "de la Guède" "du Noisetier" + "du Cyclamen" "de la Chélidoine" "du Traîneau" + ;; Ventôse + "du Tussilage" "du Cornouiller" "du Violier" + "du Troène" "du Bouc" "de l'Asaret" + "de l'Alaterne" "de la Violette" "du Marsault" + "de la Bêche" "du Narcisse" "de l'Orme" + "de la Fumeterre" "du Vélar" "de la Chèvre" + "de l'Épinard" "du Doronic" "du Mouron" + "du Cerfeuil" "du Cordeau" "de la Mandragore" + "du Persil" "du Cochléaria" "de la Pâquerette" + "du Thon" "du Pissenlit" "de la Sylvie" + "du Capillaire" "du Frêne" "du Plantoir" + ;; Germinal + "de la Primevère" "du Platane" "de l'Asperge" + "de la Tulipe" "de la Poule" "de la Blette" + "du Bouleau" "de la Jonquille" "de l'Aulne" + "du Couvoir" "de la Pervenche" "du Charme" + "de la Morille" "du Hêtre" "de l'Abeille" + "de la Laitue" "du Mélèze" "de la Ciguë" + "du Radis" "de la Ruche" "du Gainier" + "de la Romaine" "du Marronnier" "de la Roquette" + "du Pigeon" "du Lilas" "de l'Anémone" + "de la Pensée" "de la Myrtille" "du Greffoir" + ;; Floréal + "de la Rose" "du Chêne" "de la Fougère" + "de l'Aubépine" "du Rossignol" "de l'Ancolie" + "du Muguet" "du Champignon" "de la Jacinthe" + "du Rateau" "de la Rhubarbe" "du Sainfoin" + "du Bâton-d'or" "du Chamérisier" "du Ver à soie" + "de la Consoude" "de la Pimprenelle" "de la Corbeille-d'or" + "de l'Arroche" "du Sarcloir" "du Statice" + "de la Fritillaire" "de la Bourrache" "de la Valériane" + "de la Carpe" "du Fusain" "de la Civette" + "de la Buglosse" "du Sénevé" "de la Houlette" + ;; Prairial + "de la Luzerne" "de l'Hémérocalle" "du Trèfle" + "de l'Angélique" "du Canard" "de la Mélisse" + "du Fromental" "du Martagon" "du Serpolet" + "de la Faux" "de la Fraise" "de la Bétoine" + "du Pois" "de l'Acacia" "de la Caille" + "de l'Œillet" "du Sureau" "du Pavot" + "du Tilleul" "de la Fourche" "du Barbeau" + "de la Camomille" "du Chèvrefeuille" "du Caille-lait" + "de la Tanche" "du Jasmin" "de la Verveine" + "du Thym" "de la Pivoine" "du Chariot" + ;; Messidor + "du Seigle" "de l'Avoine" "de l'Oignon" + "de la Véronique" "du Mulet" "du Romarin" + "du Concombre" "de l'Échalotte" "de l'Absinthe" + "de la Faucille" "de la Coriandre" "de l'Artichaut" + "de la Giroflée" "de la Lavande" "du Chamois" + "du Tabac" "de la Groseille" "de la Gesse" + "de la Cerise" "du Parc" "de la Menthe" + "du Cumin" "du Haricot" "de l'Orcanète" + "de la Pintade" "de la Sauge" "de l'Ail" + "de la Vesce" "du Blé" "de la Chalémie" + ;; Thermidor + "de l'Épautre" "du Bouillon-blanc" "du Melon" + "de l'Ivraie" "du Bélier" "de la Prèle" + "de l'Armoise" "du Carthame" "de la Mûre" + "de l'Arrosoir" "du Panis" "du Salicor" + "de l'Abricot" "du Basilic" "de la Brebis" + "de la Guimauve" "du Lin" "de l'Amande" + "de la Gentiane" "de l'Écluse" "de la Carline" + "du Câprier" "de la Lentille" "de l'Aunée" + "de la Loutre" "de la Myrte" "du Colza" + "du Lupin" "du Coton" "du Moulin" + ;; Fructidor + "de la Prune" "du Millet" "du Lycoperdon" + "de l'Escourgeon" "du Saumon" "de la Tubéreuse" + "du Sucrion" "de l'Apocyn" "de la Réglisse" + "de l'Échelle" "de la Pastèque" "du Fenouil" + "de l'Épine-vinette" "de la Noix" "de la Truite" + "du Citron" "de la Cardère" "du Nerprun" + "du Tagette" "de la Hotte" "de l'Églantier" + "de la Noisette" "du Houblon" "du Sorgho" + "de l'Écrevisse" "de la Bagarade" "de la Verge-d'or" + "du Maïs" "du Marron" "du Panier" + ;; jour complémentaire + "de la Vertu" "du Génie" "du Travail" + "de la Raison" "des Récompenses" "de la Révolution"] + "Array of day feasts in the French calendar.") + (defun calendar-french-accents-p () (declare (obsolete nil "28.1")) t) @@ -75,6 +214,16 @@ (declare (obsolete "use the variable of the same name instead" "28.1")) calendar-french-special-days-array) +(defun calendar-french-trim-feast (feast) + "Remove the article from the FEAST. +E.g. \"du Raisin\" -> \"Raisin\" or \"de la Vertu\" -> \"Vertu\"." + (cond + ((equal (substring feast 0 3) "du ") (substring feast 3)) + ((equal (substring feast 0 6) "de la ") (substring feast 6)) + ((equal (substring feast 0 5) "de l'") (substring feast 5)) + ((equal (substring feast 0 4) "des ") (substring feast 4)) + (t feast))) + (defun calendar-french-leap-year-p (year) "True if YEAR is a leap year on the French Revolutionary calendar. For Gregorian years 1793 to 1805, the years of actual operation of the @@ -162,14 +311,13 @@ Defaults to today's date if DATE is not given." (d (calendar-extract-day french-date))) (cond ((< y 1) "") - ((= m 13) (format "Jour %s de l'Année %d de la Révolution" - (aref calendar-french-special-days-array (1- d)) - y)) (t (format - "%d %s an %d de la Révolution" + "%s %d %s an %d de la Révolution, jour %s" + (aref calendar-french-day-name-array (% (1- d) 10)) d (aref calendar-french-month-name-array (1- m)) - y))))) + y + (aref calendar-french-feasts-array (+ -31 (* 30 m) d))))))) ;;;###cal-autoload (defun calendar-french-print-date () @@ -186,7 +334,7 @@ Defaults to today's date if DATE is not given." Echo French Revolutionary date unless NOECHO is non-nil." (interactive (let* ((months calendar-french-month-name-array) - (special-days calendar-french-special-days-array) + (feasts calendar-french-feasts-array) (year (progn (calendar-read-sexp "Année de la Révolution (>0)" @@ -199,29 +347,31 @@ Echo French Revolutionary date unless NOECHO is non-nil." (mapcar 'list (append months (if (calendar-french-leap-year-p year) - (mapcar - (lambda (x) (concat "Jour " x)) - calendar-french-special-days-array) + (mapcar #'calendar-french-trim-feast feasts) (reverse (cdr ; we don't want rev. day in a non-leap yr (reverse - (mapcar - (lambda (x) - (concat "Jour " x)) - special-days)))))))) + (mapcar #'calendar-french-trim-feast + feasts)))))))) (completion-ignore-case t) (month (cdr (assoc-string (completing-read - "Mois ou Sansculottide: " + "Mois ou \"jour complémentaire\" ou fête: " month-list nil t) (calendar-make-alist month-list 1 'car) t))) - (day (if (> month 12) - (- month 12) + (last-day (calendar-french-last-day-of-month (min month 13) year)) + (day (if (> month 13) + (- month 13) (calendar-read-sexp - "Jour (1-30)" - (lambda (x) (and (<= 1 x) (<= x 30)))))) - (month (if (> month 12) 13 month))) + (format "Jour (1-%d): " last-day) + (lambda (x) (<= 1 x last-day))))) + ;; All days in Vendémiaire and numbered 1 to 365 e.g., "Pomme" + ;; gives 31 Vendémiaire automatically normalized to 1 Brumaire + ;; "Céleri" gives 32 Vnd normalized to 2 Bru, "Raiponce" gives + ;; 61 Vnd normalized to 1 Frimaire, etc until "Récompences" which + ;; gives 365 Vnd normalized to 5 jour complémentaire. + (month (if (> month 13) 1 month))) (list (list month day year)))) (calendar-goto-date (calendar-gregorian-from-absolute (calendar-french-to-absolute date))) diff --git a/lisp/calendar/cal-html.el b/lisp/calendar/cal-html.el index e5810c3f027..58a5a0f83a5 100644 --- a/lisp/calendar/cal-html.el +++ b/lisp/calendar/cal-html.el @@ -151,7 +151,7 @@ (defun cal-html-comment (string) "Return STRING as html comment." (format "<!-- ====== %s ====== -->\n" - (replace-regexp-in-string "--" "++" string))) + (string-replace "--" "++" string))) (defun cal-html-href (link string) "Return a hyperlink to url LINK with text STRING." diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el index 497f3329055..ef84bfadd31 100644 --- a/lisp/calendar/cal-menu.el +++ b/lisp/calendar/cal-menu.el @@ -104,9 +104,9 @@ ;; The bug has since been fixed. (dotimes (i 11) (push (vector (format "hol-year-%d" i) - `(lambda () - (interactive) - (holiday-list (+ displayed-year ,(- i 5)))) + (lambda () + (interactive) + (holiday-list (+ displayed-year (- i 5)))) :label `(format "For Year %d" (+ displayed-year ,(- i 5)))) l)) diff --git a/lisp/calendar/cal-persia.el b/lisp/calendar/cal-persia.el index ca37d803224..dd005e86608 100644 --- a/lisp/calendar/cal-persia.el +++ b/lisp/calendar/cal-persia.el @@ -140,7 +140,7 @@ Gregorian date Sunday, December 31, 1 BC." (or date (calendar-current-date))))) (y (calendar-extract-year persian-date)) (m (calendar-extract-month persian-date))) - (calendar-dlet* + (calendar-dlet ((monthname (aref calendar-persian-month-name-array (1- m))) (day (number-to-string (calendar-extract-day persian-date))) (year (number-to-string y)) diff --git a/lisp/calendar/cal-tex.el b/lisp/calendar/cal-tex.el index f5932014dd9..7b55d420c3b 100644 --- a/lisp/calendar/cal-tex.el +++ b/lisp/calendar/cal-tex.el @@ -974,11 +974,11 @@ Uses the 24-hour clock if `cal-tex-24' is non-nil. Note that the hours shown are hard-coded to 8-12, 13-17." (with-suppressed-warnings ((lexical date)) (defvar date)) ;For `cal-tex-daily-string'. - (let ((date thedate) - (month (calendar-extract-month date)) - (day (calendar-extract-day date)) - ;; (year (calendar-extract-year date)) - morning afternoon s) + (let* ((date thedate) + (month (calendar-extract-month date)) + (day (calendar-extract-day date)) + ;; (year (calendar-extract-year date)) + morning afternoon s) (cal-tex-comment "begin cal-tex-week-hours") (cal-tex-cmd "\\ \\\\[-.2cm]") (cal-tex-cmd "\\noindent") @@ -1465,10 +1465,10 @@ hourly sections for the period specified by `cal-tex-daily-start' and `cal-tex-daily-end'." (with-suppressed-warnings ((lexical date)) (defvar date)) ;For `cal-tex-daily-string'. - (let ((date thedate) - (month-name (cal-tex-month-name (calendar-extract-month date))) - (i (1- cal-tex-daily-start)) - hour) + (let* ((date thedate) + (month-name (cal-tex-month-name (calendar-extract-month date))) + (i (1- cal-tex-daily-start)) + hour) (cal-tex-banner "cal-tex-daily-page") (cal-tex-b-makebox "4cm" "l") (cal-tex-b-parbox "b" "3.8cm") @@ -1755,7 +1755,7 @@ current contents." COMMENT may contain newlines, which are prefixed by \"% \" in the output." (insert (format "%% %s\n" (if comment - (replace-regexp-in-string "\n" "\n% " comment) + (string-replace "\n" "\n% " comment) "")))) (defun cal-tex-banner (comment) diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index 3f9fe1c9d8f..76d6132eae1 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -137,7 +137,7 @@ ;; - whatever is passed to diary-sexp-entry ;; - whatever is passed to diary-remind -(defmacro calendar-dlet* (binders &rest body) +(defmacro calendar-dlet (binders &rest body) "Like `dlet' but without warnings about non-prefixed var names." (declare (indent 1) (debug let)) (let ((vars (mapcar (lambda (binder) @@ -1499,7 +1499,7 @@ first INDENT characters on the line." (goto-char (point-min)) (calendar-move-to-column indent) (insert - (calendar-dlet* ((month month) (year year)) + (calendar-dlet ((month month) (year year)) (calendar-string-spread (list calendar-month-header) ?\s calendar-month-digit-width))) (calendar-ensure-newline) @@ -1516,7 +1516,7 @@ first INDENT characters on the line." calendar-day-header-width nil ?\s) (make-string (- calendar-column-width calendar-day-header-width) ?\s))) (calendar-ensure-newline) - (calendar-dlet* ((day day) (month month) (year year)) + (calendar-dlet ((day day) (month month) (year year)) (calendar-insert-at-column indent calendar-intermonth-text trunc)) ;; Add blank days before the first of the month. (insert (make-string (* blank-days calendar-column-width) ?\s)) @@ -1527,7 +1527,7 @@ first INDENT characters on the line." (insert (propertize (format (format "%%%dd" calendar-day-digit-width) day) 'mouse-face 'highlight - 'help-echo (calendar-dlet* ((day day) (month month) (year year)) + 'help-echo (calendar-dlet ((day day) (month month) (year year)) (eval calendar-date-echo-text t)) ;; 'date property prevents intermonth text confusing re-searches. ;; (Tried intangible, it did not really work.) @@ -1538,7 +1538,7 @@ first INDENT characters on the line." (/= day last)) (calendar-ensure-newline) (setq day (1+ day)) ; first day of next week - (calendar-dlet* ((day day) (month month) (year year)) + (calendar-dlet ((day day) (month month) (year year)) (calendar-insert-at-column indent calendar-intermonth-text trunc)))))) (defun calendar-redraw () @@ -1833,7 +1833,7 @@ concatenated and the result truncated." (bufferp (get-buffer calendar-buffer))) (with-current-buffer calendar-buffer (let ((start (- calendar-left-margin 2))) - (calendar-dlet* ((date (condition-case nil + (calendar-dlet ((date (condition-case nil (calendar-cursor-to-nearest-date) (error (calendar-current-date))))) (setq mode-line-format @@ -2561,7 +2561,7 @@ and day names to be abbreviated as specified by respectively. An optional parameter NODAYNAME, when t, omits the name of the day of the week." (let ((month (calendar-extract-month date))) - (calendar-dlet* + (calendar-dlet ((dayname (unless nodayname (calendar-day-name date abbreviate))) (monthname (calendar-month-name month abbreviate)) (day (number-to-string (calendar-extract-day date))) diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index 4efa3669967..f57fe26058f 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -663,7 +663,7 @@ any entries were found." (calendar-month-name-array (or months calendar-month-name-array)) (case-fold-search t) entry-found) - (calendar-dlet* + (calendar-dlet ((dayname (format "%s\\|%s\\.?" (calendar-day-name date) (calendar-day-name date 'abbrev))) (monthname (format "\\*\\|%s%s" (calendar-month-name month) @@ -858,7 +858,7 @@ LIST-ONLY is non-nil, in which case it just returns the list." ;; every time, diary-include-other-diary-files ;; binds it to nil (essentially) when it runs ;; in included files. - (calendar-dlet* ((number number) + (calendar-dlet ((number number) (list-only list-only)) (run-hooks 'diary-nongregorian-listing-hook 'diary-list-entries-hook)) @@ -877,7 +877,7 @@ LIST-ONLY is non-nil, in which case it just returns the list." (copy-sequence (car display-buffer-fallback-action)))))) (funcall diary-display-function))) - (calendar-dlet* ((number number) + (calendar-dlet ((number number) (original-date original-date)) (run-hooks 'diary-hook)))))) (and temp-buff (buffer-name temp-buff) (kill-buffer temp-buff))) @@ -1266,7 +1266,7 @@ MARKFUNC is a function that marks entries of the appropriate type matching a given date pattern. MONTHS is an array of month names. SYMBOL marks diary entries of the type in question. ABSFUNC is a function that converts absolute dates to dates of the appropriate type." - (calendar-dlet* + (calendar-dlet ((dayname (diary-name-pattern calendar-day-name-array calendar-day-abbrev-array)) (monthname (format "%s\\|\\*" @@ -1435,7 +1435,7 @@ marks. This is intended to deal with deleted diary entries." (defun diary-sexp-entry (sexp entry date) "Process a SEXP diary ENTRY for DATE." (let ((result - (calendar-dlet* ((date date) + (calendar-dlet ((date date) (entry entry)) (if calendar-debug-sexp (let ((debug-on-error t)) @@ -2043,7 +2043,7 @@ calendar." (and (integerp days) (< days 0) (setq days (number-sequence 1 (- days)))) - (calendar-dlet* ((diary-entry (eval sexp))) + (calendar-dlet ((diary-entry (eval sexp))) (cond ;; Diary entry applies on date. ((and diary-entry @@ -2059,7 +2059,7 @@ calendar." (when (setq diary-entry (eval sexp)) ;; Discard any mark portion from diary-anniversary, etc. (if (consp diary-entry) (setq diary-entry (cdr diary-entry))) - (calendar-dlet* ((days days)) + (calendar-dlet ((days days)) (mapconcat #'eval diary-remind-message ""))))) ;; Diary entry may apply to one of a list of days before date. ((and (listp days) days) @@ -2264,7 +2264,7 @@ If given, optional SYMBOL must be a prefix to entries. If optional ABBREV-ARRAY is present, also matches the abbreviations from this array (with or without a final `.'), in addition to the full month names." - (calendar-dlet* + (calendar-dlet ((dayname (diary-name-pattern calendar-day-name-array calendar-day-abbrev-array t)) (monthname (format "\\(%s\\|\\*\\)" @@ -2400,7 +2400,7 @@ return a font-lock pattern matching array of MONTHS and marking SYMBOL." This depends on the calendar date style." (declare (obsolete nil "28.1")) (concat - (calendar-dlet* + (calendar-dlet ((dayname (diary-name-pattern calendar-day-name-array nil t)) (monthname (diary-name-pattern calendar-month-name-array nil t)) (day "1") diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el index 4bc17de3067..3eae2dcc7f1 100644 --- a/lisp/calendar/holidays.el +++ b/lisp/calendar/holidays.el @@ -683,7 +683,7 @@ nil, or if the date is not visible, there is no holiday." (y displayed-year)) (calendar-increment-month m y -1) (holiday-filter-visible-calendar - (calendar-dlet* (year date) + (calendar-dlet (year date) (list (progn (setq year y diff --git a/lisp/calendar/icalendar.el b/lisp/calendar/icalendar.el index 1d7de4a0c5d..eaee2e9d951 100644 --- a/lisp/calendar/icalendar.el +++ b/lisp/calendar/icalendar.el @@ -66,7 +66,7 @@ ;; 0.02: ;; - Should work in XEmacs now. Thanks to Len Trigg for the XEmacs patches! ;; - Added exporting from Emacs diary to ical. -;; - Some bugfixes, after testing with calendars from http://icalshare.com. +;; - Some bugfixes, after testing with calendars from https://icalshare.com. ;; - Tested with Emacs 21.3.2 and XEmacs 21.4.12 ;; 0.01: (2003-03-21) @@ -105,10 +105,6 @@ ;;; Code: -(defconst icalendar-version "0.19" - "Version number of icalendar.el.") -(make-obsolete-variable 'icalendar-version nil "28.1") - ;; ====================================================================== ;; Customizables ;; ====================================================================== @@ -585,19 +581,19 @@ ALIST is a VTIMEZONE potentially containing historical records." (list (car (sort components - #'(lambda (a b) - (let* ((get-recent (lambda (n) - (car - (sort - (delq nil - (mapcar (lambda (p) - (and (memq (car p) '(DTSTART RDATE)) - (car (cddr p)))) - n)) - 'string-greaterp)))) - (a-recent (funcall get-recent (car (cddr a)))) - (b-recent (funcall get-recent (car (cddr b))))) - (string-greaterp a-recent b-recent)))))))) + (lambda (a b) + (let* ((get-recent (lambda (n) + (car + (sort + (delq nil + (mapcar (lambda (p) + (and (memq (car p) '(DTSTART RDATE)) + (car (cddr p)))) + n)) + 'string-greaterp)))) + (a-recent (funcall get-recent (car (cddr a)))) + (b-recent (funcall get-recent (car (cddr b))))) + (string-greaterp a-recent b-recent)))))))) (defun icalendar--convert-all-timezones (icalendar) "Convert all timezones in the ICALENDAR into an alist. @@ -773,9 +769,6 @@ American format: \"month day year\"." ;; datetime == nil nil)) -(define-obsolete-function-alias 'icalendar--datetime-to-noneuropean-date - 'icalendar--datetime-to-american-date "icalendar 0.19") - (defun icalendar--datetime-to-european-date (datetime &optional separator) "Convert the decoded DATETIME to European format. Optional argument SEPARATOR gives the separator between month, @@ -889,12 +882,14 @@ If DAY-SHIFT is non-nil, the result is shifted by DAY-SHIFT days." (format "%04d%02d%02d" (nth 2 mdy) (nth 0 mdy) (nth 1 mdy)))) -(defun icalendar--datestring-to-isodate (datestring &optional day-shift) +(defun icalendar--datestring-to-isodate (datestring &optional day-shift year-shift) "Convert diary-style DATESTRING to iso-style date. If DAY-SHIFT is non-nil, the result is shifted by DAY-SHIFT days --- DAY-SHIFT must be either nil or an integer. This function -tries to figure the date style from DATESTRING itself. If that -is not possible it uses the current calendar date style." +-- DAY-SHIFT must be either nil or an integer. If YEAR-SHIFT is +non-nil, the result is shifted by YEAR-SHIFT years -- YEAR-SHIFT +must be either nil or an integer. This function tries to figure +the date style from DATESTRING itself. If that is not possible +it uses the current calendar date style." (let ((day -1) month year) (save-match-data (cond ( ;; iso-style numeric date @@ -904,7 +899,7 @@ is not possible it uses the current calendar date style." "0?\\([1-9][0-9]?\\)") datestring) (setq year (read (substring datestring (match-beginning 1) - (match-end 1)))) + (match-end 1)))) (setq month (read (substring datestring (match-beginning 2) (match-end 2)))) (setq day (read (substring datestring (match-beginning 3) @@ -967,6 +962,9 @@ is not possible it uses the current calendar date style." (match-end 3))))) (t nil))) + (when year-shift + (setq year (+ year year-shift))) + (if (> day 0) (let ((mdy (calendar-gregorian-from-absolute (+ (calendar-absolute-from-gregorian (list month day @@ -1000,15 +998,15 @@ TIMESTRING and has the same result as \"9:00\"." (defun icalendar--convert-string-for-export (string) "Escape comma and other critical characters in STRING." - (replace-regexp-in-string "," "\\\\," string)) + (string-replace "," "\\," string)) (defun icalendar--convert-string-for-import (string) "Remove escape chars for comma, semicolon etc. from STRING." - (replace-regexp-in-string - "\\\\n" "\n " (replace-regexp-in-string - "\\\\\"" "\"" (replace-regexp-in-string - "\\\\;" ";" (replace-regexp-in-string - "\\\\," "," string))))) + (string-replace + "\\n" "\n " (string-replace + "\\\"" "\"" (string-replace + "\\;" ";" (string-replace + "\\," "," string))))) ;; ====================================================================== ;; Export -- convert emacs-diary to iCalendar @@ -1275,7 +1273,7 @@ Returns an alist." (concat "\\(" icalendar-import-format-uid "\\)??")))) ;; Need the \' regexp in order to detect multi-line items (setq s (concat "\\`" - (replace-regexp-in-string "%s" "\\(.*?\\)" s nil t) + (replace-regexp-in-string "%s" "\\([^z-a]*?\\)" s nil t) "\\'")) (if (string-match s summary-and-rest) (let (cla des loc org sta url uid) ;; sum @@ -1785,8 +1783,8 @@ entries. ENTRY-MAIN is the first line of the diary entry." ;;BUT remove today if `diary-float' ;;expression does not hold true for today: (when - (null (calendar-dlet* ((date (calendar-current-date)) - (entry entry-main)) + (null (calendar-dlet ((date (calendar-current-date)) + (entry entry-main)) (diary-float month dayname n))) (concat "\nEXDATE;VALUE=DATE:" @@ -1916,9 +1914,9 @@ entries. ENTRY-MAIN is the first line of the diary entry." (let* ((datetime (substring entry-main (match-beginning 1) (match-end 1))) (startisostring (icalendar--datestring-to-isodate - datetime)) + datetime nil 1)) (endisostring (icalendar--datestring-to-isodate - datetime 1)) + datetime 1 1)) (starttimestring (icalendar--diarytime-to-isotime (if (match-beginning 3) (substring entry-main @@ -1987,9 +1985,7 @@ Argument ICAL-FILENAME output iCalendar file. Argument DIARY-FILENAME input `diary-file'. Optional argument NON-MARKING determines whether events are created as non-marking or not." - (interactive "fImport iCalendar data from file: \n\ -Finto diary file: -P") + (interactive "fImport iCalendar data from file: \nFInto diary file: \nP") ;; clean up the diary file (save-current-buffer ;; now load and convert from the ical file @@ -2402,8 +2398,11 @@ END-T is the event's end time in diary format." (if end-t "-" "") (or end-t "")))) (setq result (format - "%%%%(and (diary-anniversary %s)) %s%s%s" - dtstart-conv + "%%%%(diary-anniversary %s) %s%s%s" + (let* ((year (nth 5 dtstart-dec)) + (dtstart-1y-dec (copy-sequence dtstart-dec))) + (setf (nth 5 dtstart-1y-dec) (1- year)) + (icalendar--datetime-to-diary-date dtstart-1y-dec)) (or start-t "") (if end-t "-" "") (or end-t ""))))) ;; monthly @@ -2552,6 +2551,11 @@ the entry." (or (icalendar--get-event-property event 'URL) "") (or (icalendar--get-event-property event 'CLASS) ""))) +;; Obsolete + +(defconst icalendar-version "0.19" "Version number of icalendar.el.") +(make-obsolete-variable 'icalendar-version 'emacs-version "28.1") + (provide 'icalendar) ;;; icalendar.el ends here diff --git a/lisp/calendar/iso8601.el b/lisp/calendar/iso8601.el index 5a109a73cd9..1de1796a054 100644 --- a/lisp/calendar/iso8601.el +++ b/lisp/calendar/iso8601.el @@ -41,7 +41,7 @@ ;; ;; The standard can be found at: ;; -;; http://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf +;; https://www.loc.gov/standards/datetime/iso-tc154-wg5_n0038_iso_wd_8601-1_2016-02-16.pdf ;; ;; The Wikipedia page on the standard is also informative: ;; @@ -57,7 +57,7 @@ (defun iso8601--concat-regexps (regexps) (mapconcat (lambda (regexp) (concat "\\(?:" - (replace-regexp-in-string "(" "(?:" regexp) + (string-replace "(" "(?:" regexp) "\\)")) regexps "\\|")) @@ -92,13 +92,13 @@ "\\(Z\\|\\([+-]\\)\\([0-9][0-9]\\):?\\([0-9][0-9]\\)?\\)") (defconst iso8601--full-time-match - (concat "\\(" (replace-regexp-in-string "(" "(?:" iso8601--time-match) "\\)" + (concat "\\(" (string-replace "(" "(?:" iso8601--time-match) "\\)" "\\(" iso8601--zone-match "\\)?")) (defconst iso8601--combined-match (concat "\\(" iso8601--date-match "\\)" "\\(?:T\\(" - (replace-regexp-in-string "(" "(?:" iso8601--time-match) + (string-replace "(" "(?:" iso8601--time-match) "\\)" "\\(" iso8601--zone-match "\\)?\\)?")) @@ -231,17 +231,22 @@ See `decode-time' for the meaning of FORM." (string-to-number (match-string 2 time)))) (second (and (match-string 3 time) (string-to-number (match-string 3 time)))) - (fraction (and (not (zerop (length (match-string 4 time)))) - (string-to-number (match-string 4 time))))) + (frac-string (match-string 4 time)) + fraction fraction-precision) + (when frac-string + ;; Remove trailing zeroes. + (setq frac-string (replace-regexp-in-string "0+\\'" "" frac-string)) + (when (length> frac-string 0) + (setq fraction (string-to-number frac-string) + fraction-precision (length frac-string)))) (when (and fraction (eq form t)) (cond ;; Sub-second time. (second - (let ((digits (1+ (truncate (log fraction 10))))) - (setq second (cons (+ (* second (expt 10 digits)) - fraction) - (expt 10 digits))))) + (setq second (cons (+ (* second (expt 10 fraction-precision)) + fraction) + (expt 10 fraction-precision)))) ;; Fractional minute. (minute (setq second (iso8601--decimalize fraction 60))) diff --git a/lisp/calendar/parse-time.el b/lisp/calendar/parse-time.el index ba7418faf78..5a3d2706afd 100644 --- a/lisp/calendar/parse-time.el +++ b/lisp/calendar/parse-time.el @@ -29,7 +29,7 @@ ;; `parse-time-string' parses a time in a string and returns a list of ;; values, just like `decode-time', where unspecified elements in the -;; string are returned as nil (except unspecfied DST is returned as -1). +;; string are returned as nil (except unspecified DST is returned as -1). ;; `encode-time' may be applied on these values to obtain an internal ;; time value. @@ -103,46 +103,46 @@ letters, digits, plus or minus signs or colons." ((4) parse-time-months) ((5) (100)) ((2 1 0) - ,#'(lambda () (and (stringp parse-time-elt) - (= (length parse-time-elt) 8) - (= (aref parse-time-elt 2) ?:) - (= (aref parse-time-elt 5) ?:))) + ,(lambda () (and (stringp parse-time-elt) + (= (length parse-time-elt) 8) + (= (aref parse-time-elt 2) ?:) + (= (aref parse-time-elt 5) ?:))) [0 2] [3 5] [6 8]) ((8 7) parse-time-zoneinfo - ,#'(lambda () (car parse-time-val)) - ,#'(lambda () (cadr parse-time-val))) + ,(lambda () (car parse-time-val)) + ,(lambda () (cadr parse-time-val))) ((8) - ,#'(lambda () - (and (stringp parse-time-elt) - (= 5 (length parse-time-elt)) - (or (= (aref parse-time-elt 0) ?+) - (= (aref parse-time-elt 0) ?-)))) - ,#'(lambda () (* 60 (+ (cl-parse-integer parse-time-elt :start 3 :end 5) - (* 60 (cl-parse-integer parse-time-elt :start 1 :end 3))) - (if (= (aref parse-time-elt 0) ?-) -1 1)))) + ,(lambda () + (and (stringp parse-time-elt) + (= 5 (length parse-time-elt)) + (or (= (aref parse-time-elt 0) ?+) + (= (aref parse-time-elt 0) ?-)))) + ,(lambda () (* 60 (+ (cl-parse-integer parse-time-elt :start 3 :end 5) + (* 60 (cl-parse-integer parse-time-elt :start 1 :end 3))) + (if (= (aref parse-time-elt 0) ?-) -1 1)))) ((5 4 3) - ,#'(lambda () (and (stringp parse-time-elt) - (= (length parse-time-elt) 10) - (= (aref parse-time-elt 4) ?-) - (= (aref parse-time-elt 7) ?-))) + ,(lambda () (and (stringp parse-time-elt) + (= (length parse-time-elt) 10) + (= (aref parse-time-elt 4) ?-) + (= (aref parse-time-elt 7) ?-))) [0 4] [5 7] [8 10]) ((2 1 0) - ,#'(lambda () (and (stringp parse-time-elt) - (= (length parse-time-elt) 5) - (= (aref parse-time-elt 2) ?:))) - [0 2] [3 5] ,#'(lambda () 0)) + ,(lambda () (and (stringp parse-time-elt) + (= (length parse-time-elt) 5) + (= (aref parse-time-elt 2) ?:))) + [0 2] [3 5] ,(lambda () 0)) ((2 1 0) - ,#'(lambda () (and (stringp parse-time-elt) - (= (length parse-time-elt) 4) - (= (aref parse-time-elt 1) ?:))) - [0 1] [2 4] ,#'(lambda () 0)) + ,(lambda () (and (stringp parse-time-elt) + (= (length parse-time-elt) 4) + (= (aref parse-time-elt 1) ?:))) + [0 1] [2 4] ,(lambda () 0)) ((2 1 0) - ,#'(lambda () (and (stringp parse-time-elt) - (= (length parse-time-elt) 7) - (= (aref parse-time-elt 1) ?:))) + ,(lambda () (and (stringp parse-time-elt) + (= (length parse-time-elt) 7) + (= (aref parse-time-elt 1) ?:))) [0 1] [2 4] [5 7]) - ((5) (50 110) ,#'(lambda () (+ 1900 parse-time-elt))) - ((5) (0 49) ,#'(lambda () (+ 2000 parse-time-elt)))) + ((5) (50 110) ,(lambda () (+ 1900 parse-time-elt))) + ((5) (0 49) ,(lambda () (+ 2000 parse-time-elt)))) "(slots predicate extractor...)") ;;;###autoload(put 'parse-time-rules 'risky-local-variable t) diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index 372490db9ec..b5f2f454aea 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el @@ -552,7 +552,7 @@ degrees to find out if polar regions have 24 hours of sun or only night." Format used is given by `calendar-time-display-form'." (let* ((time (round (* 60 time))) (24-hours (/ time 60))) - (calendar-dlet* + (calendar-dlet ((time-zone time-zone) (minutes (format "%02d" (% time 60))) (12-hours (format "%d" (1+ (% (+ 24-hours 11) 12)))) diff --git a/lisp/calendar/time-date.el b/lisp/calendar/time-date.el index 2df57a3c33d..0aa38166bc1 100644 --- a/lisp/calendar/time-date.el +++ b/lisp/calendar/time-date.el @@ -357,7 +357,7 @@ is output until the first non-zero unit is encountered." (format " %s%s" name (if (= num 1) "" "s")))) t t string)))))) - (replace-regexp-in-string "%%" "%" string)) + (string-replace "%%" "%" string)) (defvar seconds-to-string (list (list 1 "ms" 0.001) @@ -525,6 +525,8 @@ changes in daylight saving time are not taken into account." (defun decoded-time-set-defaults (time &optional default-zone) "Set any nil values in `decoded-time' TIME to default values. The default value is based on January 1st, 1970 at midnight. +This year is used to guarantee portability; see Info +node `(elisp) Time of Day'. TIME is modified and returned." (unless (decoded-time-second time) @@ -539,7 +541,7 @@ TIME is modified and returned." (unless (decoded-time-month time) (setf (decoded-time-month time) 1)) (unless (decoded-time-year time) - (setf (decoded-time-year time) 0)) + (setf (decoded-time-year time) 1970)) ;; When we don't have a time zone, default to DEFAULT-ZONE without ;; DST if DEFAULT-ZONE if given, and to unknown DST otherwise. diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el index 0bbaa1e1ed6..4a4b65d3745 100644 --- a/lisp/calendar/timeclock.el +++ b/lisp/calendar/timeclock.el @@ -69,8 +69,6 @@ ;; your average working time, and will make sure that the various ;; display functions return the correct value. -;;; History: - ;;; Code: (require 'cl-lib) diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index 0daa1530109..371d10631c5 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el @@ -191,7 +191,7 @@ The final element is \"*\", indicating an unspecified month.") (defconst todo-date-pattern (let ((dayname (diary-name-pattern calendar-day-name-array nil t))) (concat "\\(?4:\\(?5:" dayname "\\)\\|" - (calendar-dlet* + (calendar-dlet ((dayname) (monthname (format "\\(?6:%s\\)" (diary-name-pattern todo-month-name-array @@ -2279,7 +2279,7 @@ made in the number or names of categories." (inc (prefix-numeric-value inc)) (buffer-read-only nil) ndate ntime - year monthname month day dayname) + year monthname month day) ;; dayname (when marked (todo--user-error-if-marked-done-item)) (save-excursion (or (and marked (goto-char (point-min))) (todo-item-start)) @@ -2431,13 +2431,13 @@ made in the number or names of categories." ;; changed, rebuild the date string. (when (memq what '(year month day)) (setq ndate - (calendar-dlet* + (calendar-dlet ;; Needed by calendar-date-display-form. ((year year) (monthname monthname) (month month) (day day) - (dayname dayname)) + (dayname nil)) ;; dayname (mapconcat #'eval calendar-date-display-form ""))))) (when ndate (replace-match ndate nil nil nil 1)) ;; Add new time string to the header, if it was supplied. @@ -3450,8 +3450,8 @@ containing only archived items, provided user option are shown in `todo-archived-only' face." (interactive) (todo-display-categories) - (let (sortkey) - (todo-update-categories-display sortkey))) + ;; (let (sortkey) + (todo-update-categories-display nil)) ;; sortkey (defun todo-next-button (n) "Move point to the Nth next button in the table of categories." @@ -4546,7 +4546,7 @@ its priority has changed, and `same' otherwise." (let ((bufname (buffer-name))) (string-match "\"\\([^\"]+\\)\"" bufname) (let* ((filename-str (substring bufname (match-beginning 1) (match-end 1))) - (filename-base (replace-regexp-in-string ", " "-" filename-str)) + (filename-base (string-replace ", " "-" filename-str)) (top-priorities (string-match "top priorities" bufname)) (diary-items (string-match "diary items" bufname)) (regexp-items (string-match "regexp items" bufname))) @@ -4658,7 +4658,7 @@ strings built using the default value of (defun todo-convert-legacy-date-time () "Return converted date-time string. Helper function for `todo-convert-legacy-files'." - (calendar-dlet* + (calendar-dlet ((year (match-string 1)) (month (match-string 2)) (monthname (calendar-month-name (string-to-number month) t)) @@ -6036,7 +6036,7 @@ indicating an unspecified month, day, or year. When ARG is `day', non-nil arguments MO and YR determine the number of the last the day of the month." - (calendar-dlet* + (calendar-dlet (year monthname month day dayname) ;Needed by calendar-date-display-form. (when (or (not arg) (eq arg 'year)) (while (if (natnump year) (< year 1) (not (eq year '*))) |