unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Lars Ingebrigtsen <larsi@gnus.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: dgutov@yandex.ru, stefankangas@gmail.com, emacs-devel@gnu.org
Subject: Re: scratch/command 064f146 1/2: Change command to interactive ... modes
Date: Tue, 16 Feb 2021 20:31:01 +0100	[thread overview]
Message-ID: <877dn7u7wq.fsf@gnus.org> (raw)
In-Reply-To: <83ft1v97bk.fsf@gnu.org> (Eli Zaretskii's message of "Tue, 16 Feb 2021 20:49:19 +0200")

Eli Zaretskii <eliz@gnu.org> writes:

> I already explained that.  You didn't agree with my arguments, so I
> see no reason to reiterate them.  But that doesn't mean I agree.
> Having incompatible byte code is BAD.

OK, I must have missed the arguments.  Beyond it being bad, in a general
way, for some reason or other.

>> I think that if mode tagging is something that is going to happen on a
>> large scale, the mechanism for doing this must be clear, easy and
>> maintainable.  Tagging 97% of our commands with
>> 
>> (defun foo ()
>>   (declare (completion foo-mode))
>>   (interactive "p"))
>> 
>> seems like a much worse solution in the "clear and easy" dept than
>> 
>> (defun foo ()
>>   (interactive "p" foo-mode))
>> 
>> Do you disagree with this?
>
> Yes, I disagree that the former is not clear, easy, and maintainable.
> We've been using similar constructs for years.

That's not quite a response to what I asked: Which one of those syntaxes
are clearer and easier?  (To read and to write.)

> There was also a suggest to use symbol properties.  that is also
> something we use widely in Emacs, including in the new
> completion-default-include-p function (and in many other places).
>
> They are all good, clean, maintainable practices which we are using
> and will continue to use.  I don't see why 'interactive' is better.
> In fact, I could make a case to the contrary: it is already a kind of
> magic, as can be clearly seen from its implementation.  Explaining how
> it works needs quite a few words.  So it isn't as clear as might
> appear at first sight.

I think it's clear that the new interactive spec leads to commands that
are easier to read and write than if (virtually all) commands need a
second (pretty obscure) incantation -- interactive/declare then works in
concert, and you have to understand both.

The question is then: Is this clarity worth it to introduce a
non-backwards compatible syntax in Emacs Lisp?  My answer is, of course,
"yes", but I can see that there might be disagreement on that point.  My
answer, to restate it yet again, is that Emacs Lisp has never shied away
from introducing new macros, functions and special forms if we think
that's the best long-term language solution.

Code meant for older Emacs versions then can't use the new syntax, but
that's not special for `interactive' -- it's the same with any new form.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



  reply	other threads:[~2021-02-16 19:31 UTC|newest]

Thread overview: 96+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20210213141225.11309.86562@vcs0.savannah.gnu.org>
     [not found] ` <20210213141226.EEDFE20999@vcs0.savannah.gnu.org>
2021-02-13 20:04   ` scratch/command 064f146 1/2: Change command to interactive ... modes Dmitry Gutov
2021-02-13 21:05     ` Lars Ingebrigtsen
2021-02-13 21:33       ` Dmitry Gutov
2021-02-14 15:29         ` Stefan Kangas
2021-02-14 16:03           ` Stefan Kangas
2021-02-14 16:05             ` Lars Ingebrigtsen
2021-02-14 16:17               ` Stefan Kangas
2021-02-14 16:20                 ` Lars Ingebrigtsen
2021-02-14 16:24                   ` Stefan Kangas
2021-02-14 17:25                     ` Lars Ingebrigtsen
2021-02-14 20:25                       ` Stefan Kangas
2021-02-15  3:38                         ` Eli Zaretskii
2021-02-16 12:15                           ` Lars Ingebrigtsen
2021-02-16 15:41                             ` Eli Zaretskii
2021-02-16 16:31                               ` Lars Ingebrigtsen
2021-02-16 17:03                                 ` Eli Zaretskii
2021-02-16 17:06                                   ` Lars Ingebrigtsen
2021-02-16 17:36                                     ` Eli Zaretskii
2021-02-16 17:39                                       ` Lars Ingebrigtsen
2021-02-16 17:46                                         ` Eli Zaretskii
2021-02-16 18:10                                           ` Lars Ingebrigtsen
2021-02-16 18:24                                             ` Eli Zaretskii
2021-02-16 18:36                                               ` Lars Ingebrigtsen
2021-02-16 18:49                                                 ` Eli Zaretskii
2021-02-16 19:31                                                   ` Lars Ingebrigtsen [this message]
2021-02-16 19:39                                                     ` Eli Zaretskii
2021-02-16 20:30                                                       ` Stefan Kangas
2021-02-16 20:49                                                         ` Eli Zaretskii
2021-02-16 22:00                                                           ` Lars Ingebrigtsen
2021-02-16 22:22                                                             ` Dmitry Gutov
2021-02-16 22:37                                                               ` Lars Ingebrigtsen
2021-02-17  0:48                                                                 ` Dmitry Gutov
2021-02-17 11:02                                                                   ` Lars Ingebrigtsen
2021-02-17 11:30                                                                     ` Dmitry Gutov
2021-02-17  9:10                                                                 ` Juri Linkov
2021-02-17 10:16                                                                   ` Stefan Kangas
2021-02-17 11:08                                                                     ` Lars Ingebrigtsen
2021-02-17 17:45                                                                     ` Juri Linkov
2021-02-17 18:42                                                                       ` Óscar Fuentes
2021-02-17  8:50                                                               ` Stefan Kangas
2021-02-17 13:57                                                                 ` Stefan Monnier
2021-02-17 15:52                                                                 ` Eli Zaretskii
2021-02-17 16:19                                                                 ` Dmitry Gutov
2021-02-16 22:31                                                             ` [External] : " Drew Adams
2021-02-17 16:53                                                               ` Matt Armstrong
2021-02-16 22:47                                                             ` Alan Mackenzie
2021-02-16 22:55                                                               ` Lars Ingebrigtsen
2021-02-16 23:20                                                                 ` Alan Mackenzie
2021-02-16 23:23                                                                   ` Lars Ingebrigtsen
2021-02-17 15:28                                                                   ` Eli Zaretskii
2021-02-19  5:36                                                                     ` Richard Stallman
2021-02-17 15:25                                                               ` Eli Zaretskii
2021-02-17 15:21                                                             ` Eli Zaretskii
2021-02-17 19:01                                                               ` Óscar Fuentes
2021-02-17 19:42                                                                 ` Dmitry Gutov
2021-02-17 19:49                                                                   ` Lars Ingebrigtsen
2021-02-17 19:30                                                               ` Lars Ingebrigtsen
2021-02-17 20:12                                                                 ` Eli Zaretskii
2021-02-18 23:57                                                                   ` Rolf Ade
2021-02-16 21:44                                                         ` Dmitry Gutov
2021-02-17  8:58                                                         ` Juri Linkov
2021-02-17 10:16                                                           ` Stefan Kangas
2021-02-17 11:05                                                             ` Lars Ingebrigtsen
2021-02-17 17:45                                                             ` Juri Linkov
2021-02-17 19:26                                                               ` Eli Zaretskii
2021-02-16 12:07                         ` Lars Ingebrigtsen
2021-02-17 20:05                         ` Lars Ingebrigtsen
2021-02-17 21:03                           ` Stefan Monnier
2021-02-17 21:06                             ` Lars Ingebrigtsen
2021-02-17 22:26                               ` Stefan Monnier
2021-02-18  3:57                           ` Stefan Kangas
2021-02-18  4:43                             ` Stefan Monnier
2021-02-18  5:20                               ` Stefan Kangas
2021-02-18 10:33                             ` Lars Ingebrigtsen
2021-02-18 10:38                               ` Lars Ingebrigtsen
2021-02-18 10:40                                 ` Lars Ingebrigtsen
2021-02-18 14:01                                 ` Stefan Monnier
2021-02-18 16:03                                   ` Stefan Monnier
2021-02-18 16:47                                     ` Basil L. Contovounesios
2021-02-19 12:07                                     ` Lars Ingebrigtsen
2021-02-19 14:29                                       ` Stefan Monnier
2021-02-20 12:35                                         ` Lars Ingebrigtsen
2021-02-20 14:38                                           ` Stefan Monnier
2021-02-20 15:01                                             ` Lars Ingebrigtsen
2021-02-14 20:37                   ` Jose A. Ortega Ruiz
2021-02-14 23:23                     ` Stefan Monnier
2021-02-14 16:49             ` Basil L. Contovounesios
2021-02-14 17:23               ` Stefan Kangas
2021-02-14 17:52                 ` Basil L. Contovounesios
2021-02-14 19:54                   ` Stefan Kangas
2021-02-14 16:58             ` Alan Mackenzie
2021-02-14 17:23               ` Stefan Kangas
2021-02-14 16:02       ` Óscar Fuentes
2021-02-14 16:07         ` Lars Ingebrigtsen
2021-02-14 16:23           ` Óscar Fuentes
2021-02-14 17:05             ` Lars Ingebrigtsen

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=877dn7u7wq.fsf@gnus.org \
    --to=larsi@gnus.org \
    --cc=dgutov@yandex.ru \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=stefankangas@gmail.com \
    /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).