* 4K Bugs
@ 2015-12-25 6:21 Lars Ingebrigtsen
2015-12-25 7:46 ` Eli Zaretskii
` (2 more replies)
0 siblings, 3 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 6:21 UTC (permalink / raw)
To: emacs-devel
There are 4051 open bugs in the Emacs bug tracker. Did we forget to
celebrate, or are we waiting until it reaches a rounder number, like
4096?
I shouldn't really be the one to kvetch about this since I disappear
for months on end, but is there something that we could do to make more
people do bug triage?
Move debbugs-gnu from ELPA to Emacs? :-)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 6:21 4K Bugs Lars Ingebrigtsen
@ 2015-12-25 7:46 ` Eli Zaretskii
2015-12-25 17:00 ` John Wiegley
2016-01-07 20:10 ` Phillip Lord
2 siblings, 0 replies; 141+ messages in thread
From: Eli Zaretskii @ 2015-12-25 7:46 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Fri, 25 Dec 2015 07:21:00 +0100
>
> There are 4051 open bugs in the Emacs bug tracker. Did we forget to
> celebrate, or are we waiting until it reaches a rounder number, like
> 4096?
We wait till #x1000, of course.
> Move debbugs-gnu from ELPA to Emacs? :-)
How about listing the open bugs each time anyone starts "emacs -Q"?
A useful first step might be arranging for some job to send a message
to emacs-devel summarizing the bug situation. XEmacs has something
like that, see the xemacs-beta list for an example.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 6:21 4K Bugs Lars Ingebrigtsen
2015-12-25 7:46 ` Eli Zaretskii
@ 2015-12-25 17:00 ` John Wiegley
2015-12-25 17:30 ` Lars Ingebrigtsen
2015-12-26 8:07 ` Andreas Röhler
2016-01-07 20:10 ` Phillip Lord
2 siblings, 2 replies; 141+ messages in thread
From: John Wiegley @ 2015-12-25 17:00 UTC (permalink / raw)
To: emacs-devel
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
> I shouldn't really be the one to kvetch about this since I disappear for
> months on end, but is there something that we could do to make more people
> do bug triage?
Yesterday I put out a call on Twitter for people to come help us triage the
bugs, to determine which ones still need our attention. There's always a need
for this, and doesn't require as much ability as fixing them. Now we'll see if
any join the fray as the result.
> Move debbugs-gnu from ELPA to Emacs? :-)
Not sure that would help...
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:00 ` John Wiegley
@ 2015-12-25 17:30 ` Lars Ingebrigtsen
2015-12-25 17:51 ` John Wiegley
2015-12-26 8:07 ` Andreas Röhler
1 sibling, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 17:30 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>> Move debbugs-gnu from ELPA to Emacs? :-)
>
> Not sure that would help...
I get the feeling there's a certain resistance to using things in ELPA,
still...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:30 ` Lars Ingebrigtsen
@ 2015-12-25 17:51 ` John Wiegley
2015-12-25 17:53 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: John Wiegley @ 2015-12-25 17:51 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>> Not sure that would help...
> I get the feeling there's a certain resistance to using things in ELPA,
> still...
And *that* is what I want to fix. :)
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:51 ` John Wiegley
@ 2015-12-25 17:53 ` Lars Ingebrigtsen
2015-12-25 17:59 ` John Wiegley
0 siblings, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 17:53 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>>> Not sure that would help...
>
>> I get the feeling there's a certain resistance to using things in ELPA,
>> still...
>
> And *that* is what I want to fix. :)
Fix bugs or fix users? Is that the choice? :-)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:53 ` Lars Ingebrigtsen
@ 2015-12-25 17:59 ` John Wiegley
2015-12-25 18:27 ` jpff
` (2 more replies)
0 siblings, 3 replies; 141+ messages in thread
From: John Wiegley @ 2015-12-25 17:59 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>> And *that* is what I want to fix. :)
> Fix bugs or fix users? Is that the choice? :-)
If moving debbugs to Emacs today will increase our bug fix rate, then let's do
that. But longer term, I'd like ELPA to be a nicer experience so that no such
invisible barrier exists.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:59 ` John Wiegley
@ 2015-12-25 18:27 ` jpff
2015-12-25 18:35 ` Lars Ingebrigtsen
2015-12-25 18:33 ` Dmitry Gutov
2015-12-26 13:16 ` Michael Albinus
2 siblings, 1 reply; 141+ messages in thread
From: jpff @ 2015-12-25 18:27 UTC (permalink / raw)
To: John Wiegley; +Cc: Lars Ingebrigtsen, emacs-devel
Sorry for my ignorancem but what is ELPA?
I have been an emacs user since the early 1980s but have only recently
discovered this mailing list so am not uo to te way you do things.
I remain rather old-fashioned -- dynamic LISP, command-line etc
==John ff
On Fri, 25 Dec 2015, John Wiegley wrote:
>>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>>> And *that* is what I want to fix. :)
>
>> Fix bugs or fix users? Is that the choice? :-)
>
> If moving debbugs to Emacs today will increase our bug fix rate, then let's do
> that. But longer term, I'd like ELPA to be a nicer experience so that no such
> invisible barrier exists.
>
> --
> John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
> http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
>
>
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:59 ` John Wiegley
2015-12-25 18:27 ` jpff
@ 2015-12-25 18:33 ` Dmitry Gutov
2015-12-25 18:40 ` Lars Ingebrigtsen
2015-12-26 13:16 ` Michael Albinus
2 siblings, 1 reply; 141+ messages in thread
From: Dmitry Gutov @ 2015-12-25 18:33 UTC (permalink / raw)
To: Lars Ingebrigtsen, emacs-devel
On 12/25/2015 07:59 PM, John Wiegley wrote:
> If moving debbugs to Emacs today will increase our bug fix rate, then let's do
> that.
How would it increase that?
I've used the debbugs package many times, and still I have no idea how
to list, say, all bugs that block 25.1.
debbugs makes some operations a tiny bit more convenient, but the users
can still use the web interface search.
> But longer term, I'd like ELPA to be a nicer experience so that no such
> invisible barrier exists.
Shouldn't the bug tracker be a nicer experience? I think ELPA is leaps
and bounds ahead for its purposes already.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 18:27 ` jpff
@ 2015-12-25 18:35 ` Lars Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 18:35 UTC (permalink / raw)
To: jpff; +Cc: emacs-devel
jpff <jpff@codemist.co.uk> writes:
> Sorry for my ignorancem but what is ELPA?
ELPA is a package repository. It's basically what you interact with
when you use commands like `M-x package-list-packages'.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 18:33 ` Dmitry Gutov
@ 2015-12-25 18:40 ` Lars Ingebrigtsen
2015-12-25 18:54 ` Lars Ingebrigtsen
` (2 more replies)
0 siblings, 3 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 18:40 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: emacs-devel
Dmitry Gutov <dgutov@yandex.ru> writes:
> I've used the debbugs package many times, and still I have no idea how
> to list, say, all bugs that block 25.1.
Nobody has requested that feature, but I guess it should be trivial to
implement.
> debbugs makes some operations a tiny bit more convenient, but the
> users can still use the web interface search.
Uhm... tiny bit...
It lists all the bugs and allows you to zoom in on what you're
interested in. I've just gone through all the eww-related bugs (`/
eww'), the shr-related bugs (`/ shr') and I'm now doing the URL ones (`/
URL').
I don't know how anybody does any bug triage without it. Which is
probably why nobody looks at older bugs at all, but instead just reads
the bug-report mailing list. (I mean, it's great that people read the
bug report mailing lists and responds to things there. No tea no
shade!)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 18:40 ` Lars Ingebrigtsen
@ 2015-12-25 18:54 ` Lars Ingebrigtsen
2015-12-25 19:46 ` Dmitry Gutov
2015-12-25 19:36 ` John Wiegley
2015-12-25 19:56 ` Dmitry Gutov
2 siblings, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 18:54 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: emacs-devel
Lars Ingebrigtsen <larsi@gnus.org> writes:
> Dmitry Gutov <dgutov@yandex.ru> writes:
>
>> I've used the debbugs package many times, and still I have no idea how
>> to list, say, all bugs that block 25.1.
>
> Nobody has requested that feature, but I guess it should be trivial to
> implement.
Do you have an example bug report that blocks the release? It's easier
to test when you have something to test with.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 18:40 ` Lars Ingebrigtsen
2015-12-25 18:54 ` Lars Ingebrigtsen
@ 2015-12-25 19:36 ` John Wiegley
2015-12-25 19:56 ` Dmitry Gutov
2 siblings, 0 replies; 141+ messages in thread
From: John Wiegley @ 2015-12-25 19:36 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel, Dmitry Gutov
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>> I've used the debbugs package many times, and still I have no idea how to
>> list, say, all bugs that block 25.1.
> Nobody has requested that feature, but I guess it should be trivial to
> implement.
Consider it requested. :)
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 18:54 ` Lars Ingebrigtsen
@ 2015-12-25 19:46 ` Dmitry Gutov
2015-12-25 20:06 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Dmitry Gutov @ 2015-12-25 19:46 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel
On 12/25/2015 08:54 PM, Lars Ingebrigtsen wrote:
> Do you have an example bug report that blocks the release? It's easier
> to test when you have something to test with.
The release bug is http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19759,
you can see the list of blockers there.
I guess my point is that there's no centralized list of "blocks release
x.x" labels, so you'll at least have to update the debbugs package once
per release. Maybe that's not so terrible, though.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 18:40 ` Lars Ingebrigtsen
2015-12-25 18:54 ` Lars Ingebrigtsen
2015-12-25 19:36 ` John Wiegley
@ 2015-12-25 19:56 ` Dmitry Gutov
2015-12-25 20:05 ` Eli Zaretskii
2015-12-25 20:26 ` Lars Ingebrigtsen
2 siblings, 2 replies; 141+ messages in thread
From: Dmitry Gutov @ 2015-12-25 19:56 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel
On 12/25/2015 08:40 PM, Lars Ingebrigtsen wrote:
> Nobody has requested that feature, but I guess it should be trivial to
> implement.
Thanks!
>> debbugs makes some operations a tiny bit more convenient, but the
>> users can still use the web interface search.
>
> Uhm... tiny bit...
It's also less discoverable for less experienced users; the web page at
least says "email your comments to ...". When using the debbugs package,
the user must be familiar with Gnus key bindings to send a reply (as
well as make sure to use the "wide-reply" variety).
I mean, it handy when you know all that, but simply moving it to the
core won't make the bug tracker suddenly more accessible to the majority
of the users.
> It lists all the bugs and allows you to zoom in on what you're
> interested in. I've just gone through all the eww-related bugs (`/
> eww'), the shr-related bugs (`/ shr') and I'm now doing the URL ones (`/
> URL').
That's nice, but does it offer a lot of advantage over using the search
in the web interface, or M-x debbugs-gnu-search?
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 19:56 ` Dmitry Gutov
@ 2015-12-25 20:05 ` Eli Zaretskii
2015-12-25 20:26 ` Lars Ingebrigtsen
1 sibling, 0 replies; 141+ messages in thread
From: Eli Zaretskii @ 2015-12-25 20:05 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: larsi, emacs-devel
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Fri, 25 Dec 2015 21:56:43 +0200
> Cc: emacs-devel@gnu.org
>
> It's also less discoverable for less experienced users; the web page at
> least says "email your comments to ...". When using the debbugs package,
> the user must be familiar with Gnus key bindings to send a reply (as
> well as make sure to use the "wide-reply" variety).
Aren't these described in debbugs-ug.texi? If not, they should be.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 19:46 ` Dmitry Gutov
@ 2015-12-25 20:06 ` Lars Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 20:06 UTC (permalink / raw)
To: Dmitry Gutov; +Cc: emacs-devel
Dmitry Gutov <dgutov@yandex.ru> writes:
> The release bug is http://debbugs.gnu.org/cgi/bugreport.cgi?bug=19759,
> you can see the list of blockers there.
>
> I guess my point is that there's no centralized list of "blocks
> release x.x" labels, so you'll at least have to update the debbugs
> package once per release. Maybe that's not so terrible, though.
I see. You have to know what specific bug report is the one everybody
blocks on.
((found_versions) (keywords) (pending . "pending") (fixed) (summary) (location . "db-h") (blocks) (subject . "Release 25.1") (severity . "normal") (package "emacs") (tags) (unarchived) (fixed_versions) (id . 19759) (found_date) (found) (owner) (affects) (forwarded) (done) (fixed_date) (last_modified . 1450465203) (archived) (date . 1422998281) (mergedwith) (source . "unknown") (log_modified . 1450465203) (blockedby 22207 21708 21519 21874 20813 20478 20352 19407 22065 21701 21849 21243 21839 21650 20401 21054 21518 21291 20377 19826 21295 17693 21351 20326 20555 20420 21223 21724 21881 21257 22085 20441 19959 20356 20400 20332 21104 21998 21058 20475 17976 20444 21685 20355 18954 19548 20505 20247 21750 22203 18718 19479 20951 16737 21168 22147 21968 20066 21629 20445 21227 20124 21157 21797 19968 20975 20484 20201 21337 21766 20637 21862 20455 20629 20431 20382 20668 21946 20386 ...) (msgid . "<sz8ugeitj7.fsf@fencepost.gnu.org>") (bug_num . 19759) (originator . "Glenn Morris <rgm@gnu.org>"))
As you say debbugs-gnu will have to be updated each release, but that
should be OK...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 19:56 ` Dmitry Gutov
2015-12-25 20:05 ` Eli Zaretskii
@ 2015-12-25 20:26 ` Lars Ingebrigtsen
1 sibling, 0 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-25 20:26 UTC (permalink / raw)
To: emacs-devel
I've now added a command (`R') to list all the blocking reports. Have
at them. :-)
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:00 ` John Wiegley
2015-12-25 17:30 ` Lars Ingebrigtsen
@ 2015-12-26 8:07 ` Andreas Röhler
2015-12-26 10:29 ` Eli Zaretskii
2015-12-26 14:55 ` Lars Ingebrigtsen
1 sibling, 2 replies; 141+ messages in thread
From: Andreas Röhler @ 2015-12-26 8:07 UTC (permalink / raw)
To: emacs-devel; +Cc: John Wiegley
On 25.12.2015 18:00, John Wiegley wrote:
>>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>> I shouldn't really be the one to kvetch about this since I disappear for
>> months on end, but is there something that we could do to make more people
>> do bug triage?
> Yesterday I put out a call on Twitter for people to come help us triage the
> bugs, to determine which ones still need our attention. There's always a need
> for this, and doesn't require as much ability as fixing them. Now we'll see if
> any join the fray as the result.
>
>> Move debbugs-gnu from ELPA to Emacs? :-)
> Not sure that would help...
>
IMHO trying to fix these old bugs is not the best way to spend time.
Many things might have changed since - dealing with this changes resp.
their effects makes any reasoning complex.
What about getting bugs deleted when not dealt with after some time -
while informing the author?
So the author may renew it.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 8:07 ` Andreas Röhler
@ 2015-12-26 10:29 ` Eli Zaretskii
2015-12-26 15:14 ` Andreas Röhler
2015-12-26 14:55 ` Lars Ingebrigtsen
1 sibling, 1 reply; 141+ messages in thread
From: Eli Zaretskii @ 2015-12-26 10:29 UTC (permalink / raw)
To: Andreas Röhler; +Cc: jwiegley, emacs-devel
> From: Andreas Röhler <andreas.roehler@online.de>
> Date: Sat, 26 Dec 2015 09:07:22 +0100
> Cc: John Wiegley <jwiegley@gmail.com>
>
> IMHO trying to fix these old bugs is not the best way to spend time.
> Many things might have changed since - dealing with this changes resp.
> their effects makes any reasoning complex.
But we should try doing that anyway.
> What about getting bugs deleted when not dealt with after some time -
> while informing the author?
That's be losing information for no good reason. Every bug report
provides information about the bug, sometimes the information is very
valuable, sometimes less so. We shouldn't lose that information so
easily. It hurts no one to have an old bug in the database.
> So the author may renew it.
The author may no longer be available, or care.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 17:59 ` John Wiegley
2015-12-25 18:27 ` jpff
2015-12-25 18:33 ` Dmitry Gutov
@ 2015-12-26 13:16 ` Michael Albinus
2 siblings, 0 replies; 141+ messages in thread
From: Michael Albinus @ 2015-12-26 13:16 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>>> And *that* is what I want to fix. :)
>
>> Fix bugs or fix users? Is that the choice? :-)
>
> If moving debbugs to Emacs today will increase our bug fix rate, then let's do
> that. But longer term, I'd like ELPA to be a nicer experience so that no such
> invisible barrier exists.
As a first step, we might give it a more prominent place in
admin/notes/bugtracker and doc/emacs/trouble.texi. Will do.
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 8:07 ` Andreas Röhler
2015-12-26 10:29 ` Eli Zaretskii
@ 2015-12-26 14:55 ` Lars Ingebrigtsen
2015-12-27 2:52 ` Richard Stallman
1 sibling, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 14:55 UTC (permalink / raw)
To: Andreas Röhler; +Cc: John Wiegley, emacs-devel
Andreas Röhler <andreas.roehler@online.de> writes:
> What about getting bugs deleted when not dealt with after some time -
> while informing the author?
That is what many projects do -- when they make a new release, they
close all bug reports pertaining to older releases. I see the
attraction, especially when there's a shortage of people to handle bug
reports, but it seems rather wasteful.
Bug reports have value. Some more than others, of course. :-) If they
present a reproducible bug, then it seems odd to close the report. If,
on the other hand, they are not reproducible, or they require more data
from the user for us to proceed with debugging (and that data doesn't
arrive within a certain period (for the Emacs bug tracker, that period
is "some years", apparently), then they should be closed, because we
can't proceed in any meaningful sense.
That's why I'm going through the bug reports marked "moreinfo" and
closing the ones that seem hopeless, and prodding the ones that seem
perhaps to be possible to proceed with.
But having a morass of bug reports, like we do now, is (I think)
discouraging to everybody. No matter what you do, it doesn't seem to
matter, because there's just so many reports.
So unless more people step up, roll up their sleeves and do some bug
triage from time to time, I wouldn't be upset if we just closed all bugs
reports that were older than last release.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 10:29 ` Eli Zaretskii
@ 2015-12-26 15:14 ` Andreas Röhler
2015-12-26 16:34 ` Eli Zaretskii
0 siblings, 1 reply; 141+ messages in thread
From: Andreas Röhler @ 2015-12-26 15:14 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: jwiegley, emacs-devel
On 26.12.2015 11:29, Eli Zaretskii wrote:
>> From: Andreas Röhler <andreas.roehler@online.de>
>> Date: Sat, 26 Dec 2015 09:07:22 +0100
>> Cc: John Wiegley <jwiegley@gmail.com>
>>
>> IMHO trying to fix these old bugs is not the best way to spend time.
>> Many things might have changed since - dealing with this changes resp.
>> their effects makes any reasoning complex.
> But we should try doing that anyway.
>
>> What about getting bugs deleted when not dealt with after some time -
>> while informing the author?
> That's be losing information for no good reason. Every bug report
> provides information about the bug, sometimes the information is very
> valuable, sometimes less so. We shouldn't lose that information so
> easily. It hurts no one to have an old bug in the database.
Keeping old bugs provides some burden - otherwise the question wouldn't
show up.
When digging into old bugs don't see a no rule for all, but some
indications: The age of the bug, the changes in the specific
environment, the skill of the investor.
It would minimize losses if the owner of the bug may keep it alive.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 15:14 ` Andreas Röhler
@ 2015-12-26 16:34 ` Eli Zaretskii
2015-12-26 16:41 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Eli Zaretskii @ 2015-12-26 16:34 UTC (permalink / raw)
To: Andreas Röhler; +Cc: jwiegley, emacs-devel
> Cc: emacs-devel@gnu.org, jwiegley@gmail.com
> From: Andreas Röhler <andreas.roehler@online.de>
> Date: Sat, 26 Dec 2015 16:14:21 +0100
>
> >> What about getting bugs deleted when not dealt with after some time -
> >> while informing the author?
> > That's be losing information for no good reason. Every bug report
> > provides information about the bug, sometimes the information is very
> > valuable, sometimes less so. We shouldn't lose that information so
> > easily. It hurts no one to have an old bug in the database.
>
> Keeping old bugs provides some burden - otherwise the question wouldn't
> show up.
>
> When digging into old bugs don't see a no rule for all, but some
> indications: The age of the bug, the changes in the specific
> environment, the skill of the investor.
>
> It would minimize losses if the owner of the bug may keep it alive.
I think the balance still tips towards retaining the information. We
can always treat old bugs as "logically deleted", if it bothers
someone.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:34 ` Eli Zaretskii
@ 2015-12-26 16:41 ` Lars Ingebrigtsen
2015-12-26 16:52 ` Eli Zaretskii
2015-12-26 16:59 ` Paul Eggert
0 siblings, 2 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 16:41 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: jwiegley, Andreas Röhler, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> I think the balance still tips towards retaining the information. We
> can always treat old bugs as "logically deleted", if it bothers
> someone.
Well, the bug reports are still there, even if they're closed. :-) It's
just part of the ranking, in a way, and says something about how hard we
think (as maintainers) that we (as maintainers) should be looking at the
bug reports.
From "critical" ("LOOK AT THIS!!!") via "wishlist" ("if you have the
time...") to "closed" ("I think it's rather likely that this isn't
interesting").
By putting bug reports in the last category more aggressively, one hopes
to stimulate people to focus on the rest of the reports...
I don't know how well this works for projects that auto-close bug
reports. Anybody have experience with that?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:41 ` Lars Ingebrigtsen
@ 2015-12-26 16:52 ` Eli Zaretskii
2015-12-26 16:59 ` Lars Ingebrigtsen
` (2 more replies)
2015-12-26 16:59 ` Paul Eggert
1 sibling, 3 replies; 141+ messages in thread
From: Eli Zaretskii @ 2015-12-26 16:52 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: jwiegley, andreas.roehler, emacs-devel
> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Sat, 26 Dec 2015 17:41:35 +0100
> Cc: jwiegley@gmail.com,
> Andreas Röhler <andreas.roehler@online.de>,
> emacs-devel@gnu.org
>
> Eli Zaretskii <eliz@gnu.org> writes:
>
> > I think the balance still tips towards retaining the information. We
> > can always treat old bugs as "logically deleted", if it bothers
> > someone.
>
> Well, the bug reports are still there, even if they're closed. :-) It's
> just part of the ranking, in a way, and says something about how hard we
> think (as maintainers) that we (as maintainers) should be looking at the
> bug reports.
"moreinfo" is a euphemism for "not reproducible", so it's not
different. I imagine people who are annoyed by these bugs can filter
those "moreinfo" out, right?
> >From "critical" ("LOOK AT THIS!!!") via "wishlist" ("if you have the
> time...") to "closed" ("I think it's rather likely that this isn't
> interesting").
>
> By putting bug reports in the last category more aggressively, one hopes
> to stimulate people to focus on the rest of the reports...
>
> I don't know how well this works for projects that auto-close bug
> reports. Anybody have experience with that?
Closing bug reports tends to annoy their reporters. More importantly,
they disappear from all kinds of listings, and you need to work hard
just to see them, even if you want to. Debbugs also has a nasty habit
of refusing to merge bugs that have different status (thus requiring
you to send 2 separate commands, after the original one bounces).
So on balance I'd rather leave them open and in "moreinfo" category.
Thanks.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:41 ` Lars Ingebrigtsen
2015-12-26 16:52 ` Eli Zaretskii
@ 2015-12-26 16:59 ` Paul Eggert
2015-12-26 17:48 ` Lars Ingebrigtsen
1 sibling, 1 reply; 141+ messages in thread
From: Paul Eggert @ 2015-12-26 16:59 UTC (permalink / raw)
To: Lars Ingebrigtsen, Eli Zaretskii
Cc: jwiegley, Andreas Röhler, emacs-devel
Lars Ingebrigtsen wrote:
> I don't know how well this works for projects that auto-close bug
> reports. Anybody have experience with that?
I've done it both ways, and both ways work. As long as there's a sense of which
bugs are more important and which less, and we never lose tracks of bugs even
when fixed, the two ways are roughly equivalent. Of course one needs to have
enough resources devoted to bug-fixing (and we should present the list of
unfixed bugs in a non-demoralizing way :-).
One option is to tag all open bugs as "moreinfo" after a new release, while
sending email to the bug reporters to check whether "moreinfo" the bugs are
still applicable in the new release. We can then remove the "moreinfo" tag for
bugs that are later reported to still be relevant. This would require some
discipline on our part, of course.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:52 ` Eli Zaretskii
@ 2015-12-26 16:59 ` Lars Ingebrigtsen
2015-12-26 17:55 ` Ivan Shmakov
2015-12-27 22:41 ` Per Starbäck
2015-12-28 20:18 ` John Wiegley
2 siblings, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 16:59 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: jwiegley, andreas.roehler, emacs-devel
Eli Zaretskii <eliz@gnu.org> writes:
> "moreinfo" is a euphemism for "not reproducible", so it's not
> different. I imagine people who are annoyed by these bugs can filter
> those "moreinfo" out, right?
Sure, if you want to think about them that way.
> Closing bug reports tends to annoy their reporters.
It does, but only because they think "closed" means that the report is
disappeared, and "moreinfo" means that we're still thinking about it.
Both of which are wrong. :-)
> More importantly, they disappear from all kinds of listings, and you
> need to work hard just to see them, even if you want to.
`debbugs-gnu-search' lists closed bugs by default...
> Debbugs also has a nasty habit of refusing to merge bugs that have
> different status (thus requiring you to send 2 separate commands,
> after the original one bounces).
Well, that's a UI problem. The debbugs-gnu command functions could
handle all that if that's a problem...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:59 ` Paul Eggert
@ 2015-12-26 17:48 ` Lars Ingebrigtsen
2015-12-28 20:15 ` John Wiegley
0 siblings, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 17:48 UTC (permalink / raw)
To: Paul Eggert; +Cc: jwiegley, Eli Zaretskii, Andreas Röhler, emacs-devel
Paul Eggert <eggert@cs.ucla.edu> writes:
> One option is to tag all open bugs as "moreinfo" after a new release,
> while sending email to the bug reporters to check whether "moreinfo"
> the bugs are still applicable in the new release. We can then remove
> the "moreinfo" tag for bugs that are later reported to still be
> relevant. This would require some discipline on our part, of course.
Yup... I'm almost done with the "moreinfo" triage, and there's a
significant number of bugs that have been marked as "moreinfo", and then
more info is given, but the flag hasn't been removed. (Which I've now
done in those cases.)
Handling bugs is, like, work. :-) Perhaps the FSF could hire a
full-time bug herder?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:59 ` Lars Ingebrigtsen
@ 2015-12-26 17:55 ` Ivan Shmakov
2015-12-26 17:58 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Ivan Shmakov @ 2015-12-26 17:55 UTC (permalink / raw)
To: emacs-devel
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>>>>> Eli Zaretskii <eliz@gnu.org> writes:
[…]
>> Closing bug reports tends to annoy their reporters.
Not only the reporters; if I’m supportive of a change requested,
closing the respective report will hardly make me any happier –
irrespective of who made the request.
> It does, but only because they think "closed" means that the report
> is disappeared, and "moreinfo" means that we're still thinking about
> it. Both of which are wrong. :-)
Semantically, “closed” means that there’s no bug (any more) –
that is, the recipe given by the reporter does not reproduce the
issue, or the reporter is found to be mistaken on the feature’s
intended (and documented) behavior. In the latter case, it may
still make sense to review, and possibly amend, the
documentation, so to reduce the chance of the intended behavior
being confused for a “bug” in the future. (Hence, a “mistaken”
bug report may point at an actual bug in the documentation.)
When the bug explicitly requests for the change of the behavior,
being “closed” means that either the change was implemented,
or a similar feature was provided, or that the assumptions the
request’s based upon are no longer relevant (say, when the
feature request explicitly concerns some facility that was
removed from Emacs altogether.)
Then, “moreinfo” means that the report lacks information
essential to reproducing the issue (that is: its recipe is
incomplete or missing); while “wontfix” means that the
maintainer does not consider rectifying the issue (say,
implementing the feature request) to be worth the effort.
Technically, closed bugs are archived, which mean that they
disappear from the “default” http://debbugs.gnu.org/ lists, and
also become “immutable” – unless explicitly unarchived later.
[…]
--
FSF associate member #7257 http://am-1.org/~ivan/ … 3013 B6A0 230E 334A
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 17:55 ` Ivan Shmakov
@ 2015-12-26 17:58 ` Lars Ingebrigtsen
2015-12-26 18:12 ` Ivan Shmakov
0 siblings, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 17:58 UTC (permalink / raw)
To: Ivan Shmakov; +Cc: emacs-devel
Ivan Shmakov <ivan@siamics.net> writes:
> Semantically, “closed” means that there’s no bug (any more) –
> that is, the recipe given by the reporter does not reproduce the
> issue, or the reporter is found to be mistaken on the feature’s
> intended (and documented) behavior.
I disagree that this is the semantics of "closed".
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 17:58 ` Lars Ingebrigtsen
@ 2015-12-26 18:12 ` Ivan Shmakov
2015-12-26 18:21 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Ivan Shmakov @ 2015-12-26 18:12 UTC (permalink / raw)
To: emacs-devel
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>>>>> Ivan Shmakov <ivan@siamics.net> writes:
>> Semantically, “closed” means that there’s no bug (any more) – that
>> is, the recipe given by the reporter does not reproduce the issue,
>> or the reporter is found to be mistaken on the feature’s intended
>> (and documented) behavior.
> I disagree that this is the semantics of "closed".
That doesn’t sound constructive; what semantics do you suggest?
Of course, there’s always an option of starting a “community
fork” of the Emacs bug tracking system, so that the users can
track the bugs the developers found to be unworthy of being
open.
--
FSF associate member #7257 http://am-1.org/~ivan/ … 3013 B6A0 230E 334A
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 18:12 ` Ivan Shmakov
@ 2015-12-26 18:21 ` Lars Ingebrigtsen
2015-12-26 18:42 ` Ivan Shmakov
0 siblings, 1 reply; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 18:21 UTC (permalink / raw)
To: Ivan Shmakov; +Cc: emacs-devel
Ivan Shmakov <ivan@siamics.net> writes:
> That doesn’t sound constructive; what semantics do you suggest?
I think I described the semantics in the earlier message? The one with
critical/wishlish/closed?
> Of course, there’s always an option of starting a “community
> fork” of the Emacs bug tracking system, so that the users can
> track the bugs the developers found to be unworthy of being
> open.
I don't know what this means. All the bug reports, no matter what their
statuses, are in the bug tracker. If you wish to follow only the bugs
that are marked all og wishlist/wontfix/unreproducible/closed, that's
just a couple of lines in debbugs-gnu. Be my guest.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 18:21 ` Lars Ingebrigtsen
@ 2015-12-26 18:42 ` Ivan Shmakov
2015-12-26 18:48 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Ivan Shmakov @ 2015-12-26 18:42 UTC (permalink / raw)
To: emacs-devel
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
>>>>> Ivan Shmakov <ivan@siamics.net> writes:
>>>> Semantically, “closed” means that there’s no bug (any more) – that
>>>> is, the recipe given by the reporter does not reproduce the issue,
>>>> or the reporter is found to be mistaken on the feature’s intended
>>>> (and documented) behavior.
>>> I disagree that this is the semantics of "closed".
>> That doesn’t sound constructive; what semantics do you suggest?
> I think I described the semantics in the earlier message? The one
> with critical/wishlish/closed?
LI> From "critical" ("LOOK AT THIS!!!") via "wishlist" ("if you have
LI> the time...") to "closed" ("I think it's rather likely that this
LI> isn't interesting").
I believe that severity was made orthogonal to the (open,
closed, archived) status (and to the tags) on purpose.
>> Of course, there’s always an option of starting a “community fork”
>> of the Emacs bug tracking system, so that the users can track the
>> bugs the developers found to be unworthy of being open.
> I don't know what this means. All the bug reports, no matter what
> their statuses, are in the bug tracker. If you wish to follow only
> the bugs that are marked all og
> wishlist/wontfix/unreproducible/closed, that's just a couple of lines
> in debbugs-gnu. Be my guest.
I wish to follow the bugs that are /extant/, per the semantics
I’ve given earlier. Such bugs may happen to be of any severity
and may bear any tags; and per the semantics you suggest, they
may also be open, closed, or archived. That is: there’s no way
to /omit/ the feature requests that were actually implemented
(or became otherwise irrelevant) – and /show/ all the rest.
The data to discern the two are simply not there.
--
FSF associate member #7257 http://am-1.org/~ivan/ … 3013 B6A0 230E 334A
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 18:42 ` Ivan Shmakov
@ 2015-12-26 18:48 ` Lars Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-26 18:48 UTC (permalink / raw)
To: Ivan Shmakov; +Cc: emacs-devel
Ivan Shmakov <ivan@siamics.net> writes:
> I wish to follow the bugs that are /extant/, per the semantics
> I’ve given earlier.
Given a spherical cow...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 14:55 ` Lars Ingebrigtsen
@ 2015-12-27 2:52 ` Richard Stallman
2015-12-27 6:07 ` Lars Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Richard Stallman @ 2015-12-27 2:52 UTC (permalink / raw)
To: Lars Ingebrigtsen; +Cc: jwiegley, andreas.roehler, emacs-devel
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
> Bug reports have value. Some more than others, of course. :-) If they
> present a reproducible bug, then it seems odd to close the report. If,
> on the other hand, they are not reproducible, or they require more data
> from the user for us to proceed with debugging (and that data doesn't
> arrive within a certain period (for the Emacs bug tracker, that period
> is "some years", apparently), then they should be closed, because we
> can't proceed in any meaningful sense.
I agree -- but is there a way to distinguish the bug reports we close
for lack of information, from those that are closed for other reasons?
When we close bug reports because we did not get the further
information necessary to fix them, I'd say those bug reports have been
"abandoned".
Can we make a way for debbugs to distinguish abandoned bug reports?
--
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-27 2:52 ` Richard Stallman
@ 2015-12-27 6:07 ` Lars Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2015-12-27 6:07 UTC (permalink / raw)
To: Richard Stallman; +Cc: jwiegley, andreas.roehler, emacs-devel
Richard Stallman <rms@gnu.org> writes:
> I agree -- but is there a way to distinguish the bug reports we close
> for lack of information, from those that are closed for other reasons?
>
> When we close bug reports because we did not get the further
> information necessary to fix them, I'd say those bug reports have been
> "abandoned".
Yes, we mark those with "moreinfo" (usually), and say in the text of the
bug report that that's why they're closed (if we don't forget).
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:52 ` Eli Zaretskii
2015-12-26 16:59 ` Lars Ingebrigtsen
@ 2015-12-27 22:41 ` Per Starbäck
2015-12-28 9:44 ` Andreas Röhler
2015-12-28 20:18 ` John Wiegley
2 siblings, 1 reply; 141+ messages in thread
From: Per Starbäck @ 2015-12-27 22:41 UTC (permalink / raw)
To: Eli Zaretskii
Cc: John Wiegley, Lars Ingebrigtsen, andreas.roehler,
emacs-devel@gnu.org
>> I don't know how well this works for projects that auto-close bug
>> reports. Anybody have experience with that?
>
> Closing bug reports tends to annoy their reporters.
Not only them, but anyone who is interested in that bug.
Example: I've used Fedora which used that system, and I don't know how
many times I've searched for a bug that I have encountered in it to
see that it has been reported, closed because of new Fedora version,
reported again in that version, closed when there is a new Fedora
version, reported again, etc.
Then I don't bother to report it again in the current version, because
it is probably pointless. Of course those bugs wouldn't automatically
have been fixed if the reports weren't closed all the time, but then
there would at least be somewhere I could make a comment about the bug
still being present in the latest version, without feeling like I'm
just writing for the garbage bin.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-27 22:41 ` Per Starbäck
@ 2015-12-28 9:44 ` Andreas Röhler
0 siblings, 0 replies; 141+ messages in thread
From: Andreas Röhler @ 2015-12-28 9:44 UTC (permalink / raw)
To: Per Starbäck, Eli Zaretskii
Cc: John Wiegley, Lars Ingebrigtsen, emacs-devel@gnu.org
On 27.12.2015 23:41, Per Starbäck wrote:
>>> I don't know how well this works for projects that auto-close bug
>>> reports. Anybody have experience with that?
>> Closing bug reports tends to annoy their reporters.
> Not only them, but anyone who is interested in that bug.
>
> Example: I've used Fedora which used that system, and I don't know how
> many times I've searched for a bug that I have encountered in it to
> see that it has been reported, closed because of new Fedora version,
> reported again in that version, closed when there is a new Fedora
> version, reported again, etc.
> Then I don't bother to report it again in the current version, because
> it is probably pointless. Of course those bugs wouldn't automatically
> have been fixed if the reports weren't closed all the time, but then
> there would at least be somewhere I could make a comment about the bug
> still being present in the latest version, without feeling like I'm
> just writing for the garbage bin.
With the proposed proceeding you would receive an alert when
closing-by-release.
Sending an email with "reopen BUGNUMBER resp. "unarchive BUGNUMBER" in
body should be sufficient.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 17:48 ` Lars Ingebrigtsen
@ 2015-12-28 20:15 ` John Wiegley
0 siblings, 0 replies; 141+ messages in thread
From: John Wiegley @ 2015-12-28 20:15 UTC (permalink / raw)
To: Lars Ingebrigtsen
Cc: Eli Zaretskii, Paul Eggert, Andreas Röhler, emacs-devel
[-- Attachment #1: Type: text/plain, Size: 925 bytes --]
>>>>> Lars Ingebrigtsen <larsi@gnus.org> writes:
> Handling bugs is, like, work. :-) Perhaps the FSF could hire a full-time bug
> herder?
A bug herder is the most significant piece of the Emacs Project Puzzle that is
missing, in my opinion. Eli and others (and recently Lars especially) have
made heroic efforts, but this also distracts from their primary development
work.
If we could find 2-3 people dedicated to combing through, and responding to
bugs -- even just to get them ready for more serious investigation by a core
developer -- it would help this project greatly.
It's hard to see an open bug count of 4k+ and not give up a little bit in
one's heart. And yet, I have a feeling our _true_ bugload is much smaller, if
we winnow the chaff.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 629 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-26 16:52 ` Eli Zaretskii
2015-12-26 16:59 ` Lars Ingebrigtsen
2015-12-27 22:41 ` Per Starbäck
@ 2015-12-28 20:18 ` John Wiegley
2 siblings, 0 replies; 141+ messages in thread
From: John Wiegley @ 2015-12-28 20:18 UTC (permalink / raw)
To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, andreas.roehler, emacs-devel
>>>>> Eli Zaretskii <eliz@gnu.org> writes:
> So on balance I'd rather leave them open and in "moreinfo" category.
I agree. Let's keep the old bugs open until we've triaged them, since in the
end, I don't think we'd actually be saving time by pre-emptively closing them.
Then we're just playing a numbers game, which although might motivate us, I'm
not sure it saves us any real work.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2015-12-25 6:21 4K Bugs Lars Ingebrigtsen
2015-12-25 7:46 ` Eli Zaretskii
2015-12-25 17:00 ` John Wiegley
@ 2016-01-07 20:10 ` Phillip Lord
2016-01-07 22:38 ` Phillip Lord
` (5 more replies)
2 siblings, 6 replies; 141+ messages in thread
From: Phillip Lord @ 2016-01-07 20:10 UTC (permalink / raw)
To: emacs-devel
Lars Ingebrigtsen <larsi@gnus.org> writes:
> There are 4051 open bugs in the Emacs bug tracker. Did we forget to
> celebrate, or are we waiting until it reaches a rounder number, like
> 4096?
>
> I shouldn't really be the one to kvetch about this since I disappear
> for months on end, but is there something that we could do to make more
> people do bug triage?
>
> Move debbugs-gnu from ELPA to Emacs? :-)
I'm very late to this discussion, but inspired by Lar's bug fix spree I
decided to see if I could have a go myself. I found the process a little
confusing. Here are some points:
- After installing debbugs, there is no obvious entry point. M-x
debugs-[tab] gives 30 different commands.
- The two shortest commands are debbugs-org and debbugs-gnu. The former
lists all the bugs for Org-Mode, and the latter Emacs. Why
debbugs-gnu and not debbugs-emacs? I don't know.
- debbugs-gnu list bugs from number 158 and upward; the entire first
500 is about emacs 23 pre-releases. If I want to get the latest bugs,
they are on page 5.
- Bugs marked as "done" and "unreproducible" are displayed by default.
- On none of the debbugs pages are there any obvious menu items or
bug-related functionality.
- I found out about hitting "C" to send a control message. Configuring
this to "mail client" and up pops thunderbird, although I am a Gnus
user.
- I found "bugtracker" in admin/notes late in the day. It doesn't
mention the debbugs package AFAICT. It's full of information, but a
lot of it is how to manage the bug tracker. I don't know if there is
anything better on how-to-fix a bug. It also ends with a warning that
the database takes "well over 1Gb of space" which makes it look
rather old.
So, I think that the process is rather harder than it needs to be.
If anyone is willing to hold-my-hand, and take me through the process of
fixing a couple of bugs (not the actual bug-hunting, which I can do),
I'll write the process up as a short tutorial as I did with for
etc/DEBUG. This way I can use my ignorance to good purpose.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 20:10 ` Phillip Lord
@ 2016-01-07 22:38 ` Phillip Lord
2016-01-09 4:26 ` Andrew Hyatt
2016-01-07 23:32 ` John Wiegley
` (4 subsequent siblings)
5 siblings, 1 reply; 141+ messages in thread
From: Phillip Lord @ 2016-01-07 22:38 UTC (permalink / raw)
To: emacs-devel
Phillip Lord <phillip.lord@russet.org.uk> writes:
> If anyone is willing to hold-my-hand, and take me through the process of
> fixing a couple of bugs (not the actual bug-hunting, which I can do),
> I'll write the process up as a short tutorial as I did with for
> etc/DEBUG. This way I can use my ignorance to good purpose.
Apologies for the spam, I've realised that this has already been done now.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 20:10 ` Phillip Lord
2016-01-07 22:38 ` Phillip Lord
@ 2016-01-07 23:32 ` John Wiegley
2016-01-08 0:17 ` Xue Fuqiao
` (3 subsequent siblings)
5 siblings, 0 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-07 23:32 UTC (permalink / raw)
To: Phillip Lord; +Cc: emacs-devel
>>>>> Phillip Lord <phillip.lord@russet.org.uk> writes:
> So, I think that the process is rather harder than it needs to be.
FWIW, the confusion you describe is pretty much identical to my first
experience. It's not at all what I expected when my main concern was "what
bugs should I take a look at right now?"
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 20:10 ` Phillip Lord
2016-01-07 22:38 ` Phillip Lord
2016-01-07 23:32 ` John Wiegley
@ 2016-01-08 0:17 ` Xue Fuqiao
2016-01-08 12:49 ` Phillip Lord
2016-01-08 1:41 ` Alexis
` (2 subsequent siblings)
5 siblings, 1 reply; 141+ messages in thread
From: Xue Fuqiao @ 2016-01-08 0:17 UTC (permalink / raw)
To: Phillip Lord; +Cc: Emacs-devel
On Fri, Jan 8, 2016 at 4:10 AM, Phillip Lord <phillip.lord@russet.org.uk> wrote:
> - The two shortest commands are debbugs-org and debbugs-gnu. The former
> lists all the bugs for Org-Mode, and the latter Emacs. Why
> debbugs-gnu and not debbugs-emacs? I don't know.
Maybe because some other GNU projects also use debbugs.gnu.org:
* https://debbugs.gnu.org/cgi/bugreport.cgi?bug=6056
* https://debbugs.gnu.org/cgi/bugreport.cgi?bug=7868
* https://debbugs.gnu.org/cgi/bugreport.cgi?bug=17355
* https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18641
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 20:10 ` Phillip Lord
` (2 preceding siblings ...)
2016-01-08 0:17 ` Xue Fuqiao
@ 2016-01-08 1:41 ` Alexis
2016-01-08 1:50 ` Richard Copley
` (2 more replies)
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
2016-01-08 10:50 ` 4K Bugs Michael Albinus
5 siblings, 3 replies; 141+ messages in thread
From: Alexis @ 2016-01-08 1:41 UTC (permalink / raw)
To: emacs-devel
i've just recently installed the `debbugs` package myself, as part
of trying to help out with bug triage. i rather like it overall,
and find it less unwieldy than the Web UI - thanks to those who
have put it together! Still, i too have had some issues:
Phillip Lord <phillip.lord@russet.org.uk> writes:
> - After installing debbugs, there is no obvious entry
> point. M-x
> debugs-[tab] gives 30 different commands.
Agreed; it took me a few moments to realise that debbugs-gnu was
probably what i wanted.
> - debbugs-gnu list bugs from number 158 and upward; the entire
> first
> 500 is about emacs 23 pre-releases. If I want to get the
> latest bugs, they are on page 5.
An argument could be made that the longest-outstanding issues
should be displayed first, to try to encourage their
resolution. Having said that, it could also be argued that their
longevity means they're less likely to be able to be resolved soon
than recent bugs. So i'm not sure what the best default is here.
> - Bugs marked as "done" and "unreproducible" are displayed by
> default.
i would certainly prefer that "done" and "unreproducible" bugs
were not displayed by default.
> - On none of the debbugs pages are there any obvious menu items
> or
> bug-related functionality.
Well, as usual in these situations, i used C-h m (`describe-mode`)
to find out what i can do; but yes, it might be useful to at least
have one or two lines of text describing at least some of the
possible commands (and maybe also, what the colours in the `State`
field indicate).
> - I found out about hitting "C" to send a control
> message. Configuring
> this to "mail client" and up pops thunderbird, although I am
> a Gnus user.
i'm a mu4e user, and when i try to send a control message
.... Well, i'm not sure what happens. i get nothing to indicate a
message was sent, but nothing to indicate it failed to be sent
either. i can successfully use mu4e to reply to messages in the
relevant bug thread, though.
Finally, i'd like to suggest that the `debbugs` manual be renamed
to something like `debbugs-dev`, and the `debbugs-ug` manual be
renamed to `debbugs`. In trying to find out what the colours in
the `State` field indicated, i ran the `info-display-manual`
command and specified `debbugs`; the result ("Debbugs Programmers
Manual") surprised me, and it took me a while to realise that
there's a `debbugs-ug` ("Debbugs User Guide") manual. My guess is
that many more people are going to want to use the latter than the
former; hence my rename suggestion. Perhaps it might also be
useful to link to the User Guide from the `debbugs` UI?
Alexis.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 1:41 ` Alexis
@ 2016-01-08 1:50 ` Richard Copley
2016-01-08 2:41 ` Alexis
2016-01-08 12:48 ` Phillip Lord
2016-01-08 13:06 ` Michael Albinus
2 siblings, 1 reply; 141+ messages in thread
From: Richard Copley @ 2016-01-08 1:50 UTC (permalink / raw)
To: Alexis; +Cc: Emacs Development
> An argument could be made that the longest-outstanding issues should
> be displayed first, to try to encourage their resolution. Having
> said that, it could also be argued that their longevity means
> they're less likely to be able to be resolved soon than recent
> bugs. So i'm not sure what the best default is here.
This problem will go away by itself now that we're deluged with
enthusiastic triagers.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 1:50 ` Richard Copley
@ 2016-01-08 2:41 ` Alexis
2016-01-09 1:51 ` John Wiegley
0 siblings, 1 reply; 141+ messages in thread
From: Alexis @ 2016-01-08 2:41 UTC (permalink / raw)
To: Richard Copley; +Cc: Emacs Development
Richard Copley <rcopley@gmail.com> writes:
>> An argument could be made that the longest-outstanding issues
>> should be displayed first, to try to encourage their
>> resolution. Having said that, it could also be argued that
>> their longevity means they're less likely to be able to be
>> resolved soon than recent bugs. So i'm not sure what the best
>> default is here.
>
> This problem will go away by itself now that we're deluged with
> enthusiastic triagers.
Heh, well, i wouldn't call the (from what i can tell)
maybe-less-than-half-a-dozen of us to be a "deluge". :-)
At any rate, i'm not sure the problem will necessarily go away by
itself, for a few reasons:
* Looking over the longest-outstanding bugs, i noticed a number of
them
were Mac-specific. As i don't have access to a Mac - i'm on
Debian - i can't try to reproduce the issue. So unless triagers
have access to a Mac, such issues are more likely to
languish. (This had made me wonder whether tags like 'mac',
'win' etc. might be useful?)
* Even triagers who do have access to a Mac won't necessarily feel
competent enough to try to address /every/ long-outstanding bug;
and this applies more generally, regardless of OS. i've been
following bug-gnu-emacs for a while now, to try to help triage
new bugs, but i only address a small fraction of those that come
through: those haven't been addressed by someone more expert
than me, and which i understand well enough to be able to try to
reproduce and/or ask (hopefully) sensible questions about.
* Some of the long-outstanding bugs have a complicated history
that is
daunting to try to untangle and work out what the next step
might be. Particularly when the history involves a heated debate
which has apparently reached an uncomfortable stalemate.
Regarding the last point: maybe at least some of these sorts of
bugs could be brought to John's attention for arbitration?
Alexis.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 20:10 ` Phillip Lord
` (3 preceding siblings ...)
2016-01-08 1:41 ` Alexis
@ 2016-01-08 8:28 ` Lars Magne Ingebrigtsen
2016-01-08 12:57 ` Phillip Lord
` (2 more replies)
2016-01-08 10:50 ` 4K Bugs Michael Albinus
5 siblings, 3 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-08 8:28 UTC (permalink / raw)
To: Phillip Lord; +Cc: emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
> I'm very late to this discussion, but inspired by Lar's bug fix spree I
> decided to see if I could have a go myself. I found the process a little
> confusing. Here are some points:
>
> - After installing debbugs, there is no obvious entry point. M-x
> debugs-[tab] gives 30 different commands.
Yeah, the `M-x' interface for discovering commands in Emacs sucks.
We've discussed before adding mechanisms for leaving mode-specific
commands out, but I was apparently the only one enthusiastic about
it...
> - The two shortest commands are debbugs-org and debbugs-gnu. The former
> lists all the bugs for Org-Mode, and the latter Emacs. Why
> debbugs-gnu and not debbugs-emacs? I don't know.
Good question. debbugs-emacs would be a more logical name for the
command.
> - debbugs-gnu list bugs from number 158 and upward; the entire first
> 500 is about emacs 23 pre-releases. If I want to get the latest bugs,
> they are on page 5.
This has been fixed in the git version of debbugs. It loads all the
bugs.
> - Bugs marked as "done" and "unreproducible" are displayed by default.
Yeah, done bugs should probably be hidden by default. I don't know
about unreproducible...
> - On none of the debbugs pages are there any obvious menu items or
> bug-related functionality.
I don't quite follow. Debbugs pages?
> - I found out about hitting "C" to send a control message. Configuring
> this to "mail client" and up pops thunderbird, although I am a Gnus
> user.
That sounds like a bug. `C' just uses the normal Emacs method for
sending email. Have you configured Emacs to use Thunderbird to send
emails?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 20:10 ` Phillip Lord
` (4 preceding siblings ...)
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
@ 2016-01-08 10:50 ` Michael Albinus
2016-01-08 13:21 ` Phillip Lord
5 siblings, 1 reply; 141+ messages in thread
From: Michael Albinus @ 2016-01-08 10:50 UTC (permalink / raw)
To: Phillip Lord; +Cc: emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
Hi Philipp,
Since the debbugs package is used until now mainly by people who know
the code, your feedback is very appreciated! Lars did answer already to
some points, I'll add from my pov.
> - After installing debbugs, there is no obvious entry point. M-x
> debugs-[tab] gives 30 different commands.
Yes, unfortunately there was a need to mark some functions as
interactive which are not intended to be called directly. I'll go
through the code whether this can be fixed.
However, the file README of the debbugs package should give you a short
overview. Please let me know if this is still confusing.
> - The two shortest commands are debbugs-org and debbugs-gnu. The former
> lists all the bugs for Org-Mode, and the latter Emacs. Why
> debbugs-gnu and not debbugs-emacs? I don't know.
`debbugs-gnu' is meant to access the bug tracker on http://debbugs.gnu.org.
The underlying library debbugs.el is able to access also the Debian bug
tracker on http://bugs.debian.org. Maybe there will be a
`debbugs-debian' one day.
`debbugs-emacs' would be misleading, because http://debbugs.gnu.org is
also the bug tracker for other GNU projects.
> - debbugs-gnu list bugs from number 158 and upward; the entire first
> 500 is about emacs 23 pre-releases. If I want to get the latest bugs,
> they are on page 5.
Yep, maybe it is better to sort by default latest first. As Lars said,
in the next debbugs release 0.9 you will get all bugs on one page. You
can sort as you like, pressing the title of a column with your mouse.
> - Bugs marked as "done" and "unreproducible" are displayed by default.
"Done" bugs are displayed until they are archived (28 days after being
marjed "done"). You can toggle this behaviour by typing "x". For
"unreproducible" bugs nothing is available, maybe they shall be
suppressed also by typing "x".
> - On none of the debbugs pages are there any obvious menu items or
> bug-related functionality.
Good point. Will add this.
> - I found out about hitting "C" to send a control message. Configuring
> this to "mail client" and up pops thunderbird, although I am a Gnus
> user.
As Lars said, this must be a bug. If you cannot fix it yourself (start
with "emacs -Q"), write a bug report.
> - I found "bugtracker" in admin/notes late in the day. It doesn't
> mention the debbugs package AFAICT. It's full of information, but a
> lot of it is how to manage the bug tracker. I don't know if there is
> anything better on how-to-fix a bug. It also ends with a warning that
> the database takes "well over 1Gb of space" which makes it look
> rather old.
Adding some words about the debbugs package into relevant files is on my todo.
> So, I think that the process is rather harder than it needs to be.
>
> If anyone is willing to hold-my-hand, and take me through the process of
> fixing a couple of bugs (not the actual bug-hunting, which I can do),
> I'll write the process up as a short tutorial as I did with for
> etc/DEBUG. This way I can use my ignorance to good purpose.
Please start reading README and debbugs-ug.info. Ping me, if you find
annoyances there. ASk also for new features :-)
Since I'm just changing several things in the debbugs package, it might
be closer to the state-of-art if you use the version from git. If this
is applicable to you.
> Phil
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 1:41 ` Alexis
2016-01-08 1:50 ` Richard Copley
@ 2016-01-08 12:48 ` Phillip Lord
2016-01-08 13:06 ` Michael Albinus
2 siblings, 0 replies; 141+ messages in thread
From: Phillip Lord @ 2016-01-08 12:48 UTC (permalink / raw)
To: Alexis; +Cc: emacs-devel
Alexis <flexibeast@gmail.com> writes:
> i've just recently installed the `debbugs` package myself, as part of trying
> to help out with bug triage. i rather like it overall, and find it less
> unwieldy than the Web UI - thanks to those who have put it together! Still, i
> too have had some issues:
>
> Phillip Lord <phillip.lord@russet.org.uk> writes:
>
>> - After installing debbugs, there is no obvious entry point. M-x
>> debugs-[tab] gives 30 different commands.
>
> Agreed; it took me a few moments to realise that debbugs-gnu was probably what
> i wanted.
Turns out that either "-gnu" or "-org" works fine. They just produce a
different UI. I think aliasing debbugs-gnu to debbugs would help.
>> - debbugs-gnu list bugs from number 158 and upward; the entire first
>> 500 is about emacs 23 pre-releases. If I want to get the latest bugs,
>> they are on page 5.
>
> An argument could be made that the longest-outstanding issues should be
> displayed first, to try to encourage their resolution. Having said that, it
> could also be argued that their longevity means they're less likely to be able
> to be resolved soon than recent bugs. So i'm not sure what the best default is
> here.
I am very suspiscious about that. Most issue trackers are "most recent first".
>
>> - On none of the debbugs pages are there any obvious menu items or
>> bug-related functionality.
>
> Well, as usual in these situations, i used C-h m (`describe-mode`) to find out
> what i can do; but yes, it might be useful to at least have one or two lines
> of text describing at least some of the possible commands (and maybe also,
> what the colours in the `State` field indicate).
>
>> - I found out about hitting "C" to send a control message. Configuring
>> this to "mail client" and up pops thunderbird, although I am a Gnus user.
>
> i'm a mu4e user, and when i try to send a control message .... Well, i'm not
> sure what happens. i get nothing to indicate a message was sent, but nothing
> to indicate it failed to be sent either. i can successfully use mu4e to reply
> to messages in the relevant bug thread, though.
And there is no where to practice! I might create a bug report just so I
can try setting some control messages on it.
> Finally, i'd like to suggest that the `debbugs` manual be renamed to something
> like `debbugs-dev`, and the `debbugs-ug` manual be renamed to `debbugs`. In
> trying to find out what the colours in the `State` field indicated, i ran the
> `info-display-manual` command and specified `debbugs`; the result ("Debbugs
> Programmers Manual") surprised me, and it took me a while to realise that
> there's a `debbugs-ug` ("Debbugs User Guide") manual. My guess is that many
> more people are going to want to use the latter than the former; hence my
> rename suggestion. Perhaps it might also be useful to link to the User Guide
> from the `debbugs` UI?
Yes, this makes sense to me also.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 0:17 ` Xue Fuqiao
@ 2016-01-08 12:49 ` Phillip Lord
0 siblings, 0 replies; 141+ messages in thread
From: Phillip Lord @ 2016-01-08 12:49 UTC (permalink / raw)
To: Xue Fuqiao; +Cc: Emacs-devel
Xue Fuqiao <xfq.free@gmail.com> writes:
> On Fri, Jan 8, 2016 at 4:10 AM, Phillip Lord <phillip.lord@russet.org.uk> wrote:
>
>> - The two shortest commands are debbugs-org and debbugs-gnu. The former
>> lists all the bugs for Org-Mode, and the latter Emacs. Why
>> debbugs-gnu and not debbugs-emacs? I don't know.
>
> Maybe because some other GNU projects also use debbugs.gnu.org:
>
> * https://debbugs.gnu.org/cgi/bugreport.cgi?bug=6056
> * https://debbugs.gnu.org/cgi/bugreport.cgi?bug=7868
> * https://debbugs.gnu.org/cgi/bugreport.cgi?bug=17355
> * https://debbugs.gnu.org/cgi/bugreport.cgi?bug=18641
I maybe wrong, but AFAICT, the emacs debbugs package only shows emacs
bugs. I am confused about this anyway.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
@ 2016-01-08 12:57 ` Phillip Lord
2016-01-08 13:37 ` Michael Albinus
2016-01-08 13:52 ` Lars Magne Ingebrigtsen
2016-01-08 15:05 ` Stefan Monnier
2016-01-08 23:16 ` Leaving out non-applicable commands on Mx (was: 4K Bugs) Óscar Fuentes
2 siblings, 2 replies; 141+ messages in thread
From: Phillip Lord @ 2016-01-08 12:57 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
>> - The two shortest commands are debbugs-org and debbugs-gnu. The former
>> lists all the bugs for Org-Mode, and the latter Emacs. Why
>> debbugs-gnu and not debbugs-emacs? I don't know.
>
> Good question. debbugs-emacs would be a more logical name for the
> command.
>
>> - debbugs-gnu list bugs from number 158 and upward; the entire first
>> 500 is about emacs 23 pre-releases. If I want to get the latest bugs,
>> they are on page 5.
>
> This has been fixed in the git version of debbugs. It loads all the
> bugs.
Can you switch the sort order around, by default?
>
>> - Bugs marked as "done" and "unreproducible" are displayed by default.
>
> Yeah, done bugs should probably be hidden by default. I don't know
> about unreproducible...
>
>> - On none of the debbugs pages are there any obvious menu items or
>> bug-related functionality.
>
> I don't quite follow. Debbugs pages?
Sorry, the buffer you get when you type "debbugs-gnu".
>
>> - I found out about hitting "C" to send a control message. Configuring
>> this to "mail client" and up pops thunderbird, although I am a Gnus
>> user.
>
> That sounds like a bug. `C' just uses the normal Emacs method for
> sending email. Have you configured Emacs to use Thunderbird to send
> emails?
No. C is asking me how I want to send the mail. I would be expecting it
just to be use message-mode and my normal config.
No worries if this is not the expected behaviour, I will debug it and
see what is happening.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 1:41 ` Alexis
2016-01-08 1:50 ` Richard Copley
2016-01-08 12:48 ` Phillip Lord
@ 2016-01-08 13:06 ` Michael Albinus
2016-01-08 13:59 ` Phillip Lord
2016-01-09 2:52 ` Alexis
2 siblings, 2 replies; 141+ messages in thread
From: Michael Albinus @ 2016-01-08 13:06 UTC (permalink / raw)
To: Alexis; +Cc: emacs-devel
Alexis <flexibeast@gmail.com> writes:
Hi Alexis,
Thank you also for your feedback.
>> - After installing debbugs, there is no obvious entry point. M-x
>> debugs-[tab] gives 30 different commands.
>
> Agreed; it took me a few moments to realise that debbugs-gnu was
> probably what i wanted.
Again, there is the README.
>> - Bugs marked as "done" and "unreproducible" are displayed by
>> default.
>
> i would certainly prefer that "done" and "unreproducible" bugs were
> not displayed by default.
As said, for bugs marked "done" this might be the better default. Bugs
marked "unreproducible" are prominent candidates to be marked also as
"done", therefore they shouldn't be suppressed I believe.
> Well, as usual in these situations, i used C-h m (`describe-mode`) to
> find out what i can do; but yes, it might be useful to at least have
> one or two lines of text describing at least some of the possible
> commands (and maybe also, what the colours in the `State` field
> indicate).
README, again. It covers the offered commands. The states are described
in the User Guide. I wanted to show them also by example, but I have no
idea how to colorize text in texinfo. Is this possible?
> i'm a mu4e user, and when i try to send a control message .... Well,
> i'm not sure what happens. i get nothing to indicate a message was
> sent, but nothing to indicate it failed to be sent either. i can
> successfully use mu4e to reply to messages in the relevant bug thread,
> though.
Yes, a short message "Control message foo sent" might beuseful. Will do.
> Finally, i'd like to suggest that the `debbugs` manual be renamed to
> something like `debbugs-dev`, and the `debbugs-ug` manual be renamed
> to `debbugs`. In trying to find out what the colours in the `State`
> field indicated, i ran the `info-display-manual` command and specified
> `debbugs`; the result ("Debbugs Programmers Manual") surprised me, and
> it took me a while to realise that there's a `debbugs-ug` ("Debbugs
> User Guide") manual. My guess is that many more people are going to
> want to use the latter than the former; hence my rename
> suggestion. Perhaps it might also be useful to link to the User Guide
> from the `debbugs` UI?
I've mentioned the User Guide in the README now. And in the Programmer's
Guide, I've added a link to the User Guide.
> Alexis.
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 10:50 ` 4K Bugs Michael Albinus
@ 2016-01-08 13:21 ` Phillip Lord
2016-01-08 13:33 ` Michael Albinus
0 siblings, 1 reply; 141+ messages in thread
From: Phillip Lord @ 2016-01-08 13:21 UTC (permalink / raw)
To: Michael Albinus; +Cc: emacs-devel
Michael Albinus <michael.albinus@gmx.de> writes:
>> - The two shortest commands are debbugs-org and debbugs-gnu. The former
>> lists all the bugs for Org-Mode, and the latter Emacs. Why
>> debbugs-gnu and not debbugs-emacs? I don't know.
>
> `debbugs-gnu' is meant to access the bug tracker on http://debbugs.gnu.org.
> The underlying library debbugs.el is able to access also the Debian bug
> tracker on http://bugs.debian.org. Maybe there will be a
> `debbugs-debian' one day.
>
> `debbugs-emacs' would be misleading, because http://debbugs.gnu.org is
> also the bug tracker for other GNU projects.
Yeah. But if I type M-x debbugs-gnu, I just get emacs bugs right?
>> - debbugs-gnu list bugs from number 158 and upward; the entire first
>> 500 is about emacs 23 pre-releases. If I want to get the latest bugs,
>> they are on page 5.
>
> Yep, maybe it is better to sort by default latest first. As Lars said,
> in the next debbugs release 0.9 you will get all bugs on one page. You
> can sort as you like, pressing the title of a column with your mouse.
Indeed.
>
>> - Bugs marked as "done" and "unreproducible" are displayed by default.
>
> "Done" bugs are displayed until they are archived (28 days after being
> marjed "done"). You can toggle this behaviour by typing "x". For
> "unreproducible" bugs nothing is available, maybe they shall be
> suppressed also by typing "x".
Ah, okay, it's not all "done" bugs. I was wondering why there were so
few. Again, I would toggle the default here. Power users will work it
out.
>> - On none of the debbugs pages are there any obvious menu items or
>> bug-related functionality.
>
> Good point. Will add this.
>
>> - I found out about hitting "C" to send a control message. Configuring
>> this to "mail client" and up pops thunderbird, although I am a Gnus
>> user.
>
> As Lars said, this must be a bug. If you cannot fix it yourself (start
> with "emacs -Q"), write a bug report.
>
>> - I found "bugtracker" in admin/notes late in the day. It doesn't
>> mention the debbugs package AFAICT. It's full of information, but a
>> lot of it is how to manage the bug tracker. I don't know if there is
>> anything better on how-to-fix a bug. It also ends with a warning that
>> the database takes "well over 1Gb of space" which makes it look
>> rather old.
>
> Adding some words about the debbugs package into relevant files is on my todo.
>
>> So, I think that the process is rather harder than it needs to be.
>>
>> If anyone is willing to hold-my-hand, and take me through the process of
>> fixing a couple of bugs (not the actual bug-hunting, which I can do),
>> I'll write the process up as a short tutorial as I did with for
>> etc/DEBUG. This way I can use my ignorance to good purpose.
>
> Please start reading README and debbugs-ug.info. Ping me, if you find
> annoyances there. ASk also for new features :-)
Oh, I will!
One document which I think is missing is a "what all the tags" mean.
>
> Since I'm just changing several things in the debbugs package, it might
> be closer to the state-of-art if you use the version from git. If this
> is applicable to you.
No worries I can do that.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:21 ` Phillip Lord
@ 2016-01-08 13:33 ` Michael Albinus
2016-01-08 14:08 ` Phillip Lord
2016-01-08 19:27 ` Stephen Leake
0 siblings, 2 replies; 141+ messages in thread
From: Michael Albinus @ 2016-01-08 13:33 UTC (permalink / raw)
To: Phillip Lord; +Cc: emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
>> `debbugs-emacs' would be misleading, because http://debbugs.gnu.org is
>> also the bug tracker for other GNU projects.
>
> Yeah. But if I type M-x debbugs-gnu, I just get emacs bugs right?
Emacs is the default package. You can change this by customizing
`debbugs-gnu-default-packages'. Or you call interactively
"C-u M-x debbugs-gnu".
(For all what I claim here: pls blame me if it isn't documented in the
User Guide)
> Ah, okay, it's not all "done" bugs. I was wondering why there were so
> few. Again, I would toggle the default here. Power users will work it
> out.
Noted. Will be done.
> One document which I think is missing is a "what all the tags" mean.
I believe it is covered in the User Guide. If not sufficient, ask for
clarification.
> Phil
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 12:57 ` Phillip Lord
@ 2016-01-08 13:37 ` Michael Albinus
2016-01-08 13:52 ` Lars Magne Ingebrigtsen
1 sibling, 0 replies; 141+ messages in thread
From: Michael Albinus @ 2016-01-08 13:37 UTC (permalink / raw)
To: Phillip Lord; +Cc: Lars Magne Ingebrigtsen, emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
>> This has been fixed in the git version of debbugs. It loads all the
>> bugs.
>
> Can you switch the sort order around, by default?
Will do. That's easy to implement now, since we get all bugs at once (in
several chunks, hidden to you).
> Phil
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 12:57 ` Phillip Lord
2016-01-08 13:37 ` Michael Albinus
@ 2016-01-08 13:52 ` Lars Magne Ingebrigtsen
2016-01-11 13:52 ` Phillip Lord
1 sibling, 1 reply; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-08 13:52 UTC (permalink / raw)
To: Phillip Lord; +Cc: emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
>>> - On none of the debbugs pages are there any obvious menu items or
>>> bug-related functionality.
>>
>> I don't quite follow. Debbugs pages?
>
> Sorry, the buffer you get when you type "debbugs-gnu".
Yeah, there should be a menu, as Michael said.
> No. C is asking me how I want to send the mail. I would be expecting it
> just to be use message-mode and my normal config.
If `C' is asking how to send an email, then your Emacs hasn't had its
email settings configured...
I.e., `send-mail-function' hasn't been set. You may have configured the
`message-send-mail-function' instead if you're just sending mail from
Gnus...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:06 ` Michael Albinus
@ 2016-01-08 13:59 ` Phillip Lord
2016-01-08 14:12 ` Michael Albinus
2016-01-09 2:52 ` Alexis
1 sibling, 1 reply; 141+ messages in thread
From: Phillip Lord @ 2016-01-08 13:59 UTC (permalink / raw)
To: Michael Albinus; +Cc: Alexis, emacs-devel
Michael Albinus <michael.albinus@gmx.de> writes:
> Alexis <flexibeast@gmail.com> writes:
>
> Hi Alexis,
>
> Thank you also for your feedback.
>
>>> - After installing debbugs, there is no obvious entry point. M-x
>>> debugs-[tab] gives 30 different commands.
>>
>> Agreed; it took me a few moments to realise that debbugs-gnu was
>> probably what i wanted.
>
> Again, there is the README.
Worth remembering that "README" for debbugs is a file buried somewhere
in ~/.emacs.d/elpa.
> Yes, a short message "Control message foo sent" might beuseful. Will do.
>> Finally, i'd like to suggest that the `debbugs` manual be renamed to
>> something like `debbugs-dev`, and the `debbugs-ug` manual be renamed
>> to `debbugs`.
>
> I've mentioned the User Guide in the README now. And in the Programmer's
> Guide, I've added a link to the User Guide.
These are both good adds, thank you!
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:33 ` Michael Albinus
@ 2016-01-08 14:08 ` Phillip Lord
2016-01-09 4:21 ` Andrew Hyatt
2016-01-08 19:27 ` Stephen Leake
1 sibling, 1 reply; 141+ messages in thread
From: Phillip Lord @ 2016-01-08 14:08 UTC (permalink / raw)
To: Michael Albinus; +Cc: emacs-devel
Michael Albinus <michael.albinus@gmx.de> writes:
> phillip.lord@russet.org.uk (Phillip Lord) writes:
>
>>> `debbugs-emacs' would be misleading, because http://debbugs.gnu.org is
>>> also the bug tracker for other GNU projects.
>>
>> Yeah. But if I type M-x debbugs-gnu, I just get emacs bugs right?
>
> Emacs is the default package. You can change this by customizing
> `debbugs-gnu-default-packages'. Or you call interactively
> "C-u M-x debbugs-gnu".
>
> (For all what I claim here: pls blame me if it isn't documented in the
> User Guide)
I would add a shorter "debbugs". I would be intereted to know how many
enter via "-org" and how many via "-gnu".
>> One document which I think is missing is a "what all the tags" mean.
>
> I believe it is covered in the User Guide. If not sufficient, ask for
> clarification.
invalid? Different from notabug, wontfix, unreproducible?
pending? Pending what? Different from moreinfo?
patch? It includes one? Covers a bug report with a pull request?
And important, minor, normal, serious, wishlist. Is serious more
important than important? Or Important more serious than serious? What
criterion?
security? valid only for bugs? or wishlists, RFE also?
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:59 ` Phillip Lord
@ 2016-01-08 14:12 ` Michael Albinus
0 siblings, 0 replies; 141+ messages in thread
From: Michael Albinus @ 2016-01-08 14:12 UTC (permalink / raw)
To: Phillip Lord; +Cc: Alexis, emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
Hi Phillip,
>>>> - After installing debbugs, there is no obvious entry point. M-x
>>>> debugs-[tab] gives 30 different commands.
>>>
>>> Agreed; it took me a few moments to realise that debbugs-gnu was
>>> probably what i wanted.
>>
>> Again, there is the README.
>
> Worth remembering that "README" for debbugs is a file buried somewhere
> in ~/.emacs.d/elpa.
Yes, but there is no better place for ELPA packages. You get this
information, if you klick on the package in the Package Manager.
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
2016-01-08 12:57 ` Phillip Lord
@ 2016-01-08 15:05 ` Stefan Monnier
2016-01-08 23:16 ` Leaving out non-applicable commands on Mx (was: 4K Bugs) Óscar Fuentes
2 siblings, 0 replies; 141+ messages in thread
From: Stefan Monnier @ 2016-01-08 15:05 UTC (permalink / raw)
To: emacs-devel
> Yeah, the `M-x' interface for discovering commands in Emacs sucks.
> We've discussed before adding mechanisms for leaving mode-specific
> commands out, but I was apparently the only one enthusiastic about
> it...
FWIW, part of the motivation to move M-x to Elisp was to make it easier
to experiment and/or provide alternate implementations as external packages.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:33 ` Michael Albinus
2016-01-08 14:08 ` Phillip Lord
@ 2016-01-08 19:27 ` Stephen Leake
2016-01-08 20:52 ` Michael Albinus
1 sibling, 1 reply; 141+ messages in thread
From: Stephen Leake @ 2016-01-08 19:27 UTC (permalink / raw)
To: Michael Albinus; +Cc: emacs-devel, Phillip Lord
Michael Albinus <michael.albinus@gmx.de> writes:
>>> "Done" bugs are displayed until they are archived (28 days after being
>>> marjed "done"). You can toggle this behaviour by typing "x". For
>>> "unreproducible" bugs nothing is available, maybe they shall be
>>> suppressed also by typing "x".
>> Ah, okay, it's not all "done" bugs. I was wondering why there were so
>> few. Again, I would toggle the default here. Power users will work it
>> out.
>
> Noted. Will be done.
I think it makes sense for bugs recently changed to "done" to still be
listed.
For example, if I'm interested in a bug, but not subscribed to it, I
will want to notice that it's been marked "done".
That also makes it easier to reactivate it if the status change was in
error.
As long as this is documented, it's a nice feature.
I suspect this is actually a bug manager feature, not a debbugs.el
feature, so it's probably best to briefly mention this in the debbugs
UG, with a link to the bug manager docs that fully describe it.
--
-- Stephe
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 19:27 ` Stephen Leake
@ 2016-01-08 20:52 ` Michael Albinus
0 siblings, 0 replies; 141+ messages in thread
From: Michael Albinus @ 2016-01-08 20:52 UTC (permalink / raw)
To: Stephen Leake; +Cc: emacs-devel, Phillip Lord
Stephen Leake <stephen_leake@stephe-leake.org> writes:
> I think it makes sense for bugs recently changed to "done" to still be
> listed.
They are still retrieved. You can toggle their visibility by hitting "x".
What I will change is that they are suppressed initially. This seems to
be the better default.
> For example, if I'm interested in a bug, but not subscribed to it, I
> will want to notice that it's been marked "done".
Use `debbugs-gnu-bugs' for exactly this bug. Or tag it locally, and see
it when you retrieve those tagged bugs.
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Leaving out non-applicable commands on Mx (was: 4K Bugs)
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
2016-01-08 12:57 ` Phillip Lord
2016-01-08 15:05 ` Stefan Monnier
@ 2016-01-08 23:16 ` Óscar Fuentes
2016-01-09 0:22 ` Leaving out non-applicable commands on Mx John Wiegley
2 siblings, 1 reply; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-08 23:16 UTC (permalink / raw)
To: emacs-devel
Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
> phillip.lord@russet.org.uk (Phillip Lord) writes:
>
>> I'm very late to this discussion, but inspired by Lar's bug fix spree I
>> decided to see if I could have a go myself. I found the process a little
>> confusing. Here are some points:
>>
>> - After installing debbugs, there is no obvious entry point. M-x
>> debugs-[tab] gives 30 different commands.
>
> Yeah, the `M-x' interface for discovering commands in Emacs sucks.
My experience with ido+flx is quite positive on this aspect, although it
could be made much better.
> We've discussed before adding mechanisms for leaving mode-specific
> commands out, but I was apparently the only one enthusiastic about
> it...
You'll better run MemTest on your brain, because that is not accurate by
a long stretch. :-)
I suggested this feature and volunteered for doing the boring work
(annotating functions with their related modes). On that discussion,
others mentioned that it is an interesting idea.
You sketched a possible implementation. If you are interested on
completing the part that requires a smart hacker, I'll do the part that
requires a dumb one :-)
[snip]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-08 23:16 ` Leaving out non-applicable commands on Mx (was: 4K Bugs) Óscar Fuentes
@ 2016-01-09 0:22 ` John Wiegley
2016-01-09 0:55 ` Óscar Fuentes
2016-01-09 8:06 ` Leaving out non-applicable commands on Mx Lars Magne Ingebrigtsen
0 siblings, 2 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-09 0:22 UTC (permalink / raw)
To: Óscar Fuentes; +Cc: emacs-devel
>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>> We've discussed before adding mechanisms for leaving mode-specific commands
>> out, but I was apparently the only one enthusiastic about it...
> You sketched a possible implementation. If you are interested on completing
> the part that requires a smart hacker, I'll do the part that requires a dumb
> one :-)
What is this feature suggestion again?
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 0:22 ` Leaving out non-applicable commands on Mx John Wiegley
@ 2016-01-09 0:55 ` Óscar Fuentes
2016-01-09 1:46 ` John Wiegley
2016-01-09 3:08 ` Drew Adams
2016-01-09 8:06 ` Leaving out non-applicable commands on Mx Lars Magne Ingebrigtsen
1 sibling, 2 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-09 0:55 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>>> We've discussed before adding mechanisms for leaving mode-specific commands
>>> out, but I was apparently the only one enthusiastic about it...
>
>> You sketched a possible implementation. If you are interested on completing
>> the part that requires a smart hacker, I'll do the part that requires a dumb
>> one :-)
>
> What is this feature suggestion again?
On the M-x prompt, the set of candidates is restricted to those that
make sense given the current context. Leaving out functions that are
specific to modes not enabled is a start. So if you are editing a C file
and press `M-x g' almost all gnus* functions shall not be considered as
candidates for completion.
This is important with advanced completion systems. An example: while
working on a org-mode file, if I wish to execute org-clock-report I can
use its binding: "C-c C-x C-r". With ido+flx, I can do "M-x ocr ENTER"
which, IMO, is superior on each and every aspect.
The M-x interface can be an improvement over both keybindings and the
menu on terms of usability, given the correct methods, but having
thousands of irrelevant candidates every time you invoke M-x is an
inconvenience for that goal, not to say plain dumb.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 0:55 ` Óscar Fuentes
@ 2016-01-09 1:46 ` John Wiegley
2016-01-09 1:54 ` Spencer Boucher
` (2 more replies)
2016-01-09 3:08 ` Drew Adams
1 sibling, 3 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-09 1:46 UTC (permalink / raw)
To: Óscar Fuentes; +Cc: emacs-devel
>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
> On the M-x prompt, the set of candidates is restricted to those that make
> sense given the current context. Leaving out functions that are specific to
> modes not enabled is a start. So if you are editing a C file and press `M-x
> g' almost all gnus* functions shall not be considered as candidates for
> completion.
This sounds like a feature that should evolve first as a separate package in
ELPA, and after proving itself, be considered for core. But I sense ways in
which this could go wrong: expecting to find a command, failing for some
undiscovered reason X, and then the user believing no such command exists.
> The M-x interface can be an improvement over both keybindings and the menu
> on terms of usability, given the correct methods, but having thousands of
> irrelevant candidates every time you invoke M-x is an inconvenience for that
> goal, not to say plain dumb.
Core Emacs behavior doesn't need to change to demonstrate this feature, does
it? Write a new execute-extended-command and see if it works as well as you
hope.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 2:41 ` Alexis
@ 2016-01-09 1:51 ` John Wiegley
0 siblings, 0 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-09 1:51 UTC (permalink / raw)
To: Alexis; +Cc: Richard Copley, Emacs Development
>>>>> Alexis <flexibeast@gmail.com> writes:
> Some of the long-outstanding bugs have a complicated history that is
> daunting to try to untangle and work out what the next step might be.
> Particularly when the history involves a heated debate which has apparently
> reached an uncomfortable stalemate.
> Regarding the last point: maybe at least some of these sorts of bugs could
> be brought to John's attention for arbitration?
Not just for those bugs; you can summon me for arbitration on any bug, if you
feel like a decision needs to be made. I read all bug reports, so mentioning
my name should be enough to catch my attention; or Cc: johnw@gnu.org, which
causes Gnus to show a character indicating that I've been directly copied.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 1:46 ` John Wiegley
@ 2016-01-09 1:54 ` Spencer Boucher
2016-01-09 3:09 ` Drew Adams
2016-01-09 2:15 ` Óscar Fuentes
2016-01-09 3:09 ` Drew Adams
2 siblings, 1 reply; 141+ messages in thread
From: Spencer Boucher @ 2016-01-09 1:54 UTC (permalink / raw)
To: John Wiegley; +Cc: Óscar Fuentes, emacs-devel
Smex (https://github.com/nonsequitur/smex/) has a similar function
that limits to commands in the major mode
(`smex-major-mode-commands`).
John Wiegley writes:
>>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>> On the M-x prompt, the set of candidates is restricted to those
>> that make sense given the current context. Leaving out
>> functions that are specific to modes not enabled is a start. So
>> if you are editing a C file and press `M-x g' almost all gnus*
>> functions shall not be considered as candidates for completion.
>
> This sounds like a feature that should evolve first as a
> separate package in ELPA, and after proving itself, be
> considered for core. But I sense ways in which this could go
> wrong: expecting to find a command, failing for some
> undiscovered reason X, and then the user believing no such
> command exists.
>
>> The M-x interface can be an improvement over both keybindings
>> and the menu on terms of usability, given the correct methods,
>> but having thousands of irrelevant candidates every time you
>> invoke M-x is an inconvenience for that goal, not to say plain
>> dumb.
>
> Core Emacs behavior doesn't need to change to demonstrate this
> feature, does it? Write a new execute-extended-command and see
> if it works as well as you hope.
-- Spencer Boucher
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 1:46 ` John Wiegley
2016-01-09 1:54 ` Spencer Boucher
@ 2016-01-09 2:15 ` Óscar Fuentes
2016-01-09 3:09 ` Drew Adams
2016-01-09 4:14 ` Stefan Monnier
2016-01-09 3:09 ` Drew Adams
2 siblings, 2 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-09 2:15 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>> On the M-x prompt, the set of candidates is restricted to those that make
>> sense given the current context. Leaving out functions that are specific to
>> modes not enabled is a start. So if you are editing a C file and press `M-x
>> g' almost all gnus* functions shall not be considered as candidates for
>> completion.
>
> This sounds like a feature that should evolve first as a separate package in
> ELPA, and after proving itself, be considered for core. But I sense ways in
> which this could go wrong: expecting to find a command, failing for some
> undiscovered reason X, and then the user believing no such command exists.
This could ony happen if there is a mistake on how that command is
declared. A bug like any other.
>> The M-x interface can be an improvement over both keybindings and the menu
>> on terms of usability, given the correct methods, but having thousands of
>> irrelevant candidates every time you invoke M-x is an inconvenience for that
>> goal, not to say plain dumb.
>
> Core Emacs behavior doesn't need to change to demonstrate this feature, does
> it? Write a new execute-extended-command and see if it works as well as you
> hope.
It is necessary to annotate the functions with the context they are
suppossed to work on. Something like
(defun foo-something ()
"docstring"
(interactive)
(declare this-applies-to-foo-mode)
...)
Doing that for every function is unnecessary work, so a method for
saying "all the functions defined on this .el file apply to foo-mode,
except foo-bar and foo-zoo" is a sensible enhancement. (We also could
exploit the fact that we know wich functions are autoladed. Most
autoloaded functions are context-free, while the non-autoloaded
functions on the same file are context-specific).
Maintaining all this information on an external resource is
unmanageable, it simply wont work. So yes, the Elisp source files need
to be annotated (that's the work I'm volunteering for).
For reading the annotations (and, possibly, for performance reasons,
applying the filter) modifications are required on some Emacs
infrastructure. From past discussion it seems that those modifications
are expected to be small, though.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:06 ` Michael Albinus
2016-01-08 13:59 ` Phillip Lord
@ 2016-01-09 2:52 ` Alexis
2016-01-10 15:58 ` Michael Albinus
1 sibling, 1 reply; 141+ messages in thread
From: Alexis @ 2016-01-09 2:52 UTC (permalink / raw)
To: Michael Albinus; +Cc: emacs-devel
Hi Michael,
Thanks for your response!
Michael Albinus <michael.albinus@gmx.de> writes:
> Again, there is the README.
i didn't even think to actively look for a distinct README! i
typically look for such information by moving point to the package
name in the `package-list-packages` list, then pressing RET
(`describe-package`). For the packages i maintain, doing so opens
a buffer showing, amongst other things, the 'Commentary' section
of the package headers, which is where i maintain user-level
documentation. (i use the `el2markdown` package to create a
README.md file from this section for GitHub.) When i do that for
the `debbugs` package, the 'Commentary' section of `debbugs.el`
isn't displayed at all, for some reason. And although
`debbugs-gnu.el` does have an extensive 'Commentary' section,
that's not accessible via `describe-package`.
At any rate, thanks for the heads-up about the README; i'll
certainly remember to look for such docs in the future.
> As said, for bugs marked "done" this might be the better
> default. Bugs marked "unreproducible" are prominent candidates
> to be marked also as "done", therefore they shouldn't be
> suppressed I believe.
*nod* Okay, good point.
> Yes, a short message "Control message foo sent" might
> beuseful. Will do.
Thanks!
> I've mentioned the User Guide in the README now. And in the
> Programmer's Guide, I've added a link to the User Guide.
Great, thank you. :-)
Alexis.
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Leaving out non-applicable commands on Mx
2016-01-09 0:55 ` Óscar Fuentes
2016-01-09 1:46 ` John Wiegley
@ 2016-01-09 3:08 ` Drew Adams
2016-01-09 3:33 ` Óscar Fuentes
2016-01-09 9:05 ` Yuri Khan
1 sibling, 2 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-09 3:08 UTC (permalink / raw)
To: Óscar Fuentes, emacs-devel
> On the M-x prompt, the set of candidates is restricted to those that
> make sense given the current context.
Not if a user invokes `M-x' to see which commands are currently
available in general, i.e., as a kind of interactive `apropos'.
(Especially if s?he can hit a key to get help about the command.)
Especially if you have an "advanced completion system" that
lets you (a) match command names more flexibly and (b) narrow
the matches using a succession of patterns.
> Leaving out functions that are
> specific to modes not enabled is a start.
And that's also a feature of some "advanced completion
systems". But it should not (except by user option) be
the default behavior. The default behavior should be all
candidates matching the input patterns and the completion
predicate - no other "helpful" filtering unless requested
by the user.
The command calling `completing-read' or `read-file-name'
(or whatever) should get first shot at specifying the
filtering. And it does that, as usual, with a predicate.
> So if you are editing a C file and press `M-x g' almost
> all gnus* functions shall not be considered as
> candidates for completion.
Yes they should, by default - unless a user has configured
a different behavior.
Emacs is smartest when it doesn't try to outsmart the user;
when it helps the user be smart instead of trying to
second-guess her.
It's about what the user wants, not what an Emacs developer
thinks is clever or is what the user must want.
But hey, I sympathize wrt the many matches of something
like `gnus'. I filter those out by matching & tossing
them - unless I really want to see them for some reason.
Let the specific _command_, first, and the _user_ who
invokes it, second, filter out stuff that is not appropriate.
Please don't decide ahead of time (unless it's through a
specific command) what is appropriate and what is not.
> This is important with advanced completion systems.
See above about "advanced completion systems".
> An example: while working on a org-mode file, if I wish
> to execute org-clock-report I can use its binding:
> "C-c C-x C-r". With ido+flx, I can do "M-x ocr ENTER"
> which, IMO, is superior on each and every aspect.
And? Are you now suggesting that users and libraries
should not bind keys because you are convinced that your
"advanced completion system" is "superior on each and
every aspect"? I hope not.
> The M-x interface can be an improvement over both keybindings and the
> menu on terms of usability, given the correct methods, but having
> thousands of irrelevant candidates every time you invoke M-x is an
> inconvenience for that goal, not to say plain dumb.
Thousands of candidates might be just what a user wants.
But more importantly is to let the _user_ choose which
100 or which 10 of the thousands s?he really wants to
interact with.
Please don't presume to guess, in some general way, how a
user might want to filter candidates.
Specific commands already can, and do, make such judgments
(e.g. only symbols bound to commands are candidates for `M-x).
Leave it up to the command (and to the user who chooses
to use that command) to make such a preliminary judgment.
And more importantly, leave it up to the user to decide
how to subsequently filter the preliminary candidates.
What Emacs could do to help is to:
1. Provide powerful and flexible ways to match, and to
combine multiple match patterns.
2. Provide command-specific keys to use during completion,
to let the user filter in ways that are helpful in the
context of that command.
As one example (and I'm sure there are plenty of others),
Icicles lets you narrow using any number of patterns,
each of which can be a regexp or a fuzzy-match of various
kinds. You can exclude matches as well as including them.
And for buffer-name candidates, for example, you can use
keys to keep or remove the names of buffers in a derived
mode or a given mode or that are already displayed or not.
(You can even provide a filtering predicate interactively,
on the fly, to narrow candidates any fancy way you like.)
What Icicles offers is not the only way to help users
filter. The point is to try to do that, not try to
guess, in some general way, what kind of filtering is
good for them for all commands.
The way to do what you suggest wrt commands that make
sense for a given mode ("leaving out functions that are
specific to modes not enabled is a start") is to let the
user hit a key to do this, i.e., to ask for it on demand,
not to impose it on everyone and everywhere by default.
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Leaving out non-applicable commands on Mx
2016-01-09 1:46 ` John Wiegley
2016-01-09 1:54 ` Spencer Boucher
2016-01-09 2:15 ` Óscar Fuentes
@ 2016-01-09 3:09 ` Drew Adams
2 siblings, 0 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-09 3:09 UTC (permalink / raw)
To: John Wiegley, Óscar Fuentes; +Cc: emacs-devel
> I sense ways in which this could go wrong: expecting to find
> a command, failing for some undiscovered reason X, and then
> the user believing no such command exists.
Yes. And from the outset the user will have only a restricted
view of what commands are currently available, because an Emacs
developer will have made a priori assumptions about which commands
are currently appropriate.
If that's really important for some specific mode then it
is easy enough to implement that for a given mode. It should
not be imposed on all of Emacs (e.g., via `M-x').
The specific command reading input should filter as is
appropriate for it, using a predicate - as has always been
the case. And (IMHO), no such filter is appropriate for
`M-x', which should remain general.
Of course, nothing prevents someone from defining a command
similar to `M-x' but that is more restrictive in the sense
suggested (simple to do). Just please don't bind it by
default to `M-x'.
> Core Emacs behavior doesn't need to change to demonstrate this
> feature, does it? Write a new execute-extended-command and see
> if it works as well as you hope.
Precisely (only please don't call it `execute-extended-command' ;-)).
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Leaving out non-applicable commands on Mx
2016-01-09 1:54 ` Spencer Boucher
@ 2016-01-09 3:09 ` Drew Adams
2016-01-09 3:37 ` Óscar Fuentes
0 siblings, 1 reply; 141+ messages in thread
From: Drew Adams @ 2016-01-09 3:09 UTC (permalink / raw)
To: Spencer Boucher, John Wiegley; +Cc: Óscar Fuentes, emacs-devel
> Smex (https://github.com/nonsequitur/smex/) has a similar function
> that limits to commands in the major mode
> (`smex-major-mode-commands`).
There you go! Wish fulfilled, apparently. Just use Smex to
get what you want.
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Leaving out non-applicable commands on Mx
2016-01-09 2:15 ` Óscar Fuentes
@ 2016-01-09 3:09 ` Drew Adams
2016-01-09 3:49 ` Óscar Fuentes
2016-01-09 4:14 ` Stefan Monnier
1 sibling, 1 reply; 141+ messages in thread
From: Drew Adams @ 2016-01-09 3:09 UTC (permalink / raw)
To: Óscar Fuentes, emacs-devel
> It is necessary to annotate the functions with the context they are
> suppossed to work on. Something like
>
> (defun foo-something ()
> "docstring"
> (interactive)
> (declare this-applies-to-foo-mode)
> ...)
(put 'foo-something 'applies-to-foo-mode)
Or maybe:
(put 'foo-something
(cl-pushnew 'foo-mode (get 'foo-something 'applicable-modes)))
> Doing that for every function is unnecessary work, so a method for
> saying "all the functions defined on this .el file apply to foo-mode,
> except foo-bar and foo-zoo" is a sensible enhancement. (We also could
> exploit the fact that we know wich functions are autoladed. Most
> autoloaded functions are context-free, while the non-autoloaded
> functions on the same file are context-specific).
>
> Maintaining all this information on an external resource is
> unmanageable, it simply wont work.
Why not?
> So yes, the Elisp source files need
> to be annotated (that's the work I'm volunteering for).
If you can annotate them then you can put those annotations
on their symbols as a property used by your new library, no?
> For reading the annotations (and, possibly, for performance reasons,
> applying the filter) modifications are required on some Emacs
> infrastructure.
Why? What's wrong with `(get SYMBOL 'applies-to-foo-mode)'?
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 3:08 ` Drew Adams
@ 2016-01-09 3:33 ` Óscar Fuentes
2016-01-09 9:05 ` Yuri Khan
1 sibling, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-09 3:33 UTC (permalink / raw)
To: emacs-devel
Drew Adams <drew.adams@oracle.com> writes:
[snip]
Instead of rehashing an old discussion, please first read it:
https://lists.gnu.org/archive/html/emacs-devel/2014-12/threads.html#00775
(search for "Ordering of command completions" and start reading the
first message by Lars).
Anyways, it doesn't make sense to discuss defaults for a feature that
does not exist yet. I'm interested on implementing it, not on making it
the default. That's something for the community to discuss once enough
experience is attained.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 3:09 ` Drew Adams
@ 2016-01-09 3:37 ` Óscar Fuentes
0 siblings, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-09 3:37 UTC (permalink / raw)
To: emacs-devel
Drew Adams <drew.adams@oracle.com> writes:
>> Smex (https://github.com/nonsequitur/smex/) has a similar function
>> that limits to commands in the major mode
>> (`smex-major-mode-commands`).
>
> There you go! Wish fulfilled, apparently. Just use Smex to
> get what you want.
That's not it. I want to ignore commands that are *not* *applicable* to
the current *context*. That's quite a difference.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 3:09 ` Drew Adams
@ 2016-01-09 3:49 ` Óscar Fuentes
0 siblings, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-09 3:49 UTC (permalink / raw)
To: emacs-devel
Drew Adams <drew.adams@oracle.com> writes:
[snip]
>> Maintaining all this information on an external resource is
>> unmanageable, it simply wont work.
>
> Why not?
Do I need to explain the difficulties of maintaining information about
the characteristics of a resource outside of where the resource is
defined?
[snip]
>> For reading the annotations (and, possibly, for performance reasons,
>> applying the filter) modifications are required on some Emacs
>> infrastructure.
>
> Why? What's wrong with `(get SYMBOL 'applies-to-foo-mode)'?
The filtering, on its most simplified implementation, would gather the
commands which are declared to be related to any active (major|minor)
mode on the current buffer, plus the commands that are not related to
any mode. Without a perceptible delay by the user. As an Emacs session
can reach tens of thousands of available commands, my guess is that some
new infrastructure (possibly at the C level) is required.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 2:15 ` Óscar Fuentes
2016-01-09 3:09 ` Drew Adams
@ 2016-01-09 4:14 ` Stefan Monnier
1 sibling, 0 replies; 141+ messages in thread
From: Stefan Monnier @ 2016-01-09 4:14 UTC (permalink / raw)
To: emacs-devel
> Doing that for every function is unnecessary work, so a method for
> saying "all the functions defined on this .el file apply to foo-mode,
> except foo-bar and foo-zoo" is a sensible enhancement. (We also could
This is the crucial part, indeed.
> Maintaining all this information on an external resource is
> unmanageable, it simply wont work.
It's better if it's managed directly in the packages's sources, indeed,
but it will still work if the info is only available for some packages,
and for many packages, this info could be managed externally with fairly
little harm.
So while I agree that the right way to do it is "in core", I think it'd
still be useful if packaged as a GNU ELPA package (or a bundled package
but fully self-contained).
Also, the new package could provide some function/macro which core
packages may use conditionally. E.g. Gnus could "declare its
mode-specific commands" using this new macro/function (if/when defined),
so that it provides support for the "filtering-m-x" package.
> So yes, the Elisp source files need to be annotated (that's the work
> I'm volunteering for).
An important part of this work is on the design of the "annotation
system" so that it's lightweight.
E.g. ideally, this same annotation system should be able to wrap the
corresponding commands so that they signal an error if you happen to
trigger them in the wrong mode (currently many commands do such a check
by hand, so the annotation system could *replace* this manual test).
Being "able to" doesn't mean that it should necessarily do so, just that
the design would probably be better if it took into account such
related-but-slightly-different use-cases.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 14:08 ` Phillip Lord
@ 2016-01-09 4:21 ` Andrew Hyatt
2016-01-09 8:42 ` Michael Albinus
0 siblings, 1 reply; 141+ messages in thread
From: Andrew Hyatt @ 2016-01-09 4:21 UTC (permalink / raw)
To: Phillip Lord, Michael Albinus; +Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 2251 bytes --]
On Fri, Jan 8, 2016 at 9:08 AM Phillip Lord <phillip.lord@russet.org.uk>
wrote:
> Michael Albinus <michael.albinus@gmx.de> writes:
>
> > phillip.lord@russet.org.uk (Phillip Lord) writes:
> >
> >>> `debbugs-emacs' would be misleading, because http://debbugs.gnu.org is
> >>> also the bug tracker for other GNU projects.
> >>
> >> Yeah. But if I type M-x debbugs-gnu, I just get emacs bugs right?
> >
> > Emacs is the default package. You can change this by customizing
> > `debbugs-gnu-default-packages'. Or you call interactively
> > "C-u M-x debbugs-gnu".
> >
> > (For all what I claim here: pls blame me if it isn't documented in the
> > User Guide)
>
> I would add a shorter "debbugs". I would be intereted to know how many
> enter via "-org" and how many via "-gnu".
>
FWIW, I found debbugs-org to be a bit buggy after I entered control
messages for what I thought was the bug under the cursor only to find it
sent control messages to a completely different bug. I'll... uh... file a
bug on it or perhaps just fix it once I can reproduce it again.
>
>
>
> >> One document which I think is missing is a "what all the tags" mean.
> >
> > I believe it is covered in the User Guide. If not sufficient, ask for
> > clarification.
>
> invalid? Different from notabug, wontfix, unreproducible?
>
> pending? Pending what? Different from moreinfo?
>
> patch? It includes one? Covers a bug report with a pull request?
>
> And important, minor, normal, serious, wishlist. Is serious more
> important than important? Or Important more serious than serious? What
> criterion?
>
Pretty sure it must go, in order of decreasing severity: serious,
important, normal. Serious probably is reserved for things like emacs
crashing bugs, security vulnerabilities and the like. I don't know whether
there is a rule about this, but I'd guess that new emacs versions shouldn't
be released if any serious bugs are opened against it. Important is a bit
unknown to me, I'm guessing just a bit scarier than the "normal" bugs.
>
> security? valid only for bugs? or wishlists, RFE also?
>
Great questions, and once someone sheds light on the things like invalid
and pending (I have no clue, personally), I'll write up the info in the
bug-triage file.
>
> Phil
>
>
[-- Attachment #2: Type: text/html, Size: 3546 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-07 22:38 ` Phillip Lord
@ 2016-01-09 4:26 ` Andrew Hyatt
2016-01-09 9:20 ` Michael Albinus
0 siblings, 1 reply; 141+ messages in thread
From: Andrew Hyatt @ 2016-01-09 4:26 UTC (permalink / raw)
To: Phillip Lord, emacs-devel
[-- Attachment #1: Type: text/plain, Size: 704 bytes --]
On Thu, Jan 7, 2016 at 5:38 PM Phillip Lord <phillip.lord@russet.org.uk>
wrote:
> Phillip Lord <phillip.lord@russet.org.uk> writes:
>
> > If anyone is willing to hold-my-hand, and take me through the process of
> > fixing a couple of bugs (not the actual bug-hunting, which I can do),
> > I'll write the process up as a short tutorial as I did with for
> > etc/DEBUG. This way I can use my ignorance to good purpose.
>
> Apologies for the spam, I've realised that this has already been done now.
>
I wonder if the admin/notes/bug-triage file should be advertised in some
way in the debbugs-gnu UI. In some sense, it's a help file that especially
new developers diving into the bug system should read.
[-- Attachment #2: Type: text/html, Size: 1104 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 0:22 ` Leaving out non-applicable commands on Mx John Wiegley
2016-01-09 0:55 ` Óscar Fuentes
@ 2016-01-09 8:06 ` Lars Magne Ingebrigtsen
2016-01-09 14:50 ` Óscar Fuentes
2016-01-09 17:32 ` Stefan Monnier
1 sibling, 2 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-09 8:06 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>>> We've discussed before adding mechanisms for leaving mode-specific commands
>>> out, but I was apparently the only one enthusiastic about it...
>
>> You sketched a possible implementation. If you are interested on completing
>> the part that requires a smart hacker, I'll do the part that requires a dumb
>> one :-)
>
> What is this feature suggestion again?
Marking commands as applicable to a mode (or a set of modes) so that
completion doesn't list them outside of those modes.
This requires instrumentation of all interactive commands. :-) But for
virtually all modes, it's just a search and replace action.
Óscar mentioned one syntax suggestion for this:
(defun foo-something (bar)
"docstring"
(interactive "p")
(declare (mode foo))
...)
This would be backwards compatible. The other one is to introduce a new
form `command':
(defun foo-something (bar)
"docstring"
(command 'foo "p")
...)
where the first element is a mode name, or a list of mode names, where
the command applies.
So, three things need to be done:
1) Decide what syntax we want for this (and implement it in Emacs),
2) Alter `M-x' to react to this new data (which will probably be
something in the symbol list, I guess?) to complete only over commands
that are either available globally, or in the current local mode(s).
and then people can calmly
3) Convert all packages in Emacs (mostly with a replace-string) to use
the new syntax, and `M-x' will slowly grow better and better as a tool
to discover commands.
I favour the `command' solution. It looks cleaner as a language
element, especially since virtually (well beyond 90%) every command in
Emacs will have one of these.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-09 4:21 ` Andrew Hyatt
@ 2016-01-09 8:42 ` Michael Albinus
2016-01-11 13:54 ` Phillip Lord
0 siblings, 1 reply; 141+ messages in thread
From: Michael Albinus @ 2016-01-09 8:42 UTC (permalink / raw)
To: Andrew Hyatt; +Cc: emacs-devel, Phillip Lord
Andrew Hyatt <ahyatt@gmail.com> writes:
Hi Andrew,
> FWIW, I found debbugs-org to be a bit buggy after I entered control
> messages for what I thought was the bug under the cursor only to find
> it sent control messages to a completely different bug. I'll... uh...
> file a bug on it or perhaps just fix it once I can reproduce it again.
Do you use the git checkout of debbugs? Note that I concentrate these
days on debbugs.el and debbugs-gnu.el. It might be that debbugs-org.el
is a little bit outdated in the repo. Will fix it before releasing 0.9.
> >> One document which I think is missing is a "what all the tags"
> mean.
> >
> > I believe it is covered in the User Guide. If not sufficient,
> ask for
> > clarification.
>
> invalid? Different from notabug, wontfix, unreproducible?
>
> pending? Pending what? Different from moreinfo?
>
> patch? It includes one? Covers a bug report with a pull request?
Emacs has no special meaning on them. Check the debbugs doc:
<http://debbugs.gnu.org/Developer.html#tags>
"invalid" is declared in debbugs-*.el only. It sets the tags notabug and
wontfix, and closes the bug. See the User Guide.
> And important, minor, normal, serious, wishlist. Is serious more
> important than important? Or Important more serious than serious?
> What
> criterion?
> Pretty sure it must go, in order of decreasing severity: serious,
> important, normal.
Sure.
> Serious probably is reserved for things like emacs
> crashing bugs, security vulnerabilities and the like. I don't know
> whether there is a rule about this, but I'd guess that new emacs
> versions shouldn't be released if any serious bugs are opened against
> it. Important is a bit unknown to me, I'm guessing just a bit scarier
> than the "normal" bugs.
<http://debbugs.gnu.org/Developer.html#severities>
We don't use critical and grave, 'tho.
> security? valid only for bugs? or wishlists, RFE also?
No rule exist yet.
> Great questions, and once someone sheds light on the things like
> invalid and pending (I have no clue, personally), I'll write up the
> info in the bug-triage file.
> Phil
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 3:08 ` Drew Adams
2016-01-09 3:33 ` Óscar Fuentes
@ 2016-01-09 9:05 ` Yuri Khan
2016-01-09 19:27 ` Drew Adams
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
1 sibling, 2 replies; 141+ messages in thread
From: Yuri Khan @ 2016-01-09 9:05 UTC (permalink / raw)
To: Drew Adams; +Cc: Óscar Fuentes, Emacs developers
On Sat, Jan 9, 2016 at 9:08 AM, Drew Adams <drew.adams@oracle.com> wrote:
> And that's also a feature of some "advanced completion
> systems". But it should not (except by user option) be
> the default behavior. The default behavior should be all
> candidates matching the input patterns and the completion
> predicate - no other "helpful" filtering unless requested
> by the user.
Emacs already contains a feature that filters out many defined
functions from M-x. It’s called (interactive). Functions that are not
declared interactive are not offered as completion candidates, and in
fact cannot be executed with M-x.
This proposal takes (interactive) to a new level, by allowing authors
to specify conditions under which a function should be considered
interactive.
True, some authors will get it wrong and specify too strict
conditions. They will eventually be fixed. Also, M-: is still there as
an escape hatch.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-09 4:26 ` Andrew Hyatt
@ 2016-01-09 9:20 ` Michael Albinus
0 siblings, 0 replies; 141+ messages in thread
From: Michael Albinus @ 2016-01-09 9:20 UTC (permalink / raw)
To: Andrew Hyatt; +Cc: emacs-devel, Phillip Lord
Andrew Hyatt <ahyatt@gmail.com> writes:
> I wonder if the admin/notes/bug-triage file should be advertised in
> some way in the debbugs-gnu UI. In some sense, it's a help file that
> especially new developers diving into the bug system should read.
I'm planning to add a menu to the bug reports buffer, it could be an
entry there if the bug reports are about the package "emacs". However,
debbugs comes via ELPA; older Emacsen won't carry that file.
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 8:06 ` Leaving out non-applicable commands on Mx Lars Magne Ingebrigtsen
@ 2016-01-09 14:50 ` Óscar Fuentes
2016-01-09 17:32 ` Stefan Monnier
1 sibling, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-09 14:50 UTC (permalink / raw)
To: emacs-devel
Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
> John Wiegley <jwiegley@gmail.com> writes:
>
>>>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>>
>>>> We've discussed before adding mechanisms for leaving mode-specific commands
>>>> out, but I was apparently the only one enthusiastic about it...
>>
>>> You sketched a possible implementation. If you are interested on completing
>>> the part that requires a smart hacker, I'll do the part that requires a dumb
>>> one :-)
>>
>> What is this feature suggestion again?
>
> Marking commands as applicable to a mode (or a set of modes) so that
> completion doesn't list them outside of those modes.
I envision a somewhat more generic system, where the command can state
that it operates only on read-only buffers, or on buffers that are
visiting a file, or on buffers that are visiting a versioned file. Using
the syntax proposed by Lars:
(declare (type versioned))
or
(command 'versioned "p")
[snip]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 8:06 ` Leaving out non-applicable commands on Mx Lars Magne Ingebrigtsen
2016-01-09 14:50 ` Óscar Fuentes
@ 2016-01-09 17:32 ` Stefan Monnier
2016-01-10 8:53 ` Lars Magne Ingebrigtsen
1 sibling, 1 reply; 141+ messages in thread
From: Stefan Monnier @ 2016-01-09 17:32 UTC (permalink / raw)
To: emacs-devel
> (defun foo-something (bar)
> "docstring"
> (command 'foo "p")
> ...)
I think having to tweak every mode-specific command is going to be
too heavy. We should be able to cut that down drastically by having
a way to say "commands with prefix foo- all all mode-specific except for
those that are marked as being global".
So if we have N local command and M global commands, we replace
N modifications with M+1 modifications. If M>>N that's a big win.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Leaving out non-applicable commands on Mx
2016-01-09 9:05 ` Yuri Khan
@ 2016-01-09 19:27 ` Drew Adams
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
1 sibling, 0 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-09 19:27 UTC (permalink / raw)
To: Yuri Khan; +Cc: Óscar Fuentes, Emacs developers
> > And that's also a feature of some "advanced completion
> > systems". But it should not (except by user option) be
> > the default behavior. The default behavior should be all
> > candidates matching the input patterns and the completion
> > predicate - no other "helpful" filtering unless requested
> > by the user.
>
> Emacs already contains a feature that filters out many defined
> functions from M-x. It’s called (interactive). Functions that are not
> declared interactive are not offered as completion candidates, and in
> fact cannot be executed with M-x.
You are repeating what I said. I said that it already filters
using the predicate appropriate for `M-x' (which is `commandp').
(And in the text you responded to I explicitly said "and the
completion predicate" - which for `M-x' is `commandp'.)
> This proposal takes (interactive) to a new level, by allowing authors
> to specify conditions under which a function should be considered
> interactive.
Authors can already do that for any command they author that
reads command names using completion. They can restrict the
candidate commands to any set they like, using an appropriate
predicate.
That's different from saying that `M-x' should restrict
candidates to only commands that an Emacs developer has
decided, a priori, are the only ones appropriate for the
current context (e.g. mode, buffer, visibility spec, phase
of moon, ... whatever).
The predicate appropriate for `M-x', which can be used in
various ways by users and in many different contexts, is
`commandp'.
But nothing prevents an author from defining a different
command name-reading command that uses a different predicate.
And nothing prevents an author from defining a minibuffer
key that filters `M-x' candidates further (letting the user
decide whether to narrow choices that way).
And nothing prevents an author from binding
`minibuffer-completion-predicate' to a predicate of choice.
Or of binding a completion key (even `TAB') to a command
like `minibuffer-complete' but that uses a different
predicate or that binds `minibuffer-completion-predicate'.
There are all kinds of ways for an author to impose a
different set of command-name completion candidates.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Making `interactive' conditional (was: Leaving out non-applicable commands on Mx)
2016-01-09 9:05 ` Yuri Khan
2016-01-09 19:27 ` Drew Adams
@ 2016-01-09 20:55 ` John Wiegley
2016-01-09 21:53 ` Drew Adams
` (3 more replies)
1 sibling, 4 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-09 20:55 UTC (permalink / raw)
To: Yuri Khan; +Cc: Óscar Fuentes, Drew Adams, Emacs developers
[-- Attachment #1: Type: text/plain, Size: 2521 bytes --]
>>>>> Yuri Khan <yuri.v.khan@gmail.com> writes:
> Emacs already contains a feature that filters out many defined functions
> from M-x. It’s called (interactive). Functions that are not declared
> interactive are not offered as completion candidates, and in fact cannot be
> executed with M-x.
OK Yuri, now you've got me excited. Let's not talk about "filtering M-x";
let's talk about making `interactive' conditional. The former is a UI concern,
while the latter I consider a core API issue.
Right now, functions are interactive if declared with `interactive', and not
otherwise. The suggestion at hand is to allow `interactive' forms to become
conditional -- possibly in multiple ways. I like this concept, and think the
right place for it is indeed in core.
The question is how to declare such conditionality. We can do this rather
easily by accepting new keyword arguments to `interactive':
(interactive "sDirectory: " [:mode foo-mode] [:when <function>])
This way, all new modes can take advantage of this support as it becomes
available. I've already tested on 24.5, and keyword arguments are silently
ignored by present-day GNU Emacs. This gives us transparent compatibility in
both directions. We could also do it with (declare); I'm open to that too, and
it also gives us such compatibility.
At first, I imagine nothing delivered with Emacs will be conditional, because
it requires annotating packages retroactively. We could alleviate some of that
by writing code to automatically consider every interactive function *without
an autoload token* as being conditional on any modes defined in the same
package (likely determined by prefix matching). The use of such automation
would be configurable and off by default, at least until we believe it's ready
for prime-time.
Thus, proper UI behavior for M-x falls out by design, and we get to make use
of conditionality for other purposes, such as better errors when command
functions are called outside their expected environment.
I'm open to a feature branch implementing such conditionality, as a candidate
for merging to master. As described above, I expect the C code impact to be
fairly minimal, and the changes to `M-x' to also be minor. The automation
logic seems like the trickiest part, as it would have to happen whenever a
feature is loaded.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 629 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional (was: Leaving out non-applicable commands on Mx)
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
@ 2016-01-09 21:53 ` Drew Adams
2016-01-11 12:02 ` Drew Adams
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
` (2 subsequent siblings)
3 siblings, 1 reply; 141+ messages in thread
From: Drew Adams @ 2016-01-09 21:53 UTC (permalink / raw)
To: John Wiegley, Yuri Khan; +Cc: Óscar Fuentes, Emacs developers
> Let's not talk about "filtering M-x"; let's talk about making
> `interactive' conditional. The former is a UI concern, while the
> latter I consider a core API issue.
>
> Right now, functions are interactive if declared with `interactive', and
> not otherwise. The suggestion at hand is to allow `interactive' forms to
> become conditional -- possibly in multiple ways. I like this concept,
> and think the right place for it is indeed in core.
>
> The question is how to declare such conditionality. We can do this rather
> easily by accepting new keyword arguments to `interactive':
> (interactive "sDirectory: " [:mode foo-mode] [:when <function>])
>
> This way, all new modes can take advantage of this support as it becomes
> available. I've already tested on 24.5, and keyword arguments are silently
> ignored by present-day GNU Emacs. This gives us transparent compatibility
> in both directions. We could also do it with (declare); I'm open to that too,
> and it also gives us such compatibility.
Is this supposed to affect `interactive' only for minibuffer
input that is read with completion? If not then it's no longer
just about filtering completion candidates.
And in that case, just what is conditional? And what about
interactive uses that do not read input at all? Does it apply
to those cases also?
Are you perhaps suggesting that a given function would not be
a command (not interactive) when the given conditions are not
satisfied?
If so, does that mean that a predicate such as `commandp' would
also test the given conditions in the current context, i.e.,
generally (no matter how/where that predicate is invoked)?
What kinds of predicates (conditions) would be allowed here?
I guess:
. You've indicated (in effect) testing the current mode, which
amounts to a predicate that accepts the mode as argument and
tests with `eq' against the specified `:mode'.
. You've indicated that an arbitrary function could be provided
(after `:when'). It seems this would thus not be a predicate
that is applied to an _individual_ completion candidate. So
if you wanted to use it to filter candidates then it would
presumably need to invoke `all-completions' (or equivalent)
for null input ("") to get all of the initial candidates, and
then explicitly filter them.
Is that what you are suggesting? What you describe is not yet
clear, to me at least.
> At first, I imagine nothing delivered with Emacs will be conditional,
> because it requires annotating packages retroactively.
Doesn't it ("just") require changing `interactive' specs
wherever you want this?
> We could alleviate some of that by writing code to automatically
> consider every interactive function *without an autoload token* as
> being conditional on any modes defined in the same package (likely
> determined by prefix matching).
So you would take the proposal about additional `M-x' filtering
and extend it past `M-x' to all uses of interactive functions?
A priori, the arguments I cited against doing this for `M-x'
would apply a fortiori for such a general treatment. But it's
all too vague for the moment to guess what the consequences
really might be.
In general, my view is:
. If it gives library authors more control over the behavior,
not less, then it's likely a good thing.
. If it gives users even more control over the behavior then
that's likely even better.
. If instead it hard-codes behavior decided ahead of time by
Emacs Dev then it's likely not such a good thing.
> The use of such automation would be configurable
How? By whom? When? (user options? runtime interactively?)
> I'm open to a feature branch implementing such conditionality,
Could you please specify it first, at least in some more
detail than what you've described so far?
I'd start with the question: What is the aim? What is the
real problem that you want to fix, or the needed missing
feature that you want to provide? IOW, what's it for? what
good is it?
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-09 17:32 ` Stefan Monnier
@ 2016-01-10 8:53 ` Lars Magne Ingebrigtsen
2016-01-10 16:05 ` Stefan Monnier
2016-01-10 16:07 ` Stefan Monnier
0 siblings, 2 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-10 8:53 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> I think having to tweak every mode-specific command is going to be
> too heavy. We should be able to cut that down drastically by having
> a way to say "commands with prefix foo- all all mode-specific except for
> those that are marked as being global".
That would certainly help with discoverability of the global
commands, but would it also allow completing over the commands that are
applicable to the current mode(s)? For instance, there are often
commands that apply to similar modes (for instance in the cc-mode
family) that aren't necessarily named what you might think, I think...
One could offer to complete over the keys that are bound in the local
maps, of course.
If one can get this to work, that would be very nice, but I'm not sure
that that it's flexible enough.
> So if we have N local command and M global commands, we replace
> N modifications with M+1 modifications. If M>>N that's a big win.
Sure. But I think this sort of "janitorial" fix-up is something that
appeals to (some) people: They can do something that can be
semi-automated, and have real noticeable progressive impact on Emacs
usability.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
2016-01-09 21:53 ` Drew Adams
@ 2016-01-10 9:02 ` Lars Magne Ingebrigtsen
2016-01-10 10:09 ` Clément Pit--Claudel
` (4 more replies)
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
2016-01-11 6:19 ` Making `interactive' conditional Stefan Monnier
3 siblings, 5 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-10 9:02 UTC (permalink / raw)
To: Emacs developers
John Wiegley <jwiegley@gmail.com> writes:
> Right now, functions are interactive if declared with `interactive', and not
> otherwise. The suggestion at hand is to allow `interactive' forms to become
> conditional -- possibly in multiple ways. I like this concept, and think the
> right place for it is indeed in core.
>
> The question is how to declare such conditionality. We can do this rather
> easily by accepting new keyword arguments to `interactive':
>
> (interactive "sDirectory: " [:mode foo-mode] [:when <function>])
That does sound kinda exciting. To take a random example, `M-x
delete-matching-lines' could have a :when of `buffer-writable-p' and not
auto-complete when in a read-only buffer. Etc.
> This way, all new modes can take advantage of this support as it becomes
> available. I've already tested on 24.5, and keyword arguments are silently
> ignored by present-day GNU Emacs. This gives us transparent compatibility in
> both directions.
Does this also work when transforming (interactive) without parameters,
or do we need to put a nil in there?
> We could also do it with (declare); I'm open to that too, and it also
> gives us such compatibility.
I think the interactive with keywords sounds nice, but both are fine by
me...
> At first, I imagine nothing delivered with Emacs will be conditional, because
> it requires annotating packages retroactively. We could alleviate some of that
> by writing code to automatically consider every interactive function *without
> an autoload token* as being conditional on any modes defined in the same
> package (likely determined by prefix matching). The use of such automation
> would be configurable and off by default, at least until we believe it's ready
> for prime-time.
Hm... I think that sounds a bit too magical to be workable in general.
I may be wrong, but I think that would probably lead to undesirable side
effects (i.e., commands that should be available globally not being
available).
Magic is nice if you can get it to work, but explicit marking is
flexible.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
@ 2016-01-10 10:09 ` Clément Pit--Claudel
2016-01-10 17:55 ` Drew Adams
[not found] ` <CAAdUY-Kfm-0JbOLpi4KE5wkmp6hfG+-y3V-_vTExaFkmF5RmEg@mail.gmail.com>
` (3 subsequent siblings)
4 siblings, 1 reply; 141+ messages in thread
From: Clément Pit--Claudel @ 2016-01-10 10:09 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 1471 bytes --]
On 01/10/2016 04:02 AM, Lars Magne Ingebrigtsen wrote:
> John Wiegley <jwiegley@gmail.com> writes:
>
>> Right now, functions are interactive if declared with `interactive', and not
>> otherwise. The suggestion at hand is to allow `interactive' forms to become
>> conditional -- possibly in multiple ways. I like this concept, and think the
>> right place for it is indeed in core.
>>
>> The question is how to declare such conditionality. We can do this rather
>> easily by accepting new keyword arguments to `interactive':
>>
>> (interactive "sDirectory: " [:mode foo-mode] [:when <function>])
>
> That does sound kinda exciting. To take a random example, `M-x
> delete-matching-lines' could have a :when of `buffer-writable-p' and not
> auto-complete when in a read-only buffer. Etc.
I think this is converging to what Stefan pointed earlier (which I found very convincing/exciting): in its most basic form, this proposal could supersede a lot of ad-hoc checking that many many commands do (by calling `barf-if-buffer-read-only', for example).
Similarly, there are many commands that are marked interactive because they are bound to keys in certain contexts, but make no sense (and will just immediately error out if called from M-x) otherwise. I find it reasonable to think that if a command is just going to exit in error as soon as I call it I probably don't want it to feature prominently among M-x completions.
Cheers,
CLément.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
[not found] ` <CAAdUY-Kfm-0JbOLpi4KE5wkmp6hfG+-y3V-_vTExaFkmF5RmEg@mail.gmail.com>
@ 2016-01-10 12:36 ` Artur Malabarba
0 siblings, 0 replies; 141+ messages in thread
From: Artur Malabarba @ 2016-01-10 12:36 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 1666 bytes --]
On Jan 10, 2016 7:02 AM, "Lars Magne Ingebrigtsen" <larsi@gnus.org> wrote:
>
> John Wiegley <jwiegley@gmail.com> writes:
> >
> > The question is how to declare such conditionality. We can do this
rather
> > easily by accepting new keyword arguments to `interactive':
> >
> > (interactive "sDirectory: " [:mode foo-mode] [:when <function>])
>
> That does sound kinda exciting. To take a random example, `M-x
> delete-matching-lines' could have a :when of `buffer-writable-p' and not
> auto-complete when in a read-only buffer. Etc.
I like this too.
One minor detail: I think I would invert the second keyword (i.e., use
:unless or :error-if, instead of :when). This way the return value of the
function could be used as the error message.
> > We could alleviate some of that
> > by writing code to automatically consider every interactive function
*without
> > an autoload token* as being conditional on any modes defined in the same
> > package (likely determined by prefix matching).
>
> Hm... I think that sounds a bit too magical to be workable in general.
> I may be wrong, but I think that would probably lead to undesirable side
> effects
I agree with Lars, we shouldn't overdo this with magical guesswork. There
are plenty of commands which work outside their major mode. I think that
the point of this feature would be to remove from completion (or signal a
friendly error) commands that would be guaranteed to error out (probably in
some enigmatic way) if invoked outside the expected context.
This includes, for instance, the package-menu commands, which will
immediately barf if the current buffer doesn't contain a tabulated list of
packages.
[-- Attachment #2: Type: text/html, Size: 2078 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional (was: Leaving out non-applicable commands on Mx)
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
2016-01-09 21:53 ` Drew Adams
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
@ 2016-01-10 15:27 ` Alan Mackenzie
2016-01-10 16:47 ` Making `interactive' conditional Óscar Fuentes
` (3 more replies)
2016-01-11 6:19 ` Making `interactive' conditional Stefan Monnier
3 siblings, 4 replies; 141+ messages in thread
From: Alan Mackenzie @ 2016-01-10 15:27 UTC (permalink / raw)
To: Yuri Khan, Drew Adams, Óscar Fuentes, Emacs developers
Hello, John.
On Sat, Jan 09, 2016 at 12:55:28PM -0800, John Wiegley wrote:
> >>>>> Yuri Khan <yuri.v.khan@gmail.com> writes:
> > Emacs already contains a feature that filters out many defined functions
> > from M-x. It’s called (interactive). Functions that are not declared
> > interactive are not offered as completion candidates, and in fact cannot be
> > executed with M-x.
> OK Yuri, now you've got me excited. Let's not talk about "filtering M-x";
> let's talk about making `interactive' conditional. The former is a UI concern,
> while the latter I consider a core API issue.
What you're proposing is exactly "filtering M-x"; censoring it, if you
will; a sort of "not in front of the children" attitude that restricts
what you can see by somebody else's criteria. I think most people on
this list would be opposed to censorship in most areas (for example,
national authorities deciding what part of the WWW is suitable for
browsing). Yet, here we are, talking about introducing the same sort of
thing into Emacs.
This might be OK if the only reason you every use M-x is to execute a
command. But it's not. People (in particular, me) use it to discover
Emacs, to find the exact name of a command which has only vaguely
embedded itself in the memory, to get this name into the kill ring to be
yanked into another source file or into documentation, and so on. Try
M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
:-)
> Right now, functions are interactive if declared with `interactive', and not
> otherwise. The suggestion at hand is to allow `interactive' forms to become
> conditional -- possibly in multiple ways. I like this concept, and think the
> right place for it is indeed in core.
If it is to be implemented, then the right place is indeed in core. But
just because we can implement it doesn't mean we should. It would add,
marginally, to the complexity of Emacs, to the difficulty of learning
it. What do we gain that would offset this loss? What is this feature
for?
People have suggested filtering by mode, by read-onliness, and so on.
Somebody (I think it was Artur M.) even suggested removing initial
checks from commands, on the grounds that M-x filtering would render it
unneeded. I don't think that could ever be the case.
> The question is how to declare such conditionality. We can do this rather
> easily by accepting new keyword arguments to `interactive':
> (interactive "sDirectory: " [:mode foo-mode] [:when <function>])
> This way, all new modes can take advantage of this support as it becomes
> available. I've already tested on 24.5, and keyword arguments are silently
> ignored by present-day GNU Emacs. This gives us transparent compatibility in
> both directions. We could also do it with (declare); I'm open to that too, and
> it also gives us such compatibility.
> At first, I imagine nothing delivered with Emacs will be conditional, because
> it requires annotating packages retroactively. We could alleviate some of that
> by writing code to automatically consider every interactive function *without
> an autoload token* as being conditional on any modes defined in the same
> package (likely determined by prefix matching).
At which point I see the complexity rapidly increasing, unforeseen Bad
Things happening, and generally a lot of pain.
> The use of such automation would be configurable and off by default,
> at least until we believe it's ready for prime-time.
_ANY_ form of censorship must be optional, and not merely up to the
point where some authority decides it's acceptable to impose on the
masses.
> Thus, proper UI behavior for M-x falls out by design, and we get to make use
> of conditionality for other purposes, such as better errors when command
> functions are called outside their expected environment.
Any chance of an example of such an improvement? How are we to improve
on, for example, "Can't execute - not in Foo mode"?
> I'm open to a feature branch implementing such conditionality, as a candidate
> for merging to master. As described above, I expect the C code impact to be
> fairly minimal, and the changes to `M-x' to also be minor. The automation
> logic seems like the trickiest part, as it would have to happen whenever a
> feature is loaded.
Again, what is this feature for? Is it going to make editing easier for
experienced users? Is it really going to attract new users, ones who
would be very happy in Emacs but for the huge number of commands
presented to them in an M-x?
I'm sceptical on both counts.
> --
> John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
> http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
--
Alan Mackenzie (Nuremberg, Germany).
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-09 2:52 ` Alexis
@ 2016-01-10 15:58 ` Michael Albinus
2016-01-11 8:05 ` Alexis
0 siblings, 1 reply; 141+ messages in thread
From: Michael Albinus @ 2016-01-10 15:58 UTC (permalink / raw)
To: Alexis; +Cc: emacs-devel
Alexis <flexibeast@gmail.com> writes:
> Hi Michael,
Hi Alexis,
>> Again, there is the README.
>
> i didn't even think to actively look for a distinct README! i
> typically look for such information by moving point to the package
> name in the `package-list-packages` list, then pressing RET
> (`describe-package`). For the packages i maintain, doing so opens a
> buffer showing, amongst other things, the 'Commentary' section of the
> package headers, which is where i maintain user-level
> documentation. (i use the `el2markdown` package to create a README.md
> file from this section for GitHub.) When i do that for the `debbugs`
> package, the 'Commentary' section of `debbugs.el` isn't displayed at
> all, for some reason. And although `debbugs-gnu.el` does have an
> extensive 'Commentary' section, that's not accessible via
> `describe-package`.
In my Emacs 25.0.50, `describe-package' shows the README of debbugs.
> Alexis.
Best regards, Michael.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-10 8:53 ` Lars Magne Ingebrigtsen
@ 2016-01-10 16:05 ` Stefan Monnier
2016-02-04 3:19 ` Lars Ingebrigtsen
2016-01-10 16:07 ` Stefan Monnier
1 sibling, 1 reply; 141+ messages in thread
From: Stefan Monnier @ 2016-01-10 16:05 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
> That would certainly help with discoverability of the global
> commands, but would it also allow completing over the commands that are
> applicable to the current mode(s)?
I don't see why not. Basically
(new-magic-declare "foo-" <decls>)
would be equivalent to adding
(declare (mode-specific <decls>))
to all commands whose name start with "foo-" and which don't yet have
a (mode-specific ...) declaration.
> For instance, there are often commands that apply to similar modes
> (for instance in the cc-mode family) that aren't necessarily named
> what you might think, I think...
Of course you can have several calls to (new-magic-declare "foo-"
<decls>) for different prefixes, and of course you don't have to use it
(e.g. if there are more exceptions than cases which follow the rule).
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-10 8:53 ` Lars Magne Ingebrigtsen
2016-01-10 16:05 ` Stefan Monnier
@ 2016-01-10 16:07 ` Stefan Monnier
2016-01-10 16:14 ` Óscar Fuentes
1 sibling, 1 reply; 141+ messages in thread
From: Stefan Monnier @ 2016-01-10 16:07 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
> Sure. But I think this sort of "janitorial" fix-up is something that
> appeals to (some) people: They can do something that can be
> semi-automated, and have real noticeable progressive impact on Emacs
> usability.
But if the same rule applies to all N commands, repeating it for every
one of those commands introduces the same old maintainability problem as
copy&paste.
And having to annotate every Emacs package is "janitorial
enough", methinks. There's no need to make it even more tedious.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-10 16:07 ` Stefan Monnier
@ 2016-01-10 16:14 ` Óscar Fuentes
0 siblings, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-10 16:14 UTC (permalink / raw)
To: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> But if the same rule applies to all N commands, repeating it for every
> one of those commands introduces the same old maintainability problem as
> copy&paste.
>
> And having to annotate every Emacs package is "janitorial
> enough", methinks. There's no need to make it even more tedious.
+1
Óscar, the would-be janitor.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
@ 2016-01-10 16:47 ` Óscar Fuentes
2016-01-10 18:23 ` Drew Adams
2016-01-10 18:22 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Drew Adams
` (2 subsequent siblings)
3 siblings, 1 reply; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-10 16:47 UTC (permalink / raw)
To: emacs-devel
Alan Mackenzie <acm@muc.de> writes:
>> OK Yuri, now you've got me excited. Let's not talk about "filtering M-x";
>> let's talk about making `interactive' conditional. The former is a UI concern,
>> while the latter I consider a core API issue.
>
> What you're proposing is exactly "filtering M-x"; censoring it, if you
> will; a sort of "not in front of the children" attitude that restricts
> what you can see by somebody else's criteria. I think most people on
> this list would be opposed to censorship in most areas (for example,
> national authorities deciding what part of the WWW is suitable for
> browsing). Yet, here we are, talking about introducing the same sort of
> thing into Emacs.
The amount of drama an hyperbole in emacs-devel never ceases to surpass
my expectations. On any other place I would read your commentary as
tongue-in-cheek, but not in emacs-devel, I'm afraid... :-)
> This might be OK if the only reason you every use M-x is to execute a
> command. But it's not. People (in particular, me) use it to discover
> Emacs, to find the exact name of a command which has only vaguely
> embedded itself in the memory, to get this name into the kill ring to be
> yanked into another source file or into documentation, and so on. Try
> M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
> :-)
The current implementation of M-x is, possibly, the worst way of
exploring the wealth of Emacs commands. M-x is for *executing* commands,
not for learning about them (unless your learning method consists on
executing commands you don't know about). C-h f, the fine manual or,
better, browsing the sources is what I would do (and have done) for
exploring what Emacs has to offer.
Besides, if you insist on using M-x for learning about new commands, I
suppose that having only those that apply to your current context is
helpful, to say the least.
[snip]
> _ANY_ form of censorship must be optional, and not merely up to the
> point where some authority decides it's acceptable to impose on the
> masses.
To be on the safe side, I propose that we involve the EFF, Amnesty
International, Reporters Without Borders and the Council of Europe,
among others, as overseers of this process.
>> Thus, proper UI behavior for M-x falls out by design, and we get to make use
>> of conditionality for other purposes, such as better errors when command
>> functions are called outside their expected environment.
>
> Any chance of an example of such an improvement? How are we to improve
> on, for example, "Can't execute - not in Foo mode"?
>
>> I'm open to a feature branch implementing such conditionality, as a candidate
>> for merging to master. As described above, I expect the C code impact to be
>> fairly minimal, and the changes to `M-x' to also be minor. The automation
>> logic seems like the trickiest part, as it would have to happen whenever a
>> feature is loaded.
>
> Again, what is this feature for? Is it going to make editing easier for
> experienced users? Is it really going to attract new users, ones who
> would be very happy in Emacs but for the huge number of commands
> presented to them in an M-x?
How user-friendly is to type M-x and be offered with thousands of
commands that have zero relation to the task you are performing? Some of
those commands can cause undesirable effects if you invoke them by
accident, I experienced that as a beginner and is very confusing.
Talking about discoverability and your M-x learning method, if I'm
interested on learning what can I do while editing a C file, how does
help me having to skim over thousands upon thousands of unrelated
commands that only make sense for their respective modes?
Why we hide the menus of the modes that are not active for the current
buffer? Why we have local keymaps? Where were you at the time those
repressing features were imposed on the masses?
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-10 10:09 ` Clément Pit--Claudel
@ 2016-01-10 17:55 ` Drew Adams
0 siblings, 0 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-10 17:55 UTC (permalink / raw)
To: Clément Pit--Claudel, emacs-devel
> I think this is converging to what Stefan pointed earlier (which I found
> very convincing/exciting): in its most basic form, this proposal could
> supersede a lot of ad-hoc checking that many many commands do (by calling
> `barf-if-buffer-read-only', for example).
Those commands still need to do that in their bodies, for the same
reason that a command does it in the body today, even when it might
also do it in the `interactive' form (e.g., to prevent further
processing of an `interactive' form that reads multiple inputs).
Regardless of how or where or why such a function is invoked, it
needs to raise such an error and let the user know what the
invocation problem is.
Preventing a function from being calling incorrectly (in your view)
interactively does not prevent it from being called incorrectly (in
your view) non-interactively.
> Similarly, there are many commands that are marked interactive because
> they are bound to keys in certain contexts, but make no sense (and will
> just immediately error out if called from M-x) otherwise.
The way we handle that normally is for such keys to be bound in a
mode map. If you are in that mode then they are bound to those
context-specific commands; otherwise, no.
In such a case it makes sense to not make those commands available
on key bindings outside of the mode.
That rationale is entirely absent for the case of `M-x', which is
(and should be) completely general.
Leave it to the context-defining mode to decide whether a given
command should be bound in that context. Don't cripple `M-x'.
> I find it reasonable to think that if a command is just going to
> exit in error as soon as I call it I probably don't want it to
> feature prominently among M-x completions.
1. But the proposal now being considered goes far beyond not
showing it as a command-name completion for `M-x'. It is no
longer about the possibility of _completion_ but is instead
about the possibility of _invocation_ - in any way (IIUC).
2. Sometimes a user wants to see what commands exist (e.g. match
a given pattern), whether or not a given command can be used
in the current context.
Completion lets you see what the matching command names are,
irrespective of whether you might want to invoke a particular
one - or any one.
It is up to the particular _command that is completing_
function names to match input to decide whether to remove
some names from the outset.
`M-x' is one particular command that completes function names.
But it is the most general command-invoking command we have.
It should not filter beyond `commandp' at the outset. But a
user could well be given minibuffer keys that let the _user_
filter `M-x' candidates in additional ways.
3. A user might well _want_ to see the specific error message,
in particular because it might not be obvious _why_ (in your
view) a given command name is not available as a candidate.
Making `M-x' filter out certain candidates beforehand tells
the user _nothing_ about (a) whether such commands exist or
(b) why they are currently considered unavailable. IOW,
less help for a user.
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional (was: Leaving out non-applicable commands on Mx)
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
2016-01-10 16:47 ` Making `interactive' conditional Óscar Fuentes
@ 2016-01-10 18:22 ` Drew Adams
2016-01-11 6:29 ` Making `interactive' conditional Stefan Monnier
2016-01-10 18:33 ` Clément Pit--Claudel
2016-01-10 22:28 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Marcin Borkowski
3 siblings, 1 reply; 141+ messages in thread
From: Drew Adams @ 2016-01-10 18:22 UTC (permalink / raw)
To: Alan Mackenzie, Yuri Khan, Óscar Fuentes, Emacs developers
> This might be OK if the only reason you every use M-x is to execute a
> command. But it's not. People (in particular, me) use it to discover
> Emacs, to find the exact name of a command which has only vaguely
> embedded itself in the memory, to get this name into the kill ring to be
> yanked into another source file or into documentation, and so on. Try
> M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
> :-)
Precisely.
(It sounds to me like those who now want to remake/cripple
`M-x' might not even be using it to its ordinary potential.)
> What do we gain that would offset this loss? What is this
> feature for?
Indeed, there has been no spec of what it is for, what
requirement/need it is hoping to satisfy.
> People have suggested filtering by mode, by read-onliness, and so on.
> Somebody (I think it was Artur M.) even suggested removing initial
> checks from commands, on the grounds that M-x filtering would render it
> unneeded. I don't think that could ever be the case.
Indeed. It seems like some people do not see why we raise
an argument error in the function body, and not just in the
`interactive' spec.
> > writing code to automatically consider every interactive function
> > *without an autoload token* as being conditional on any modes
> > defined in the same package (likely determined by prefix matching).
>
> At which point I see the complexity rapidly increasing, unforeseen Bad
> Things happening, and generally a lot of pain.
Ditto. And not only because of corner cases or things that
are not obvious. Mainly because it is a coarse rule - a
hammer, not tweezers or a needle. One size does not fit all.
> > Thus, proper UI behavior for M-x falls out by design, and we
> > get to make use of conditionality for other purposes, such as
> > better errors when command functions are called outside their
> > expected environment.
>
> Any chance of an example of such an improvement? How are we to
> improve on, for example, "Can't execute - not in Foo mode"?
IOW, please specify the dreamt-of feature in some detail.
Hand-waving solicits only "Great idea!" or "Hell no!" -
more noise than light.
> > I'm open to a feature branch implementing such conditionality,
> > as a candidate for merging to master...
Before calling immediately for a pilot implementation,
how about a bit more of a spec of just what is intended?
> Again, what is this feature for?
Yup.
> Is it going to make editing easier for experienced users?
> Is it really going to attract new users, ones who would be
> very happy in Emacs but for the huge number of commands
> presented to them in an M-x?
>
> I'm sceptical on both counts.
And are there perhaps better ways, even perhaps existing
ways, to accomplish the goals? But first, just what are
those goals?
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-10 16:47 ` Making `interactive' conditional Óscar Fuentes
@ 2016-01-10 18:23 ` Drew Adams
2016-01-10 19:31 ` Óscar Fuentes
0 siblings, 1 reply; 141+ messages in thread
From: Drew Adams @ 2016-01-10 18:23 UTC (permalink / raw)
To: Óscar Fuentes, emacs-devel
> > This might be OK if the only reason you every use M-x is to execute a
> > command. But it's not. People (in particular, me) use it to discover
> > Emacs, to find the exact name of a command which has only vaguely
> > embedded itself in the memory, to get this name into the kill ring to be
> > yanked into another source file or into documentation, and so on. Try
> > M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
> > :-)
>
> The current implementation of M-x is, possibly, the worst way of
> exploring the wealth of Emacs commands.
I disagree strongly. With good ways to match, and especially
with the ability to narrow (e.g. what is provided by Icicles
and Helm, and possibly other completion contexts), it is far
better, not worse, than `apropos-command' - for example.
Interactive, incremental, on-demand help of different degrees.
It is a fantastic tool for _discovery_ - another
Emacs-needs-better theme that has been brought up recently.
> M-x is for *executing* commands,
> not for learning about them (unless your learning method consists on
> executing commands you don't know about).
Very wrong. `M-x' is for lots of things. And discovery,
even for the limited completion that vanilla Emacs offers,
is one of the most important.
Don't you ever use `C-h f' or `C-h v' to discover/explore
(even for spelling information)?
Are you going to go whole-hog on this new idea, and so
decide to limit the completion candidates for `C-h f' to
only the functions that some Emacs Dev programmer decided
are "appropriate" for the current context?
I hope not. I would hope that you see the point of
showing a user all of the function names that match the
current input.
> C-h f, the fine manual or,
> better, browsing the sources is what I would do (and have done) for
> exploring what Emacs has to offer.
See above. If it is such a great idea to let Emacs Dev
predetermine which commands are appropriate for the current
`M-x' context, then why limit this great feature to `M-x'?
Surely `C-h f' and `C-h v' and ... can be enhanced the same
way?
Even thinking that Emacs Dev can specify what constitutes
"the current context" for a given user is presumptuous.
Not only does it depend on many tangible factors - more
than just the current mode(s). It depends also on intangible
factors - in particular the user's current aim/intention.
Let's not be so presumptuous. Instead, if we provide
guesses to try to help, let a user choose our guesses,
instead of imposing them. And even more importantly, let
users ignore our brilliant guesses and decide for
themselves what they consider the "current context" to be.
Let _users_ filter, on demand. Provide different, useful
ways for them to quickly and powerfully filter candidates
out/in, thus shaping the set of candidates (and thus
defining the context!), _themselves_.
Icicles and Helm have tried to do exactly that, and have
succeeded to some extent. Let's move in the direction
of giving users _more_ control, and faster and more
powerful control - not in the direction of supposing,
at code time, that we know what's good for them.
> Besides, if you insist on using M-x for learning about new commands, I
> suppose that having only those that apply to your current context is
> helpful, to say the least.
Sure. But WHO decides just what the "current context" means,
and when? Is it the currently invoked command that is reading
your input that decides? Can the user decide, interactively?
Or is it some Emacs maintainer who goes over all of the commands
in a wholesale fashion, applying some simplistic rule ahead of
time, prior to even distributing Emacs to users?
No one has spoken against being able to filter `M-x' candidates
to fit the user's current context.
[Please read that again, if it's not clear.]
The question is how what constitutes the "current context" is
determined/decided, and by whom, and when.
> > Again, what is this feature for? Is it going to make editing easier for
> > experienced users? Is it really going to attract new users, ones who
> > would be very happy in Emacs but for the huge number of commands
> > presented to them in an M-x?
>
> How user-friendly is to type M-x and be offered with thousands of
> commands that have zero relation to the task you are performing?
If that's what you're doing then I submit that maybe you are
not using `M-x' as well as you might. (Unless for some reason
you want to see those thousands.)
[And aside from considering `M-x' for this, I would hope that
you would have something more specific than just `M-x' to use,
to help you carry out the "task you are performing". If you
are using `M-x' only to invoke commands, and you are using
only or mainly `M-x' to invoke commands, then something is
missing.]
You should be able to quickly & easily filter `M-x' candidates
by pattern matching. And hopefully you would be able to also
filter them with additional conditions/predicates.
But YOU should be able to do that, together with the invoked
command (`M-x' in this case, which already filters using
`commandp') - not just some hard-coded filtering done at
code time.
_Late binding_ is a user's friend, especially for a user of
an interactive, self-documenting, and extensible environment
such as Emacs.
Lifting such decisions to the earliest possible stage, code
time, is going backward. Let's concentrate, instead, on
giving users _more_, not less, control over the set of
completion candidates.
Let's help users filter more powerfully, instead of
hard-coding what we think is the right filtering them.
Let users decide.
> Some of those commands can cause undesirable effects if you
> invoke them by accident,
Too vague. If so, then fix those particular commands.
Make sure that the commands themselves take care of the
context in which they are invoked.
Let's not try to solve _that_ problem using a
one-size-fits-all, abstract, general rule, applied at
code time to a huge code base.
> I experienced that as a beginner and is very confusing.
When that happens, file a bug report so we can fix that
command. Such a problem is particular to _that_ command
and should be fixed in a way that is appropriat to _it_.
> Talking about discoverability and your M-x learning method, if I'm
> interested on learning what can I do while editing a C file, how does
> help me having to skim over thousands upon thousands of unrelated
> commands that only make sense for their respective modes?
No one is arguing that you should need to scan thousands
of unrelated commands. The question is _how_ to determine
which commands _you_ want to see in the _current context_.
That question needs to be answered with finesse, not just
using a sledge hammer. And the best way to start answering
it is to give _you_, the user, great ways to filter
interactively.
_You_ should decide just how you see the current context,
what you see it to be. Emacs should not be second-guessing
you about that.
There are many users and many use cases for something
even as simple as `M-x'. Do not presume to guess what
is good for everyone.
> Why we hide the menus of the modes that are not active for the current
> buffer? Why we have local keymaps? Where were you at the time those
> repressing features were imposed on the masses?
Modes and buffers and such are useful ways to categorize
or define contexts. And there are others. We could do
with some more (IMO). (Common Lisp "packages", i.e.,
namespaces is one.)
But looking for ways to precisely specify a context is
_opposite_ to what is being proposed here. What is being
proposed here is to _interpret_ the absence of a context
specification as a particular context, ahead of time.
You cannot (should not) assume that the only appropriate
user context for `M-x' is the current major mode (or
that mode plus the current minor modes).
`M-x' is completely general, and it should remain so.
Nothing prevents a mode or library from defining a
different command that reads command names and invokes
one that is chosen by the user, and that imposes a
particular interpretation of the current context, i.e.,
provides only certain command names as candidates.
That's exactly what's called for - not breaking the
legs off of `M-x' to make it fit some rigid mold.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
2016-01-10 16:47 ` Making `interactive' conditional Óscar Fuentes
2016-01-10 18:22 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Drew Adams
@ 2016-01-10 18:33 ` Clément Pit--Claudel
2016-01-10 22:28 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Marcin Borkowski
3 siblings, 0 replies; 141+ messages in thread
From: Clément Pit--Claudel @ 2016-01-10 18:33 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 1027 bytes --]
On 01/10/2016 10:27 AM, Alan Mackenzie wrote:
> This might be OK if the only reason you every use M-x is to execute a
> command. But it's not. People (in particular, me) use it to discover
> Emacs, to find the exact name of a command which has only vaguely
> embedded itself in the memory, to get this name into the kill ring to be
> yanked into another source file or into documentation, and so on. Try
> M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
> :-)
Funny, that doesn't work at all for me. In particular because M-x already heavily "censors" its results by only proposing interactive candidates. So I use C-h f instead. And even then that doesn't work great, because often it's in a package that isn't loaded (see my recent thread about pulse.el :/)
When I'm specifically looking for a command, I use M-x; and it works well right after starting Emacs (I get only autoloaded commands plus a few already loaded things). After a few hours, the M-x list becomes huge and cluttered.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 18:23 ` Drew Adams
@ 2016-01-10 19:31 ` Óscar Fuentes
2016-01-10 22:40 ` Drew Adams
0 siblings, 1 reply; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-10 19:31 UTC (permalink / raw)
To: emacs-devel
Drew Adams <drew.adams@oracle.com> writes:
[snip]
>> M-x is for *executing* commands,
>> not for learning about them (unless your learning method consists on
>> executing commands you don't know about).
>
> Very wrong. `M-x' is for lots of things. And discovery,
> even for the limited completion that vanilla Emacs offers,
> is one of the most important.
The fact that M-x shows a list of candidates does not make it an
adequate tool for discovering. The fact that it lists *everything*,
regardless of what yo are doing at the moment, less so.
> Don't you ever use `C-h f' or `C-h v' to discover/explore
> (even for spelling information)?
I'm talking about M-x. `C-h *' is a different thing.
> Are you going to go whole-hog on this new idea, and so
> decide to limit the completion candidates for `C-h f' to
> only the functions that some Emacs Dev programmer decided
> are "appropriate" for the current context?
AFAIK, nobody suggested changing `C-h *', you just introduced that
topic. Please don't do that. It is not a constructive way of discussing
technical matters.
[snip]
> Even thinking that Emacs Dev can specify what constitutes
> "the current context" for a given user is presumptuous.
But it is not presumptuous to put code in the command that checks the
context and errors out if it it not the correct one. That's something
decided by the developer, right? Overriding checks that throws errors as
something beyond the reach of the ordinary user, overriding the M-x
filter is one customization change away (in case it was active, to begin
with). So I don't understand what you are worried about.
> Not only does it depend on many tangible factors - more
> than just the current mode(s). It depends also on intangible
> factors - in particular the user's current aim/intention.
But you are not opposed to checks in the commands about its
applicability. If a command has a check that errors out on non-editable
buffers, what's wrong with not showing that command on M-x on that
circunstance? If the user expects to see the command, he can use C-h f
to check its docstring and learn about its restrictions.
> Let's not be so presumptuous. Instead, if we provide
> guesses to try to help, let a user choose our guesses,
> instead of imposing them. And even more importantly, let
> users ignore our brilliant guesses and decide for
> themselves what they consider the "current context" to be.
>
> Let _users_ filter, on demand. Provide different, useful
> ways for them to quickly and powerfully filter candidates
> out/in, thus shaping the set of candidates (and thus
> defining the context!), _themselves_.
Again, you are arguing about something that you made up. As mentioned
several times, it is not decided (not even discussed, except by you) if
the feature will be activated by default.
> Icicles and Helm have tried to do exactly that, and have
> succeeded to some extent. Let's move in the direction
> of giving users _more_ control, and faster and more
> powerful control - not in the direction of supposing,
> at code time, that we know what's good for them.
Annotating commands with information about its applicability is
something that gives users more control, because they have more
knowledge and can process it to taylor their needs. Operating solely on
the command names (prefixes that match mode names, etc) are hacks that
work on arbitrary premises.
>> Besides, if you insist on using M-x for learning about new commands, I
>> suppose that having only those that apply to your current context is
>> helpful, to say the least.
>
> Sure. But WHO decides just what the "current context" means,
> and when? Is it the currently invoked command that is reading
> your input that decides? Can the user decide, interactively?
>
> Or is it some Emacs maintainer who goes over all of the commands
> in a wholesale fashion, applying some simplistic rule ahead of
> time, prior to even distributing Emacs to users?
>
> No one has spoken against being able to filter `M-x' candidates
> to fit the user's current context.
But what me (and Lars, and most people here, AFAIU) are proposing is,
precisely, making possible to filter M-x candidates!
The recent proposal about using this feature in place of tests that
error out when the context is not the expected one, is a new
development. I'm not much convinced about that, btw.
> [Please read that again, if it's not clear.]
>
> The question is how what constitutes the "current context" is
> determined/decided, and by whom, and when.
By the developer, of course. The same person who wrote the command and
knows how and when it is correct to use it.
>> How user-friendly is to type M-x and be offered with thousands of
>> commands that have zero relation to the task you are performing?
>
> If that's what you're doing then I submit that maybe you are
> not using `M-x' as well as you might. (Unless for some reason
> you want to see those thousands.)
I'm not interested on seeing thousands of commands, not. I use M-x to
find a command on the provided list. If the list contains many commands,
it will be more difficult to find your command, no matter how smart is
your completion method. The fact that the set of available commands
grows with time, as more and more packages are `require'd by your Emacs
session, makes things worse.
> [And aside from considering `M-x' for this, I would hope that
> you would have something more specific than just `M-x' to use,
> to help you carry out the "task you are performing". If you
> are using `M-x' only to invoke commands, and you are using
> only or mainly `M-x' to invoke commands, then something is
> missing.]
As I mentioned on other messages, M-x with the correct UI is often more
convenient than keybindings and menus on usability terms (ergonomics,
discoverability, mnemonics). On that aspect, M-x is severely handicapped
by the presence of a growing large number of irrelevant candidates.
> You should be able to quickly & easily filter `M-x' candidates
> by pattern matching. And hopefully you would be able to also
> filter them with additional conditions/predicates.
Precisely, I use ido+flx for that, and it works great up to some extent
(see above). But ido (and helm, and Icicles, I guess) work on command
names, which is quite limiting. A hack, really.
[snip]
> Lifting such decisions to the earliest possible stage, code
> time, is going backward. Let's concentrate, instead, on
> giving users _more_, not less, control over the set of
> completion candidates.
>
> Let's help users filter more powerfully, instead of
> hard-coding what we think is the right filtering them.
> Let users decide.
You are misunderstanding the whole issue. Annotating the commands gives
more information, hence more power, to the users. It is up to them to
how to use that information. Emacs will provide the necessary
infrastructure to filter commands on that annotations, but that's all.
Sorry for not commenting on the rest of your message. I'm bit busy now.
But this:
> You cannot (should not) assume that the only appropriate
> user context for `M-x' is the current major mode (or
> that mode plus the current minor modes).
Again, nobody said or implied what you say above. You are making that
up. Please try to understand what we are discussing here before wasting
your energies fighting something that does not exist. Same for the rest
of your message starting on that paragraph.
[snit]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional (was: Leaving out non-applicable commands on Mx)
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
` (2 preceding siblings ...)
2016-01-10 18:33 ` Clément Pit--Claudel
@ 2016-01-10 22:28 ` Marcin Borkowski
3 siblings, 0 replies; 141+ messages in thread
From: Marcin Borkowski @ 2016-01-10 22:28 UTC (permalink / raw)
To: Alan Mackenzie
Cc: Óscar Fuentes, Emacs developers, Drew Adams, Yuri Khan
On 2016-01-10, at 16:27, Alan Mackenzie <acm@muc.de> wrote:
> [...] I think most people on
> this list would be opposed to censorship in most areas [...]
For the record, maybe most people, but definitely not all. There are
a few cases when I'm fine with (and in fact, I'm really for) censorship.
> [...] Try
> M-x <tab> <prior> sometime, and explore the wealth of Emacs commands.
> :-)
Wow, that was cool! Thanks!
> Again, what is this feature for? Is it going to make editing easier for
> experienced users? [...]
Yes (though marginally, I admit) - by enabling one to select the needed
command faster.
Best,
--
Marcin Borkowski
http://octd.wmi.amu.edu.pl/en/Marcin_Borkowski
Faculty of Mathematics and Computer Science
Adam Mickiewicz University
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-10 19:31 ` Óscar Fuentes
@ 2016-01-10 22:40 ` Drew Adams
2016-01-10 23:19 ` Óscar Fuentes
0 siblings, 1 reply; 141+ messages in thread
From: Drew Adams @ 2016-01-10 22:40 UTC (permalink / raw)
To: Óscar Fuentes, emacs-devel
> >> M-x is for *executing* commands,
> >> not for learning about them (unless your learning method
> >> consists on executing commands you don't know about).
> >
> > Very wrong. `M-x' is for lots of things. And discovery,
> > even for the limited completion that vanilla Emacs offers,
> > is one of the most important.
>
> The fact that M-x shows a list of candidates does not make it an
> adequate tool for discovering. The fact that it lists *everything*,
> regardless of what yo are doing at the moment, less so.
>
> > Don't you ever use `C-h f' or `C-h v' to discover/explore
> > (even for spelling information)?
>
> I'm talking about M-x. `C-h *' is a different thing.
Why is it different, in terms of discovery? Why wouldn't
your same arguments ("The fact that it lists *everything*,
regardless of what yo are doing at the moment" etc.) apply
to `C-h f'?
> > Are you going to go whole-hog on this new idea, and so
> > decide to limit the completion candidates for `C-h f' to
> > only the functions that some Emacs Dev programmer decided
> > are "appropriate" for the current context?
>
> AFAIK, nobody suggested changing `C-h *', you just introduced that
> topic. Please don't do that. It is not a constructive way of
> discussing technical matters.
Sure it is. Don't your same arguments apply? Why should
we stop at `M-x'? Seems to me that the same arguments for
and against the proposal apply here as well. Can you point
out something different in this regard?
> > Even thinking that Emacs Dev can specify what constitutes
> > "the current context" for a given user is presumptuous.
>
> But it is not presumptuous to put code in the command that
> checks the context and errors out if it it not the correct one.
No, it is not. Users can pick and choose commands and key
bindings to use. The _very general_ command
`execute-extended-command' (`M-x') has much wider scope.
Much greater damage, if your presumption is off the mark.
> > Not only does it depend on many tangible factors - more
> > than just the current mode(s). It depends also on intangible
> > factors - in particular the user's current aim/intention.
>
> But you are not opposed to checks in the commands about its
> applicability. If a command has a check that errors out on
> non-editable buffers, what's wrong with not showing that
> command on M-x on that circunstance?
I already answered that. (1) The command needs to raise
that error anyway - it won't necessarily be invoked by `M-x'.
(2) Such a particular command does not have as part of its
mission to show users which commands have names matching
given input. `M-x' does. And I gave additional reasons.
Feel free to read what I've already written.
> > Let _users_ filter, on demand. Provide different, useful
> > ways for them to quickly and powerfully filter candidates
> > out/in, thus shaping the set of candidates (and thus
> > defining the context!), _themselves_.
>
> Again, you are arguing about something that you made up. As mentioned
> several times, it is not decided (not even discussed, except by you) if
> the feature will be activated by default.
Oh, so the talk about binding this behavior to `M-x' does not
apply? I made that up? Great to hear. We can all forget
about that then.
Let me clear: (1) It should not be activated by default.
(2) If Emacs Dev is convinced that this is a great idea then
it can create a _new) command that implements it. There is
no reason to hijack `execute-extended-command' for this.
And there is certainly no reason to hijack `M-x' for it.
Provide the new and wonderful behavior in a new command, and
let users come to love it on their own and bind it to whatever
keys they like.
In a decade or two we can decide whether it should become
the new norm. Just like other innovations (and some of them
have been left by the wayside). Perhaps, as an Ido user, you
are desirous for Ido to become the new norm for minibuffer
input, and perhaps someday it will. But you'll notice that
we didn't just switch the default behavior to it the day it
rolled off the press.
This new behavior hasn't rolled off the press. It hasn't
even been described clearly yet. But we do seem to be
talking about changing `execute-extended-command' (`M-x'),
AFAICS. (Yes, John asked that this be done in a sandbox,
for now. That's one good thing, at least.)
> > Icicles and Helm have tried to do exactly that, and have
> > succeeded to some extent. Let's move in the direction
> > of giving users _more_ control, and faster and more
> > powerful control - not in the direction of supposing,
> > at code time, that we know what's good for them.
>
> Annotating commands with information about its applicability is
> something that gives users more control, because they have more
> knowledge and can process it to taylor their needs.
I have not objected to associating any such info with commands.
I might have something to say about how that is done, but I
don't object to our doing so, as long as this is open to users
as well: to add, subtract, and modify such associations.
> Operating solely on the command names (prefixes that match
> mode names, etc) are hacks that work on arbitrary premises.
I described a lot more in the way of interactive filtering
than filtering by mode name. Please read what I wrote.
And beyond the examples I gave or other examples that may
already be realized here or there, the possibilities are
endless. The point is to let _users_ filter easily, in
various ways.
> > No one has spoken against being able to filter `M-x'
> > candidates to fit the user's current context.
>
> But what me (and Lars, and most people here, AFAIU) are
> proposing is, precisely, making possible to filter M-x candidates!
As I understand it, the proposal is not about _users_
filtering the candidates, especially interactively.
The proposal is for, in effect, a code-time filtering
by Emacs Dev.
There's a world of difference between the two. And again,
I'm not against Emacs Dev coming up with its best behavior
in this regard, and then _letting users choose_ to experiment
with the resulting _new_ command. But I am not in favor of
it hijacking `M-x' for this new (and so far vaguely specified)
pie in the sky.
> The recent proposal about using this feature in place of tests that
> error out when the context is not the expected one, is a new
> development. I'm not much convinced about that, btw.
As I stated:
1. You cannot, in any case, do without the error-raising code
in the command bodies (and it was argued that you would be
able to, as if that would be a great savings). Commands
can be invoked in various ways, and such errors need to be
raised.
2. It is not always an improvement to prevent a user from
raising an error. It can be helpful for a user to see an
error message. When a given command is _not_ present as a
completion candidate you have no way of knowing why (or
even whether the command exists).
[FWIW, I argued something similar against the sequential
fall-through behavior of `completion-styles', with no user
feedback as to which completion styles failed and which
style ultimately succeeded. Learning that something does
_not_ work can be helpful.]
> > The question is how what constitutes the "current context" is
> > determined/decided, and by whom, and when.
>
> By the developer, of course. The same person who wrote the command and
> knows how and when it is correct to use it.
User first, command-developer second, Emacs Dev last.
No one has objected to the developer of a command defining
it so that it reads input with completion and so that the
completion candidates are limited to whatever the developer
thinks is appropriate.
Developers already do that, using a predicate with
`completing-read' or `read-file-name'.
But why should a developer of command `foo' decide whether
a user can see the command _name_ `foo' as an `M-x'
candidate? Let the user decide what command names to show -
just as s?he does using pattern-matching.
> As I mentioned on other messages, M-x with the correct UI is often more
> convenient than keybindings and menus on usability terms (ergonomics,
> discoverability, mnemonics). On that aspect, M-x is severely handicapped
> by the presence of a growing large number of irrelevant candidates.
That seems to be what is behind your use case, indeed.
If you use only `M-x' to invoke commands then yes, I can
see why you might regard it as too blunt a hammer. Most
users use additional key bindings to invoke commands, not
just `M-x'.
You can use `M-x' for nearly everything, if you are so
inclined (but you still need at least some keys bound to
a command such as `self-insert-command', even just to
enter input for `M-x'.)
[You could be even more ascetic, and limit yourself to only
Icicles key completion - only key `S-TAB'. That lets you
invoke any command, including character-insertion.
http://www.emacswiki.org/emacs/Icicles_-_Key_Completion#ThreeKeyEmacs]
But why would you, when you can make use of multiple keys?
Your answer is that, in your setup, `M-x' lets you abbreviate
command names radically, and using abbreviated command names
is handier than using multiple keys. That's to be counted
as one user's interesting preference, but it is hardly a
common one.
> > You should be able to quickly & easily filter `M-x' candidates
> > by pattern matching. And hopefully you would be able to also
> > filter them with additional conditions/predicates.
>
> Precisely, I use ido+flx for that, and it works great up to
> some extent (see above). But ido (and helm, and Icicles, I
> guess) work on command names, which is quite limiting.
> A hack, really.
I can't speak for Helm, but I've already said that Icicles
does _not_ limit you to pattern-matching (for command names
or anything else). You can filter, on the fly, using
arbitrary predicates.
But the point is not what is available today but where Emacs
could head. Instead of what is currently being proposed,
I'd sooner see making it easy for _users_ to be able to
filter powerfully and flexibly. And no, I'm not talking
only about matching candidate names.
> > Lifting such decisions to the earliest possible stage, code
> > time, is going backward. Let's concentrate, instead, on
> > giving users _more_, not less, control over the set of
> > completion candidates.
> >
> > Let's help users filter more powerfully, instead of
> > hard-coding what we think is the right filtering them.
> > Let users decide.
>
> You are misunderstanding the whole issue. Annotating the commands gives
> more information, hence more power, to the users. It is up to them to
> how to use that information. Emacs will provide the necessary
> infrastructure to filter commands on that annotations, but that's all.
I'll be glad to find that I have misunderstood, but so far
I don't think so. If the only change is to "annotate"
existing functions (and why stop with just commands?) with
additional information about contexts where Emacs Dev thinks
their invocation might be especially useful, I have nothing
against that.
But note the qualifiers: "might be especially useful".
This can only be a code-time developer guess, at best.
That's a far cry from making `M-x' obey such annotations,
treating them as restrictions: hard, predefined filtering.
And I do think I understand the current proposal when I
think that it is about predefined `M-x' filtering, and
not just annotating functions with suggestive context info.
> > You cannot (should not) assume that the only appropriate
> > user context for `M-x' is the current major mode (or
> > that mode plus the current minor modes).
>
> Again, nobody said or implied what you say above. You are making that
> up. Please try to understand what we are discussing here before wasting
> your energies fighting something that does not exist. Same for the rest
> of your message starting on that paragraph.
We disagree. It seems pretty clear to me that the proposal
is about `M-x' filtering, not just about annotating functions
with suggested context information.
But it also seems clear that the proposal is, so far, quite
vague.
Just what kind of annotation and how it will be specified
(associated with commands), and what kind of `M-x'
filtering and how it will (or won't) be controlled by users -
such things have not been specified clearly, if at all.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 22:40 ` Drew Adams
@ 2016-01-10 23:19 ` Óscar Fuentes
0 siblings, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-10 23:19 UTC (permalink / raw)
To: emacs-devel
Drew Adams <drew.adams@oracle.com> writes:
[snip]
> We disagree. It seems pretty clear to me that the proposal
> is about `M-x' filtering, not just about annotating functions
> with suggested context information.
The M-x filtering will be optional. Without activating the filtering,
M-x will behave exactly as it does now.
Given this premise, it is obvious that your worries are unfounded.
> But it also seems clear that the proposal is, so far, quite
> vague.
>
> Just what kind of annotation and how it will be specified
> (associated with commands), and what kind of `M-x'
> filtering and how it will (or won't) be controlled by users -
> such things have not been specified clearly, if at all.
The proposal, as far as I'm concerned, and as Lars stated it, is about
M-x (optionally!) displaying only those commands that are associated to
the active major/minor modes on the current buffer, plus the "global"
commands (`dired', etc). I extended the proposal to cover other
qualities, such as if the buffer is read-only, if it is visiting a file,
etc. For achieving that it is necessary to annotate the commands with
the required info.
What's not clear about that proposal?
Others proposed to use the scheme for doing others things, but that's
not the original proposal which I (and Lars, AFAIU) plan to implement.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
2016-01-10 10:09 ` Clément Pit--Claudel
[not found] ` <CAAdUY-Kfm-0JbOLpi4KE5wkmp6hfG+-y3V-_vTExaFkmF5RmEg@mail.gmail.com>
@ 2016-01-11 3:46 ` Richard Stallman
2016-01-11 15:13 ` Lars Magne Ingebrigtsen
2016-01-11 6:13 ` Stefan Monnier
2016-01-12 2:14 ` Clément Pit--Claudel
4 siblings, 1 reply; 141+ messages in thread
From: Richard Stallman @ 2016-01-11 3:46 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
[[[ To any NSA and FBI agents reading my email: please consider ]]]
[[[ whether defending the US Constitution against all enemies, ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]
I think it is a bad idea to make the interactive nature of a command
conditional. If the user types a command's name after M-x,
it should always call the command.
I think it is reasonable to omit commands from M-x's completion,
but refusing to run them is going to far in imposing on the user.
--
Dr Richard Stallman
President, Free Software Foundation (gnu.org, fsf.org)
Internet Hall-of-Famer (internethalloffame.org)
Skype: No way! See stallman.org/skype.html.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
` (2 preceding siblings ...)
2016-01-11 3:46 ` Richard Stallman
@ 2016-01-11 6:13 ` Stefan Monnier
2016-01-11 6:48 ` Óscar Fuentes
2016-01-11 15:15 ` Lars Magne Ingebrigtsen
2016-01-12 2:14 ` Clément Pit--Claudel
4 siblings, 2 replies; 141+ messages in thread
From: Stefan Monnier @ 2016-01-11 6:13 UTC (permalink / raw)
To: emacs-devel
> That does sound kinda exciting. To take a random example, `M-x
> delete-matching-lines' could have a :when of `buffer-writable-p' and not
> auto-complete when in a read-only buffer. Etc.
I'd be wary of going too far down that road: I often want to modify
read-only buffers 'cause I hadn't realized they're still read-only.
In that case, not finding the command in M-x would make me lose a lot
more time (looking for the damn command, under the assumption that
I just misremember it) than getting a clear "beep! buffer is
read-only!" after which I can C-x C-q and move on.
> Hm... I think that sounds a bit too magical to be workable in general.
That's exactly what I thought when I read the suggestion to omit
delete-matching-lines in read-only buffers.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
` (2 preceding siblings ...)
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
@ 2016-01-11 6:19 ` Stefan Monnier
2016-01-19 6:24 ` John Wiegley
3 siblings, 1 reply; 141+ messages in thread
From: Stefan Monnier @ 2016-01-11 6:19 UTC (permalink / raw)
To: emacs-devel
> Right now, functions are interactive if declared with `interactive', and not
> otherwise. The suggestion at hand is to allow `interactive' forms to become
> conditional -- possibly in multiple ways. I like this concept, and think the
> right place for it is indeed in core.
Note that it turns `commandp' from a pure function to an impure one.
I think that pretending that "foo" is not interactive just because you're
not in the right context is going too far.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 18:22 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Drew Adams
@ 2016-01-11 6:29 ` Stefan Monnier
2016-01-11 11:48 ` Drew Adams
0 siblings, 1 reply; 141+ messages in thread
From: Stefan Monnier @ 2016-01-11 6:29 UTC (permalink / raw)
To: emacs-devel
> Indeed, there has been no spec of what it is for, what
> requirement/need it is hoping to satisfy.
My interest in tweaking M-x is the following:
To rely less on key-bindings, and more on running commands by name, you
want M-x's completion to be more efficient.
Furthermore, there are many cases where I can't remember the exact name
of the command I want to use, and I think that in some significant cases
stripping away currently-invalid commands can help noticeably in
trying to find the right command.
Indeed, that would be an impediment when you want to just explore the
wealth of commands (not to run it right now, but for some other purpose,
in which case you don't want to filter out currently-invalid commands).
Maybe we should/could add a `describe-command' for that use case.
In any case, this discussion is not about changing the default M-x, but
about experimenting with a new M-x, probably offered as a GNU
ELPA package.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-11 6:13 ` Stefan Monnier
@ 2016-01-11 6:48 ` Óscar Fuentes
2016-01-11 14:08 ` Herring, Davis
2016-01-11 15:15 ` Lars Magne Ingebrigtsen
1 sibling, 1 reply; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-11 6:48 UTC (permalink / raw)
To: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> That does sound kinda exciting. To take a random example, `M-x
>> delete-matching-lines' could have a :when of `buffer-writable-p' and not
>> auto-complete when in a read-only buffer. Etc.
>
> I'd be wary of going too far down that road: I often want to modify
> read-only buffers 'cause I hadn't realized they're still read-only.
> In that case, not finding the command in M-x would make me lose a lot
> more time (looking for the damn command, under the assumption that
> I just misremember it) than getting a clear "beep! buffer is
> read-only!" after which I can C-x C-q and move on.
>
>> Hm... I think that sounds a bit too magical to be workable in general.
>
> That's exactly what I thought when I read the suggestion to omit
> delete-matching-lines in read-only buffers.
Your example looks quite convincing to me, and objections on that line
were made by others on previous messages. However, applying
`delete-matching-lines' to a dired buffer or a gnus summary buffer and
obtaining "beep! buffer is read only!" as an answer is not very helpful,
nor the user would consciously apply that command to that kind of
buffer, so I still think that decorating delete-matching-lines with a
(and (not read-only) visiting-file)
condition makes sense. That is, the feature is useful, but its use is
not so straightforward as with the mode-related conditions.
Apart from that, the :when key, if intended as a general predicate,
makes me worry about its performance impact.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-10 15:58 ` Michael Albinus
@ 2016-01-11 8:05 ` Alexis
0 siblings, 0 replies; 141+ messages in thread
From: Alexis @ 2016-01-11 8:05 UTC (permalink / raw)
To: Michael Albinus; +Cc: emacs-devel
Michael Albinus <michael.albinus@gmx.de> writes:
> In my Emacs 25.0.50, `describe-package' shows the README of
> debbugs.
Ah okay, great. i'm using 24.5. Glad this is sorted!
Alexis.
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-11 6:29 ` Making `interactive' conditional Stefan Monnier
@ 2016-01-11 11:48 ` Drew Adams
0 siblings, 0 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-11 11:48 UTC (permalink / raw)
To: Stefan Monnier, emacs-devel
> In any case, this discussion is not about changing the default M-x,
> but about experimenting with a new M-x, probably offered as a GNU
> ELPA package.
That's good. Thanks for clarifying that.
So we can keep that in mind from now on: Unless stated otherwise,
when we write `M-x' in this discussion we really mean an
experimental new, alternate `M-x'-like command.
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional (was: Leaving out non-applicable commands on Mx)
2016-01-09 21:53 ` Drew Adams
@ 2016-01-11 12:02 ` Drew Adams
0 siblings, 0 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-11 12:02 UTC (permalink / raw)
To: John Wiegley; +Cc: Emacs developers
I do think that there can be some value in letting commands,
such as `M-x', that provide completion for command names,
take invocation-context information into account.
I think we should be more specific about what is involved -
how this is done. And I think we should be more flexible
than what I've heard proposed so far. In particular, we
should be flexible about how such invocation-context info
can be provided and used.
Let me make a hopefully more constructive contribution to
the suggestions about this than what I've written so far.
Here's how I see such a new feature.
1. It would:
a. Provide information about a specific command
regarding its invocation contexts.
This info can indicate which contexts "make sense" or
which do not. But it can also indicate anything else
about a context in which one might try to invoke the
command.
The form of the info would be a Lisp sexp, and a
value of nil would be equivalent to an absence (no
context information).
Its interpretation would be up to (1b) - no fixed
or predefined interpretation.
b. Use this information in `M-x', and possibly in other
contexts.
(I'll write `M-x' for short, but this should be
understood as any context that uses the (1a) info.
And even when thinking of it as `M-x, understand a
new, `M-x'-like command.)
2. (1a) and (1b) are two different things, and we need not
be rigid about either their relationship or just how
`M-x' or other contexts might use the (1a) info.
3. The (1a) info can be a predicate that `M-x' can apply to
each completion candidate. It can use the resulting
value to remove the candidate or to display it
differently or to do something else that is specific to
it. Likewise for any other (1b) context: it is up to
that context to do with info (1a) whatever it wants.
4. The (1a) info could be something other than a predicate
and nil. This is left unspecified, but it should not be
assumed that it is always a function.
5. A predicate return value of nil, or an absence of (1a)
info for a given candidate, would mean treat the command
candidate normally (classically). A non-nil return
value would mean treat it specially in some way - see (3).
6. The predicate can test anything. It should be possible
to invoke it with any number of arguments, which are
unspecified. It can access the target command's symbol
as the value of variable `current-cmd' (or some better
name). (We could require passing the command as a first
argument, but that would make using some existing
predicates more cumbersome.)
7. It should be easy to add, modify, or remove info (1a)
from a command using Lisp at any time, and without
modifying or otherwise accessing the source code that
defines the command.
8. The command's `interactive' spec is not the right place
to provide the (1a) info (e.g. predicate). This is not
about interactive use in general. It is info about
invocation contexts. A `declare' form is also the wrong
place for the (1a) info.
It should be possible to create or remove such an
association in source code but also interactively (e.g.,
using `M-:').
9. I propose putting info (1a) on the command symbol as a
property. This is a limitation only for commands not
associated with a name (which are not used by `M-x', at
least). Example:
(put 'kill-line
'cmd-context
(lambda (cmd) (not buffer-read-only)))
This association is purposely separate from the defun.
10. `execute-extended-command' (`M-x') would provide its
usual behavior by default. A user option would let it
take info (1a) into account. Later, the default
behavior (and default option value) could be switched if
we decide that is better.
11. We can provide a minibuffer key, when `M-x' is used, to
toggle the option value (for (a) the `M-x' duration or
(b) definitively, so that it effects subsequent `M-x').
A user might do this for clarity, or to see more context
info or more candidates, or to improve performance if
taking (1a) info into account slows things down
appreciably.
12. When `M-x' takes info (1a) into account, it treats a
completion-candidate command name specially if info (1a)
is present, according to the value of a user option
(e.g., `cmd-context'). Possible behaviors could
include:
. Removing the command as a completion candidate if info
(1a) is a predicate and invoking it returns nil.
. Showing the (1a) info (e.g., the predicate sexp or
symbol) next to the candidate command in
*Completions*, as an annotation.
. Displaying the candidate in a different face according
to the nature of info (1a). E.g., if a predicate and
invoking it returns nil, then dim the candidate.
13. Since a given (1b) context such as `M-x' can do anything
it likes with (1a) info, it could, in particular, handle
that info differently depending on the current set of
completion candidates. For example, it could
automatically turn off taking (1a) info into account
when the number of candidates is particularly large or
small.
14. If a (1b) context such as `M-x' wants to improve
performance by, say, byte-compiling a (1a) predicate, it
can do so, but it must not replace the source (1a)
value, which should remain a Lisp sexp. This is so we
keep things flexible and we do not shut the door on
possible uses of info (1a).
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-08 13:52 ` Lars Magne Ingebrigtsen
@ 2016-01-11 13:52 ` Phillip Lord
2016-01-11 16:18 ` Lars Magne Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: Phillip Lord @ 2016-01-11 13:52 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
> phillip.lord@russet.org.uk (Phillip Lord) writes:
>
>>>> - On none of the debbugs pages are there any obvious menu items or
>>>> bug-related functionality.
>>>
>>> I don't quite follow. Debbugs pages?
>>
>> Sorry, the buffer you get when you type "debbugs-gnu".
>
> Yeah, there should be a menu, as Michael said.
>
>> No. C is asking me how I want to send the mail. I would be expecting it
>> just to be use message-mode and my normal config.
>
> If `C' is asking how to send an email, then your Emacs hasn't had its
> email settings configured...
>
> I.e., `send-mail-function' hasn't been set. You may have configured the
> `message-send-mail-function' instead if you're just sending mail from
> Gnus...
Ah, yes, that's the cause of the problem.
Perhaps, "send-mail-query-once" should check if
message-send-mail-function is anything other than send-mail-query-once,
and signal an warning in this case.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-09 8:42 ` Michael Albinus
@ 2016-01-11 13:54 ` Phillip Lord
0 siblings, 0 replies; 141+ messages in thread
From: Phillip Lord @ 2016-01-11 13:54 UTC (permalink / raw)
To: Michael Albinus; +Cc: Andrew Hyatt, emacs-devel
Michael Albinus <michael.albinus@gmx.de> writes:
> Andrew Hyatt <ahyatt@gmail.com> writes:
>> >> One document which I think is missing is a "what all the tags"
>> mean.
>> >
>> > I believe it is covered in the User Guide. If not sufficient,
>> ask for
>> > clarification.
>>
>> invalid? Different from notabug, wontfix, unreproducible?
>>
>> pending? Pending what? Different from moreinfo?
>>
>> patch? It includes one? Covers a bug report with a pull request?
>
> Emacs has no special meaning on them. Check the debbugs doc:
>
> <http://debbugs.gnu.org/Developer.html#tags>
>
> "invalid" is declared in debbugs-*.el only. It sets the tags notabug and
> wontfix, and closes the bug. See the User Guide.
Ah, that is useful.
Phil
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-11 6:48 ` Óscar Fuentes
@ 2016-01-11 14:08 ` Herring, Davis
2016-01-11 16:34 ` Óscar Fuentes
0 siblings, 1 reply; 141+ messages in thread
From: Herring, Davis @ 2016-01-11 14:08 UTC (permalink / raw)
To: Óscar Fuentes, emacs-devel@gnu.org
> (and (not read-only) visiting-file)
So now you can't invoke it in *scratch*?
Of course, you can come up with another refinement to the condition (e.g., mode-class). My point is merely that writing these predicates is very subtle when the standard is not "is this command likely to work when invoked" (in which case you wouldn't be bothering with "visiting-file") but rather "is the user plausibly looking for this command in the list".
Davis
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-11 3:46 ` Richard Stallman
@ 2016-01-11 15:13 ` Lars Magne Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-11 15:13 UTC (permalink / raw)
To: Richard Stallman; +Cc: emacs-devel
Richard Stallman <rms@gnu.org> writes:
> I think it is reasonable to omit commands from M-x's completion,
> but refusing to run them is going to far in imposing on the user.
We could provide some sort of mechanism to allow running even if the
mode/predicate says we shouldn't, but I'm not sure that's all that
helpful.
For instance, if it's a command that doesn't run in read-only buffers
(that today has `barf-if-read-only' in the code of the command) has a
:when predicate that says the same thing, does it make sense to offer
the user to override that just because it's now been lifted up to the
`interactive' declaration?
Perhaps it does. I'm not sure, though.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-11 6:13 ` Stefan Monnier
2016-01-11 6:48 ` Óscar Fuentes
@ 2016-01-11 15:15 ` Lars Magne Ingebrigtsen
1 sibling, 0 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-11 15:15 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
> I'd be wary of going too far down that road: I often want to modify
> read-only buffers 'cause I hadn't realized they're still read-only.
> In that case, not finding the command in M-x would make me lose a lot
> more time (looking for the damn command, under the assumption that
> I just misremember it) than getting a clear "beep! buffer is
> read-only!" after which I can C-x C-q and move on.
Yes, that's true... Hm...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: 4K Bugs
2016-01-11 13:52 ` Phillip Lord
@ 2016-01-11 16:18 ` Lars Magne Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-11 16:18 UTC (permalink / raw)
To: Phillip Lord; +Cc: emacs-devel
phillip.lord@russet.org.uk (Phillip Lord) writes:
> Perhaps, "send-mail-query-once" should check if
> message-send-mail-function is anything other than send-mail-query-once,
> and signal an warning in this case.
`send-mail-query-once' is a "lower level" function than
`message-send-mail-function' (which should be obsoleted, anyway)...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-11 14:08 ` Herring, Davis
@ 2016-01-11 16:34 ` Óscar Fuentes
2016-01-12 4:46 ` Herring, Davis
0 siblings, 1 reply; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-11 16:34 UTC (permalink / raw)
To: emacs-devel
"Herring, Davis" <herring@lanl.gov> writes:
>> (and (not read-only) visiting-file)
>
> So now you can't invoke it in *scratch*?
I don't expect to use Lisp predicates, no. Allowing those when the
filtering is executed has unbounded time complexity.
> Of course, you can come up with another refinement to the condition
> (e.g., mode-class). My point is merely that writing these predicates
> is very subtle when the standard is not "is this command likely to
> work when invoked" (in which case you wouldn't be bothering with
> "visiting-file") but rather "is the user plausibly looking for this
> command in the list".
Filtering out editing commands when the buffer is not meant to be edited
in any case enters into the "the user plausibly is not looking for this
command" category.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
` (3 preceding siblings ...)
2016-01-11 6:13 ` Stefan Monnier
@ 2016-01-12 2:14 ` Clément Pit--Claudel
4 siblings, 0 replies; 141+ messages in thread
From: Clément Pit--Claudel @ 2016-01-12 2:14 UTC (permalink / raw)
To: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 1240 bytes --]
On 01/10/2016 04:02 AM, Lars Magne Ingebrigtsen wrote:
> John Wiegley <jwiegley@gmail.com> writes:
>
>> Right now, functions are interactive if declared with `interactive', and not
>> otherwise. The suggestion at hand is to allow `interactive' forms to become
>> conditional -- possibly in multiple ways. I like this concept, and think the
>> right place for it is indeed in core.
>>
>> The question is how to declare such conditionality. We can do this rather
>> easily by accepting new keyword arguments to `interactive':
>>
>> (interactive "sDirectory: " [:mode foo-mode] [:when <function>])
>
> That does sound kinda exciting. To take a random example, `M-x
> delete-matching-lines' could have a :when of `buffer-writable-p' and not
> auto-complete when in a read-only buffer. Etc.
It seems interactive already has support for a limited version of this:
> If ‘*’ appears at the beginning of the string, then an error is signaled if the buffer is read-only.
So the annotation is already there, at least for some function that use a string-based interactive spec. But maybe everyone already had this in mind? (450 of the approx 4500 string-based interactive specs in core Emacs use that)
Clément.
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 836 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-11 16:34 ` Óscar Fuentes
@ 2016-01-12 4:46 ` Herring, Davis
2016-01-12 4:59 ` Óscar Fuentes
0 siblings, 1 reply; 141+ messages in thread
From: Herring, Davis @ 2016-01-12 4:46 UTC (permalink / raw)
To: Óscar Fuentes, emacs-devel@gnu.org
>>> (and (not read-only) visiting-file)
>>
>> So now you can't invoke it in *scratch*?
>
> I don't expect to use Lisp predicates, no. Allowing those when the
> filtering is executed has unbounded time complexity.
I didn't mean "the object that describes the applicability conditions is not a form"; I meant that a command defined with that constraint would not be usable in *scratch* because it would fail the "visiting-file" condition.
> Filtering out editing commands when the buffer is not meant to be edited
> in any case enters into the "the user plausibly is not looking for this
> command" category.
Like `kill-line', which is totally useless in a read-only buffer, right?
Again, I'm not claiming these problems are insurmountable -- just that it's very hard to get right, because the exceptional cases are numerous.
Davis
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-12 4:46 ` Herring, Davis
@ 2016-01-12 4:59 ` Óscar Fuentes
0 siblings, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-12 4:59 UTC (permalink / raw)
To: emacs-devel
"Herring, Davis" <herring@lanl.gov> writes:
>>>> (and (not read-only) visiting-file)
>>>
>>> So now you can't invoke it in *scratch*?
>>
>> I don't expect to use Lisp predicates, no. Allowing those when the
>> filtering is executed has unbounded time complexity.
>
> I didn't mean "the object that describes the applicability conditions
> is not a form"; I meant that a command defined with that constraint
> would not be usable in *scratch* because it would fail the
> "visiting-file" condition.
Well, if *scratch* is read-only, then yes, the command will not appear
on the M-x list.
>> Filtering out editing commands when the buffer is not meant to be edited
>> in any case enters into the "the user plausibly is not looking for this
>> command" category.
>
> Like `kill-line', which is totally useless in a read-only buffer,
> right?
kill-line has a documented function when the buffer is read-only, so it
is not an editing command in the sense discussed above.
> Again, I'm not claiming these problems are insurmountable -- just that
> it's very hard to get right, because the exceptional cases are
> numerous.
I wouldn't say "very hard", but "requiring attention". No doubt there
will be cases with wrong annotations, but those will be eventually
corrected, like happens with every other feature. And those bugs are not
hard to fix nor critical, because the user will be able to find the
command by disabling the filtering, in case it was active.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-11 6:19 ` Making `interactive' conditional Stefan Monnier
@ 2016-01-19 6:24 ` John Wiegley
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
2016-01-19 15:28 ` Óscar Fuentes
0 siblings, 2 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-19 6:24 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
[-- Attachment #1: Type: text/plain, Size: 962 bytes --]
>>>>> Stefan Monnier <monnier@iro.umontreal.ca> writes:
> I think that pretending that "foo" is not interactive just because you're
> not in the right context is going too far.
Lots of great discussion on this feature while I was away for a few days!
After reading the comments, it does seem that changing core to get a smarter
M-x isn't the best plan right now.
While some may want a more narrow and efficient M-x, others just don't, for
discovery purposes. Also, it's hard to properly define a "context" for when
commands should appear, since for some, that notion varies.
And, well, Stefan's argument about impurity sold me. I have a feeling he knew
it would, too. :)
I'd still love to see a faster, more apropos M-x develop in ELPA, if anyone is
interested in making that happen.
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 629 bytes --]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 6:24 ` John Wiegley
@ 2016-01-19 10:11 ` Lars Magne Ingebrigtsen
2016-01-19 11:17 ` Lars Magne Ingebrigtsen
` (2 more replies)
2016-01-19 15:28 ` Óscar Fuentes
1 sibling, 3 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-19 10:11 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
> While some may want a more narrow and efficient M-x, others just don't, for
> discovery purposes. Also, it's hard to properly define a "context" for when
> commands should appear, since for some, that notion varies.
Stefan's arguments against not being able to discover commands for
not-read-only-buffers in read-only buffers were good, but that was,
after all, not the original proposal.
The proposal was to not make `M-x TAB' list mode-specific commands. So
that `M-x di TAB' in a Message mode buffer doesn't list
`diary-hebrew-insert-entry', which is a pretty useless thing to do.
Are anybody against that idea?
> I'd still love to see a faster, more apropos M-x develop in ELPA, if anyone is
> interested in making that happen.
The commands need instrumentation, one way or another, and that has to
happen in Emacs, not in ELPA.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
@ 2016-01-19 11:17 ` Lars Magne Ingebrigtsen
2016-01-19 13:31 ` Stefan Monnier
2016-01-19 16:52 ` Drew Adams
2 siblings, 0 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-19 11:17 UTC (permalink / raw)
To: emacs-devel
And to sum up the (basically) two proposals to make `M-x di TAB' not
list `diary-chinese-insert-entry', first there is Stefan's "add a global
directive and then mark exceptions".
This would mean that a mode like diary would say something like
(new-magic-declare (mode "diary-" diary-mode))
at (top-level?) somewhere. The few actual non-diary-mode commands would
then say
(declare (mode nil))
in the command definition. This means that a typical mode would have
two lines added to them. This is very attractive.
My proposal was to mark all mode-specific commands explicitly:
(declare (mode diary-mode))
or
(command 'diary-mode "p")
This is because I kinda have a distaste for "magic" global settings, and
would prefer things to be explicit. The advantage here is that nothing
would change except for things that have explicitly been changed. For
instance, if I (as a user) has defined a command called `diary-lars',
then it would be removed from TAB completion until the user adds a
declaration to it.
So either minimal churn, but possibly some unexpected fall-out for some
users, or more churn, but no unexpected fall-out for anybody.
I'm fine with either. I just want my `M-x' to be useful, because I can
never remember what keys commands are on, or what they're called,
precisely.
`M-x diTAB' in my Emacs today lists 180 commands. Eyeballing them, I
would say about six of them are things that `M-x diTAB' should be
listing, and you'd be able to discover nice commands like `dict',
`diary', `dig' and `diff'.
(I kinda think the discussion took the normal "one simple functionality
improvement" to "let's do ALL THE THINGS" to "well, ALL THE THINGS isn't
really practical or what we want" to "well, then LET'S DO NOTHING" turn.
:-))
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
2016-01-19 11:17 ` Lars Magne Ingebrigtsen
@ 2016-01-19 13:31 ` Stefan Monnier
2016-01-19 16:52 ` Drew Adams
2 siblings, 0 replies; 141+ messages in thread
From: Stefan Monnier @ 2016-01-19 13:31 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
> Stefan's arguments against not being able to discover commands for
> not-read-only-buffers in read-only buffers were good, but that was,
> after all, not the original proposal.
Indeed.
> Are anybody against that idea?
Not me.
>> I'd still love to see a faster, more apropos M-x develop in ELPA, if
>> anyone is interested in making that happen.
> The commands need instrumentation, one way or another, and that has to
> happen in Emacs, not in ELPA.
Of course, for a proof of concept, the new package could come with
(lots of) things like
(newMx-describe-package "smerge-"
smerge-mode
smerge-makeup-conflict)
And then those "instrumentations" could be moved/added to core as
a second step.
Stefan
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 6:24 ` John Wiegley
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
@ 2016-01-19 15:28 ` Óscar Fuentes
2016-01-19 16:07 ` Lars Magne Ingebrigtsen
2016-01-19 16:20 ` John Wiegley
1 sibling, 2 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-19 15:28 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>> I think that pretending that "foo" is not interactive just because you're
>> not in the right context is going too far.
>
> Lots of great discussion on this feature while I was away for a few days!
> After reading the comments, it does seem that changing core to get a smarter
> M-x isn't the best plan right now.
>
> While some may want a more narrow and efficient M-x, others just
> don't,
Nobody proposed to force people to use the feature. What you have seen
is the usual drama and hysteria display typical of emacs-devel.
> for discovery purposes.
Anyone is free to refrain from using the feature for whatever reason.
But having the commands that apply to the current buffer (plus the
global ones) listed on M-x is something that enhances discovery, unless
you are interested on *all* of Emacs *all* the time.
> Also, it's hard to properly define a "context" for when
> commands should appear, since for some, that notion varies.
>
> And, well, Stefan's argument about impurity sold me. I have a feeling he knew
> it would, too. :)
>
> I'd still love to see a faster, more apropos M-x develop in ELPA, if anyone is
> interested in making that happen.
As Lars said, instrumentalization is required.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 15:28 ` Óscar Fuentes
@ 2016-01-19 16:07 ` Lars Magne Ingebrigtsen
2016-01-19 20:24 ` Óscar Fuentes
2016-01-19 16:20 ` John Wiegley
1 sibling, 1 reply; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-19 16:07 UTC (permalink / raw)
To: Óscar Fuentes; +Cc: emacs-devel
Óscar Fuentes <ofv@wanadoo.es> writes:
> Nobody proposed to force people to use the feature. What you have seen
> is the usual drama and hysteria display typical of emacs-devel.
Hm? I've seen no drama...
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 15:28 ` Óscar Fuentes
2016-01-19 16:07 ` Lars Magne Ingebrigtsen
@ 2016-01-19 16:20 ` John Wiegley
2016-01-19 17:55 ` Lars Magne Ingebrigtsen
2016-01-19 20:23 ` Óscar Fuentes
1 sibling, 2 replies; 141+ messages in thread
From: John Wiegley @ 2016-01-19 16:20 UTC (permalink / raw)
To: Óscar Fuentes; +Cc: emacs-devel
>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>> I'd still love to see a faster, more apropos M-x develop in ELPA, if anyone
>> is interested in making that happen.
> As Lars said, instrumentalization is required.
A demonstrative implementation of this feature can be done without
instrumentation. Instrumentation is the "right" way, but is not a necessary
way. We shouldn't think core needs to be changed before we can try out a
fancier M-x.
I'm not against a smarter M-x; I'd like to use it for the same reasons others
have stated (my own completion list right now is massive, slow, and at times,
confusingly over-populated).
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* RE: Making `interactive' conditional
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
2016-01-19 11:17 ` Lars Magne Ingebrigtsen
2016-01-19 13:31 ` Stefan Monnier
@ 2016-01-19 16:52 ` Drew Adams
2 siblings, 0 replies; 141+ messages in thread
From: Drew Adams @ 2016-01-19 16:52 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
> The proposal was to not make `M-x TAB' list mode-specific commands.
You mean not allow `M-x TAB' to list commands that are not specific
to the current mode, I imagine. Or perhaps not allow it to list
commands that are defined for other modes.
> So that `M-x di TAB' in a Message mode buffer doesn't list
> `diary-hebrew-insert-entry', which is a pretty useless thing to do.
>
> Are anybody against that idea?
Yes. Please read the thread for the reasons.
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 16:20 ` John Wiegley
@ 2016-01-19 17:55 ` Lars Magne Ingebrigtsen
2016-01-19 18:39 ` John Wiegley
2016-01-19 20:23 ` Óscar Fuentes
1 sibling, 1 reply; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-19 17:55 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
> A demonstrative implementation of this feature can be done without
> instrumentation. Instrumentation is the "right" way, but is not a necessary
> way. We shouldn't think core needs to be changed before we can try out a
> fancier M-x.
The implementation of the stuff in `M-x' is trivial: Don't complete to
commands that are/aren't marked in a certain way. What will take real
work is instrumenting the commands. (One way or the other.)
Making changes and then seeing improvements in Emacs immediately would
be a great motivating factor, I think, to get people to do this stuff.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 17:55 ` Lars Magne Ingebrigtsen
@ 2016-01-19 18:39 ` John Wiegley
2016-01-19 19:02 ` Lars Magne Ingebrigtsen
0 siblings, 1 reply; 141+ messages in thread
From: John Wiegley @ 2016-01-19 18:39 UTC (permalink / raw)
To: Lars Magne Ingebrigtsen; +Cc: emacs-devel
>>>>> Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
> The implementation of the stuff in `M-x' is trivial: Don't complete to
> commands that are/aren't marked in a certain way. What will take real work
> is instrumenting the commands. (One way or the other.)
Yes, although "classifying functions" can be done in a very large number of
ways, not all of which require instrumentation.
> Making changes and then seeing improvements in Emacs immediately would be a
> great motivating factor, I think, to get people to do this stuff.
I didn't quite follow what this was suggesting... :)
--
John Wiegley GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com 60E1 46C4 BD1A 7AC1 4BA2
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 18:39 ` John Wiegley
@ 2016-01-19 19:02 ` Lars Magne Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Magne Ingebrigtsen @ 2016-01-19 19:02 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>> Making changes and then seeing improvements in Emacs immediately would be a
>> great motivating factor, I think, to get people to do this stuff.
>
> I didn't quite follow what this was suggesting... :)
If you instrument diary.el, you (and everybody else who uses the trunk)
who does `M-x diTAB' sees a usability improvement. I think that's a
motivating factor to getting all this janitorial work done.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 16:20 ` John Wiegley
2016-01-19 17:55 ` Lars Magne Ingebrigtsen
@ 2016-01-19 20:23 ` Óscar Fuentes
1 sibling, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-19 20:23 UTC (permalink / raw)
To: emacs-devel
John Wiegley <jwiegley@gmail.com> writes:
>>>>>> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>>> I'd still love to see a faster, more apropos M-x develop in ELPA, if anyone
>>> is interested in making that happen.
>
>> As Lars said, instrumentalization is required.
>
> A demonstrative implementation of this feature can be done without
> instrumentation. Instrumentation is the "right" way, but is not a necessary
> way. We shouldn't think core needs to be changed before we can try out a
> fancier M-x.
A demonstrative implementation can be done on a branch. This has the
advantage that you see the real implementation and hence you have a
solid basis for measuring its implications, maintenance-wise. And when
it receives the ok, a simple merge is enough, instead of having to
instrumentalize the Elisp sources.
Besides, an implementation on ELPA not only causes much more work, but
it is mostly invisible to the developers (see Lars' post).
[snip]
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Making `interactive' conditional
2016-01-19 16:07 ` Lars Magne Ingebrigtsen
@ 2016-01-19 20:24 ` Óscar Fuentes
0 siblings, 0 replies; 141+ messages in thread
From: Óscar Fuentes @ 2016-01-19 20:24 UTC (permalink / raw)
To: emacs-devel
Lars Magne Ingebrigtsen <larsi@gnus.org> writes:
> Óscar Fuentes <ofv@wanadoo.es> writes:
>
>> Nobody proposed to force people to use the feature. What you have seen
>> is the usual drama and hysteria display typical of emacs-devel.
>
> Hm? I've seen no drama...
A comedy then? You're an optimist.
:-)
^ permalink raw reply [flat|nested] 141+ messages in thread
* Re: Leaving out non-applicable commands on Mx
2016-01-10 16:05 ` Stefan Monnier
@ 2016-02-04 3:19 ` Lars Ingebrigtsen
0 siblings, 0 replies; 141+ messages in thread
From: Lars Ingebrigtsen @ 2016-02-04 3:19 UTC (permalink / raw)
To: Stefan Monnier; +Cc: emacs-devel
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> For instance, there are often commands that apply to similar modes
>> (for instance in the cc-mode family) that aren't necessarily named
>> what you might think, I think...
>
> Of course you can have several calls to (new-magic-declare "foo-"
> <decls>) for different prefixes, and of course you don't have to use it
> (e.g. if there are more exceptions than cases which follow the rule).
Yeah, that's true. I agree that having these global declarations is
probably a better idea than sprinkling them in all the commands.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 141+ messages in thread
end of thread, other threads:[~2016-02-04 3:19 UTC | newest]
Thread overview: 141+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-12-25 6:21 4K Bugs Lars Ingebrigtsen
2015-12-25 7:46 ` Eli Zaretskii
2015-12-25 17:00 ` John Wiegley
2015-12-25 17:30 ` Lars Ingebrigtsen
2015-12-25 17:51 ` John Wiegley
2015-12-25 17:53 ` Lars Ingebrigtsen
2015-12-25 17:59 ` John Wiegley
2015-12-25 18:27 ` jpff
2015-12-25 18:35 ` Lars Ingebrigtsen
2015-12-25 18:33 ` Dmitry Gutov
2015-12-25 18:40 ` Lars Ingebrigtsen
2015-12-25 18:54 ` Lars Ingebrigtsen
2015-12-25 19:46 ` Dmitry Gutov
2015-12-25 20:06 ` Lars Ingebrigtsen
2015-12-25 19:36 ` John Wiegley
2015-12-25 19:56 ` Dmitry Gutov
2015-12-25 20:05 ` Eli Zaretskii
2015-12-25 20:26 ` Lars Ingebrigtsen
2015-12-26 13:16 ` Michael Albinus
2015-12-26 8:07 ` Andreas Röhler
2015-12-26 10:29 ` Eli Zaretskii
2015-12-26 15:14 ` Andreas Röhler
2015-12-26 16:34 ` Eli Zaretskii
2015-12-26 16:41 ` Lars Ingebrigtsen
2015-12-26 16:52 ` Eli Zaretskii
2015-12-26 16:59 ` Lars Ingebrigtsen
2015-12-26 17:55 ` Ivan Shmakov
2015-12-26 17:58 ` Lars Ingebrigtsen
2015-12-26 18:12 ` Ivan Shmakov
2015-12-26 18:21 ` Lars Ingebrigtsen
2015-12-26 18:42 ` Ivan Shmakov
2015-12-26 18:48 ` Lars Ingebrigtsen
2015-12-27 22:41 ` Per Starbäck
2015-12-28 9:44 ` Andreas Röhler
2015-12-28 20:18 ` John Wiegley
2015-12-26 16:59 ` Paul Eggert
2015-12-26 17:48 ` Lars Ingebrigtsen
2015-12-28 20:15 ` John Wiegley
2015-12-26 14:55 ` Lars Ingebrigtsen
2015-12-27 2:52 ` Richard Stallman
2015-12-27 6:07 ` Lars Ingebrigtsen
2016-01-07 20:10 ` Phillip Lord
2016-01-07 22:38 ` Phillip Lord
2016-01-09 4:26 ` Andrew Hyatt
2016-01-09 9:20 ` Michael Albinus
2016-01-07 23:32 ` John Wiegley
2016-01-08 0:17 ` Xue Fuqiao
2016-01-08 12:49 ` Phillip Lord
2016-01-08 1:41 ` Alexis
2016-01-08 1:50 ` Richard Copley
2016-01-08 2:41 ` Alexis
2016-01-09 1:51 ` John Wiegley
2016-01-08 12:48 ` Phillip Lord
2016-01-08 13:06 ` Michael Albinus
2016-01-08 13:59 ` Phillip Lord
2016-01-08 14:12 ` Michael Albinus
2016-01-09 2:52 ` Alexis
2016-01-10 15:58 ` Michael Albinus
2016-01-11 8:05 ` Alexis
2016-01-08 8:28 ` Lars Magne Ingebrigtsen
2016-01-08 12:57 ` Phillip Lord
2016-01-08 13:37 ` Michael Albinus
2016-01-08 13:52 ` Lars Magne Ingebrigtsen
2016-01-11 13:52 ` Phillip Lord
2016-01-11 16:18 ` Lars Magne Ingebrigtsen
2016-01-08 15:05 ` Stefan Monnier
2016-01-08 23:16 ` Leaving out non-applicable commands on Mx (was: 4K Bugs) Óscar Fuentes
2016-01-09 0:22 ` Leaving out non-applicable commands on Mx John Wiegley
2016-01-09 0:55 ` Óscar Fuentes
2016-01-09 1:46 ` John Wiegley
2016-01-09 1:54 ` Spencer Boucher
2016-01-09 3:09 ` Drew Adams
2016-01-09 3:37 ` Óscar Fuentes
2016-01-09 2:15 ` Óscar Fuentes
2016-01-09 3:09 ` Drew Adams
2016-01-09 3:49 ` Óscar Fuentes
2016-01-09 4:14 ` Stefan Monnier
2016-01-09 3:09 ` Drew Adams
2016-01-09 3:08 ` Drew Adams
2016-01-09 3:33 ` Óscar Fuentes
2016-01-09 9:05 ` Yuri Khan
2016-01-09 19:27 ` Drew Adams
2016-01-09 20:55 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) John Wiegley
2016-01-09 21:53 ` Drew Adams
2016-01-11 12:02 ` Drew Adams
2016-01-10 9:02 ` Making `interactive' conditional Lars Magne Ingebrigtsen
2016-01-10 10:09 ` Clément Pit--Claudel
2016-01-10 17:55 ` Drew Adams
[not found] ` <CAAdUY-Kfm-0JbOLpi4KE5wkmp6hfG+-y3V-_vTExaFkmF5RmEg@mail.gmail.com>
2016-01-10 12:36 ` Artur Malabarba
2016-01-11 3:46 ` Richard Stallman
2016-01-11 15:13 ` Lars Magne Ingebrigtsen
2016-01-11 6:13 ` Stefan Monnier
2016-01-11 6:48 ` Óscar Fuentes
2016-01-11 14:08 ` Herring, Davis
2016-01-11 16:34 ` Óscar Fuentes
2016-01-12 4:46 ` Herring, Davis
2016-01-12 4:59 ` Óscar Fuentes
2016-01-11 15:15 ` Lars Magne Ingebrigtsen
2016-01-12 2:14 ` Clément Pit--Claudel
2016-01-10 15:27 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Alan Mackenzie
2016-01-10 16:47 ` Making `interactive' conditional Óscar Fuentes
2016-01-10 18:23 ` Drew Adams
2016-01-10 19:31 ` Óscar Fuentes
2016-01-10 22:40 ` Drew Adams
2016-01-10 23:19 ` Óscar Fuentes
2016-01-10 18:22 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Drew Adams
2016-01-11 6:29 ` Making `interactive' conditional Stefan Monnier
2016-01-11 11:48 ` Drew Adams
2016-01-10 18:33 ` Clément Pit--Claudel
2016-01-10 22:28 ` Making `interactive' conditional (was: Leaving out non-applicable commands on Mx) Marcin Borkowski
2016-01-11 6:19 ` Making `interactive' conditional Stefan Monnier
2016-01-19 6:24 ` John Wiegley
2016-01-19 10:11 ` Lars Magne Ingebrigtsen
2016-01-19 11:17 ` Lars Magne Ingebrigtsen
2016-01-19 13:31 ` Stefan Monnier
2016-01-19 16:52 ` Drew Adams
2016-01-19 15:28 ` Óscar Fuentes
2016-01-19 16:07 ` Lars Magne Ingebrigtsen
2016-01-19 20:24 ` Óscar Fuentes
2016-01-19 16:20 ` John Wiegley
2016-01-19 17:55 ` Lars Magne Ingebrigtsen
2016-01-19 18:39 ` John Wiegley
2016-01-19 19:02 ` Lars Magne Ingebrigtsen
2016-01-19 20:23 ` Óscar Fuentes
2016-01-09 8:06 ` Leaving out non-applicable commands on Mx Lars Magne Ingebrigtsen
2016-01-09 14:50 ` Óscar Fuentes
2016-01-09 17:32 ` Stefan Monnier
2016-01-10 8:53 ` Lars Magne Ingebrigtsen
2016-01-10 16:05 ` Stefan Monnier
2016-02-04 3:19 ` Lars Ingebrigtsen
2016-01-10 16:07 ` Stefan Monnier
2016-01-10 16:14 ` Óscar Fuentes
2016-01-08 10:50 ` 4K Bugs Michael Albinus
2016-01-08 13:21 ` Phillip Lord
2016-01-08 13:33 ` Michael Albinus
2016-01-08 14:08 ` Phillip Lord
2016-01-09 4:21 ` Andrew Hyatt
2016-01-09 8:42 ` Michael Albinus
2016-01-11 13:54 ` Phillip Lord
2016-01-08 19:27 ` Stephen Leake
2016-01-08 20:52 ` Michael Albinus
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).