GNU bug report logs -
#11260
24.1.50; `holiday-sexp' may create entry twice
Previous Next
Reported by: michael_heerdegen <at> web.de
Date: Mon, 16 Apr 2012 21:26:02 UTC
Severity: minor
Tags: notabug
Found in version 24.1.50
Done: Glenn Morris <rgm <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 11260 in the body.
You can then email your comments to 11260 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#11260
; Package
emacs
.
(Mon, 16 Apr 2012 21:26:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
michael_heerdegen <at> web.de
:
New bug report received and forwarded. Copy sent to
bug-gnu-emacs <at> gnu.org
.
(Mon, 16 Apr 2012 21:26:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi,
the following happens also in Emacs 23. Recipe:
1. emacs -Q
2. M-x calendar RET
3. evaluate: (require 'holidays)
4. evaluate:
(add-to-list
'calendar-holidays
'(holiday-sexp
'(list 4 17 2012)
"April 17th 2012"))
5. In the calendar, move point to April 17th 2012 and hit h.
You'll see that "April 17th 2012" appears twice.
I've debugged this.
`calendar-holiday-list' indeed returns two entries for this date.
The bug is in `holiday-sexp':
| (defun holiday-sexp (sexp string)
| "Sexp holiday for dates in the calendar window.
| SEXP is an expression in variable `year' that is evaluated to
| give `date'. STRING is an expression in `date' that evaluates to
| the holiday description of `date'. If `date' is visible in the
| calendar window, the holiday STRING is on that date. If date is
| nil, or if the date is not visible, there is no holiday."
| (let ((m displayed-month)
| (y displayed-year)
| year date)
| (calendar-increment-month m y -1)
| (holiday-filter-visible-calendar
| (list
| (progn
| (setq year y
| date (eval sexp))
| (list date (if date (eval string))))
| (progn
| (setq year (1+ y)
| date (eval sexp)) ;; <-------------------------------
| (list date (if date (eval string))))))))
At the marked position, there is no check if `date' is in the
incremented year.
I see two possible fixes:
1. Add such a check, and set date to nil when it fails.
2. Add to the doc of `holiday-sexp' that a given sexp _must_ return
either nil or a date which is in the year equal to the value of
`year'.
I would prefer 1., because I don't see the need for such a
restriction. But I'm not really familiar with calendar stuff.
Thanks,
Michael.
In GNU Emacs 24.1.50.1 (i486-pc-linux-gnu, GTK+ Version 3.2.3)
of 2012-04-10 on zelenka, modified by Debian
(emacs-snapshot package, version 2:20120410-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11104000
Configured using:
`configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu'
'--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
'--localstatedir=/var' '--infodir=/usr/share/info'
'--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp'
'--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/'
'--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu'
'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2''
Important settings:
value of $LC_ALL: de_DE.utf8
value of $LC_COLLATE: nil
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: C
value of $LANG: de_DE.utf8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#11260
; Package
emacs
.
(Mon, 16 Apr 2012 21:43:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 11260 <at> debbugs.gnu.org (full text, mbox):
Michael Heerdegen <michael_heerdegen <at> web.de> writes:
> the following happens also in Emacs 23. Recipe:
>
> 1. emacs -Q
> 2. M-x calendar RET
> 3. evaluate: (require 'holidays)
> 4. evaluate:
> (add-to-list
> 'calendar-holidays
> '(holiday-sexp
> '(list 4 17 2012)
> "April 17th 2012"))
>
> 5. In the calendar, move point to April 17th 2012 and hit h.
>
> You'll see that "April 17th 2012" appears twice.
Your expression does not use year.
> | (defun holiday-sexp (sexp string)
> | "Sexp holiday for dates in the calendar window.
> | SEXP is an expression in variable `year' that is evaluated to
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Andreas.
--
Andreas Schwab, schwab <at> linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#11260
; Package
emacs
.
(Mon, 16 Apr 2012 22:42:01 GMT)
Full text and
rfc822 format available.
Message #11 received at 11260 <at> debbugs.gnu.org (full text, mbox):
Andreas Schwab <schwab <at> linux-m68k.org> writes:
> > '(holiday-sexp
> > '(list 4 17 2012)
> > "April 17th 2012"))
> >
> Your expression does not use year.
>
> > | (defun holiday-sexp (sexp string)
> > | "Sexp holiday for dates in the calendar window.
> > | SEXP is an expression in variable `year' that is evaluated to
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Good point, indeed. Also the manual says it clearly. And I didn't find
a realistic counterexample that is an expression in `year'.
So, we can close this report. Sorry for the noise!
Regards,
Michael.
Added tag(s) notabug.
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Mon, 16 Apr 2012 23:12:01 GMT)
Full text and
rfc822 format available.
bug closed, send any further explanations to
11260 <at> debbugs.gnu.org and michael_heerdegen <at> web.de
Request was from
Glenn Morris <rgm <at> gnu.org>
to
control <at> debbugs.gnu.org
.
(Mon, 16 Apr 2012 23:12:01 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Tue, 15 May 2012 11:24:03 GMT)
Full text and
rfc822 format available.
This bug report was last modified 13 years and 95 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.