From: Stephen Berman <firstname.lastname@example.org> To: email@example.com Cc: firstname.lastname@example.org Subject: Re: bug#48199: 28.0.50; Org mode surprisingly usurps Calendar key binding Date: Fri, 25 Jun 2021 11:15:30 +0200 [thread overview] Message-ID: <email@example.com> (raw) In-Reply-To: <firstname.lastname@example.org> (Stephen Berman's message of "Sun, 09 May 2021 19:21:31 +0200") On Sun, 09 May 2021 19:21:31 +0200 Stephen Berman <email@example.com> wrote: > [I added firstname.lastname@example.org in the Cc:] > > On Mon, 03 May 2021 18:07:25 +0200 Stephen Berman <email@example.com> 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 <firstname.lastname@example.org> wrote: > Hello, > > Stephen Berman <email@example.com> 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
next prev parent reply other threads:[~2021-06-25 9:22 UTC|newest] Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top [not found] <firstname.lastname@example.org> 2021-05-09 17:21 ` Stephen Berman 2021-06-25 9:15 ` Stephen Berman [this message] [not found] <email@example.com> 2021-08-27 3:32 ` Yuchen Pei 2021-08-27 3:37 ` Lars Ingebrigtsen 2021-08-27 4:33 ` Yuchen Pei 2021-08-27 6:42 ` tomas
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style List information: https://www.orgmode.org/ * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --firstname.lastname@example.org \ --email@example.com \ --firstname.lastname@example.org \ --email@example.com \ --subject='Re: bug#48199: 28.0.50; Org mode surprisingly usurps Calendar key binding' \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Code repositories for project(s) associated with this inbox: https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).