all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stephen Berman <stephen.berman@gmx.net>
To: Stefan Monnier <monnier@IRO.UMontreal.CA>
Cc: emacs-devel@gnu.org
Subject: Re: Undesired interactive call of major mode command
Date: Sat, 22 Nov 2014 23:19:44 +0100	[thread overview]
Message-ID: <87ppceop33.fsf@rosalinde.fritz.box> (raw)
In-Reply-To: <jwvegsvw6ya.fsf-monnier+emacs@gnu.org> (Stefan Monnier's message of "Sat, 22 Nov 2014 11:15:15 -0500")

On Sat, 22 Nov 2014 11:15:15 -0500 Stefan Monnier <monnier@IRO.UMontreal.CA> wrote:

>> Bug#19112 reports an error resulting from typing `M-x todo-mode RET'.
>> The real issue (at least for me, as the maintainer of Todo mode) is not
>> the error but that todo-mode, although it is the "major mode command",
>> is not intended to be invoked interactively.
>
> There are several such major-modes.  It's OK if doing M-x foo-mode RET
> doesn't really "do the right thing" in that case, as long as it doesn't
> burp loudly.

The current burps are presumably too loud:
- If you call todo-mode in an empty non-file buffer, you get the error
  (wrong-type-argument arrayp nil) because todo-mode calls
  (file-truename (buffer-file-name)) (this was the error of bug#19112).
- If you call todo-mode in a non-empty buffer (whether or not it is
  visiting a file (except a Todo mode file, of course), you get the
  Todo mode error "Invalid or missing todo-categories sexp", because the
  buffer text does not conform to the Todo mode file format.
- If you call todo-mode in a buffer visiting an empty file, you get no
  error, but since the buffer is then in Todo mode, if you invoke any
  Todo mode command you'll get an error, again because of the invalid
  file format for Todo mode.

>> deal with this.  Three alternatives have occurred to me.
>> (i) Tell users: "Don't do that."
>
> That's a good first step.
>
>> (ii) Add to todo-mode the condition
>> (called-interactively-p 'any) and if it returns t either show a message
>> saying how to enter todo mode or simply call the intended (and
>> documented) Todo mode entry command (todo-show).
>
> Better just emit a message.
>
>> But this has the problem that, as soon as todo-mode is invoked, the
>> current buffer changes to Todo mode;
>
> Why is it a problem that the current buffer changed to todo-mode?

Well, it's not a problem in the sense of data loss or unrecoverable file
corruption, but if the user expected the buffer to be a usable Todo mode
buffer, he'll be disappointed.  On the other hand, I guess it's
reasonable to consider calling todo-mode in any buffer simply
user-error, like calling rmail-mode or an arbitrary programming mode.

So is it sufficient to fix the code to prevent the above errors and
display the message "Type M-x todo-show to enter Todo mode", and not
worry about the buffer changing to todo-mode?

Steve Berman



  reply	other threads:[~2014-11-22 22:19 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-11-22 14:23 Undesired interactive call of major mode command Stephen Berman
2014-11-22 16:15 ` Stefan Monnier
2014-11-22 22:19   ` Stephen Berman [this message]
2014-11-24  3:56     ` Stefan Monnier
2014-11-25 21:58       ` Stephen Berman
2014-11-26  2:16         ` Stefan Monnier
2014-11-26 13:39           ` Stephen Berman

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87ppceop33.fsf@rosalinde.fritz.box \
    --to=stephen.berman@gmx.net \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@IRO.UMontreal.CA \
    /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
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.