From: Eli Zaretskii <eliz@gnu.org>
To: Drew Adams <drew.adams@oracle.com>
Cc: 30938@debbugs.gnu.org, juri@linkov.net
Subject: bug#30938: 27.0; `dired-do-create-files' etc.: do NOT always raise error if no files
Date: Sat, 31 Mar 2018 19:50:14 +0300 [thread overview]
Message-ID: <83370g8a0p.fsf@gnu.org> (raw)
In-Reply-To: <cc9dcc3e-63c6-43ca-98ec-acdffd2c7ddd@default> (message from Drew Adams on Sat, 31 Mar 2018 09:10:41 -0700 (PDT))
> Date: Sat, 31 Mar 2018 09:10:41 -0700 (PDT)
> From: Drew Adams <drew.adams@oracle.com>
> Cc: juri@linkov.net, 30938@debbugs.gnu.org
>
> > First, dired-get-marked-files _can_ be invoked when no files are
> > marked, without risking a user-error: it has the ARG argument for
> > that. So if your hypothetical command needs for some reason to work
> > when no files are marked, it can, at least in principle. Why your
> > dired[p]-insert-subdirs didn't go that way, or at least didn't pass nil
> > as ERROR, I don't understand (and I'm not sure it's related to the
> > issue at hand).
>
> Don't confuse a command that invokes `dired-get-marked-files'
> with a command that invokes a command that invokes
> `dired-get-marked-files'. Their behaviors can differ (and
> in the general case they do), including wrt interactive and
> non-interactive use.
Summary: I'm not convinced. Some details below.
> `diredp-insert-subdirs' inserts the subdir of the current
> line, if no subdirs are marked. If none are marked and it
> is called from a non-subdir line then it _should_ raise an
> error interactively (and it does).
>
> Should it also do so non-interactively? Why should it
> decide that? Why not let its caller do that? When
> called non-interactively it cannot (and need not) know
> what is the right way to handle that case.
AFAIU, you have all the tools to make it do that, by judicious use of
the ARG and ERROR arguments.
> Imaginary command `insert-marked-subdirs-and-do-stuff'
> should _not_ raise an error, and its invocation of
> `diredp-insert-subdirs' should be a _no-op_, in the
> same situation where invoking `diredp-insert-subdirs'
> interactively would raise an error.
If diredp-insert-subdirs is designed to support that, its interface
should allow that. Commands that aren't designed to support that have
no obligations to allow calling them like that. IOW freedom of
applications to invoke commands and functions outside their intended
domain is not unlimited, and asking for it to be unlimited, or
insisting that the limits be made wider, no matter the costs, is IMO
unreasonable.
> Being able to do that is for the benefit of reusing a
> command that calls `dired-get-marked-files' in different
> ways.
Such reuses have their limitations. One of them is when no files are
marked and there's no "current file". Those commands signal an error
because they cannot fulfill their contract; silently doing nothing in
this case is against that contract.
> While it is typically a user error if nothing is marked
> and point is not on any file line, it is not necessarily
> an error when neither of those is the case - even for an
> interactive case.
Signaling an error is a widely accepted way of telling the caller "you
asked me to do something; I didn't, and here's why". If worse comes
to worst, the caller can always catch the error and recover from it.
> To me, the solution is simple: let a command that invokes
> `d-g-m-f' pass non-nil ERROR when the command is called
> interactively.
That solution causes unreasonable complication on a dozen of commands
for no good reason, so I don't see why we should do that.
next prev parent reply other threads:[~2018-03-31 16:50 UTC|newest]
Thread overview: 21+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-25 16:36 bug#30938: 27.0; `dired-do-create-files' etc.: do NOT always raise error if no files Drew Adams
2018-03-25 16:45 ` Drew Adams
2018-03-28 20:27 ` Juri Linkov
2018-03-28 23:45 ` Drew Adams
2018-03-29 20:04 ` Juri Linkov
2018-03-29 20:25 ` Noam Postavsky
2018-03-30 4:01 ` Drew Adams
2018-03-30 4:01 ` Drew Adams
2018-03-30 7:57 ` Eli Zaretskii
2018-04-02 19:30 ` Juri Linkov
2022-04-21 13:20 ` Lars Ingebrigtsen
2022-04-21 15:01 ` Drew Adams
[not found] ` <<8111e8b0-a7fb-4de4-9371-fd69c74c46e5@default>
[not found] ` <<83lgeac7xs.fsf@gnu.org>
2018-03-30 15:01 ` Drew Adams
2018-03-30 15:30 ` Eli Zaretskii
[not found] ` <<<8111e8b0-a7fb-4de4-9371-fd69c74c46e5@default>
[not found] ` <<<83lgeac7xs.fsf@gnu.org>
[not found] ` <<ea1c9d9f-2405-4377-bd42-de7f020cf9d4@default>
[not found] ` <<83k1tt8ttp.fsf@gnu.org>
2018-03-30 15:43 ` Drew Adams
2018-03-30 16:07 ` Eli Zaretskii
[not found] ` <<<<8111e8b0-a7fb-4de4-9371-fd69c74c46e5@default>
[not found] ` <<<<83lgeac7xs.fsf@gnu.org>
[not found] ` <<<ea1c9d9f-2405-4377-bd42-de7f020cf9d4@default>
[not found] ` <<<83k1tt8ttp.fsf@gnu.org>
[not found] ` <<ceb6e79f-5f03-45a5-a7a4-5fe954661d5d@default>
[not found] ` <<83in9d8s4b.fsf@gnu.org>
2018-03-30 17:12 ` Drew Adams
2018-03-31 9:07 ` Eli Zaretskii
[not found] ` <<<<<8111e8b0-a7fb-4de4-9371-fd69c74c46e5@default>
[not found] ` <<<<<83lgeac7xs.fsf@gnu.org>
[not found] ` <<<<ea1c9d9f-2405-4377-bd42-de7f020cf9d4@default>
[not found] ` <<<<83k1tt8ttp.fsf@gnu.org>
[not found] ` <<<ceb6e79f-5f03-45a5-a7a4-5fe954661d5d@default>
[not found] ` <<<83in9d8s4b.fsf@gnu.org>
[not found] ` <<9b80ae9e-06e3-4217-89b1-eb8a3b0c93b8@default>
[not found] ` <<838ta88vfz.fsf@gnu.org>
2018-03-31 16:10 ` Drew Adams
2018-03-31 16:50 ` Eli Zaretskii [this message]
2018-03-25 16:50 ` Eli Zaretskii
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.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83370g8a0p.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=30938@debbugs.gnu.org \
--cc=drew.adams@oracle.com \
--cc=juri@linkov.net \
/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 public inbox
https://git.savannah.gnu.org/cgit/emacs.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).