emacs-bug-tracker
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#48199: closed (28.0.50; Org mode surprisingly usurps Calendar key bi


From: GNU bug Tracking System
Subject: bug#48199: closed (28.0.50; Org mode surprisingly usurps Calendar key binding)
Date: Fri, 25 Jun 2021 09:16:02 +0000

Your message dated Fri, 25 Jun 2021 11:15:30 +0200
with message-id <87zgvei9u5.fsf@gmx.net>
and subject line Re: bug#48199: 28.0.50; Org mode surprisingly usurps Calendar 
key binding
has caused the debbugs.gnu.org bug report #48199,
regarding 28.0.50; Org mode surprisingly usurps Calendar key binding
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs@gnu.org.)


-- 
48199: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=48199
GNU Bug Tracking System
Contact help-debbugs@gnu.org with problems
--- Begin Message --- Subject: 28.0.50; Org mode surprisingly usurps Calendar key binding Date: Mon, 03 May 2021 18:07:25 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
By default `i' is a prefix key in calendar-mode for commands that insert
diary entries.  But if you happen to display a buffer that activates
org-mode machinery, then `i' in calendar-mode becomes bound to
org-agenda-diary-entry and typing it can raise a wrong-type-argument
error.  This can happen by visiting a file in Org mode.  To reproduce:

0. emacs -Q
1. (sanity check:) Type `M-x calendar RET' and then in the Calendar
   buffer type `i C-h': the *Help* buffer displays all the commands
   invoked by `i' plus one or more keys.
2. Visit the file `ORG-NEWS' (e.g. by typing `C-h n C-x C-f O TAB RET').
3. Type `M-x calendar RET' and then in the Calendar buffer type `i'
=> Wrong type argument: commandp, org-agenda-diary-entry

This can also catch users by surprise, e.g. in Gnus.  To reproduce,
replace step 2 above by the following:

2a. Type `M-x gnus', answer `y' at the prompt; in the Gnus buffer type
    `B RET news.gmane.io RET'.
2b. In the *Gnus Browse Server* buffer type `C-s humani' to put point on
    the gmane.emacs.humanities group; type RET to enter it.
