Subject: bug#32105: closed (Re: bug#32105: 25.2; calendar-read-date should default to today [PATCH INCLUDED])

From: [email-masked] (GNU bug Tracking System)
Date: Thu, 21 Jan 2021 05:43:02 +0000

Your bug report

#32105: 25.2; calendar-read-date should default to today

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
32105: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=32105
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#32105: 25.2; calendar-read-date should default to today [PATCH INCLUDED]
From: Stefan Monnier <[email-masked]>
To: Lars Ingebrigtsen <[email-masked]>
Cc: Glenn Morris <[email-masked]>, [email-masked], "Edward M. Reingold" <[email-masked]>, Boruch Baum <[email-masked]>
Date: Thu, 21 Jan 2021 00:41:57 -0500
List-Id: <debbugs-submit.debbugs.gnu.org>

I just pushed a patch which makes `calendar-read-date` default to today
for both the month and day of month, and it makes it use the `M-n`
instead of a non--empty minibuffer for the year as well.

        Stefan

Lars Ingebrigtsen [2019-06-24 22:42:31] wrote:

> Boruch Baum <[email-masked]> writes:
>
>> The function is inconsistent in that it uses function `calendar-read'
>> for the year and day values, but `completing-read' for the month value.
>> Should `calendar-read' behave like `completing-read'? Maybe it should
>> have additional optional arguments for everything required by
>> `completing-read', and then just call `completing-read'? Or just not use
>> `calendar-read' at all, and deprecate it?
>
> Hm...  well, calendar-read seems nice, since it validates the numbers...
>
>> If you `completing-read' -type behavior for entry of the year field, how
>> many history entries are you going to give the user? You could use
>> `history-length', like so:
>>
>> (let* ((n-year (calendar-extract-year (calendar-current-date)))
>>        (a-year (- n-year (/ history-length 2)))
>>        (z-year (+ n-year (/ history-length 2))))
>>   (number-sequence a-year z-year))
>>
>> This has a disadvantage that for certain use-cases future years might
>> not make sense.
>
> I think just putting the current year in M-n is fine -- we don't have to
> mess with the history at all.
>
> That is, something conceptually like:
>
> (read-from-minibuffer "Year: " nil nil t nil "2019")
>
> Then 2019 is in M-n and can be edited, and just hitting RET will also
> return 2019.

Subject: 25.2; calendar-read-date should default to today [PATCH INCLUDED]
From: Boruch Baum <[email-masked]>
To: Emacs Bug Reporting <[email-masked]>
Cc: Glenn Morris <[email-masked]>, "Edward M. Reingold" <[email-masked]>
Date: Mon, 9 Jul 2018 11:53:44 -0400
List-Id: <debbugs-submit.debbugs.gnu.org>

The behavior of function `calendar-read-date' is inconsistent in that
its default is provide the current year, but not the current month or
day of the month.

Patch attached.

In GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.30)
 of 2018-05-07, modified by Debian built on binet
System Description:	Devuan GNU/Linux 2.0.0 (ascii)

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --build x86_64-linux-gnu
 --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-x=yes --with-x-toolkit=gtk3
 --with-toolkit-scroll-bars 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs25-NE1ko4/emacs25-25.2+1=.
 -fstack-protector-strong -Wformat -Werror=format-security -Wall'
 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS NOTIFY
ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

-- 
hkp://keys.gnupg.net
CA45 09B5 5351 7C11 A9D1  7286 0036 9E45 1595 8BC0
--- a.el	2018-07-09 11:50:31.882699070 -0400
+++ b.el	2018-07-09 11:51:07.636744090 -0400
@@ -2243,18 +2243,19 @@
 If optional NODAY is t, does not ask for day, but just returns
 \(month 1 year); if NODAY is any other non-nil value the value returned is
 \(month year)"
-  (let* ((year (calendar-read
+  (let* ((today (calendar-current-date))
+         (year (calendar-read
                 "Year (>0): "
                 (lambda (x) (> x 0))
-                (number-to-string (calendar-extract-year
-                                (calendar-current-date)))))
+                (number-to-string (calendar-extract-year today))))
          (month-array calendar-month-name-array)
          (completion-ignore-case t)
          (month (cdr (assoc-string
                        (completing-read
                         "Month name: "
                         (mapcar 'list (append month-array nil))
-                        nil t)
+                        nil t nil nil
+                        (aref month-array (1- (calendar-extract-month today))))
                       (calendar-make-alist month-array 1) t)))
          (last (calendar-last-day-of-month month year)))
     (if noday
@@ -2263,7 +2264,8 @@
           (list month year))
       (list month
             (calendar-read (format "Day (1-%d): " last)
-                           (lambda (x) (and (< 0 x) (<= x last))))
+                           (lambda (x) (and (< 0 x) (<= x last)))
+                           (number-to-string (calendar-extract-day today)))
             year))))
 
 (defun calendar-interval (mon1 yr1 mon2 yr2)