GNU bug report logs - #3862
23.1.50; error calling `documentation' on calendar-mode

Previous Next

Package: emacs;

Reported by: Kevin Ryde <user42 <at> zip.com.au>

Date: Thu, 16 Jul 2009 00:00:04 UTC

Severity: normal

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 3862 in the body.
You can then email your comments to 3862 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3862; Package emacs. (Thu, 16 Jul 2009 00:00:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Kevin Ryde <user42 <at> zip.com.au>:
New bug report received and forwarded. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Thu, 16 Jul 2009 00:00:04 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Kevin Ryde <user42 <at> zip.com.au>
To: emacs-pretest-bug <at> gnu.org
Subject: 23.1.50; error calling `documentation' on calendar-mode
Date: Thu, 16 Jul 2009 09:50:38 +1000
In a recent cvs starting "emacs -Q" and evaluating

    (progn
      (require 'calendar)
      (documentation 'calendar-mode))

gets the error and backtrace below.

For what it's worth it works fine from the actual calendar buffer, but I
was trying in some program code where that wasn't the case.  I hoped I
could generally get the docs for any function from anywhere.

Also incidentally I tried a condition-case around it like

    (condition-case nil
        (documentation 'calendar-mode)
      (error nil))

and was surprised it still went to the debugger.  But maybe that's a
separate problem.



Debugger entered--Lisp error: (void-variable displayed-month)
  calendar-cursor-to-date(t 24)
  cal-menu-set-date-title(("--" ["Holidays" calendar-cursor-holidays] ["Mark date" calendar-set-mark] ["Sunrise/sunset" calendar-sunrise-sunset] ["Other calendars" calendar-print-other-dates] ("Prepare LaTeX buffer" ["Daily (1 page)" cal-tex-cursor-day] ["Weekly (1 page)" cal-tex-cursor-week] ["Weekly (2 pages)" cal-tex-cursor-week2] ["Weekly (other style; 1 page)" cal-tex-cursor-week-iso] ["Weekly (yet another style; 1 page)" cal-tex-cursor-week-monday] ["Monthly" cal-tex-cursor-month] ["Monthly (landscape)" cal-tex-cursor-month-landscape] ["Yearly" cal-tex-cursor-year] ["Yearly (landscape)" cal-tex-cursor-year-landscape] ("Filofax styles" ["Filofax Daily (one-day-per-page)" cal-tex-cursor-filofax-daily] ["Filofax Weekly (2-weeks-at-a-glance)" cal-tex-cursor-filofax-2week] ["Filofax Weekly (week-at-a-glance)" cal-tex-cursor-filofax-week] ["Filofax Yearly" cal-tex-cursor-filofax-year])) ("Write HTML calendar" ["For selected month" cal-html-cursor-month] ["For selected year" cal-html-cursor-year]) ["Diary entries" calendar-mouse-view-diary-entries :keys "d"] ["Insert diary entry" diary-insert-entry] ["Other diary file entries" calendar-mouse-view-other-diary-entries :keys "D"]))
  (easy-menu-filter-return (cal-menu-set-date-title menu) "cal-menu-mouse2")
  (lambda (menu) (easy-menu-filter-return (cal-menu-set-date-title menu) "cal-menu-mouse2"))(("--" ["Holidays" calendar-cursor-holidays] ["Mark date" calendar-set-mark] ["Sunrise/sunset" calendar-sunrise-sunset] ["Other calendars" calendar-print-other-dates] ("Prepare LaTeX buffer" ["Daily (1 page)" cal-tex-cursor-day] ["Weekly (1 page)" cal-tex-cursor-week] ["Weekly (2 pages)" cal-tex-cursor-week2] ["Weekly (other style; 1 page)" cal-tex-cursor-week-iso] ["Weekly (yet another style; 1 page)" cal-tex-cursor-week-monday] ["Monthly" cal-tex-cursor-month] ["Monthly (landscape)" cal-tex-cursor-month-landscape] ["Yearly" cal-tex-cursor-year] ["Yearly (landscape)" cal-tex-cursor-year-landscape] ("Filofax styles" ["Filofax Daily (one-day-per-page)" cal-tex-cursor-filofax-daily] ["Filofax Weekly (2-weeks-at-a-glance)" cal-tex-cursor-filofax-2week] ["Filofax Weekly (week-at-a-glance)" cal-tex-cursor-filofax-week] ["Filofax Yearly" cal-tex-cursor-filofax-year])) ("Write HTML calendar" ["For selected month" cal-html-cursor-month] ["For selected year" cal-html-cursor-year]) ["Diary entries" calendar-mouse-view-diary-entries :keys "d"] ["Insert diary entry" diary-insert-entry] ["Other diary file entries" calendar-mouse-view-other-diary-entries :keys "D"]))
  documentation(calendar-mode)
  (progn (require (quote calendar)) (documentation (quote calendar-mode)))
  eval-region(1 63 t (lambda (ignore) (goto-char 63) (quote (progn ... ...))))  ; Reading at buffer position 8
  apply(eval-region (1 63 t (lambda (ignore) (goto-char 63) (quote ...))))
  eval-defun-2()
  eval-defun(nil)
  call-interactively(eval-defun nil nil)




In GNU Emacs 23.1.50.1 (i586-pc-linux-gnu, GTK+ Version 2.16.4)
 of 2009-07-12 on blah.blah
configured using `configure  'CFLAGS=-O -g' '--prefix=/down/emacs/b/inst' '--with-x-toolkit=gtk''

Important settings:
  value of $LC_ALL: nil
  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: nil
  value of $LANG: en_AU
  value of $XMODIFIERS: nil
  locale-coding-system: iso-latin-1-unix
  default-enable-multibyte-characters: t



Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3862; Package emacs. (Thu, 16 Jul 2009 01:45:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> iro.umontreal.ca>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Thu, 16 Jul 2009 01:45:04 GMT) Full text and rfc822 format available.

Message #10 received at 3862 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Kevin Ryde <user42 <at> zip.com.au>
Cc: 3862 <at> debbugs.gnu.org
Subject: Re: bug#3862: 23.1.50; error calling `documentation' on calendar-mode
Date: Wed, 15 Jul 2009 21:40:18 -0400
>     (progn
>       (require 'calendar)
>       (documentation 'calendar-mode))

> gets the error and backtrace below.

The docstring gets passed through substitute-command-keys which can run
arbitrary code via menu-item :filters (as well as via autoloaded
keymaps, actually).

> For what it's worth it works fine from the actual calendar buffer, but I
> was trying in some program code where that wasn't the case.  I hoped I
> could generally get the docs for any function from anywhere.

In the present case, there's a subtle bug in the :filter of the
calendar-mode-map (more specially in the menu-bar part of the map).

> Also incidentally I tried a condition-case around it like

>     (condition-case nil
>         (documentation 'calendar-mode)
>       (error nil))

> and was surprised it still went to the debugger.  But maybe that's a
> separate problem.

Indeed it's a separate problem: when the filter is run, it is presumed
it is "at top level" and so the error gets turned into a backtrace
without paying attention to surrounding condition-cases.  It's clearly
a bug, but it might be delicate to fix without introducing risks of
nasty crashes.


        Stefan




Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3862; Package emacs. (Fri, 17 Jul 2009 01:05:05 GMT) Full text and rfc822 format available.

Message #13 received at 3862 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: Stefan Monnier <monnier <at> iro.umontreal.ca>
Cc: 3862 <at> debbugs.gnu.org, Kevin Ryde <user42 <at> zip.com.au>
Subject: Re: bug#3862: 23.1.50; error calling `documentation' on calendar-mode
Date: Thu, 16 Jul 2009 21:02:39 -0400
Stefan Monnier wrote:

> In the present case, there's a subtle bug in the :filter of the
> calendar-mode-map (more specially in the menu-bar part of the map).

Could you explain what the bug is? The error is coming from
cal-menu-set-date-title in a mouse-binding, which calls
calendar-cursor-to-date.

This has always assumed it is called from a calendar buffer, which
seems reasonable, and gives an error if it is not.

Also, why does C-h f calendar-mode work fine?


On a related note, I notice that the Emacs 22 behaviour, where it
displays an explicit error message "Not on a date" if called in the
calendar with point not a date, has been lost - now it is just silent.
I would like to get this back, but I can't figure out the Easymenu-Way
to do it.


Anyway, the following hack will suppress the original issue.


*** calendar.el	8 Jul 2009 02:48:13 -0000	1.283
--- calendar.el	17 Jul 2009 00:53:33 -0000
***************
*** 1811,1816 ****
--- 1811,1817 ----
    (with-current-buffer
        (if event (window-buffer (posn-window (event-start event)))
          (current-buffer))
+     (or (boundp 'displayed-month) (error "Not on a date!"))
      (save-excursion
        (and event (setq event (event-start event))
             (goto-char (posn-point event)))



Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3862; Package emacs. (Fri, 17 Jul 2009 05:20:04 GMT) Full text and rfc822 format available.

Message #16 received at 3862 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 3862 <at> debbugs.gnu.org
Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>, Kevin Ryde <user42 <at> zip.com.au>
Subject: Re: bug#3862: 23.1.50; error calling `documentation' on calendar-mode
Date: Fri, 17 Jul 2009 01:12:29 -0400
Perhaps something like this is better:

*** cal-menu.el.~1.114.~	2009-01-07 20:13:09.000000000 -0800
--- cal-menu.el	2009-07-16 22:08:54.000000000 -0700
***************
*** 202,210 ****
  
  (defun cal-menu-set-date-title (menu)
    "Convert date of last event to title suitable for MENU."
!   (easy-menu-filter-return
!    menu (calendar-date-string (calendar-cursor-to-date t last-input-event)
!                               t nil)))
  
  (easy-menu-define cal-menu-context-mouse-menu nil
    "Pop up menu for Mouse-2 for selected date in the calendar window."
--- 202,212 ----
  
  (defun cal-menu-set-date-title (menu)
    "Convert date of last event to title suitable for MENU."
!   (let ((date (ignore-errors (calendar-cursor-to-date nil last-input-event))))
!     (if date
!         (easy-menu-filter-return menu (calendar-date-string date t nil))
!       (message "Not on a date!")
!       nil)))
  
  (easy-menu-define cal-menu-context-mouse-menu nil
    "Pop up menu for Mouse-2 for selected date in the calendar window."



Information forwarded to bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>:
bug#3862; Package emacs. (Fri, 17 Jul 2009 16:05:04 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Monnier <monnier <at> IRO.UMontreal.CA>:
Extra info received and forwarded to list. Copy sent to Emacs Bugs <bug-gnu-emacs <at> gnu.org>. (Fri, 17 Jul 2009 16:05:05 GMT) Full text and rfc822 format available.

Message #21 received at 3862 <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Glenn Morris <rgm <at> gnu.org>
Cc: 3862 <at> debbugs.gnu.org, Kevin Ryde <user42 <at> zip.com.au>
Subject: Re: bug#3862: 23.1.50; error calling `documentation' on calendar-mode
Date: Fri, 17 Jul 2009 11:58:10 -0400
> Perhaps something like this is better:

That seems OK, tho I'd rather return the menu in either case and use
some default string (e.g. "today") for the date when
calendar-cursor-to-date signals an error.


        Stefan



Reply sent to Glenn Morris <rgm <at> gnu.org>:
You have taken responsibility. (Sun, 19 Jul 2009 00:45:06 GMT) Full text and rfc822 format available.

Notification sent to Kevin Ryde <user42 <at> zip.com.au>:
bug acknowledged by developer. (Sun, 19 Jul 2009 00:45:06 GMT) Full text and rfc822 format available.

Message #26 received at 3862-done <at> emacsbugs.donarmstrong.com (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 3862-done <at> debbugs.gnu.org
Subject: Re: bug#3862: 23.1.50; error calling `documentation' on calendar-mode
Date: Sat, 18 Jul 2009 20:37:04 -0400
  * calendar/cal-menu.el (cal-menu-set-date-title): Handle calls
  from non-calendar buffers (Bug#3862).



bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> emacsbugs.donarmstrong.com. (Sun, 16 Aug 2009 14:24:19 GMT) Full text and rfc822 format available.

This bug report was last modified 15 years and 314 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.