2c. Type `j <87sg6wulu6.fsf@localhost> RET', which displays an article
    containing an org-mode source code block.
3. As above, resulting in the same error (when done from emacs -Q).

The Org mode manual (info "(org) Agenda Commands") does describe its use
of the `i' binding in the Calendar, and if Org mode has its own versions
of the commands that use `i' by default in calendar-mode, then
overriding the calendar-mode bindings is no problem for Org Agenda
users, but those bindings should not be overridden just by displaying a
buffer that happens to be in org-mode or happens to contain an Org
source code block.


In GNU Emacs 28.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.17, cairo 
version 1.17.3)
 of 2021-04-26 built on strobe-jhalfs
Repository revision: 40c71e574ad27deee003a0850a40171750234d59
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12008000
System Description: Linux From Scratch SVN-20200401

Configured using:
 'configure --with-xwidgets 'CFLAGS=-Og -g3'
 PKG_CONFIG_PATH=/opt/qt5/lib/pkgconfig'

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG
LCMS2 LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP
SOUND THREADS TIFF TOOLKIT_SCROLL_BARS X11 XDBE XIM XPM XWIDGETS GTK3
ZLIB



--- End Message ---
--- Begin Message --- Subject: Re: bug#48199: 28.0.50; Org mode surprisingly usurps Calendar key binding Date: Fri, 25 Jun 2021 11:15:30 +0200 User-agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux)
On Sun, 09 May 2021 19:21:31 +0200 Stephen Berman <stephen.berman@gmx.net> 
wrote:

> [I added emacs-orgmode@gnu.org in the Cc:]
>
> On Mon, 03 May 2021 18:07:25 +0200 Stephen Berman <stephen.berman@gmx.net> 
> wrote:
>
>> By default `i' is a prefix key in calendar-mode for commands that insert
>> diary entries.  But if you happen to display a buffer that activates
>> org-mode machinery, then `i' in calendar-mode becomes bound to
>> org-agenda-diary-entry and typing it can raise a wrong-type-argument
>> error.  This can happen by visiting a file in Org mode.  To reproduce:
>>
>> 0. emacs -Q
>> 1. (sanity check:) Type `M-x calendar RET' and then in the Calendar
>>    buffer type `i C-h': the *Help* buffer displays all the commands
>>    invoked by `i' plus one or more keys.
>> 2. Visit the file `ORG-NEWS' (e.g. by typing `C-h n C-x C-f O TAB RET').
>> 3. Type `M-x calendar RET' and then in the Calendar buffer type `i'
>> => Wrong type argument: commandp, org-agenda-diary-entry
>>
>> This can also catch users by surprise, e.g. in Gnus.  To reproduce,
>> replace step 2 above by the following:
>>
>> 2a. Type `M-x gnus', answer `y' at the prompt; in the Gnus buffer type
>>     `B RET news.gmane.io RET'.
>> 2b. In the *Gnus Browse Server* buffer type `C-s humani' to put point on
>>     the gmane.emacs.humanities group; type RET to enter it.
>> 2c. Type `j <87sg6wulu6.fsf@localhost> RET', which displays an article
>>     containing an org-mode source code block.
>> 3. As above, resulting in the same error (when done from emacs -Q).
>>
>> The Org mode manual (info "(org) Agenda Commands") does describe its use
>> of the `i' binding in the Calendar, and if Org mode has its own versions
>> of the commands that use `i' by default in calendar-mode, then
>> overriding the calendar-mode bindings is no problem for Org Agenda
>> users, but those bindings should not be overridden just by displaying a
>> buffer that happens to be in org-mode or happens to contain an Org
>> source code block.
>
> The following patch fixes the problem for me:
>
> diff --git a/lisp/org/org-compat.el b/lisp/org/org-compat.el
> index 1f4e2e8308..b68e5b58fc 100644
> --- a/lisp/org/org-compat.el
> +++ b/lisp/org/org-compat.el
> @@ -1151,8 +1151,8 @@ org--setup-calendar-bindings
>      ((guard (not (lookup-key calendar-mode-map "c")))
>       (local-set-key "c" #'org-calendar-goto-agenda))
>      (_ nil))
> -  (unless (and (boundp 'org-agenda-diary-file)
> -            (eq org-agenda-diary-file 'diary-file))
> +  (when (and (boundp 'org-agenda-diary-file)
> +          (not (eq org-agenda-diary-file 'diary-file)))
>      (local-set-key org-calendar-insert-diary-entry-key
>                  #'org-agenda-diary-entry)))
>
>
>
> I have to admit, though, that I don't understand why the version with
> `unless' results in the bug, since in the recipes I gave
> org-agenda-diary-file is unbound and, indeed, when I instrument the
> unpatched org--setup-calendar-bindings and step through it on calling
> `calendar', the org-calendar-insert-diary-entry-key local-set-key call
> is skipped as expected.  But "c" does get locally set, so if I type `c'
> in the Calendar buffer, it displays the Org Agenda, and if I then type
> `i' in the Calendar buffer, I now get prompted with a choice menu for
> the type of diary entry, but whichever I choose, the result is the
> user-error "Don't know which date to use for diary entry", evidently
> because there is indeed no org-agenda-diary-file with the necessary text
> properties.  So somehow the "i" binding is made even though the code
> should prevent this (and does under Edebug but not when executed
> normally).
>
> With the above patch, after typing `c' in the Calendar buffer, `i' is
> still unbound, as it should be, but if I changed the value of
> org-agenda-diary-file from the default 'diary-file to some file, then
> `i' works with Org Agenda as documented.
>
> Steve Berman

On Thu, 24 Jun 2021 17:04:02 +0200 Nicolas Goaziou <mail@nicolasgoaziou.fr> 
wrote:

> Hello,
>
> Stephen Berman <stephen.berman@gmx.net> writes:
>
>> Yeah, the next time Org is merged to the Emacs master branch, forcing me
>> to first stash and then reapply my patch locally, I'll ask if anyone
>> objects to the patch being committed to master.
>
> Sure, go ahead.

Thanks, done in commit 19f2f26 on master.  Closing the bug.

Steve Berman


--- End Message ---

reply via email to

[Prev in Thread] Current Thread [Next in Thread]