unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Making Emacs popular again with a video
@ 2020-05-08  8:26 Nathan Colinet
  2020-05-08 10:39 ` Arthur Miller
                   ` (3 more replies)
  0 siblings, 4 replies; 281+ messages in thread
From: Nathan Colinet @ 2020-05-08  8:26 UTC (permalink / raw)
  To: emacs-devel

Hello,

I read on the mailing list that you're looking for a way to make Emacs 
popular again. I thought I could share my idea.

I started using emacs a year ago and when I started everything was 
really confusing, what is a frame, what is a buffer, how to install 
packages, what are major and minor modes, etc.. I wanted to give up but 
then I saw a 1 hour talk about Emacs that shows how powerful it is. Then 
I was hooked. Unfortunately the sound was no good at all and it was way 
too long. I think it could be really benefic for emacs to have a 5-10 
minutes video that would present Emacs not as an old obscure porgram but 
as an amazing fresh looking tool that drastically improves efficiency. I 
think people nowadays need an out-of-the-box experience, that's why 
promoting doom-emacs or spacemacs might be better than the default Emacs.

I think if the video is well realised it could really be a huge win.

Stay safe and well,

Nathan Colinet





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08  8:26 Making Emacs popular again with a video Nathan Colinet
@ 2020-05-08 10:39 ` Arthur Miller
  2020-05-10 20:48   ` Nathan Colinet
  2020-05-08 10:41 ` Stefan Kangas
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 281+ messages in thread
From: Arthur Miller @ 2020-05-08 10:39 UTC (permalink / raw)
  To: Nathan Colinet; +Cc: emacs-devel

Nathan Colinet <colinetnathan98@gmail.com> writes:

> Hello,
>
> I read on the mailing list that you're looking for a way to make Emacs popular
> again. I thought I could share my idea.
>
> I started using emacs a year ago and when I started everything was really
> confusing, what is a frame, what is a buffer, how to install packages, what are
> major and minor modes, etc.. I wanted to give up but then I saw a 1 hour talk
> about Emacs that shows how powerful it is. Then I was hooked. Unfortunately the
> sound was no good at all and it was way too long. I think it could be really
> benefic for emacs to have a 5-10 minutes video that would present Emacs not as
> an old obscure porgram but as an amazing fresh looking tool that drastically
> improves efficiency. I think people nowadays need an out-of-the-box experience,
> that's why promoting doom-emacs or spacemacs might be better than the default
> Emacs.
>
> I think if the video is well realised it could really be a huge win.
>
> Stay safe and well,
>
> Nathan Colinet
There are already such videos. Check out emacs rocks on YT.
https://www.youtube.com/user/emacsrocks

Those are even linked to on Emacs webpage, ir you open emacs.org and
scroll down, you will find the links.

But surely Emacs could have used more of such short feature showing-off
videos/tutorials. 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08  8:26 Making Emacs popular again with a video Nathan Colinet
  2020-05-08 10:39 ` Arthur Miller
@ 2020-05-08 10:41 ` Stefan Kangas
  2020-05-10 16:18   ` Nathan Colinet
  2020-05-08 11:33 ` Eli Zaretskii
  2020-05-09  7:50 ` Andreas Röhler
  3 siblings, 1 reply; 281+ messages in thread
From: Stefan Kangas @ 2020-05-08 10:41 UTC (permalink / raw)
  To: Nathan Colinet, emacs-devel

Nathan Colinet <colinetnathan98@gmail.com> writes:

> I started using emacs a year ago and when I started everything was
> really confusing, what is a frame, what is a buffer, how to install
> packages, what are major and minor modes, etc.. I wanted to give up but

Welcome to Emacs!  You made the right choice.

> then I saw a 1 hour talk about Emacs that shows how powerful it is. Then
> I was hooked. Unfortunately the sound was no good at all and it was way
> too long. I think it could be really benefic for emacs to have a 5-10
> minutes video that would present Emacs not as an old obscure porgram but
> as an amazing fresh looking tool that drastically improves efficiency.

This is a very good idea.  The only problem is that someone has to do
it.  :-)

Would you be prepared to volunteer for working on that?

> I think people nowadays need an out-of-the-box experience, that's why
> promoting doom-emacs or spacemacs might be better than the default
> Emacs.

This is valuable input, I think.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
@ 2020-05-08 10:58 ndame
  2020-05-08 11:32 ` Stefan Kangas
  0 siblings, 1 reply; 281+ messages in thread
From: ndame @ 2020-05-08 10:58 UTC (permalink / raw)
  To: Emacs developers

> > I think people nowadays need an out-of-the-box experience, that's why
> > promoting doom-emacs or spacemacs might be better than the default
> > Emacs.

> This is valuable input, I think.

Someone else too made a similar proposal in a reddit comment:


begin quote:

IMO the very first thing a use should be greeted with is a dialog box that says something along the lines of

"Hey, welcome to Emacs! Emacs is a very old editor with a ton of legacy we'd like to preserve.
If you want a more modern experience, you can try these community-made configs instead:

* Spacemacs [Install]: The best editor is neither Emacs nor Vim, it's Emacs and Vim!
* Centaur Emacs [Install]: A Fancy and Fast Emacs Configuration
* Doom Emacs [Install]: An Emacs configuration for the stubborn martian vimmer
* CUA mode [Enable]: Use keybinds commonly found in other modern editors

[No thanks, II'd like to cook my own config]"

It'd be a very simple change but an immense improvement to the new user experience.


end quote



Would it be acceptable to recommend popular startup packages on the splash screen if the user has an active network connection?  I guess in that case it's not a problem if it's not bundled with emacs, since emacs can install it from the net by adding melpa to the package list automatically.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08 10:58 Making Emacs popular again with a video ndame
@ 2020-05-08 11:32 ` Stefan Kangas
  2020-05-09 13:28   ` Alan Third
  0 siblings, 1 reply; 281+ messages in thread
From: Stefan Kangas @ 2020-05-08 11:32 UTC (permalink / raw)
  To: ndame, Emacs developers

ndame <ndame@protonmail.com> writes:

>> > I think people nowadays need an out-of-the-box experience, that's why
>> > promoting doom-emacs or spacemacs might be better than the default
>> > Emacs.
>
>> This is valuable input, I think.
>
> Someone else too made a similar proposal in a reddit comment:

Thanks.  To be clear, I was referring to the part about the
out-of-the-box experience.

> Would it be acceptable to recommend popular startup packages on the
> splash screen if the user has an active network connection?  I guess
> in that case it's not a problem if it's not bundled with emacs, since
> emacs can install it from the net by adding melpa to the package list
> automatically.

IMHO, we should not promote third-party "init files" as a primary
option, but rather improve Emacs itself.

(But maybe we could consider promoting them in the FAQ?)

We have discussed to have "custom themes" (I proposed to rebrand them as
"profiles") which the user could potentially be prompted about on
initial startup.  I believe this would be worthwhile to explore further.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08  8:26 Making Emacs popular again with a video Nathan Colinet
  2020-05-08 10:39 ` Arthur Miller
  2020-05-08 10:41 ` Stefan Kangas
@ 2020-05-08 11:33 ` Eli Zaretskii
  2020-05-10 20:32   ` Nathan Colinet
  2020-05-09  7:50 ` Andreas Röhler
  3 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-08 11:33 UTC (permalink / raw)
  To: Nathan Colinet; +Cc: emacs-devel

> From: Nathan Colinet <colinetnathan98@gmail.com>
> Date: Fri, 8 May 2020 10:26:19 +0200
> 
> I started using emacs a year ago and when I started everything was 
> really confusing, what is a frame, what is a buffer, how to install 
> packages, what are major and minor modes, etc.. I wanted to give up but 
> then I saw a 1 hour talk about Emacs that shows how powerful it is. Then 
> I was hooked. Unfortunately the sound was no good at all and it was way 
> too long. I think it could be really benefic for emacs to have a 5-10 
> minutes video that would present Emacs not as an old obscure porgram but 
> as an amazing fresh looking tool that drastically improves efficiency. I 
> think people nowadays need an out-of-the-box experience, that's why 
> promoting doom-emacs or spacemacs might be better than the default Emacs.
> 
> I think if the video is well realised it could really be a huge win.

I think it's a very good idea.  Would someone want to produce such a
video?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08  8:26 Making Emacs popular again with a video Nathan Colinet
                   ` (2 preceding siblings ...)
  2020-05-08 11:33 ` Eli Zaretskii
@ 2020-05-09  7:50 ` Andreas Röhler
  2020-05-10 20:57   ` Nathan Colinet
  3 siblings, 1 reply; 281+ messages in thread
From: Andreas Röhler @ 2020-05-09  7:50 UTC (permalink / raw)
  To: emacs-devel; +Cc: Nathan Colinet



Am 08.05.20 um 10:26 schrieb Nathan Colinet:
> Hello,
> 
> I read on the mailing list that you're looking for a way to make Emacs 
> popular again. I thought I could share my idea.
> 
> I started using emacs a year ago and when I started everything was 
> really confusing, what is a frame, what is a buffer, how to install 
> packages, what are major and minor modes, etc.. I wanted to give up but 
> then I saw a 1 hour talk about Emacs that shows how powerful it is. Then 
> I was hooked. Unfortunately the sound was no good at all and it was way 
> too long. I think it could be really benefic for emacs to have a 5-10 
> minutes video that would present Emacs not as an old obscure porgram but 
> as an amazing fresh looking tool that drastically improves efficiency. I 
> think people nowadays need an out-of-the-box experience, that's why 
> promoting doom-emacs or spacemacs might be better than the default Emacs.
> 
> I think if the video is well realised it could really be a huge win.
> 
> Stay safe and well,
> 
> Nathan Colinet
> 
> 
> 

Hi,

thanks bringing that up. Agree such a video might be helpful. The 
reasons however, why Emacs is a kind of niche nowadays are multiple and 
complex. Leaving apart all items Emacs itself can't change, there is 
something which can be done IMO: making Emacs ready for a beginner in 
programming resp. for non-programmers. Make Emacs appear mannerly as 
just an editor first. Which also means: at the beginning leave apart all 
complex stuff useful for advanced programmers only.

For instance at "Introduction" fairly everything in first paragraphs 
IMHO may be dropped resp. should be moved at later sections. Copy stuff 
below for the convenience of the reader here.

All the day enjoying Emacs,
Andreas

Copy:

Introduction
************

You are reading about GNU Emacs, the GNU incarnation of the advanced,
self-documenting, customizable, extensible editor Emacs.  (The ‘G’ in
GNU (GNU’s Not Unix) is not silent.)

    We call Emacs “advanced” because it can do much more than simple
insertion and deletion of text.  It can control subprocesses, indent
programs automatically, show multiple files at once, edit remote files
like they were local files, and more.  Emacs editing commands operate in
terms of characters, words, lines, sentences, paragraphs, and pages, as
well as expressions and comments in various programming languages.

    “Self-documenting” means that at any time you can use special
commands, known as “help commands”, to find out what your options are,
or to find out what any command does, or to find all the commands that
pertain to a given topic.  *Note Help::.

    “Customizable” means that you can easily alter the behavior of Emacs
commands in simple ways.  For instance, if you use a programming
language in which comments start with ‘<**’ and end with ‘**>’, you can
tell the Emacs comment manipulation commands to use those strings (*note
Comments::).  To take another example, you can rebind the basic cursor
motion commands (up, down, left and right) to any keys on the keyboard
that you find comfortable.  *Note Customization::.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08 11:32 ` Stefan Kangas
@ 2020-05-09 13:28   ` Alan Third
  2020-05-09 15:12     ` Stefan Kangas
  2020-05-09 19:53     ` Stefan Monnier
  0 siblings, 2 replies; 281+ messages in thread
From: Alan Third @ 2020-05-09 13:28 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Emacs developers, ndame

On Fri, May 08, 2020 at 07:32:02AM -0400, Stefan Kangas wrote:
> 
> IMHO, we should not promote third-party "init files" as a primary
> option, but rather improve Emacs itself.

Maybe we should embrace them, and provide tools to build custom Emacs
distributions. Put absolutely everything that isn’t absolutely
required for Emacs into ELPA so there’s a core Emacs that is as basic
as it gets, then, I don’t know, use manifest files to build a
distribution that pulls in the stuff we need from ELPA or wherever
else.

We could provide our own ‘UNIX Neckbeards’ distribution, which is
simply Emacs as we know it now. ;)

Other, motivated, people could then do the heavy lifting of developing
and supporting so called modern distributions.

We sort of have this already with Aquamacs.
-- 
Alan Third



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-09 13:28   ` Alan Third
@ 2020-05-09 15:12     ` Stefan Kangas
  2020-05-09 19:53     ` Stefan Monnier
  1 sibling, 0 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-09 15:12 UTC (permalink / raw)
  To: Alan Third; +Cc: Emacs developers, ndame

Alan Third <alan@idiocy.org> writes:

>> IMHO, we should not promote third-party "init files" as a primary
>> option, but rather improve Emacs itself.
>
> Maybe we should embrace them, and provide tools to build custom Emacs
> distributions.

Perhaps I was being unclear.  What I don't like is the suggestion that
we should just tell people to go to website X to download and install
a bunch of init files.

I think we could provide some _variant_ of what these distributions are
doing, namely sets of ready-made customization.  The question is how to
go about it.

I've been thinking a lot about this problem, but I have not had time to
do any serious work.  So please consider these ideas as tentative:

I would propose to add a concept of "custom profiles" (or simply
"profiles"), which are basically defthemes.  Please see the separate
(brief) discussion about this here, and also the related thread:

    https://lists.gnu.org/archive/html/emacs-devel/2020-04/msg02032.html

One can imagine these "profiles" to be big distributions like spacemacs,
or (perhaps better) small snippets or sets of customization.  Some of
these could/should be included in Emacs by default.

One can also imagine there being one profile providing "good defaults
for a new user".[1]  Maybe such a profile could be the default at some
point in the future, but this is IMHO better discussed and decided once
it actually exists.

Best regards,
Stefan Kangas

Footnotes:
[1] Eli has pointed out that the biggest hurdle is to decide what such a
     "profile" (in my terminology) should include.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-09 13:28   ` Alan Third
  2020-05-09 15:12     ` Stefan Kangas
@ 2020-05-09 19:53     ` Stefan Monnier
  1 sibling, 0 replies; 281+ messages in thread
From: Stefan Monnier @ 2020-05-09 19:53 UTC (permalink / raw)
  To: Alan Third; +Cc: Emacs developers, Stefan Kangas, ndame

> Maybe we should embrace them, and provide tools to build custom Emacs
> distributions. Put absolutely everything that isn’t absolutely
> required for Emacs into ELPA so there’s a core Emacs that is as basic
> as it gets, then, I don’t know, use manifest files to build
> a distribution that pulls in the stuff we need from ELPA or
> wherever else.

I think we should, indeed.  Sadly, I haven't found the time/energy to
dig into Doom, Spacemacs, etc... to see how we could do that in a way
that's better than what's already done.

For me "better" would mostly mean that the efforts expanded on one
distribution would "directly" carry over to another.

In an ideal world, these distributions would be basically a list of
packages that are required along with a kind of custom-theme.

And ideally, you should then be able to say you want "Spacemacs + foo -
bar" and you can later update to the latest Spacemacs and it will still
work (still removing "bar" from it and adding "foo" to it).


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08 10:41 ` Stefan Kangas
@ 2020-05-10 16:18   ` Nathan Colinet
  0 siblings, 0 replies; 281+ messages in thread
From: Nathan Colinet @ 2020-05-10 16:18 UTC (permalink / raw)
  To: Stefan Kangas, emacs-devel

Thank you for your reply.

I would happily help on that video (for the content) but I'm definitely 
not qualified to shoot/realise it, I don't even have a decent micro. I 
think if we want this video to have the desired effect the FSF or GNU 
(don't know who's in charge) might need to pay someone to realise it.

Regards,

Nathan

On 2020-05-08 12:41, Stefan Kangas wrote:
> Nathan Colinet <colinetnathan98@gmail.com> writes:
>
>> I started using emacs a year ago and when I started everything was
>> really confusing, what is a frame, what is a buffer, how to install
>> packages, what are major and minor modes, etc.. I wanted to give up but
> Welcome to Emacs!  You made the right choice.
>
>> then I saw a 1 hour talk about Emacs that shows how powerful it is. Then
>> I was hooked. Unfortunately the sound was no good at all and it was way
>> too long. I think it could be really benefic for emacs to have a 5-10
>> minutes video that would present Emacs not as an old obscure porgram but
>> as an amazing fresh looking tool that drastically improves efficiency.
> This is a very good idea.  The only problem is that someone has to do
> it.  :-)
>
> Would you be prepared to volunteer for working on that?
>
>> I think people nowadays need an out-of-the-box experience, that's why
>> promoting doom-emacs or spacemacs might be better than the default
>> Emacs.
> This is valuable input, I think.
>
> Best regards,
> Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08 11:33 ` Eli Zaretskii
@ 2020-05-10 20:32   ` Nathan Colinet
  2020-05-11 22:59     ` Stefan Kangas
  0 siblings, 1 reply; 281+ messages in thread
From: Nathan Colinet @ 2020-05-10 20:32 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

We could find someone on reddit, I think a lot of YouTubers are 
following r/linux. To ensure the video quality GNU or FSF might need to 
pay someone to produce it. I have some ideas about the features of emacs 
the video could highlight.

Regards,

Nathan

On 2020-05-08 13:33, Eli Zaretskii wrote:
>> From: Nathan Colinet <colinetnathan98@gmail.com>
>> Date: Fri, 8 May 2020 10:26:19 +0200
>>
>> I started using emacs a year ago and when I started everything was
>> really confusing, what is a frame, what is a buffer, how to install
>> packages, what are major and minor modes, etc.. I wanted to give up but
>> then I saw a 1 hour talk about Emacs that shows how powerful it is. Then
>> I was hooked. Unfortunately the sound was no good at all and it was way
>> too long. I think it could be really benefic for emacs to have a 5-10
>> minutes video that would present Emacs not as an old obscure porgram but
>> as an amazing fresh looking tool that drastically improves efficiency. I
>> think people nowadays need an out-of-the-box experience, that's why
>> promoting doom-emacs or spacemacs might be better than the default Emacs.
>>
>> I think if the video is well realised it could really be a huge win.
> I think it's a very good idea.  Would someone want to produce such a
> video?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-08 10:39 ` Arthur Miller
@ 2020-05-10 20:48   ` Nathan Colinet
  0 siblings, 0 replies; 281+ messages in thread
From: Nathan Colinet @ 2020-05-10 20:48 UTC (permalink / raw)
  To: Arthur Miller; +Cc: emacs-devel

> There are already such videos. Check out emacs rocks on YT.
> https://www.youtube.com/user/emacsrocks
>
> Those are even linked to on Emacs webpage, ir you open emacs.org and
> scroll down, you will find the links.
I don't think any brand new user will bother watching something like 
"episode 15 restclient-mode". I think they need "How Emacs makes you 
efficient" or "Emacs makes everything easier" on emacs.org.

> But surely Emacs could have used more of such short feature showing-off
> videos/tutorials.
Maybe Emacs doesn't need more of them but only a good one IMHO.

Regards,

Nathan

On 2020-05-08 12:39, Arthur Miller wrote:
> Nathan Colinet <colinetnathan98@gmail.com> writes:
>
>> Hello,
>>
>> I read on the mailing list that you're looking for a way to make Emacs popular
>> again. I thought I could share my idea.
>>
>> I started using emacs a year ago and when I started everything was really
>> confusing, what is a frame, what is a buffer, how to install packages, what are
>> major and minor modes, etc.. I wanted to give up but then I saw a 1 hour talk
>> about Emacs that shows how powerful it is. Then I was hooked. Unfortunately the
>> sound was no good at all and it was way too long. I think it could be really
>> benefic for emacs to have a 5-10 minutes video that would present Emacs not as
>> an old obscure porgram but as an amazing fresh looking tool that drastically
>> improves efficiency. I think people nowadays need an out-of-the-box experience,
>> that's why promoting doom-emacs or spacemacs might be better than the default
>> Emacs.
>>
>> I think if the video is well realised it could really be a huge win.
>>
>> Stay safe and well,
>>
>> Nathan Colinet
> There are already such videos. Check out emacs rocks on YT.
> https://www.youtube.com/user/emacsrocks
>
> Those are even linked to on Emacs webpage, ir you open emacs.org and
> scroll down, you will find the links.
>
> But surely Emacs could have used more of such short feature showing-off
> videos/tutorials.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-09  7:50 ` Andreas Röhler
@ 2020-05-10 20:57   ` Nathan Colinet
  2020-05-12  3:12     ` Richard Stallman
  0 siblings, 1 reply; 281+ messages in thread
From: Nathan Colinet @ 2020-05-10 20:57 UTC (permalink / raw)
  To: Andreas Röhler, emacs-devel

Hi,

I agree that's too advanced for a beginner user.

On 2020-05-09 09:50, Andreas Röhler wrote:
>
>
> Am 08.05.20 um 10:26 schrieb Nathan Colinet:
>> Hello,
>>
>> I read on the mailing list that you're looking for a way to make 
>> Emacs popular again. I thought I could share my idea.
>>
>> I started using emacs a year ago and when I started everything was 
>> really confusing, what is a frame, what is a buffer, how to install 
>> packages, what are major and minor modes, etc.. I wanted to give up 
>> but then I saw a 1 hour talk about Emacs that shows how powerful it 
>> is. Then I was hooked. Unfortunately the sound was no good at all and 
>> it was way too long. I think it could be really benefic for emacs to 
>> have a 5-10 minutes video that would present Emacs not as an old 
>> obscure porgram but as an amazing fresh looking tool that drastically 
>> improves efficiency. I think people nowadays need an out-of-the-box 
>> experience, that's why promoting doom-emacs or spacemacs might be 
>> better than the default Emacs.
>>
>> I think if the video is well realised it could really be a huge win.
>>
>> Stay safe and well,
>>
>> Nathan Colinet
>>
>>
>>
>
> Hi,
>
> thanks bringing that up. Agree such a video might be helpful. The 
> reasons however, why Emacs is a kind of niche nowadays are multiple 
> and complex. Leaving apart all items Emacs itself can't change, there 
> is something which can be done IMO: making Emacs ready for a beginner 
> in programming resp. for non-programmers. Make Emacs appear mannerly 
> as just an editor first. Which also means: at the beginning leave 
> apart all complex stuff useful for advanced programmers only.
>
> For instance at "Introduction" fairly everything in first paragraphs 
> IMHO may be dropped resp. should be moved at later sections. Copy 
> stuff below for the convenience of the reader here.
>
> All the day enjoying Emacs,
> Andreas
>
> Copy:
>
> Introduction
> ************
>
> You are reading about GNU Emacs, the GNU incarnation of the advanced,
> self-documenting, customizable, extensible editor Emacs.  (The ‘G’ in
> GNU (GNU’s Not Unix) is not silent.)
>
>    We call Emacs “advanced” because it can do much more than simple
> insertion and deletion of text.  It can control subprocesses, indent
> programs automatically, show multiple files at once, edit remote files
> like they were local files, and more.  Emacs editing commands operate in
> terms of characters, words, lines, sentences, paragraphs, and pages, as
> well as expressions and comments in various programming languages.
>
>    “Self-documenting” means that at any time you can use special
> commands, known as “help commands”, to find out what your options are,
> or to find out what any command does, or to find all the commands that
> pertain to a given topic.  *Note Help::.
>
>    “Customizable” means that you can easily alter the behavior of Emacs
> commands in simple ways.  For instance, if you use a programming
> language in which comments start with ‘<**’ and end with ‘**>’, you can
> tell the Emacs comment manipulation commands to use those strings (*note
> Comments::).  To take another example, you can rebind the basic cursor
> motion commands (up, down, left and right) to any keys on the keyboard
> that you find comfortable.  *Note Customization::.
>



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-10 20:32   ` Nathan Colinet
@ 2020-05-11 22:59     ` Stefan Kangas
  0 siblings, 0 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-11 22:59 UTC (permalink / raw)
  To: Nathan Colinet, Eli Zaretskii; +Cc: emacs-devel

Nathan Colinet <colinetnathan98@gmail.com> writes:

> We could find someone on reddit, I think a lot of YouTubers are
> following r/linux. To ensure the video quality GNU or FSF might need to
> pay someone to produce it. I have some ideas about the features of emacs
> the video could highlight.

As far as I know, the FSF doesn't have any money set aside for
advertising Emacs.

We are a volunteer run project, so the way these things happen is
generally that someone just takes it upon themselves to do it.

IMHO, a very well thought out screencast could do the job just as well
as a professionally produced video.  All that is required is a bit of
initiative and creativity, I think, perhaps by asking around for
volunteers to help with certain tasks (for example voice recording of a
manuscript).

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-10 20:57   ` Nathan Colinet
@ 2020-05-12  3:12     ` Richard Stallman
  2020-05-12  7:04       ` Arthur Miller
                         ` (2 more replies)
  0 siblings, 3 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-12  3:12 UTC (permalink / raw)
  To: Nathan Colinet; +Cc: 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. ]]]

  > > For instance at "Introduction" fairly everything in first paragraphs 
  > > IMHO may be dropped resp. should be moved at later sections. Copy 
  > > stuff below for the convenience of the reader here.

Perhaps there is no longer a need to inform the public of those
three basic capabilities of Emacs.

Do Emacs's current competitors have the same capabilities?

    > You are reading about GNU Emacs, the GNU incarnation of the advanced,
    > self-documenting, customizable, extensible editor Emacs. 
-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-12  3:12     ` Richard Stallman
@ 2020-05-12  7:04       ` Arthur Miller
  2020-05-12 13:59         ` Dmitry Gutov
  2020-05-13  4:01         ` Richard Stallman
  2020-05-12  8:23       ` Andreas Röhler
  2020-05-12 12:57       ` GNU Emacs raison d'etre excalamus--- via Emacs development discussions.
  2 siblings, 2 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-12  7:04 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Nathan Colinet, andreas.roehler, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> [[[ 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. ]]]
>
>   > > For instance at "Introduction" fairly everything in first paragraphs 
>   > > IMHO may be dropped resp. should be moved at later sections. Copy 
>   > > stuff below for the convenience of the reader here.
>
> Perhaps there is no longer a need to inform the public of those
> three basic capabilities of Emacs.
>
> Do Emacs's current competitors have the same capabilities?
They have pretty much everything but "self-documenting", which should
maybe be referred as "self-retrospecting" feature. They usually rely on
external documentation. For the rest, they have it. Some of them are
created with goal to be like Emacs, just to use more familiar scripting
language then Lisp (i.e. Javascript) (VS Code, Brackets, Atom, etc).



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-12  3:12     ` Richard Stallman
  2020-05-12  7:04       ` Arthur Miller
@ 2020-05-12  8:23       ` Andreas Röhler
  2020-05-13  3:55         ` Richard Stallman
  2020-05-12 12:57       ` GNU Emacs raison d'etre excalamus--- via Emacs development discussions.
  2 siblings, 1 reply; 281+ messages in thread
From: Andreas Röhler @ 2020-05-12  8:23 UTC (permalink / raw)
  To: emacs-devel; +Cc: Richard Stallman


On 12.05.20 05:12, Richard Stallman wrote:
> [[[ 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. ]]]
>
>    > > For instance at "Introduction" fairly everything in first paragraphs
>    > > IMHO may be dropped resp. should be moved at later sections. Copy
>    > > stuff below for the convenience of the reader here.
>
> Perhaps there is no longer a need to inform the public of those
> three basic capabilities of Emacs.
>
> Do Emacs's current competitors have the same capabilities?
>
>      > You are reading about GNU Emacs, the GNU incarnation of the advanced,
>      > self-documenting, customizable, extensible editor Emacs.

When looking into the net in order to make my point more obvious came 
about this:

The power of Emacs comes from being able to write new commands a [...], 
read and modify commands that are already in Emacs.






^ permalink raw reply	[flat|nested] 281+ messages in thread

* GNU Emacs raison d'etre
  2020-05-12  3:12     ` Richard Stallman
  2020-05-12  7:04       ` Arthur Miller
  2020-05-12  8:23       ` Andreas Röhler
@ 2020-05-12 12:57       ` excalamus--- via Emacs development discussions.
  2020-05-13 16:18         ` Karl Fogel
  2 siblings, 1 reply; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-12 12:57 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Nathan Colinet, andreas.roehler, emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1159 bytes --]

May 11, 2020, 23:12 by rms@gnu.org:

> Perhaps there is no longer a need to inform the public of those
> three basic capabilities of Emacs.
>
> Do Emacs's current competitors have the same capabilities?
>
> > You are reading about GNU Emacs, the GNU incarnation of the advanced,
> > self-documenting, customizable, extensible editor Emacs. 
>
What are we competing for?  I feel that while other threads are examining "missing features", it would be helpful to examine what GNU Emacs does offer.  Not only in software features, but maybe also in philosophy, community, or tradition.

What is it about GNU Emacs that makes this mailing list bustle with enthusiasm?  Other editors use GPL, provide source code, have documentation, are customizable, and extendable.  There's something in how GNU Emacs implements these that is different.  I feel like there are taters to find if we dig a little.

Is it because Emacs Lisp is unique to Emacs that Emacs teaches as well as documents?
Is it that by being a pseudo-Lisp machine, Emacs puts users in the zone of proximal development?
Is GNU Emacs the best embodiment of the GNU philosophy?  


[-- Attachment #2: Type: text/html, Size: 1642 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-12  7:04       ` Arthur Miller
@ 2020-05-12 13:59         ` Dmitry Gutov
  2020-05-12 14:47           ` Arthur Miller
  2020-05-12 16:08           ` Drew Adams
  2020-05-13  4:01         ` Richard Stallman
  1 sibling, 2 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-12 13:59 UTC (permalink / raw)
  To: Arthur Miller, Richard Stallman
  Cc: Nathan Colinet, andreas.roehler, emacs-devel

On 12.05.2020 10:04, Arthur Miller wrote:
> They have pretty much everything but "self-documenting", which should
> maybe be referred as "self-retrospecting" feature

Self-introspecting?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-12 13:59         ` Dmitry Gutov
@ 2020-05-12 14:47           ` Arthur Miller
  2020-05-12 16:08           ` Drew Adams
  1 sibling, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-12 14:47 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Nathan Colinet, andreas.roehler, Richard Stallman, emacs-devel

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 12.05.2020 10:04, Arthur Miller wrote:
>> They have pretty much everything but "self-documenting", which should
>> maybe be referred as "self-retrospecting" feature
>
> Self-introspecting?
Haha, probably :-)

Sorry I am not native english speaker, so I sometimes "guess" some
"international" words, 'coz I am lazy to look 'em up.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: Making Emacs popular again with a video
  2020-05-12 13:59         ` Dmitry Gutov
  2020-05-12 14:47           ` Arthur Miller
@ 2020-05-12 16:08           ` Drew Adams
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-12 16:08 UTC (permalink / raw)
  To: Dmitry Gutov, Arthur Miller, Richard Stallman
  Cc: Nathan Colinet, andreas.roehler, emacs-devel

> > They have pretty much everything but "self-documenting", which should
> > maybe be referred as "self-retrospecting" feature
> 
> Self-introspecting?

self introspecting = introspecting

introspect: "Reflect on one's own thoughts and feelings"

https://www.wordwebonline.com/search.pl?w=introspect



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-12  8:23       ` Andreas Röhler
@ 2020-05-13  3:55         ` Richard Stallman
  2020-05-13  8:18           ` Andreas Röhler
  2020-05-13 10:53           ` Stefan Kangas
  0 siblings, 2 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-13  3:55 UTC (permalink / raw)
  To: Andreas Röhler; +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. ]]]

  > The power of Emacs comes from being able to write new commands a [...], 
  > read and modify commands that are already in Emacs.

That is true.  That's what "extensible" refers to.

The question is, is it worth spending a few paragraphs on those points:

    > You are reading about GNU Emacs, the GNU incarnation of the advanced,
    > self-documenting, customizable, extensible editor Emacs.

When I wrote the first Emacs in 1976, these were exciting new advances.
Most users had never imagined such features in an editor.

Maybe today every programmer has seen such features elsewhere, and
responds to that statement with, "ho hum."  If so, maybe we should
delete those paragraphs.

On the other hand, maybe the standard of comparison today is something
hardly extensible at all.  ISTR that Microsoft Turd has macros; can they
support nontrivial extensions?  What about Google Crocks in a browser,
can that support nontrivial extensions?


-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-12  7:04       ` Arthur Miller
  2020-05-12 13:59         ` Dmitry Gutov
@ 2020-05-13  4:01         ` Richard Stallman
  2020-05-13  8:49           ` Arthur Miller
  2020-05-13 10:43           ` Stefan Kangas
  1 sibling, 2 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-13  4:01 UTC (permalink / raw)
  To: Arthur Miller; +Cc: colinetnathan98, 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. ]]]

  > > Do Emacs's current competitors have the same capabilities?
  > They have pretty much everything but "self-documenting", which should
  > maybe be referred as "self-retrospecting" feature.

Do people think it is desirable to delete most of that intro text?
It is uder 15 lines; perhaps it is harmless to keep it.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-13  3:55         ` Richard Stallman
@ 2020-05-13  8:18           ` Andreas Röhler
  2020-05-13 10:53           ` Stefan Kangas
  1 sibling, 0 replies; 281+ messages in thread
From: Andreas Röhler @ 2020-05-13  8:18 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel


On 13.05.20 05:55, Richard Stallman wrote:
> [[[ 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. ]]]
>
>    > The power of Emacs comes from being able to write new commands a [...],
>    > read and modify commands that are already in Emacs.
>
> That is true.  That's what "extensible" refers to.
>
> The question is, is it worth spending a few paragraphs on those points:
>
>      > You are reading about GNU Emacs,
>
> When I wrote the first Emacs in 1976, these were exciting new advances.
> Most users had never imagined such features in an editor.
>
> Maybe today every programmer has seen such features elsewhere, and
> responds to that statement with, "ho hum."  If so, maybe we should
> delete those paragraphs.
>
> On the other hand, maybe the standard of comparison today is something
> hardly extensible at all.  ISTR that Microsoft Turd has macros; can they
> support nontrivial extensions?  What about Google Crocks in a browser,
> can that support nontrivial extensions?
>
>
Assume understand your point. But the question was about didactics. What 
a beginner, starting to write a letter, needs to know? Why Emacs is 
censored having a steep learning curve? All things mentioned in this 
first sentence are probably true. However must admit even after years 
not being sure what "GNU incarnation of the advanced, self-documenting, 
customizable, extensible editor Emacs" should mean. Are there other 
incarnations than GNU incarnation of Emacs thinkable? Instead "GNU 
incarnation of ...Emacs" would understand "Emacs, an incarnation of GNU" 
- whatever GNU means...



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-13  4:01         ` Richard Stallman
@ 2020-05-13  8:49           ` Arthur Miller
  2020-05-14  5:14             ` Richard Stallman
  2020-05-14  7:38             ` Tim Cross
  2020-05-13 10:43           ` Stefan Kangas
  1 sibling, 2 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-13  8:49 UTC (permalink / raw)
  To: Richard Stallman; +Cc: colinetnathan98, andreas.roehler, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> [[[ 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. ]]]
>
>   > > Do Emacs's current competitors have the same capabilities?
>   > They have pretty much everything but "self-documenting", which should
>   > maybe be referred as "self-retrospecting" feature.
>
> Do people think it is desirable to delete most of that intro text?
> It is uder 15 lines; perhaps it is harmless to keep it.

I don't think it is very important issue. It is normal to have a bit
longer introductorty text/description about application. It just does
not need to take screen estate on the welcome screen maybe?

By the way, I probably wouldn't try to identify Emacs as just a text
editor longer. Personally I see Emacs as en extensible platform, or
system (not in a sense of that joke of operating system), a tool, or
whatever one might wish to call it. I think it has developed and become
usefull much more then just as a text editor. Also I think it might help
if Emacs developed even further in that direction, as a
"multi-tool/swiss army knife" of human-computer interaction?

I don't use other text editors, so I really don't know how good they are
at other tasks then just text editing. I usually just take a look for
the curiosity sake when a new editor/IDE becomes popular, and then I
usually realize Emacs already has everything I need and just uninstall
the new thing. 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-13  4:01         ` Richard Stallman
  2020-05-13  8:49           ` Arthur Miller
@ 2020-05-13 10:43           ` Stefan Kangas
  1 sibling, 0 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-13 10:43 UTC (permalink / raw)
  To: rms, Arthur Miller; +Cc: colinetnathan98, andreas.roehler, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> Do people think it is desirable to delete most of that intro text?
> It is uder 15 lines; perhaps it is harmless to keep it.

I think so, FWIW.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-13  3:55         ` Richard Stallman
  2020-05-13  8:18           ` Andreas Röhler
@ 2020-05-13 10:53           ` Stefan Kangas
  2020-05-13 16:20             ` Drew Adams
  2020-05-14  2:18             ` (emacs) Intro [was: Making Emacs popular again with a video] excalamus--- via Emacs development discussions.
  1 sibling, 2 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-13 10:53 UTC (permalink / raw)
  To: rms, Andreas Röhler; +Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

> The question is, is it worth spending a few paragraphs on those points:
>
>     > You are reading about GNU Emacs, the GNU incarnation of the advanced,
>     > self-documenting, customizable, extensible editor Emacs.
>
> When I wrote the first Emacs in 1976, these were exciting new advances.
> Most users had never imagined such features in an editor.
>
> Maybe today every programmer has seen such features elsewhere, and
> responds to that statement with, "ho hum."  If so, maybe we should
> delete those paragraphs.

I do think most of that introduction comes off as somewhat uninspired
and mundane if you don't know that backstory, such as:

    you can rebind the basic cursor motion commands (up, down, left and
    right) to any keys on the keyboard that you find comfortable

While some parts are more exciting:

    New commands are simply programs written in the Lisp language, which are
    run by Emacs’s own Lisp interpreter.  Existing commands can even be
    redefined in the middle of an editing session, without having to restart
    Emacs.

I think a rewrite would be in order.  But it's hard to write such a text
well.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-12 12:57       ` GNU Emacs raison d'etre excalamus--- via Emacs development discussions.
@ 2020-05-13 16:18         ` Karl Fogel
  2020-05-13 16:28           ` Drew Adams
                             ` (7 more replies)
  0 siblings, 8 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-13 16:18 UTC (permalink / raw)
  To: emacs-devel; +Cc: excalamus, Nathan Colinet, andreas.roehler, Richard Stallman

On 12 May 2020, excalamus--- via "Emacs development discussions." wrote:
>May 11, 2020, 23:12 by rms@gnu.org:
>What are we competing for?  I feel that while other threads are
>examining "missing features", it would be helpful to examine what GNU
>Emacs does offer.  Not only in software features, but maybe also in
>philosophy, community, or tradition.
>
>What is it about GNU Emacs that makes this mailing list bustle with
>enthusiasm?  Other editors use GPL, provide source code, have
>documentation, are customizable, and extendable.  There's something
>in how GNU Emacs implements these that is different.  I feel like
>there are taters to find if we dig a little.
>
>Is it because Emacs Lisp is unique to Emacs that Emacs teaches as
>well as documents?
>Is it that by being a pseudo-Lisp machine, Emacs puts users in the
>zone of proximal development?
>Is GNU Emacs the best embodiment of the GNU philosophy? 

Sure, I'll take the bait:

To the best of my knowledge, no other editing environment rewards sustained user investment so well.

With Emacs, if you keep investing -- i.e., acquiring knowledge and skill by reading documentation, writing customizations, and exploring others' customizations -- Emacs keeps rewarding you with a better and better editing experience.  The degree to which it does this seems normal to many of us here, because we've been used to it for many years.  I think we sometimes fail to appreciate the degree to which non-users, potential ("Emacs-curious") users, and even many actual new users are *not* aware of it: they don't realize how enormous the reward can be, and how broad its scope.

This should probably affect how we think about promoting Emacs.  Emacs shouldn't necessarily try to attract everyone who needs to edit text [1].  Many people who edit text nonetheless don't view text editing as a primary activity worthy of investment.  Those users are not good candidates for Emacs.

Emacs's best prospects are with the sorts of people who *do* see -- or who can be persuaded to see -- text editing as worthy of investment.  There's a loose correlation in which good programmers tend to be those sorts of people, because good programmers are usually willing to invest in learning their tools in general.  E.g., they'll learn their text editor the same way they'll learn their debugger, their programming framework, etc.  But the set isn't limited to just programmers.  For example, scientists and other academics who edit LaTeX documents are often good candidates for Emacs usage, because by both temperament and life situation they are well-positioned to understand how sustained investment in learning their editing environment could pay off in the long term.

So I suggest that GNU Emacs's raison d'être is to be the text editor that best rewards sustained user investment.

I think Emacs actually does so right now, too, and that we just haven't always communicated this fact clearly enough.

Thus, instead of focusing on making Emacs easier for new users, it would be better to focus on smoothing out discontinuities in Emacs' investment-reward curve.  The long-term health of Emacs as a project will not come from a large number of lightly committed users who don't appreciate what makes Emacs unique, but rather from a smaller number of users for whom Emacs is important and irreplaceable.

I'm not suggesting that we shouldn't improve the new-user experience in Emacs, of course.  We should make it as easy as possible for newcomers *while still prioritizing invested users*.   In user experience design, there are frequently tradeoffs between making things easy for newcomers and making them rewarding for experts.  Unfortunately, too often in design discussions, the new user experience automatically wins out -- it's like some kind of magic card that people play (even sometimes unconsciously) in UI/UX discussions.  For Emacs, this would be a mistake.  Emacs's great strength will never be in its new-user experience, and this is in some ways a necessary consequence of Emacs being so great for highly invested long-term users.

This also suggests that the sorts of features that highly-invested users tend to want -- for example, LSP-based features -- should be more important to us than how square the menus are or what menu items are shown in a default startup configuration.  When we make decisions that disappoint the core user base, we endanger the project much more than when we make decisions that disappoint users (or potential users) who weren't likely to become highly invested anyway.

(The fact that Emacs promotes free software by being a good GPL'd program is nice too, and is important to many of us, but it's not unique to Emacs.)

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: Making Emacs popular again with a video
  2020-05-13 10:53           ` Stefan Kangas
@ 2020-05-13 16:20             ` Drew Adams
  2020-05-14  2:18             ` (emacs) Intro [was: Making Emacs popular again with a video] excalamus--- via Emacs development discussions.
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-13 16:20 UTC (permalink / raw)
  To: Stefan Kangas, rms, Andreas Röhler; +Cc: emacs-devel

> some parts are more exciting:
> 
>  New commands are simply programs written in the Lisp language,
>  which are run by Emacs’s own Lisp interpreter.  Existing
>  commands can even be redefined in the middle of an editing
>  session, without having to restart Emacs.

Along with the fact that commands can be redefined
and keys can be rebound to different commands, it
might be worth mentioning that (pretty much) _every_
user action/input involves invoking a command.

That's not obvious.  In particular, it's not obvious
that when you insert text by typing you're invoking
`self-insert-command' for each character-key you type.

I say it "might" be worth mentioning.  No, I don't
think this is super important.  But it gives an idea
how extensible Emacs really is - every interaction
involves customizable commands/keys.  Users control
Emacs behavior ubiquitously.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
@ 2020-05-13 16:28           ` Drew Adams
  2020-05-13 19:39           ` Andreas Röhler
                             ` (6 subsequent siblings)
  7 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-13 16:28 UTC (permalink / raw)
  To: Karl Fogel, emacs-devel
  Cc: excalamus, Nathan Colinet, andreas.roehler, Richard Stallman

+1 to everything Karl said.  Worth rereading.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
  2020-05-13 16:28           ` Drew Adams
@ 2020-05-13 19:39           ` Andreas Röhler
  2020-05-13 20:05             ` Karl Fogel
  2020-05-13 19:46           ` T.V Raman
                             ` (5 subsequent siblings)
  7 siblings, 1 reply; 281+ messages in thread
From: Andreas Röhler @ 2020-05-13 19:39 UTC (permalink / raw)
  To: emacs-devel; +Cc: Karl Fogel


On 13.05.20 18:18, Karl Fogel wrote:
> On 12 May 2020, excalamus--- via "Emacs development discussions." wrote:
>> May 11, 2020, 23:12 by rms@gnu.org:
>> What are we competing for?  I feel that while other threads are
>> examining "missing features", it would be helpful to examine what GNU
>> Emacs does offer.  Not only in software features, but maybe also in
>> philosophy, community, or tradition.
>>
>> What is it about GNU Emacs that makes this mailing list bustle with
>> enthusiasm?  Other editors use GPL, provide source code, have
>> documentation, are customizable, and extendable.  There's something
>> in how GNU Emacs implements these that is different.  I feel like
>> there are taters to find if we dig a little.
>>
>> Is it because Emacs Lisp is unique to Emacs that Emacs teaches as
>> well as documents?
>> Is it that by being a pseudo-Lisp machine, Emacs puts users in the
>> zone of proximal development?
>> Is GNU Emacs the best embodiment of the GNU philosophy?
> Sure, I'll take the bait:
>
> To the best of my knowledge, no other editing environment rewards sustained user investment so well.
>
> With Emacs, if you keep investing -- i.e., acquiring knowledge and skill by reading documentation, writing customizations, and exploring others' customizations -- Emacs keeps rewarding you with a better and better editing experience.  The degree to which it does this seems normal to many of us here, because we've been used to it for many years.  I think we sometimes fail to appreciate the degree to which non-users, potential ("Emacs-curious") users, and even many actual new users are *not* aware of it: they don't realize how enormous the reward can be, and how broad its scope.
>
> This should probably affect how we think about promoting Emacs.  Emacs shouldn't necessarily try to attract everyone who needs to edit text [1].  Many people who edit text nonetheless don't view text editing as a primary activity worthy of investment.  Those users are not good candidates for Emacs.
>
> Emacs's best prospects are with the sorts of people who *do* see -- or who can be persuaded to see -- text editing as worthy of investment.  There's a loose correlation in which good programmers tend to be those sorts of people, because good programmers are usually willing to invest in learning their tools in general.  E.g., they'll learn their text editor the same way they'll learn their debugger, their programming framework, etc.  But the set isn't limited to just programmers.  For example, scientists and other academics who edit LaTeX documents are often good candidates for Emacs usage, because by both temperament and life situation they are well-positioned to understand how sustained investment in learning their editing environment could pay off in the long term.
>
> So I suggest that GNU Emacs's raison d'être is to be the text editor that best rewards sustained user investment.
>
> I think Emacs actually does so right now, too, and that we just haven't always communicated this fact clearly enough.
>
> Thus, instead of focusing on making Emacs easier for new users, it would be better to focus on smoothing out discontinuities in Emacs' investment-reward curve.  The long-term health of Emacs as a project will not come from a large number of lightly committed users who don't appreciate what makes Emacs unique, but rather from a smaller number of users for whom Emacs is important and irreplaceable.
>
> I'm not suggesting that we shouldn't improve the new-user experience in Emacs, of course.  We should make it as easy as possible for newcomers *while still prioritizing invested users*.   In user experience design, there are frequently tradeoffs between making things easy for newcomers and making them rewarding for experts.  Unfortunately, too often in design discussions, the new user experience automatically wins out -- it's like some kind of magic card that people play (even sometimes unconsciously) in UI/UX discussions.  For Emacs, this would be a mistake.  Emacs's great strength will never be in its new-user experience, and this is in some ways a necessary consequence of Emacs being so great for highly invested long-term users.

Agree with everything beside two last paragraphs. Enjoying the 
possibilities to extend and assisting new users being productive seems 
no contradiction. May you give an example where an smooth entrance 
hinders the power of more complex functionality?

Sure, as it was mentioned in other post, writing an introduction for 
beginners is difficult, it is an art of its own.


>
> This also suggests that the sorts of features that highly-invested users tend to want -- for example, LSP-based features -- should be more important to us than how square the menus are or what menu items are shown in a default startup configuration.  When we make decisions that disappoint the core user base, we endanger the project much more than when we make decisions that disappoint users (or potential users) who weren't likely to become highly invested anyway.
>
> (The fact that Emacs promotes free software by being a good GPL'd program is nice too, and is important to many of us, but it's not unique to Emacs.)
>
> Best regards,
> -Karl
>



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
  2020-05-13 16:28           ` Drew Adams
  2020-05-13 19:39           ` Andreas Röhler
@ 2020-05-13 19:46           ` T.V Raman
  2020-05-13 21:00           ` Dmitry Gutov
                             ` (4 subsequent siblings)
  7 siblings, 0 replies; 281+ messages in thread
From: T.V Raman @ 2020-05-13 19:46 UTC (permalink / raw)
  To: Karl Fogel
  Cc: emacs-devel, excalamus, Nathan Colinet, andreas.roehler,
	Richard Stallman

Karl Fogel <kfogel@red-bean.com> writes:

well said!> On 12 May 2020, excalamus--- via "Emacs development discussions." wrote:
>>May 11, 2020, 23:12 by rms@gnu.org:
>>What are we competing for?  I feel that while other threads are
>>examining "missing features", it would be helpful to examine what GNU
>>Emacs does offer.  Not only in software features, but maybe also in
>>philosophy, community, or tradition.
>>
>>What is it about GNU Emacs that makes this mailing list bustle with
>>enthusiasm?  Other editors use GPL, provide source code, have
>>documentation, are customizable, and extendable.  There's something
>>in how GNU Emacs implements these that is different.  I feel like
>>there are taters to find if we dig a little.
>>
>>Is it because Emacs Lisp is unique to Emacs that Emacs teaches as
>>well as documents?
>>Is it that by being a pseudo-Lisp machine, Emacs puts users in the
>>zone of proximal development?
>>Is GNU Emacs the best embodiment of the GNU philosophy? 
>
> Sure, I'll take the bait:
>
> To the best of my knowledge, no other editing environment rewards sustained user investment so well.
>
> With Emacs, if you keep investing -- i.e., acquiring knowledge and
> skill by reading documentation, writing customizations, and exploring
> others' customizations -- Emacs keeps rewarding you with a better and
> better editing experience.  The degree to which it does this seems
> normal to many of us here, because we've been used to it for many
> years.  I think we sometimes fail to appreciate the degree to which
> non-users, potential ("Emacs-curious") users, and even many actual new
> users are *not* aware of it: they don't realize how enormous the
> reward can be, and how broad its scope.
>
> This should probably affect how we think about promoting Emacs.  Emacs
> shouldn't necessarily try to attract everyone who needs to edit text
> [1].  Many people who edit text nonetheless don't view text editing as
> a primary activity worthy of investment.  Those users are not good
> candidates for Emacs.
>
> Emacs's best prospects are with the sorts of people who *do* see -- or
> who can be persuaded to see -- text editing as worthy of investment.
> There's a loose correlation in which good programmers tend to be those
> sorts of people, because good programmers are usually willing to
> invest in learning their tools in general.  E.g., they'll learn their
> text editor the same way they'll learn their debugger, their
> programming framework, etc.  But the set isn't limited to just
> programmers.  For example, scientists and other academics who edit
> LaTeX documents are often good candidates for Emacs usage, because by
> both temperament and life situation they are well-positioned to
> understand how sustained investment in learning their editing
> environment could pay off in the long term.
>
> So I suggest that GNU Emacs's raison d'être is to be the text editor that best rewards sustained user investment.
>
> I think Emacs actually does so right now, too, and that we just haven't always communicated this fact clearly enough.
>
> Thus, instead of focusing on making Emacs easier for new users, it
> would be better to focus on smoothing out discontinuities in Emacs'
> investment-reward curve.  The long-term health of Emacs as a project
> will not come from a large number of lightly committed users who don't
> appreciate what makes Emacs unique, but rather from a smaller number
> of users for whom Emacs is important and irreplaceable.
>
> I'm not suggesting that we shouldn't improve the new-user experience
> in Emacs, of course.  We should make it as easy as possible for
> newcomers *while still prioritizing invested users*.  In user
> experience design, there are frequently tradeoffs between making
> things easy for newcomers and making them rewarding for experts.
> Unfortunately, too often in design discussions, the new user
> experience automatically wins out -- it's like some kind of magic card
> that people play (even sometimes unconsciously) in UI/UX discussions.
> For Emacs, this would be a mistake.  Emacs's great strength will never
> be in its new-user experience, and this is in some ways a necessary
> consequence of Emacs being so great for highly invested long-term
> users.
>
> This also suggests that the sorts of features that highly-invested
> users tend to want -- for example, LSP-based features -- should be
> more important to us than how square the menus are or what menu items
> are shown in a default startup configuration.  When we make decisions
> that disappoint the core user base, we endanger the project much more
> than when we make decisions that disappoint users (or potential users)
> who weren't likely to become highly invested anyway.
>
> (The fact that Emacs promotes free software by being a good GPL'd
> program is nice too, and is important to many of us, but it's not
> unique to Emacs.)
>
> Best regards,
> -Karl
>

-- 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 19:39           ` Andreas Röhler
@ 2020-05-13 20:05             ` Karl Fogel
  2020-05-13 20:52               ` Dmitry Gutov
                                 ` (2 more replies)
  0 siblings, 3 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-13 20:05 UTC (permalink / raw)
  To: Andreas Röhler; +Cc: emacs-devel

On 13 May 2020, Andreas Röhler wrote:
>Agree with everything beside two last paragraphs. Enjoying the
>possibilities to extend and assisting new users being productive seems 
>no contradiction. May you give an example where an smooth entrance
>hinders the power of more complex functionality?

The newcomer-vs-expert tradeoff is real, and it's pervasive throughout UI and UX design.

One example is button-based functionality.  For both experts and newcomers, those buttons/icons take away screen real estate -- but for newcomers they make features easier to find, so it's worth it.  For experts, they *just* take away screen real estate, while providing little or no benefit.

Use of small symbols to indicate state in the modeline is another area.  Experienced users know what "**" in the mode line means, what "%" means, etc.  Newcomers are frequently confused by the mode line; it is noise to them, until they know how to interpret it -- but that takes a bit of investment.  Now, we could provide bigger, more verbose signs of current state -- but then we'd be taking away screen real estate again.

Another area is the keybinding space and the minibuffer.  Just about every time I have watched a new user use Emacs, I have noticed how frequently they accidentally hit some key combination or sequence and wind up in some weird state that they never meant to be in -- and don't know how to get out of.  Often they have minibuffer prompts sitting around all the time, and are unaware that Emacs is asking them for some piece of information (after all, the user didn't mean to put Emacs into that state and has no idea she did so).  But having those keybindings available is *good* for experts, as we know from personal experience.

I could go on.  I've taught many newcomers to Emacs, and often the things that are hardest for them are exactly the things that are *good* for the experienced user.

These design tradeoffs cannot be avoided.  It would be a fallacy to think that it's always possible to be *both* maximally newcomer-friendly and investor-friendly.  

(The term "user-friendly" is itself misleading.  There is no such thing as "a user" in a way that makes the term "user-friendly" meaningful.  Better terms would at least attempt to make important distinctions -- "newcomer-friendly", "expert-friendly", "ADHD-friendly", "limited-movement-friendly", "visually-impaired-friendly", etc -- and would encourage designers to understand that being good in some categories means being bad in others.)

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 20:05             ` Karl Fogel
@ 2020-05-13 20:52               ` Dmitry Gutov
  2020-05-13 22:04                 ` Karl Fogel
  2020-05-14  6:16               ` Andreas Röhler
  2020-05-15  3:18               ` Richard Stallman
  2 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-13 20:52 UTC (permalink / raw)
  To: Karl Fogel, Andreas Röhler; +Cc: emacs-devel

On 13.05.2020 23:05, Karl Fogel wrote:
> Use of small symbols to indicate state in the modeline is another area.  Experienced users know what "**" in the mode line means, what "%" means, etc.  Newcomers are frequently confused by the mode line; it is noise to them, until they know how to interpret it -- but that takes a bit of investment.  Now, we could provide bigger, more verbose signs of current state -- but then we'd be taking away screen real estate again.
> 
> Another area is the keybinding space and the minibuffer.  Just about every time I have watched a new user use Emacs, I have noticed how frequently they accidentally hit some key combination or sequence and wind up in some weird state that they never meant to be in -- and don't know how to get out of.  Often they have minibuffer prompts sitting around all the time, and are unaware that Emacs is asking them for some piece of information (after all, the user didn't mean to put Emacs into that state and has no idea she did so).  But having those keybindings available is*good*  for experts, as we know from personal experience.

I might with agree with you principle, but both examples seem suspect.

First, the "low investment" editors frequently have higher density of 
information in the UI elements that correspond to our mode-line and 
fringe, margins, etc. Largely thanks to their technical capabilities 
(various-sized fonts, graphics, being able to fit different kinds of 
indicators together on a "fringe"). So it appears at least in this area 
Emacs has been overtaken purely on technical grounds.

Regarding the key combinations and the minibuffer, there is no hard 
evidence that our current behavior is supremely optimal. In fact, I'm 
fairly sure that by being risk-averse and resistant to change, and by 
having no UX experts around, Emacs loses out on some possible 
advancements in usability. Even expert-friendly ones.

So I would recommend not becoming complacent, or becoming assured that 
workflows you have spent some time getting accustomed to, can't be improved.

> I could go on.  I've taught many newcomers to Emacs, and often the things that are hardest for them are exactly the things that are*good*  for the experienced user.
> 
> These design tradeoffs cannot be avoided.  It would be a fallacy to think that it's always possible to be*both*  maximally newcomer-friendly and investor-friendly.

The last sentence is sensible, but it's generally beside the point: I'm 
sure we still have a long way to go in both directions.

And unfortunately, in practice around here "prioritizing invested users" 
somehow turns out to mean "let's not make existing users uncomfortable". 
By changing defaults, introducing new workflows, or changing old ones. 
Which, in the long run, serves neither crowd.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
                             ` (2 preceding siblings ...)
  2020-05-13 19:46           ` T.V Raman
@ 2020-05-13 21:00           ` Dmitry Gutov
  2020-05-13 21:02           ` excalamus--- via Emacs development discussions.
                             ` (3 subsequent siblings)
  7 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-13 21:00 UTC (permalink / raw)
  To: Karl Fogel, emacs-devel
  Cc: excalamus, Nathan Colinet, andreas.roehler, Richard Stallman

On 13.05.2020 19:18, Karl Fogel wrote:
> This also suggests that the sorts of features that highly-invested users tend to want -- for example, LSP-based features

LSP is a high-investment feature?

Reminder: it came to us from VS Code, Microsoft's text editor for 
programmers.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
                             ` (3 preceding siblings ...)
  2020-05-13 21:00           ` Dmitry Gutov
@ 2020-05-13 21:02           ` excalamus--- via Emacs development discussions.
  2020-05-13 22:22           ` H. Dieter Wilhelm
                             ` (2 subsequent siblings)
  7 siblings, 0 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-13 21:02 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Emacs Devel, Richard Stallman, Nathan Colinet, Andreas Roehler

[-- Attachment #1: Type: text/plain, Size: 2447 bytes --]

May 13, 2020, 12:18 by kfogel@red-bean.com:

> Sure, I'll take the bait:
>
Thank you for your thoughts!  Apologies if it appeared like I was trying to trap anyone or pick an argument.  My intention was to ask something like, "What does Emacs do well and how might we apply that strength more effectively?".  In that sense, it was more like a runner trying to best last week's time rather than trying to arrive first at the finish line.  But I also wasn't sure if there was a specific finish line in mind (singular, plural, fixed, or movable).

> Thus, instead of focusing on making Emacs easier for new users, it would be better to focus on smoothing out discontinuities in Emacs' investment-reward curve.  The long-term health of Emacs as a project will not come from a large number of lightly committed users who don't appreciate what makes Emacs unique, but rather from a smaller number of users for whom Emacs is important and irreplaceable.
>
I like the idea of "focus on smoothing out discontinuities in Emacs' investment-reward curve."  I think there be taters there.

What makes GNU Emacs unique?  After all, there's ITS Emacs, Gosling Emacs, XEmacs, and DrRacket (at least). 

Here's how I think Emacs, if not GNU Emacs, is unique:

Emacs is an editor with a heart and a soul.  Its beats to a rhythm of  compile, eval, garbage collect, transforming code into action.  It performs the raw mechanical functions an application needs to do.  But it also has an intangible quality aficionados recognize.  Like a soul, it's difficult to explain and you probably feel silly trying to.  I think being able to explain that to people would be a tremendous advantage.

I came to Emacs from the mundane need to track work hours (achieved with Org mode).  Emacs' ability to introspect, the marvelous "Introduction to Programming in Emacs Lisp", and it's unique ability for the user to Choose Your Own Programming Adventure led me to Free Software and to change my career to software development.  It changed my life, or at least the way I look at it.  I don't think other editors, or even other GNU projects, exist in a realm where that kind of thing is possible.   It seems to me that Emacs is unique because it occupies a unique space between user and creator.  If that's so, are there ways we might exploit that?

Education is one investment-reward domain.  In what other domains might Emacs be well poised?  

[-- Attachment #2: Type: text/html, Size: 3110 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 20:52               ` Dmitry Gutov
@ 2020-05-13 22:04                 ` Karl Fogel
  2020-05-13 22:55                   ` Dmitry Gutov
  2020-05-14  6:26                   ` tomas
  0 siblings, 2 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-13 22:04 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Andreas Röhler, emacs-devel

On 13 May 2020, Dmitry Gutov wrote:
>I might with agree with you principle, but both examples seem suspect.
>
>First, the "low investment" editors frequently have higher density of
>information in the UI elements that correspond to our mode-line and 
>fringe, margins, etc. Largely thanks to their technical capabilities
>(various-sized fonts, graphics, being able to fit different kinds of 
>indicators together on a "fringe"). So it appears at least in this
>area Emacs has been overtaken purely on technical grounds.

*nod*.  There might be room for improvement in how Emacs uses various visual areas, though, having watched many different programmers using many different kinds of editors, I think Emacs's mode line actually scores pretty well on the indicator front (once one learns how to interpret it).

But in any case, note that these other editors also face this same tradeoff.  You can see it in Microsoft Word, for example: in recent versions, its default startup control panel looks like the cockpit of Boeing 747.  Experienced users complain noisily about it (you can find various blog posts and other chatter about this on the Net), but this UI change was made so that *new* users could find a visual path to anything they might be looking for.

The tradeoff will always be there, even if sometimes there is room for Emacs to improve -- i.e., room for Emacs to "get to the tradeoff point", so to speak.

>Regarding the key combinations and the minibuffer, there is no hard
>evidence that our current behavior is supremely optimal. In fact, I'm 
>fairly sure that by being risk-averse and resistant to change, and by
>having no UX experts around, Emacs loses out on some possible 
>advancements in usability. Even expert-friendly ones.
>
>So I would recommend not becoming complacent, or becoming assured that
>workflows you have spent some time getting accustomed to, can't be
>improved.

Absolutely.

But the particular *way* in which we've crowded the keybinding space is independent of the fact that the space is crowded, and necessarily must be crowded if it is to offer experts the quick access to functionality that they want.  Crowding the keybinding space is good for high-investment users and bad for newcomers (that's why newcomers to Emacs so often trip accidentally over unexpectedly combustible key sequences).  That tradeoff will always be there, no matter what the particular mapping of key sequences to functionality is.

So I think my example there holds up pretty well.

>> I could go on.  I've taught many newcomers to Emacs, and often the things that are hardest for them are exactly the things that are*good*  for the experienced user.
>> These design tradeoffs cannot be avoided.  It would be a fallacy to
>> think that it's always possible to be*both*  maximally
>> newcomer-friendly and investor-friendly.
>
>The last sentence is sensible, but it's generally beside the point:
>I'm sure we still have a long way to go in both directions.

Very good point: there are some things we could that would get us closer to the point where tradeoff decisions are necessary.  But not everything we contemplate doing will be in that category.  Some of the things we want to do will already *be* at the tradeoff point, and then we will have a decision to make.

>> This also suggests that the sorts of features that highly-invested
>> users tend to want -- for example, LSP-based features
>
>LSP is a high-investment feature?
>
>Reminder: it came to us from VS Code, Microsoft's text editor for
>programmers.

Not quite.  What I wrote, exactly, is that it is the sort of feature that highly-invested users tend to want.  That is different in a subtle way.  By not supplying the sorts of things that LSP would enable, we signal to high-investment users that there is an entire area of improvement that Emacs is not going to explore.  So while lack of LSP hurts both newcomers and experts, it discourages the experts more, because they are looking for signals that continued investment will lead to increased reward.

Put another way: LSP is the sort of thing that enables highly-invested users -- the kinds of people who write or would consider writing Elisp -- to build new functionality into Emacs, perhaps even functionality we cannot predict today.  While LSP is a good thing for all users, newcomers and experts alike, it specifically *rewards* further investment by users who are motivated to make (and capable of making) investments based on LSP's availability.  It is an expertise amplifier.  When we fail to include an expertise amplifier like that, we "bend the curve" -- in the wrong direction.

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
                             ` (4 preceding siblings ...)
  2020-05-13 21:02           ` excalamus--- via Emacs development discussions.
@ 2020-05-13 22:22           ` H. Dieter Wilhelm
  2020-05-14  4:20             ` Karl Fogel
  2020-05-14  0:04           ` John Wiegley
  2020-05-14  5:08           ` Richard Stallman
  7 siblings, 1 reply; 281+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-13 22:22 UTC (permalink / raw)
  To: Karl Fogel
  Cc: excalamus, Nathan Colinet, andreas.roehler, Richard Stallman,
	emacs-devel

Karl Fogel <kfogel@red-bean.com> writes:

> To the best of my knowledge, no other editing environment rewards
> sustained user investment so well.  ...

What you are saying is really very well put and I support your opinion
but...

> So I suggest that GNU Emacs's raison d'être is to be the text editor
> that best rewards sustained user investment.

Forgive me if I think above sentence should be a bit reformulated
because GNU Emacs is and must be more than a text editor (as text editor
I would choose Vim).

I like your notion of environment better, because Emacs should be the
glue between - effective - processes or workflows which (can and will)
arise around textual representations.

One example of such workflow support is org-mode which helps structuring
text (ideas), controlling and gathering calculation results, exporting
text together with these results and their recipe into documents and
tangling the code for achieving the results (reproducible research). And
here text becomes true magic.

Thank you

  Dieter


-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 22:04                 ` Karl Fogel
@ 2020-05-13 22:55                   ` Dmitry Gutov
  2020-05-14  4:56                     ` Karl Fogel
  2020-05-14  6:26                   ` tomas
  1 sibling, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-13 22:55 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Andreas Röhler, emacs-devel

On 14.05.2020 01:04, Karl Fogel wrote:
> On 13 May 2020, Dmitry Gutov wrote:
>> I might with agree with you principle, but both examples seem suspect.
>>
>> First, the "low investment" editors frequently have higher density of
>> information in the UI elements that correspond to our mode-line and
>> fringe, margins, etc. Largely thanks to their technical capabilities
>> (various-sized fonts, graphics, being able to fit different kinds of
>> indicators together on a "fringe"). So it appears at least in this
>> area Emacs has been overtaken purely on technical grounds.
> 
> *nod*.  There might be room for improvement in how Emacs uses various visual areas, though, having watched many different programmers using many different kinds of editors, I think Emacs's mode line actually scores pretty well on the indicator front (once one learns how to interpret it).

I think the mode-line is more or less average by today's standards. But 
of course it wins on customizability. The fringes a significantly less 
functional, though. :-(

> But in any case, note that these other editors also face this same tradeoff.  You can see it in Microsoft Word, for example: in recent versions, its default startup control panel looks like the cockpit of Boeing 747.  Experienced users complain noisily about it (you can find various blog posts and other chatter about this on the Net), but this UI change was made so that *new* users could find a visual path to anything they might be looking for.
> 
> The tradeoff will always be there, even if sometimes there is room for Emacs to improve -- i.e., room for Emacs to "get to the tradeoff point", so to speak.

Yes, the tradeoff is somewhere in there, but my problem with the 
conclusion is that it would be really easy to misapply your principle 
(e.g. by saying we don't need fancier buttons, even though we probably 
do, or that the Getting Started guide is good enough and doesn't need 
improvement, and someone should go work on specialized Org-mode docs 
instead).

Making good use of it seems difficult.

The kind of person who *could* make a better judgment in this area is 
someone who specializes on UX. And they are rare guests around here.

> But the particular *way* in which we've crowded the keybinding space is independent of the fact that the space is crowded, and necessarily must be crowded if it is to offer experts the quick access to functionality that they want.  Crowding the keybinding space is good for high-investment users and bad for newcomers (that's why newcomers to Emacs so often trip accidentally over unexpectedly combustible key sequences).  That tradeoff will always be there, no matter what the particular mapping of key sequences to functionality is.

Are you sure that this particular aspect is _bad_ for new users, though? 
Nobody likes to stretch they hand too far. But I'll grant you this 
point, that Emacs is *somewhat* on the side of high-investment here.

This part is expected of a professional tool, however, and the 
experience for newcomers could be improved without taking away much from 
the "oldies". See the 'transient' package, for example, recently 
proposed for inclusion on emacs-devel.

>>> I could go on.  I've taught many newcomers to Emacs, and often the things that are hardest for them are exactly the things that are*good*  for the experienced user.
>>> These design tradeoffs cannot be avoided.  It would be a fallacy to
>>> think that it's always possible to be*both*  maximally
>>> newcomer-friendly and investor-friendly.
>>
>> The last sentence is sensible, but it's generally beside the point:
>> I'm sure we still have a long way to go in both directions.
> 
> Very good point: there are some things we could that would get us closer to the point where tradeoff decisions are necessary.  But not everything we contemplate doing will be in that category.  Some of the things we want to do will already *be* at the tradeoff point, and then we will have a decision to make.

Some of them, probably. At this point, I think, there are still a lot of 
decisions that would bring us closer to newcomer-friendliness while 
keeping no worse high-investment compatibility.

>>> This also suggests that the sorts of features that highly-invested
>>> users tend to want -- for example, LSP-based features
>>
>> LSP is a high-investment feature?
>>
>> Reminder: it came to us from VS Code, Microsoft's text editor for
>> programmers.
> 
> Not quite.  What I wrote, exactly, is that it is the sort of feature that highly-invested users tend to want.  That is different in a subtle way.  By not supplying the sorts of things that LSP would enable, we signal to high-investment users that there is an entire area of improvement that Emacs is not going to explore.  So while lack of LSP hurts both newcomers and experts, it discourages the experts more, because they are looking for signals that continued investment will lead to increased reward.

I'm glad that we both like LSP, or at least the idea of it.

But it seems these days almost everybody wants it, except for MS Word 
and Notepad users.

> Put another way: LSP is the sort of thing that enables highly-invested users -- the kinds of people who write or would consider writing Elisp -- to build new functionality into Emacs, perhaps even functionality we cannot predict today.  While LSP is a good thing for all users, newcomers and experts alike, it specifically *rewards* further investment by users who are motivated to make (and capable of making) investments based on LSP's availability.  It is an expertise amplifier.  When we fail to include an expertise amplifier like that, we "bend the curve" -- in the wrong direction.

There are certain aspects where LSP is not exactly perfect: the 
functionality it allows is limited by the protocol, and by LSP servers 
available currently. It's an "ecosystem amplifier", or maybe an 
equalizer even.

I mean, it for sure is great, not to be lagging in language support for 
a whole number of languages where we did before. But there are different 
protocols that allow more powerful extensibility. nREPL, for example.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
                             ` (5 preceding siblings ...)
  2020-05-13 22:22           ` H. Dieter Wilhelm
@ 2020-05-14  0:04           ` John Wiegley
  2020-05-14  5:08           ` Richard Stallman
  7 siblings, 0 replies; 281+ messages in thread
From: John Wiegley @ 2020-05-14  0:04 UTC (permalink / raw)
  To: Karl Fogel
  Cc: excalamus, Nathan Colinet, andreas.roehler, Richard Stallman,
	emacs-devel

>>>>> "KF" == Karl Fogel <kfogel@red-bean.com> writes:

KF> To the best of my knowledge, no other editing environment rewards
KF> sustained user investment so well.

100% agree.

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2



^ permalink raw reply	[flat|nested] 281+ messages in thread

* (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-13 10:53           ` Stefan Kangas
  2020-05-13 16:20             ` Drew Adams
@ 2020-05-14  2:18             ` excalamus--- via Emacs development discussions.
  2020-05-14 12:04               ` Dmitry Gutov
                                 ` (2 more replies)
  1 sibling, 3 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-14  2:18 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: Richard Stallman, Andreas Röhler, Emacs Devel

[-- Attachment #1: Type: text/plain, Size: 4392 bytes --]

May 13, 2020, 06:53 by stefankangas@gmail.com:

> Richard Stallman <rms@gnu.org> writes:
>
>> The question is, is it worth spending a few paragraphs on those points:
>>
>> > You are reading about GNU Emacs, the GNU incarnation of the advanced,
>> > self-documenting, customizable, extensible editor Emacs.
>>
>> When I wrote the first Emacs in 1976, these were exciting new advances.
>> Most users had never imagined such features in an editor.
>>
>> Maybe today every programmer has seen such features elsewhere, and
>> responds to that statement with, "ho hum."  If so, maybe we should
>> delete those paragraphs.
>>
>
> I do think most of that introduction comes off as somewhat uninspired
> and mundane if you don't know that backstory, such as:
>
> you can rebind the basic cursor motion commands (up, down, left and
> right) to any keys on the keyboard that you find comfortable
>
> While some parts are more exciting:
>
> New commands are simply programs written in the Lisp language, which are
> run by Emacs’s own Lisp interpreter.  Existing commands can even be
> redefined in the middle of an editing session, without having to restart
> Emacs.
>
> I think a rewrite would be in order.  But it's hard to write such a text
> well.
>
> Best regards,
> Stefan Kangas
>
How's this for a start?

+ Welcome to GNU Emacs!
+
+ An Emacs, short for "Editor MACroS", is a kind of text editor built
+ from the idea that each key calls a tiny program (or macro). This idea
+ proves powerful in practice, enabling far more than simple insertion
+ and deletion of characters.  With it, you can operate on words or
+ lines, sentences or paragraphs, even whole pages.  You can navigate
+ within or between documents, automate tasks, and control subprocesses;
+ all with the press of a key!  GNU Emacs is the GNU project's
+ incarnation of the Emacs idea.
+
+ GNU Emacs is built for introspection and extensibility.
+
+ "Introspection" means GNU Emacs has self-knowledge.  Every aspect of
+ the system is documented and, because of the Emacs idea, that
+ information is easy to access.  The documentation may be general, like
+ this introduction.  It may be instructive, like the tutorials that
+ are included.  The documentation even reaches down to the source code
+ itself!  All of this is right at your fingertips.  See Help.
+
+ "Extensibility" means behavior can be altered and improved.  Users can
+ customize their environment, from keyboard shortcuts to color themes
+ and most everything in-between.  See Customization.  The extensibility
+ goes beyond simple customization: new commands can be created and
+ applied in real-time.  New commands can be bundled in packages and
+ shared with the diverse Emacs community. Most of the commands in Emacs
+ are written in Lisp, with a few exceptions in C.  See Emacs Lisp
+ Intro(eintr) if you want to learn Emacs Lisp programming.
+
+ GNU Emacs is used by authors and researchers, as well as programmers.
+ It has seen active development for more than 30 years; it is a
+ heritage as much as a community project.  We love GNU Emacs because we
+ feel that no other editing environment rewards sustained user
+ investment quite like it.  We hope that will be your experience, too.

A few thoughts:
- The introduction in Emacs 26.3 is 306 words.  This is also 306 words.  I propose any rewrite should also be ~306 words.
- Extensible is more specific than customizable; if you're extensible, you're necessarily customizable, right?
- As brought up in the "GNU Emacs Raison d'etre" thread, it appears "We love GNU Emacs because we feel that no other editing environment rewards sustained user investment quite like it."  I buried this in the last paragraph because it flowed.  It's an audacious claim; one I think GNU Emacs upholds and a standard I think the community may implicitly support.  If so, it might be helpful to make it explicit.  Maybe that sentiment should be front and center?
- Aside from memory, these were my sources:
https://web.archive.org/web/20000819071104/http://www.multicians.org:80/mepap.html#seciii
https://www.iro.umontreal.ca/~monnier/hopl-4-emacs-lisp.pdf
- Real-time editor is used differently here than it appears to have meant in 1976.  I have used it here as shorthand for "without having to restart Emacs".

[-- Attachment #2: Type: text/html, Size: 5966 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 22:22           ` H. Dieter Wilhelm
@ 2020-05-14  4:20             ` Karl Fogel
  0 siblings, 0 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-14  4:20 UTC (permalink / raw)
  To: H. Dieter Wilhelm
  Cc: excalamus, Nathan Colinet, andreas.roehler, Richard Stallman,
	emacs-devel

On 14 May 2020, H. Dieter Wilhelm wrote:
>> To the best of my knowledge, no other editing environment rewards
>> sustained user investment so well.  ...
>
>What you are saying is really very well put and I support your opinion
>but...
>
>> So I suggest that GNU Emacs's raison d'être is to be the text editor
>> that best rewards sustained user investment.
>
>Forgive me if I think above sentence should be a bit reformulated
>because GNU Emacs is and must be more than a text editor (as text editor
>I would choose Vim).

Yes, agreed.  My choice of terminology merely shows how deeply Emacs has affected my perception and caused me to use words differently from how others use them :-).  After 28 years inside Emacs, the phrase "text editor" for me simply *means* all the things Emacs does with text -- including handling email, running command-line shells, browsing directory structures, performing version control operations, etc.

(Vi/vim also highly rewards investment, as a pure text editor in the more limited sense that you mean, although in practice its users don't seem to take extensibility quite as far as the most dedicated Emacs users do.)

Anyway, I agree with you, and an improved phrasing might be:

"GNU Emacs's raison d'être is to be the text manipulation environment that best rewards sustained user investment."

>I like your notion of environment better, because Emacs should be the
>glue between - effective - processes or workflows which (can and will)
>arise around textual representations.

Yep.

(I agree with your later observations about Org Mode too, but my point is not about any particular mode or package, of course.)

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 22:55                   ` Dmitry Gutov
@ 2020-05-14  4:56                     ` Karl Fogel
  2020-05-14 16:37                       ` Drew Adams
                                         ` (3 more replies)
  0 siblings, 4 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-14  4:56 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Andreas Röhler, emacs-devel

On 14 May 2020, Dmitry Gutov wrote:
>Yes, the tradeoff is somewhere in there, but my problem with the
>conclusion is that it would be really easy to misapply your principle 
>(e.g. by saying we don't need fancier buttons, even though we probably
>do, or that the Getting Started guide is good enough and doesn't need 
>improvement, and someone should go work on specialized Org-mode docs
>instead).
>
>Making good use of it seems difficult.

Any guiding principle can be misused, but that doesn't make it useless.

The particular misuses you cite above are speculative -- no one's actually saying those things, as far as I'm aware.

In a reply to Christopher Lemmer Webber just now [1], I got a little bit more specific:

  > If we just say "Emacs should be easier for newcomers to learn",
  > that's not a useful rallying cry IMHO.  If we say instead "Emacs
  > should try to attract newcomers who have a higher-than-average
  > probability of becoming high-investment users, and should explain
  > early on to those newcomers what the road ahead looks like", *then*
  > we have a high-level guiding principle we can actually use.

So there's some concrete guidance about *how* we might seek to improve the Getting Started guide (and other things like the Emacs web site, starter videos, etc):

* Tell newcomers up front that Emacs really starts to be worth it after a few years, not a few weeks.  Set expectations right from the start.

* Show them some of the abilities they will eventually have, so that they can see why it's worth it to make the investment.

* Also tell them about the ways in which Emacs may frustrate them along the way, and explain that those frustrations are common and are sometimes inevitably entangled with the same things that make Emacs winning in the long term.

I find it fairly easy to come up with ways in which this principle would provide guidance in certain decisions.  I could try to list more of those ways, if it would be helpful, but I just don't want to get into a sub-discussion about each such example.  It's meant to be a high-level principle, after all.

Ultimately, I personally find it helpful in thinking about how to teach Emacs and how to write packages.  Here is the principle, reworded slightly after a suggestion from H. Dieter Wilhelm:

"GNU Emacs's raison d'être is to be the text manipulation environment that best rewards sustained user investment."

Apparently some other people here find it useful as well.   You might or might not be one of them, but I can at least promise you that I'll never use this principle to make bad suggestions about ways in which Emacs should be made unfriendly to newcomers :-).

>The kind of person who *could* make a better judgment in this area is
>someone who specializes on UX. And they are rare guests around here.

More UX expertise would always help, naturally, but those of us who are here are not wholly ignorant of the field either, nor of the questions and tradeoffs that need to be dealt with.

>Are you sure that this particular aspect is _bad_ for new users, though?

Yes.  I am sure.

I've taught Emacs to a lot of people -- scores of them, at least; I don't keep track, but the sample size is large enough to be beyond merely anecdotal at this point.  I've watched newcomers run into the same obstacles over and over, and this particular obstacle is always one of the first they encounter.

>Nobody likes to stretch they hand too far. But I'll grant you
>this point, that Emacs is *somewhat* on the side of high-investment
>here.
>
>This part is expected of a professional tool, however, and the
>experience for newcomers could be improved without taking away much
>from the "oldies". See the 'transient' package, for example, recently 
>proposed for inclusion on emacs-devel.

I don't have any experience using 'transient', so I'd need more explanation from you to understand what you meant by that part.  (I tried to understand 'transient' from reading [2] and [3], but unfortunately -- and somewhat surprisingly! -- the documentation at those pages does not give a single concrete example of transient's use.)

However, your assertion that "the experience for newcomers could be improved without taking away much from the 'oldies'" is exactly what I'm arguing is not true.  I actually think we can't (much) improve this particular part of the experience for newcomers without taking away one of the things about Emacs that most rewards investment.

The newcomers who eventually *do* become experts do so in part by first stumbling across new commands accidentally (in that crowded keybinding space) and then using help tools like `C-h l' to see what they just did.  So one of the things we should prioritize is teaching newcomers how important those help facilities are and how to use them in a smart way.  I'm specifically saying that this is *more important for Emacs than it is for other editors*.  Sure, users of (say) the Atom editor should eventually know how to use the built-in help there too.  But it's a difference in prioritization: for Emacs users, using that built-in help is more important than it would be in other editors, and the methods and circumstances of using the help are different too.  So we should incorporate that fact into how we present Emacs to new users.

(Again, this is from at least some experience.  The users I've taught who have gone on to become proficient Emacs users are ones who invested very early in learning the various help facilities and when to use them.)

>Some of them, probably. At this point, I think, there are still a lot
>of decisions that would bring us closer to newcomer-friendliness while 
>keeping no worse high-investment compatibility.

That could be true, though I'm a bit more skeptical than you are.  In any case, it does not make the principle inoperative; it is consistent with the principle.

I believe we'll make better decisions if we keep in mind that "friendly to newcomers" is not, in itself, the primary goal.

>I'm glad that we both like LSP, or at least the idea of it.
>
>But it seems these days almost everybody wants it, except for MS Word
>and Notepad users.

Yes.  High-investment users, however, see more possibilities from LSP than low-investment users do -- they'll go farther with it.

>There are certain aspects where LSP is not exactly perfect: the
>functionality it allows is limited by the protocol, and by LSP servers 
>available currently. It's an "ecosystem amplifier", or maybe an
>equalizer even.
>
>I mean, it for sure is great, not to be lagging in language support
>for a whole number of languages where we did before. But there are
>different protocols that allow more powerful extensibility. nREPL, for
>example.

Ah, that's a technical question about the suitability of LSP for a particular problem space, and I'm not well-informed enough to have a useful opinion there.  If you say nREPL, I'm not going to argue! :-)

Best regards,
-Karl

[1] https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg01893.html

    From: Karl Fogel <kfogel@red-bean.com>
    To: Christopher Lemmer Webber <cwebber@dustycloud.org>
    Cc: ndame <ndame@protonmail.com>,  Emacs developers <emacs-devel@gnu.org>
    Subject: Re: What is the most useful potential feature which Emacs lacks?
    Date: Wed, 13 May 2020 23:08:04 -0500
    Message-ID: <87y2pvqhuj.fsf@red-bean.com>

[2] https://github.com/magit/transient/blob/master/lisp/transient.el

[3] https://emacsair.me/2019/02/14/transient-0.1/



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 16:18         ` Karl Fogel
                             ` (6 preceding siblings ...)
  2020-05-14  0:04           ` John Wiegley
@ 2020-05-14  5:08           ` Richard Stallman
  2020-05-14 20:29             ` Karl Fogel
  7 siblings, 1 reply; 281+ messages in thread
From: Richard Stallman @ 2020-05-14  5:08 UTC (permalink / raw)
  To: Karl Fogel; +Cc: excalamus, colinetnathan98, 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. ]]]

  > So I suggest that GNU Emacs's raison d'être is to be the text
  > editor that best rewards sustained user investment.

I would say that this is one of the virtues of Emacs -- but I would
not call this the raison d'être.

I think that the investment needed is a downside.  The upside is the
return you get for that investment.  If we could make Emacs give you
the return without the investment, that would be even better -- but we
don't know how to do that ;-(.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-13  8:49           ` Arthur Miller
@ 2020-05-14  5:14             ` Richard Stallman
  2020-05-14 10:22               ` Arthur Miller
                                 ` (2 more replies)
  2020-05-14  7:38             ` Tim Cross
  1 sibling, 3 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-14  5:14 UTC (permalink / raw)
  To: Arthur Miller; +Cc: colinetnathan98, 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. ]]]

  > By the way, I probably wouldn't try to identify Emacs as just a text
  > editor longer. Personally I see Emacs as en extensible platform,

I designed Emacs to be a text editor.

I am disappointed that people extend Emacs ONLY to do other unrelated
jobs while NOT extending the kinds of text editing it will do.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 20:05             ` Karl Fogel
  2020-05-13 20:52               ` Dmitry Gutov
@ 2020-05-14  6:16               ` Andreas Röhler
  2020-05-15  3:18               ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Andreas Röhler @ 2020-05-14  6:16 UTC (permalink / raw)
  To: emacs-devel; +Cc: Karl Fogel


On 13.05.20 22:05, Karl Fogel wrote:
> On 13 May 2020, Andreas Röhler wrote:
>> Agree with everything beside two last paragraphs. Enjoying the
>> possibilities to extend and assisting new users being productive seems
>> no contradiction. May you give an example where an smooth entrance
>> hinders the power of more complex functionality?
> The newcomer-vs-expert tradeoff is real, and it's pervasive throughout UI and UX design.
>
> One example is button-based functionality.  For both experts and newcomers, those buttons/icons take away screen real estate -- but for newcomers they make features easier to find, so it's worth it.  For experts, they *just* take away screen real estate, while providing little or no benefit.
>
> Use of small symbols to indicate state in the modeline is another area.  Experienced users know what "**" in the mode line means, what "%" means, etc.  Newcomers are frequently confused by the mode line; it is noise to them, until they know how to interpret it -- but that takes a bit of investment.  Now, we could provide bigger, more verbose signs of current state -- but then we'd be taking away screen real estate again.
>
> Another area is the keybinding space and the minibuffer.  Just about every time I have watched a new user use Emacs, I have noticed how frequently they accidentally hit some key combination or sequence and wind up in some weird state that they never meant to be in -- and don't know how to get out of.  Often they have minibuffer prompts sitting around all the time, and are unaware that Emacs is asking them for some piece of information (after all, the user didn't mean to put Emacs into that state and has no idea she did so).  But having those keybindings available is *good* for experts, as we know from personal experience.
>
> I could go on.  I've taught many newcomers to Emacs, and often the things that are hardest for them are exactly the things that are *good* for the experienced user.


Okay, thanks for the explanation. So we have two items - the way an 
intro is written and the real-case scenario WRT complexity and action.

For the latter Emacs already provides some caveats - disabling some 
commands at the beginning, which works fine. Your observations WRT 
errors of beginners might be of great value. Is there a way to collect 
these difficulties? Maybe the difference between a beginners state and 
advanced state might be extended?

Having a smooth introduction written by a didactically skilled person is 
another thing. IMHO exists not just a powerful tool but also some 
characteristic difficulties WRT beginners. The reason for the advantage 
as the disadvantage looks as the very same, it's mentioned in the 
founding tale of Emacs: exchanging code between developers.

Thanks all,

Andreas


>
> These design tradeoffs cannot be avoided.  It would be a fallacy to think that it's always possible to be *both* maximally newcomer-friendly and investor-friendly.
>
> (The term "user-friendly" is itself misleading.  There is no such thing as "a user" in a way that makes the term "user-friendly" meaningful.  Better terms would at least attempt to make important distinctions -- "newcomer-friendly", "expert-friendly", "ADHD-friendly", "limited-movement-friendly", "visually-impaired-friendly", etc -- and would encourage designers to understand that being good in some categories means being bad in others.)
>
> Best regards,
> -Karl
>



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 22:04                 ` Karl Fogel
  2020-05-13 22:55                   ` Dmitry Gutov
@ 2020-05-14  6:26                   ` tomas
  1 sibling, 0 replies; 281+ messages in thread
From: tomas @ 2020-05-14  6:26 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1768 bytes --]

[not quoting, because mine is more of a general answer]

You made a very interesting set of points, spawning a good discussion.
Thanks!

The question is for whom you are building the software. At the end,
what you want to optimize is the system (stakeholder -- software).

In the case of Free Software, the stakeholder is (ideally!) the user;
in the case of commercial software, it's the buyer (who isn't
necessarily the user: think workplace surveillance). In the case
of "Internet freebie software" it's possibly the ad company, or
Palantir, or whoever. Not always the user, either.

Usually, you have a mixture of things people can't completely
agree over (think FSF's GPL: some think it needs that kind of
hack to copyright law to protect end user's freedom, some other
think end users to be strong enough to protect themselves [1].
So one stakeholder in the Gnu project becomes the FSF, the other
is the end user.

Now let's assume the ideal first case (stakeholder is user).
You want to find an optimum in that system. But the user is
a moving target! She learns. Is the system able to move along?
It's a complex optimization problem with a moving target!

Ideally, the software will entice the user to learn. Over time,
the state of new user population (their needs, their knowledge,
their preferences) changes as well.

We always will end up with many different "solutions" to this
optimization problem. Do you address the "new" user ("build to
sell")? Or the experienced user ("build to use")? The challenge
is to have some adaptability, but that's a very hard problem.
Some compromise will be necessary, as you noticed.

Cheers

[1] This meshes so deeply with other basic convictions that we're
   going to quibble over it for the rest of our lives :-)
-- t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-13  8:49           ` Arthur Miller
  2020-05-14  5:14             ` Richard Stallman
@ 2020-05-14  7:38             ` Tim Cross
  2020-05-14  7:51               ` Andreas Röhler
  2020-05-14 14:18               ` Eli Zaretskii
  1 sibling, 2 replies; 281+ messages in thread
From: Tim Cross @ 2020-05-14  7:38 UTC (permalink / raw)
  To: Arthur Miller
  Cc: colinetnathan98, Andreas Röhler, Richard Stallman,
	Emacs developers

[-- Attachment #1: Type: text/plain, Size: 3351 bytes --]

On Wed, 13 May 2020 at 18:50, Arthur Miller <arthur.miller@live.com> wrote:

> Richard Stallman <rms@gnu.org> writes:
>
> > [[[ 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. ]]]
> >
> >   > > Do Emacs's current competitors have the same capabilities?
> >   > They have pretty much everything but "self-documenting", which should
> >   > maybe be referred as "self-retrospecting" feature.
> >
> > Do people think it is desirable to delete most of that intro text?
> > It is uder 15 lines; perhaps it is harmless to keep it.
>
> I don't think it is very important issue. It is normal to have a bit
> longer introductorty text/description about application. It just does
> not need to take screen estate on the welcome screen maybe?
>
> By the way, I probably wouldn't try to identify Emacs as just a text
> editor longer. Personally I see Emacs as en extensible platform, or
> system (not in a sense of that joke of operating system), a tool, or
> whatever one might wish to call it. I think it has developed and become
> usefull much more then just as a text editor. Also I think it might help
> if Emacs developed even further in that direction, as a
> "multi-tool/swiss army knife" of human-computer interaction?
>
> I don't use other text editors, so I really don't know how good they are
> at other tasks then just text editing. I usually just take a look for
> the curiosity sake when a new editor/IDE becomes popular, and then I
> usually realize Emacs already has everything I need and just uninstall
> the new thing.
>
>
I think this touches on an important point. Emacs is more than an editor.
To an extent, the editing aspects of Emacs are not particularly interesting
and most of the really great editing features of Emacs have been
incorporated into other editors anyway - it is not really a distinguishing
features. The key to what makes Emacs is a combination of extensibility and
self-documenting. For me, what makes Emacs different from nearly all the
alternatives is the ability to create the work environment and work flows I
want rather than conforming to the environment and workflows someone else
has defined. With a little effort, I can have my projects setup so that all
those boring and repetitive tasks are automated using a common framework,
language and interface. plus I get a whole lot of unified and consistent
tools/commands with that same interface, which makes dealing with the ad
hoc stuff faster/easier as well.

Unfortunately, this benefit is not going to be universal for all users. If
you don't have a need for workflows or if your requirement is just for
simple editing of text or if your simply not that interested or are happy
to use separate tools and environments etc, your really not going to see a
lot of benefit from Emacs over other editors. This makes me think that
aiming to make Emacs more popular may be a too generic objective. Perhaps
we need to consider who or what group of users we want Emacs to be popular
with. Should we be trying to identifyt which 'market' Emacs is going to be
most beneficial for and then target that group rather than just tyring to
be 'popular' in the more generic sense?

-- 
regards,

Tim

--
Tim Cross

[-- Attachment #2: Type: text/html, Size: 4171 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14  7:38             ` Tim Cross
@ 2020-05-14  7:51               ` Andreas Röhler
  2020-05-14 14:18               ` Eli Zaretskii
  1 sibling, 0 replies; 281+ messages in thread
From: Andreas Röhler @ 2020-05-14  7:51 UTC (permalink / raw)
  To: Tim Cross, Arthur Miller
  Cc: colinetnathan98, Richard Stallman, Emacs developers


Am 14.05.2020 um 09:38 schrieb Tim Cross:
> On Wed, 13 May 2020 at 18:50, Arthur Miller <arthur.miller@live.com> wrote:
>
>> Richard Stallman <rms@gnu.org> writes:
>>
>>> [[[ 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. ]]]
>>>
>>>    > > Do Emacs's current competitors have the same capabilities?
>>>    > They have pretty much everything but "self-documenting", which should
>>>    > maybe be referred as "self-retrospecting" feature.
>>>
>>> Do people think it is desirable to delete most of that intro text?
>>> It is uder 15 lines; perhaps it is harmless to keep it.
>> I don't think it is very important issue. It is normal to have a bit
>> longer introductorty text/description about application. It just does
>> not need to take screen estate on the welcome screen maybe?
>>
>> By the way, I probably wouldn't try to identify Emacs as just a text
>> editor longer. Personally I see Emacs as en extensible platform, or
>> system (not in a sense of that joke of operating system), a tool, or
>> whatever one might wish to call it. I think it has developed and become
>> usefull much more then just as a text editor. Also I think it might help
>> if Emacs developed even further in that direction, as a
>> "multi-tool/swiss army knife" of human-computer interaction?
>>
>> I don't use other text editors, so I really don't know how good they are
>> at other tasks then just text editing. I usually just take a look for
>> the curiosity sake when a new editor/IDE becomes popular, and then I
>> usually realize Emacs already has everything I need and just uninstall
>> the new thing.
>>
>>
> I think this touches on an important point. Emacs is more than an editor.
> To an extent, the editing aspects of Emacs are not particularly interesting
> and most of the really great editing features of Emacs have been
> incorporated into other editors anyway - it is not really a distinguishing
> features. The key to what makes Emacs is a combination of extensibility and
> self-documenting. For me, what makes Emacs different from nearly all the
> alternatives is the ability to create the work environment and work flows I
> want rather than conforming to the environment and workflows someone else
> has defined. With a little effort, I can have my projects setup so that all
> those boring and repetitive tasks are automated using a common framework,
> language and interface. plus I get a whole lot of unified and consistent
> tools/commands with that same interface, which makes dealing with the ad
> hoc stuff faster/easier as well.
>
> Unfortunately, this benefit is not going to be universal for all users. If
> you don't have a need for workflows or if your requirement is just for
> simple editing of text or if your simply not that interested or are happy
> to use separate tools and environments etc, your really not going to see a
> lot of benefit from Emacs over other editors. This makes me think that
> aiming to make Emacs more popular may be a too generic objective. Perhaps
> we need to consider who or what group of users we want Emacs to be popular
> with. Should we be trying to identifyt which 'market' Emacs is going to be
> most beneficial for and then target that group rather than just tyring to
> be 'popular' in the more generic sense?


A good example how complex stuff might be accessible delivers the 
success of the Python language.  Just watched a video called "Python 
Steering Council Community Address" where some roots of this popularity 
are delivered. For example they have an own section discussing 
user-experience of beginners:

https://www.youtube.com/watch?v=xX8fGuh4T_o&feature=youtu.be



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14  5:14             ` Richard Stallman
@ 2020-05-14 10:22               ` Arthur Miller
  2020-05-14 10:55               ` Robert Pluim
  2020-05-14 14:13               ` Eli Zaretskii
  2 siblings, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-14 10:22 UTC (permalink / raw)
  To: Richard Stallman; +Cc: colinetnathan98, andreas.roehler, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> [[[ 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. ]]]
>
>   > By the way, I probably wouldn't try to identify Emacs as just a text
>   > editor longer. Personally I see Emacs as en extensible platform,
>
> I designed Emacs to be a text editor.
>
> I am disappointed that people extend Emacs ONLY to do other unrelated
> jobs while NOT extending the kinds of text editing it will do.
Why would you be dissapointed by that? Isn't it great that people make
stuff you haven't thought of with it?

People are extending Emacs for text editing as well, but it already is
quite competent as a text editor. Good job!



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14  5:14             ` Richard Stallman
  2020-05-14 10:22               ` Arthur Miller
@ 2020-05-14 10:55               ` Robert Pluim
  2020-05-15  3:25                 ` Richard Stallman
  2020-05-14 14:13               ` Eli Zaretskii
  2 siblings, 1 reply; 281+ messages in thread
From: Robert Pluim @ 2020-05-14 10:55 UTC (permalink / raw)
  To: Richard Stallman
  Cc: colinetnathan98, andreas.roehler, Arthur Miller, emacs-devel

>>>>> On Thu, 14 May 2020 01:14:36 -0400, Richard Stallman <rms@gnu.org> said:

    Richard> [[[ To any NSA and FBI agents reading my email: please consider    ]]]
    Richard> [[[ whether defending the US Constitution against all enemies,     ]]]
    Richard> [[[ foreign or domestic, requires you to follow Snowden's example. ]]]

    >> By the way, I probably wouldn't try to identify Emacs as just a text
    >> editor longer. Personally I see Emacs as en extensible platform,

    Richard> I designed Emacs to be a text editor.

    Richard> I am disappointed that people extend Emacs ONLY to do other unrelated
    Richard> jobs while NOT extending the kinds of text editing it will do.

What, specifically, is missing in that area? If youʼre talking about
WYSIWYG-related features, I have free programs that can do that, and I
donʼt use them much directly: I use emacs to generate their format,
then touch up the results afterwards.

Robert



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-14  2:18             ` (emacs) Intro [was: Making Emacs popular again with a video] excalamus--- via Emacs development discussions.
@ 2020-05-14 12:04               ` Dmitry Gutov
  2020-05-14 21:31                 ` excalamus--- via Emacs development discussions.
  2020-05-14 22:14                 ` Karl Fogel
  2020-05-15  3:17               ` Richard Stallman
  2020-05-15  6:36               ` Andreas Röhler
  2 siblings, 2 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-14 12:04 UTC (permalink / raw)
  To: excalamus, Stefan Kangas
  Cc: Andreas Röhler, Richard Stallman, Emacs Devel

On 14.05.2020 05:18, excalamus--- via Emacs development discussions. wrote:
> How's this for a start?

I like it.

I'd retouch a few phrases, but overall seems like a solid improvement.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14  5:14             ` Richard Stallman
  2020-05-14 10:22               ` Arthur Miller
  2020-05-14 10:55               ` Robert Pluim
@ 2020-05-14 14:13               ` Eli Zaretskii
  2 siblings, 0 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-14 14:13 UTC (permalink / raw)
  To: rms; +Cc: colinetnathan98, andreas.roehler, arthur.miller, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Date: Thu, 14 May 2020 01:14:36 -0400
> Cc: colinetnathan98@gmail.com, andreas.roehler@online.de, emacs-devel@gnu.org
> 
> I designed Emacs to be a text editor.
> 
> I am disappointed that people extend Emacs ONLY to do other unrelated
> jobs while NOT extending the kinds of text editing it will do.

If you mean "text" literally, then you may be right.  But if you
include in that editing of program sources, then I'd say we are
definitely making progress in that area, albeit slower than we would
want to.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14  7:38             ` Tim Cross
  2020-05-14  7:51               ` Andreas Röhler
@ 2020-05-14 14:18               ` Eli Zaretskii
  2020-05-14 15:36                 ` Tim Cross
  1 sibling, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-14 14:18 UTC (permalink / raw)
  To: Tim Cross
  Cc: colinetnathan98, andreas.roehler, rms, arthur.miller, emacs-devel

> From: Tim Cross <theophilusx@gmail.com>
> Date: Thu, 14 May 2020 17:38:15 +1000
> Cc: colinetnathan98@gmail.com,
>  Andreas Röhler <andreas.roehler@online.de>,
>  Richard Stallman <rms@gnu.org>, Emacs developers <emacs-devel@gnu.org>
> 
> To an extent, the editing aspects of Emacs are not particularly
> interesting and most of the really great editing features of Emacs
> have been incorporated into other editors anyway

I would disagree, at least to some extent.  It is true that many Emacs
features are available today elsewhere, but some surprisingly still
aren't.  For example, what about transposing words or lines with one
or 2 keystrokes?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14 14:18               ` Eli Zaretskii
@ 2020-05-14 15:36                 ` Tim Cross
  0 siblings, 0 replies; 281+ messages in thread
From: Tim Cross @ 2020-05-14 15:36 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: colinetnathan98, Andreas Röhler, Richard Stallman,
	arthur miller, Emacs developers

[-- Attachment #1: Type: text/plain, Size: 2792 bytes --]

On Fri, 15 May 2020 at 00:19, Eli Zaretskii <eliz@gnu.org> wrote:

> > From: Tim Cross <theophilusx@gmail.com>
> > Date: Thu, 14 May 2020 17:38:15 +1000
> > Cc: colinetnathan98@gmail.com,
> >  Andreas Röhler <andreas.roehler@online.de>,
> >  Richard Stallman <rms@gnu.org>, Emacs developers <emacs-devel@gnu.org>
> >
> > To an extent, the editing aspects of Emacs are not particularly
> > interesting and most of the really great editing features of Emacs
> > have been incorporated into other editors anyway
>
> I would disagree, at least to some extent.  It is true that many Emacs
> features are available today elsewhere, but some surprisingly still
> aren't.  For example, what about transposing words or lines with one
> or 2 keystrokes?
>

I'm sure we will find some examples, though the ones you cited are
available in a number of editors (for example VS Code C-t = letter,
Shift-Ctl-t = word and Alt-Ctl-T for line transposing Many editors have
been inspired by and have borrowed/copied from Emacs. Features which use to
be only seen in Emacs are now seen in many other editors (column editing,
rectangle cut and paste, transposing letters, words and lines, multiple
cursors, etc. Most editors have some form of plugin or extention mechanism
and people have ported most of the useful features from Emacs. (though
their extension/plugin mechanism is typically much less flexible than
Emacs).

There are certainly some things Emacs still does better with respect to
editing, like editing of binary data or even ascii art etc. It is rare when
I've used another editor and missed a feature that I've not found the
feature is available - I may need to add a plugin or define a key binding
or define a macro (as in keyboard macros not lisp macro). However, in
general, I find these things which Emacs still does better to be really
fringe areas which I rarely use or need. The majority of advanced editing
features provided by emacs are available in most editors with a programming
orientation. In many of these editors, other things which are slightly
difficult to get working consistently in Emacs are available 'out of the
box'. For example, getting font ligatures and colour emojii working in VS
Code is trivial. In Emacs, it is harder and varies depending on which
platform you are on.

VS Code is probably a good example. While I still prefer Emacs, if I'm
really honest, from a purely editing perspective, VS Code is as good and
feature rich. Where it fails is in the ease of extensibility and ability to
customize to fit how I like to work - with VS Code, I need to adjust more
to how VS Code wants to work, but when it comes to just writing source
code, they are both pretty equivalent.


-- 
regards,

Tim

--
Tim Cross

[-- Attachment #2: Type: text/html, Size: 3728 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-14  4:56                     ` Karl Fogel
@ 2020-05-14 16:37                       ` Drew Adams
  2020-05-14 22:11                       ` excalamus--- via Emacs development discussions.
                                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-14 16:37 UTC (permalink / raw)
  To: Karl Fogel, Dmitry Gutov; +Cc: Andreas Röhler, emacs-devel

> one of the things we should prioritize is teaching newcomers
> how important those help facilities are and how to use them
> in a smart way.  

This is something I've long tried to promote.

The first thing (one of them), to get new users
to learn (by tutorial, video, or otherwise) is
how to "Ask Emacs".  That starts with the help
commands, but it can go as deep as one wants,
including how to ask Emacs in its source code.

And of the help commands, the first and most
important to learn are those that let you know
what just happened, what you did, where you are
now, and what you can do.

That includes `C-g' (yes, it can also be a help
command - get me out of here!), and `C-h l'
(which should be enhanced, IMO), `C-]', and
`M-x top-level' (or `M-: (top-level)', or bind
it to a key).

In my library `menu-bar+.el', I even add, as the
first item in menu-bar menu `Help', this submenu:

 Whoops!?
   Cancel Current Action  C-g
   Back to Top Level
   What did I do!?        C-h l

And in submenu `Describe' of menu `Help', I add
item `This...' (i.e., describe this).  It gives
you help about a key/menu sequence or a display
object you click with the mouse (e.g., part of a
window or a name somewhere as buffer text).  You
can do any of these things at its prompt:

    type a key sequence
    choose a menu item
    click on a scroll bar
    click on the mode line
    click in the minibuffer
    click on an Emacs-related name in a buffer
    click anywhere else in a buffer

For the last two: clicking on a name invokes
`apropos'.  Clicking elsewhere describes the
buffer's modes.

Most such help is from `describe-key' or the
manual (`Info-goto-emacs-key-command-node').
(My version of that Info command searches for
the key name with `Info-search' if it can't
find it in the usual ways.)

Dunno whether anyone uses such things, but I
thought they might help.

Beyond that, being able to tell what keys are
usable in the current context (any context),
and what they do, is super-important for both
learning and orienting yourself when you think
you're lost.

In that regard, my main offer is Icicles key
completion.  An alternative which is popular
is `which-key'.

On one of the wiki pages describing Icicles,
there are sections that cover the following
"Ask Emacs" topics, all of which I think are
important for newbies (independently of how
Icicles can help with them):

 * See what you can do at any moment:

   . See which possible inputs are expected by a
     command that reads input → PossibleInputs

   . See which key sequences are currently
     available, which of them are general vs
     which are local, and what each of them does
     → PossibleKeyBindings

 * See individual descriptions of the possible
   inputs, that is, help on completion candidates
   → CandidateHelp

 * Find menu items more easily → FindMenuItems

 * Find commands more easily → FindCommands

 * Find help in the doc → FindStuffInManuals

 * Learn how to use regexps → LearnAboutRegexps

https://www.emacswiki.org/emacs/EmacsNewbieWithIcicles

> I'm specifically saying that this is *more
> important for Emacs than it is for other editors*.

100% agreement.

1. It's more important for Emacs (using, learning).
2. Emacs has more to offer in this regard.

> for Emacs users, using that built-in help is more
> important than it would be in other editors, and the
> methods and circumstances of using the help are
> different too.  So we should incorporate that fact
> into how we present Emacs to new users.

This.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
@ 2020-05-14 17:11 ndame
  2020-05-14 17:48 ` Stefan Monnier
  2020-05-14 22:05 ` T.V Raman
  0 siblings, 2 replies; 281+ messages in thread
From: ndame @ 2020-05-14 17:11 UTC (permalink / raw)
  To: Emacs developers

[-- Attachment #1: Type: text/plain, Size: 1631 bytes --]

> There are certainly some things Emacs still does better with respect to editing, like editing of binary data or even ascii art etc.

Don't forget that vscode has tons of extensions, people jumped at the opportunity to extend the editor with an easy to use and familiar scripting language (js).

So they can edit hex: https://raw.githubusercontent.com/stef-levesque/vscode-hexdump/master/images/hover-dataview.png

And ascii art: https://raw.githubusercontent.com/Canna71/vscode-figlet/master/figlet.gif

Vscode has a powerful display engine and a widely used scripting language which is a winning combination. Emacs could close the gap somewhat if it used some existing graphics display engine, instead of reimplementing everything, because Vscode and other tools which use common graphics toolkits get every development for free and can concentrate on developing the editor instead.

> VS Code is probably a good example. While I still prefer Emacs, if I'm really honest, from a purely editing perspective, VS Code is as good and feature rich. Where it fails is in the ease of extensibility and ability to customize to fit how I like to work - with VS Code, I need to adjust more to how VS Code wants to work, but when it comes to just writing source code, they are both pretty equivalent.

Yes, the only thing vscode doesn't have is rapid prototyping, extending the environment quickly. Writing an extension for it is much more cumbersome (no built-in docs for the api either, you have to browse the web for that), but most users don't write extensions anyway, they just want to use existing ones, so this doesn't concern them.

[-- Attachment #2: Type: text/html, Size: 2033 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14 17:11 ndame
@ 2020-05-14 17:48 ` Stefan Monnier
  2020-05-14 19:28   ` Drew Adams
                     ` (2 more replies)
  2020-05-14 22:05 ` T.V Raman
  1 sibling, 3 replies; 281+ messages in thread
From: Stefan Monnier @ 2020-05-14 17:48 UTC (permalink / raw)
  To: ndame; +Cc: Emacs developers

> Yes, the only thing vscode doesn't have is rapid prototyping, extending the
> environment quickly. Writing an extension for it is much more cumbersome (no
> built-in docs for the api either, you have to browse the web for that), but
> most users don't write extensions anyway, they just want to use existing
> ones, so this doesn't concern them.

Indeed, I think what sets Emacs apart, really, is the effort that's been
made since the very early design to try and abolish the boundary between
"user" and "developer" and make it as easy as possible to get
something going.


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: Making Emacs popular again with a video
  2020-05-14 17:48 ` Stefan Monnier
@ 2020-05-14 19:28   ` Drew Adams
  2020-05-15  3:11   ` Tim Cross
  2020-05-15  3:20   ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-14 19:28 UTC (permalink / raw)
  To: Stefan Monnier, ndame; +Cc: Emacs developers

> I think what sets Emacs apart, really, is the effort that's been
> made since the very early design to try and abolish the boundary
> between "user" and "developer" and make it as easy as possible
> to get something going.

+1



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-14  5:08           ` Richard Stallman
@ 2020-05-14 20:29             ` Karl Fogel
  0 siblings, 0 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-14 20:29 UTC (permalink / raw)
  To: Richard Stallman; +Cc: excalamus, colinetnathan98, andreas.roehler, emacs-devel

On 14 May 2020, Richard Stallman wrote:
>  > So I suggest that GNU Emacs's raison d'être is to be the text
>  > editor that best rewards sustained user investment.
>
>I would say that this is one of the virtues of Emacs -- but I would
>not call this the raison d'être.
>
>I think that the investment needed is a downside.  The upside is the
>return you get for that investment.  If we could make Emacs give you
>the return without the investment, that would be even better -- but we
>don't know how to do that ;-(.

I think that is impossible in the general case, and would therefore not be a good goal to aim for.

Naturally, Emacs should give whatever returns it can give that don't require investment.  But that just gets us to the point of making tradeoff decisions.  Emacs has already consumed a lot of the available space in that "for free" region -- I'm sure there's still some space left to grab, and no one here would argue against grabbing it, but those are the easy calls.  They aren't controversial and they don't require much discussion.

The principle I suggest -- calling it a "raison d'être" may be too strong -- is for guiding the decisions that *can* be controversial because they involve tradeoffs.  This is most decisions.

Specifically, I'm arguing against assuming that making Emacs easy for new users is, in itself, a good idea.  It's really only half an idea.  Discussions about how to make Emacs "easy" for "new users" can only be productive if we know where we're trying to bring those users and what level of investment we expect from them, and if we weigh the costs as well as the benefits of changes that favor newcomers (when those changes have negative consequences for experts -- i.e., when those changes are not in the "free space", which most changes aren't).

(I wish I'd kept notes from the in-person Emacs teaching I've done over the years.  Having such notes would be useful right now.  Instead I must rely on memory of repeated experiences.)

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-14 12:04               ` Dmitry Gutov
@ 2020-05-14 21:31                 ` excalamus--- via Emacs development discussions.
  2020-05-15  0:46                   ` Dmitry Gutov
       [not found]                   ` <d28fe30d-c192-8022-b758-d8b7019e49b5@yandex.ru-M7KnL6R----2>
  2020-05-14 22:14                 ` Karl Fogel
  1 sibling, 2 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-14 21:31 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Stefan Kangas, Richard Stallman, Andreas Röhler,
	Emacs Devel

[-- Attachment #1: Type: text/plain, Size: 553 bytes --]


May 14, 2020, 08:04 by dgutov@yandex.ru:

> On 14.05.2020 05:18, excalamus--- via Emacs development discussions. wrote:
>
>> How's this for a start?
>>
>
> I like it.
>
> I'd retouch a few phrases, but overall seems like a solid improvement.
>
Please share!

I wrote this:

to volunteer for the task, if people agree it needs doing
to demonstrate how we can reassess our raison d'etre and scaffold newcomers by presenting it to them explicitly
If this draft, or a revision of it, gets the thumbs up, I will need assistance in submitting it officially.

[-- Attachment #2: Type: text/html, Size: 1016 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14 17:11 ndame
  2020-05-14 17:48 ` Stefan Monnier
@ 2020-05-14 22:05 ` T.V Raman
  1 sibling, 0 replies; 281+ messages in thread
From: T.V Raman @ 2020-05-14 22:05 UTC (permalink / raw)
  To: ndame; +Cc: Emacs developers

But, can you read email in VSCode (yet)
-- 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-14  4:56                     ` Karl Fogel
  2020-05-14 16:37                       ` Drew Adams
@ 2020-05-14 22:11                       ` excalamus--- via Emacs development discussions.
  2020-05-15  3:16                       ` Richard Stallman
  2020-05-17  1:28                       ` Dmitry Gutov
  3 siblings, 0 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-14 22:11 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Dmitry Gutov, Andreas Röhler, Emacs Devel

[-- Attachment #1: Type: text/plain, Size: 2338 bytes --]

May 14, 2020, 00:56 by kfogel@red-bean.com:

> So there's some concrete guidance about *how* we might seek to improve the Getting Started guide (and other things like the Emacs web site, starter videos, etc):
>
> * Tell newcomers up front that Emacs really starts to be worth it after a few years, not a few weeks.  Set expectations right from the start.
>
> * Show them some of the abilities they will eventually have, so that they can see why it's worth it to make the investment.
>
> * Also tell them about the ways in which Emacs may frustrate them along the way, and explain that those frustrations are common and are sometimes inevitably entangled with the same things that make Emacs winning in the long term.
>
>  I could try to list more of those ways, if it would be helpful
>
Yes!  Please do!  I would like to contribute toward improving the internal guide(s).

I am very much interested in figuring out:
what expectations we should set from the start
what abilities users will learn, precisely
what frustrations they will encounter and how to overcome them
Basically, I think Emacs could benefit from an explicit path to learning (i.e. a built in path).  

On StackExchange, I authored a popular response to "How to start learning Emacs Lisp" (https://emacs.stackexchange.com/questions/47318/how-can-i-start-learning-emacs-lisp/47320#47320) <https://emacs.stackexchange.com/questions/47318/how-can-i-start-learning-emacs-lisp/47320#47320>.  That response garners votes regularly; it's information people want.  I think learning Emacs leads naturally to learning Emacs Lisp.

Since I update that response occasionally (and have written several unpublished updates to it), I feel I should just contribute officially.  If you can continue to share your experience, I think that would help me.

> Here is the principle, reworded slightly after a suggestion from H. Dieter Wilhelm:
>
> "GNU Emacs's raison d'être is to be the text manipulation environment that best rewards sustained user investment."
>
Having these kinds of characterizations, I think, helps "sell" Emacs' virtues. I have rewritten the intro (emacs) to try demonstrating this.  See https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg01889.html

I am interested, what other virtues do people feel GNU Emacs has?




[-- Attachment #2: Type: text/html, Size: 3273 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-14 12:04               ` Dmitry Gutov
  2020-05-14 21:31                 ` excalamus--- via Emacs development discussions.
@ 2020-05-14 22:14                 ` Karl Fogel
  1 sibling, 0 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-14 22:14 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: excalamus, Emacs Devel, Andreas Röhler, Stefan Kangas,
	Richard Stallman

On 14 May 2020, Dmitry Gutov wrote:
>On 14.05.2020 05:18, excalamus--- via Emacs development discussions. wrote:
>> How's this for a start?
>
>I like it.
>
>I'd retouch a few phrases, but overall seems like a solid improvement.

+1 to what Dmitry said.  Editing quibbles aside, this is on the right track.  It presents the important things a new user should understand when she first enters the Emacs universe.  

Thanks!



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-14 21:31                 ` excalamus--- via Emacs development discussions.
@ 2020-05-15  0:46                   ` Dmitry Gutov
       [not found]                   ` <d28fe30d-c192-8022-b758-d8b7019e49b5@yandex.ru-M7KnL6R----2>
  1 sibling, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-15  0:46 UTC (permalink / raw)
  To: excalamus
  Cc: Emacs Devel, Andreas Röhler, Stefan Kangas,
	Richard Stallman

On 15.05.2020 00:31, excalamus--- via Emacs development discussions. wrote:
> 
> May 14, 2020, 08:04 by dgutov@yandex.ru:
> 
>     On 14.05.2020 05:18, excalamus--- via Emacs development discussions.
>     wrote:
> 
>         How's this for a start?
> 
> 
>     I like it.
> 
>     I'd retouch a few phrases, but overall seems like a solid improvement.
> 
> Please share!

OK. See below.

> I wrote this:
> 
>  1. to volunteer for the task, if people agree it needs doing
>  2. to demonstrate how we can reassess our raison d'etre and scaffold
>     newcomers by presenting it to them explicitly
> 
> If this draft, or a revision of it, gets the thumbs up, I will need 
> assistance in submitting it officially.

We could make a new topic for it then. But the maintainer reads these 
threads, too.

On your proposed text:

   built
   from the idea that each key calls a tiny program (or macro)

Keys don't call macros anymore (all commands must be functions, not 
macros). Seems like the meaning of the word "macro" has changed over the 
years.

   GNU Emacs is the GNU project's
   incarnation of the Emacs idea.

...I'm not 100% sure what the idea is. Keys having bindings? I'll admit 
I might have missed that in the original text.

   The documentation even reaches down to the source code
   itself!

What does this mean? Functions having docstrings? Which they do everywhere.

   We love GNU Emacs because we
   feel that no other editing environment rewards sustained user
   investment quite like it.

Personally, I don't love this sentiment. It implies that one must invest 
a lot of time to get something good out of it. I'd rather emphasize 
power, flexibility and interactivity rather than paint a picture of the 
user polishing his Emacs for decades. Which we do, but, well, a lot of 
professionals in different industries do this too with their 
industry-specific tools.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14 17:48 ` Stefan Monnier
  2020-05-14 19:28   ` Drew Adams
@ 2020-05-15  3:11   ` Tim Cross
  2020-05-15  3:20   ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Tim Cross @ 2020-05-15  3:11 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Emacs developers, ndame

[-- Attachment #1: Type: text/plain, Size: 1211 bytes --]

On Fri, 15 May 2020 at 03:49, Stefan Monnier <monnier@iro.umontreal.ca>
wrote:

> > Yes, the only thing vscode doesn't have is rapid prototyping, extending
> the
> > environment quickly. Writing an extension for it is much more cumbersome
> (no
> > built-in docs for the api either, you have to browse the web for that),
> but
> > most users don't write extensions anyway, they just want to use existing
> > ones, so this doesn't concern them.
>
> Indeed, I think what sets Emacs apart, really, is the effort that's been
> made since the very early design to try and abolish the boundary between
> "user" and "developer" and make it as easy as possible to get
> something going.
>
>
>         Stefan
>
>
>
+1 and likely the aspect of Emacs we should emphasise. With VS code, you
cannot easily create a workflow with a high level of automation that is
project specific. There are lots of extensions you can add which will deal
with 'standard' workflow components, but no easy way to glue them all
together and implement automated steps.  In Emacs, using and programming
your environment to meet your needs are blurred and enable you to do things
your way, not someone elses way.

-- 
regards,

Tim

--
Tim Cross

[-- Attachment #2: Type: text/html, Size: 1835 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-14  4:56                     ` Karl Fogel
  2020-05-14 16:37                       ` Drew Adams
  2020-05-14 22:11                       ` excalamus--- via Emacs development discussions.
@ 2020-05-15  3:16                       ` Richard Stallman
  2020-05-15 21:42                         ` Karl Fogel
  2020-05-17  1:28                       ` Dmitry Gutov
  3 siblings, 1 reply; 281+ messages in thread
From: Richard Stallman @ 2020-05-15  3:16 UTC (permalink / raw)
  To: Karl Fogel; +Cc: emacs-devel, andreas.roehler, dgutov

[[[ 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. ]]]

  > * Tell newcomers up front that Emacs really starts to be worth it
  > * after a few years, not a few weeks.

I don't believe that is true.  It is an exaggeration.

  > * Show them some of the abilities they will eventually have, so
  > * that they can see why it's worth it to make the investment.

That is useful.

  > * Also tell them about the ways in which Emacs may frustrate them
  > * along the way, and explain that those frustrations are common
  > * and are sometimes inevitably entangled with the same things that
  > * make Emacs winning in the long term.

This sounds like a recipe for discouraging people from starting.

    > I've watched newcomers run into the same obstacles over and
    > over, and this particular obstacle is always one of the first
    > they encounter.

Which obstacle is that?  If we can identify specific things that are
likely to frustrate users, we can work on improving them.  But I can't
see in your message what that refers to.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-14  2:18             ` (emacs) Intro [was: Making Emacs popular again with a video] excalamus--- via Emacs development discussions.
  2020-05-14 12:04               ` Dmitry Gutov
@ 2020-05-15  3:17               ` Richard Stallman
  2020-05-15  6:36               ` Andreas Röhler
  2 siblings, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-15  3:17 UTC (permalink / raw)
  To: excalamus; +Cc: andreas.roehler, stefankangas, 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. ]]]

This is a good start.  Overall, I like it.

I would suggest systematically changing the passive voice to active,
except where there is some specific reason to use passive.  We try to
avoid making a habit of passive voice.

  >  enabling far more than simple insertion
  > + and deletion of characters.  With it, you can operate on words or
  > + lines, sentences or paragraphs, even whole pages. 

These particular feaures may not be worth mentioning nowadays.  Some
other editors can operate on words and lines.

  > - As brought up in the "GNU Emacs Raison d'etre" thread, it
  > - appears "We love GNU Emacs because we feel that no other editing
  > - environment rewards sustained user investment quite like it."  I
  > - buried this in the last paragraph because it flowed. 

I like the way you mentioned it.  I don't agree that this is Emacs's
"raison d'etre", but saying that we love Emacs because of this is
valid.

  > https://www.iro.umontreal.ca/~monnier/hopl-4-emacs-lisp.pdf
  > - Real-time editor is used differently here than it appears to have meant in 1976.  I have used it here as shorthand for "without having to restart Emacs".

In regard to Emacs, "real-time editor" means that the text changes
immediately as you type characters.  This contrasts with line-based editors
such as Basic's editor, and command-string input editors such as TECO.

Nowadays this is the usual way, so I agree it is not worth mentioning
here.


-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-13 20:05             ` Karl Fogel
  2020-05-13 20:52               ` Dmitry Gutov
  2020-05-14  6:16               ` Andreas Röhler
@ 2020-05-15  3:18               ` Richard Stallman
  2020-05-16  0:56                 ` Tak Kunihiro
  2020-05-28  4:12                 ` Karl Fogel
  2 siblings, 2 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-15  3:18 UTC (permalink / raw)
  To: Karl Fogel; +Cc: 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. ]]]

  > Another area is the keybinding space and the minibuffer.  Just about every time I have watched a new user use Emacs, I have noticed how frequently they accidentally hit some key combination or sequence and wind up in some weird state that they never meant to be in -- and don't know how to get out of.

We made this very simple a few years ago: Just keep typing C-g.
I guess these users don't know that.

Can anyone thing of a better way to teach them about this?
It could teach them first about the minibuffer, then about C-g
to get out.  It could copy the current minibuffer prompt
into the help screen to make the explanation clearer.

The tricky part is how to detect when a user could use this help.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14 17:48 ` Stefan Monnier
  2020-05-14 19:28   ` Drew Adams
  2020-05-15  3:11   ` Tim Cross
@ 2020-05-15  3:20   ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-15  3:20 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel, ndame

[[[ 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. ]]]

  > Indeed, I think what sets Emacs apart, really, is the effort that's been
  > made since the very early design to try and abolish the boundary between
  > "user" and "developer" and make it as easy as possible to get
  > something going.

That is a good point to mention.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-14 10:55               ` Robert Pluim
@ 2020-05-15  3:25                 ` Richard Stallman
  2020-05-15  7:55                   ` Arthur Miller
                                     ` (2 more replies)
  0 siblings, 3 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-15  3:25 UTC (permalink / raw)
  To: Robert Pluim; +Cc: colinetnathan98, andreas.roehler, arthur.miller, 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 would like Emacs to have the features of LibreOffice -- at least for
word processing and slides.

It would take years to get there, but I hope to see it during my lifetime.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-14  2:18             ` (emacs) Intro [was: Making Emacs popular again with a video] excalamus--- via Emacs development discussions.
  2020-05-14 12:04               ` Dmitry Gutov
  2020-05-15  3:17               ` Richard Stallman
@ 2020-05-15  6:36               ` Andreas Röhler
  2 siblings, 0 replies; 281+ messages in thread
From: Andreas Röhler @ 2020-05-15  6:36 UTC (permalink / raw)
  To: emacs-devel; +Cc: Karl Fogel, excalamus, Richard Stallman, Dmitry Gutov

Appreciating your effort. However, being afraid the task is still more 
complicated. In fact, no one here on this list -- me inclusive -- will 
be able to say what needs to be written in that intro. Because all know 
Emacs. It needs the questions and comments of the unexperienced user.

At least if thinking of an intro for the non-programmer. It probably 
makes sense keeping also an intro for programmers.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15  3:25                 ` Richard Stallman
@ 2020-05-15  7:55                   ` Arthur Miller
  2020-05-15 10:11                     ` Eli Zaretskii
  2020-05-15 19:15                     ` H. Dieter Wilhelm
  2020-05-15 18:41                   ` H. Dieter Wilhelm
  2020-05-22 19:09                   ` Ben McGinnes
  2 siblings, 2 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-15  7:55 UTC (permalink / raw)
  To: Richard Stallman
  Cc: Robert Pluim, colinetnathan98, andreas.roehler, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> [[[ 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 would like Emacs to have the features of LibreOffice -- at least for
> word processing and slides.
>
> It would take years to get there, but I hope to see it during my lifetime.
What do you mean with slides? Presentations? You can already do
slides-like stuff in org-mode, not as advanced as in Impress, but enough
for many situations. Some presentations are done via pdf-files which you
can show from Emacs. You could even use images to create a slide-show
mimicking a presentation. Or what features do you have in mind?

For some more advanced graphical features Emacs would need better
renderer, ability to display (and script) some graphics, layouting etc.

Why is that important for Emacs? I haven't personally opened an "office"
app for years, unless I had to do something for a customer. I think good
text editor like Emacs is more then fine for most needs. I think people
"need" office apps mostly because of marketing not because they really
need it, especially nowdays when we don't print so much like we did 20
years ago or so. I might be biased here though, it is just my reflection.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15  7:55                   ` Arthur Miller
@ 2020-05-15 10:11                     ` Eli Zaretskii
  2020-05-15 10:43                       ` Arthur Miller
  2020-05-15 19:15                     ` H. Dieter Wilhelm
  1 sibling, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-15 10:11 UTC (permalink / raw)
  To: Arthur Miller; +Cc: rpluim, colinetnathan98, andreas.roehler, rms, emacs-devel

> From: Arthur Miller <arthur.miller@live.com>
> Date: Fri, 15 May 2020 09:55:16 +0200
> Cc: Robert Pluim <rpluim@gmail.com>, colinetnathan98@gmail.com,
>  andreas.roehler@online.de, emacs-devel@gnu.org
> 
> > I would like Emacs to have the features of LibreOffice -- at least for
> > word processing and slides.
> >
> > It would take years to get there, but I hope to see it during my lifetime.
> What do you mean with slides? Presentations? You can already do
> slides-like stuff in org-mode, not as advanced as in Impress, but enough
> for many situations. Some presentations are done via pdf-files which you
> can show from Emacs. You could even use images to create a slide-show
> mimicking a presentation. Or what features do you have in mind?

So maybe what is missing is a manual or a tutorial describing to users
how to create presentations using Org?

> For some more advanced graphical features Emacs would need better
> renderer, ability to display (and script) some graphics, layouting etc.

What is missing for displaying slides?  AFAIK, the current Emacs
display engine is perfectly capable of displaying text with images.

Besides, I'm not sure the produced slides should be displayed in Emacs
in the first place, they can be displayed by some image viewer, of
which I'm sure there are quite a few on any given system.

> Why is that important for Emacs?

IMO, that's not a valid question to ask about Emacs.  We could ask the
same about reading and sending email, displaying calendar and managing
appointments, many Org features, etc. etc.  Emacs users want to do
many jobs in Emacs, and editing documents is a job that's actually
closer to the original Emacs purpose than many others.

> I haven't personally opened an "office" app for years, unless I had
> to do something for a customer. I think good text editor like Emacs
> is more then fine for most needs. I think people "need" office apps
> mostly because of marketing not because they really need it,
> especially nowdays when we don't print so much like we did 20 years
> ago or so. I might be biased here though, it is just my reflection.

Careful: your personal perspective on this stuff is probably heavily
biased by your line of work and your experience.  There are people out
there who write documents of various kinds all day every day.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15 10:11                     ` Eli Zaretskii
@ 2020-05-15 10:43                       ` Arthur Miller
  2020-05-15 11:23                         ` Eli Zaretskii
  0 siblings, 1 reply; 281+ messages in thread
From: Arthur Miller @ 2020-05-15 10:43 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rpluim, colinetnathan98, andreas.roehler, rms, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Arthur Miller <arthur.miller@live.com>
>> Date: Fri, 15 May 2020 09:55:16 +0200
>> Cc: Robert Pluim <rpluim@gmail.com>, colinetnathan98@gmail.com,
>>  andreas.roehler@online.de, emacs-devel@gnu.org
>> 
>> > I would like Emacs to have the features of LibreOffice -- at least for
>> > word processing and slides.
>> >
>> > It would take years to get there, but I hope to see it during my lifetime.
>> What do you mean with slides? Presentations? You can already do
>> slides-like stuff in org-mode, not as advanced as in Impress, but enough
>> for many situations. Some presentations are done via pdf-files which you
>> can show from Emacs. You could even use images to create a slide-show
>> mimicking a presentation. Or what features do you have in mind?
>
> So maybe what is missing is a manual or a tutorial describing to users
> how to create presentations using Org?
Could be. There are some tutorials/show-offs on youtube, and some
personal blogs, but maybe some more thought and put toghether manual
could help.

>> For some more advanced graphical features Emacs would need better
>> renderer, ability to display (and script) some graphics, layouting etc.
>
> What is missing for displaying slides?  AFAIK, the current Emacs
> display engine is perfectly capable of displaying text with images.
Slides as images (or pdfs), or even just plain text as some org :slide:
does work just fine as currently is in Emacs. I ment more that people
like to have some more elemnts, like lines, arrows, and
other graphical elements in office applications as well as laying out
those elements and text in a bit more advanced way. For example
text boxes in office apps. I am not sure how easy it is to layout images
and have text wrap around it in Emacs and similar. Maybe latex as a
document format could be fine, if Emacs can render final result as a buffer
view without going to file export/import and displaying back image or
pdf. Same for say html. I think, I am not sure. If Emacs could render
render those directly as buffer view while editing it, I think it would
be the word processor a lá "office".

> Besides, I'm not sure the produced slides should be displayed in Emacs
> in the first place, they can be displayed by some image viewer, of
> which I'm sure there are quite a few on any given system.
>
>> Why is that important for Emacs?
>
> IMO, that's not a valid question to ask about Emacs.  We could ask the
> same about reading and sending email, displaying calendar and managing
> appointments, many Org features, etc. etc.  Emacs users want to do
> many jobs in Emacs, and editing documents is a job that's actually
> closer to the original Emacs purpose than many others.
Fair enough, indeed :-).

>> I haven't personally opened an "office" app for years, unless I had
>> to do something for a customer. I think good text editor like Emacs
>> is more then fine for most needs. I think people "need" office apps
>> mostly because of marketing not because they really need it,
>> especially nowdays when we don't print so much like we did 20 years
>> ago or so. I might be biased here though, it is just my reflection.
>
> Careful: your personal perspective on this stuff is probably heavily
> biased by your line of work and your experience.  There are people out
> there who write documents of various kinds all day every day.
Yeah, I know, I am aware of my modest personal needs. It is just a
reflection on what I see over and over again: when my friends
ask me which office to get, I tell them they good enough with
included WordPad that comes with Windows, or to download Libre/Open
Office if they need more. Most of them bought anyway MS Office, because
it is "the best", even though they will use just like 1% of feature in
it.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15 10:43                       ` Arthur Miller
@ 2020-05-15 11:23                         ` Eli Zaretskii
  0 siblings, 0 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-15 11:23 UTC (permalink / raw)
  To: Arthur Miller; +Cc: rpluim, colinetnathan98, andreas.roehler, rms, emacs-devel

> From: Arthur Miller <arthur.miller@live.com>
> Date: Fri, 15 May 2020 12:43:13 +0200
> Cc: rpluim@gmail.com, colinetnathan98@gmail.com, andreas.roehler@online.de,
>  rms@gnu.org, emacs-devel@gnu.org
> 
> > What is missing for displaying slides?  AFAIK, the current Emacs
> > display engine is perfectly capable of displaying text with images.
> Slides as images (or pdfs), or even just plain text as some org :slide:
> does work just fine as currently is in Emacs. I ment more that people
> like to have some more elemnts, like lines, arrows, and
> other graphical elements in office applications as well as laying out
> those elements and text in a bit more advanced way.

We have svg.el for that, can't it be utilized?

> For example text boxes in office apps. I am not sure how easy it is
> to layout images and have text wrap around it in Emacs and
> similar.

Shouldn't be a problem, we have image slices since Emacs 21.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15  3:25                 ` Richard Stallman
  2020-05-15  7:55                   ` Arthur Miller
@ 2020-05-15 18:41                   ` H. Dieter Wilhelm
  2020-05-22 19:09                   ` Ben McGinnes
  2 siblings, 0 replies; 281+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-15 18:41 UTC (permalink / raw)
  To: Richard Stallman
  Cc: Robert Pluim, colinetnathan98, andreas.roehler, arthur.miller,
	emacs-devel

Richard Stallman <rms@gnu.org> writes:

> I would like Emacs to have the features of LibreOffice -- at least for
> word processing and slides.

I assume you mean WYSIWYG abilities, like dropping images and moving
them around or drawing over them.  Do you then also want a "visually"
guided graphical interface like in the LibreOffice components?

     Dieter
-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15  7:55                   ` Arthur Miller
  2020-05-15 10:11                     ` Eli Zaretskii
@ 2020-05-15 19:15                     ` H. Dieter Wilhelm
  1 sibling, 0 replies; 281+ messages in thread
From: H. Dieter Wilhelm @ 2020-05-15 19:15 UTC (permalink / raw)
  To: Arthur Miller
  Cc: Robert Pluim, colinetnathan98, andreas.roehler, Richard Stallman,
	emacs-devel

Arthur Miller <arthur.miller@live.com> writes:

> What do you mean with slides? Presentations? You can already do
> slides-like stuff in org-mode, not as advanced as in Impress, but enough
> for many situations. Some presentations are done via pdf-files which you
> can show from Emacs. You could even use images to create a slide-show
> mimicking a presentation. Or what features do you have in mind?

FYI: Nowadays you are able to accomplish more refined presentations with
LaTeX and the presentation package Beamer (among others) than all the
Office Applications.

You can do all the modern, fancy presentation stuff and moreover
including animations, videos and 3D objects (OK only Adobe Reader
supports 3D at the moment).

> For some more advanced graphical features Emacs would need better
> renderer, ability to display (and script) some graphics, layouting etc.

I suggest to use the LaTeX Tikz package for doing the graphics.  It has
also the advantage that the graphical fonts are consistent with the text
and mathematics.

  http://www.texample.net/tikz/examples/

> Why is that important for Emacs? I haven't personally opened an "office"
> app for years, unless I had to do something for a customer. I think
> good

The same here, even in my company I'm using org-mode LaTeX exports for
reports and presentations.

> text editor like Emacs is more then fine for most needs. I think people
> "need" office apps mostly because of marketing not because they really
> need it, especially nowdays when we don't print so much like we did 20
> years ago or so. I might be biased here though, it is just my reflection.

I'm not sure.  Could it be that the majority of people are not really
capable to work in abstract ways (like programming)?  I observe that
most of my colleagues and acquaintances are not willing or are hardly
able to operate programs without "visual guidance".  For example our
designers are rather using the mouse cascading into menus instead of
memorising and applying predefined keyboard shortcuts!

     Dieter
-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15  3:16                       ` Richard Stallman
@ 2020-05-15 21:42                         ` Karl Fogel
  2020-05-15 22:14                           ` Arthur Miller
                                             ` (3 more replies)
  0 siblings, 4 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-15 21:42 UTC (permalink / raw)
  To: Richard Stallman; +Cc: emacs-devel, andreas.roehler, dgutov

On 14 May 2020, Richard Stallman wrote:
>  > * Tell newcomers up front that Emacs really starts to be worth it
>  > * after a few years, not a few weeks.
>
>I don't believe that is true.  It is an exaggeration.

Well, it's not a rhetorical exaggeration, in any case.  That is, it is my actual belief, based on observation.  (It could be wrong, of course, but just to be clear, it wasn't an exaggeration for the sake of effect.)

Different people will naturally learn at different rates, depending on their aptitude and environment.  The best environment is to have an Emacs expert nearby in person, who can occasionally watch the newcomer edit and point out faster ways to do things, point out ways to ask Emacs for help, etc.  But even in that kind of environment, with a talented newcomer, I don't think I've seen it take less than approximately a year to get to the point where they are doing better with Emacs than they would have done with some less extensible, less capable text editor.

>  > * Also tell them about the ways in which Emacs may frustrate them
>  > * along the way, and explain that those frustrations are common
>  > * and are sometimes inevitably entangled with the same things that
>  > * make Emacs winning in the long term.
>
>This sounds like a recipe for discouraging people from starting.

To me it is just realistic, and if I were a newcomer I'd want to be informed of it.

>    > I've watched newcomers run into the same obstacles over and
>    > over, and this particular obstacle is always one of the first
>    > they encounter.
>
>Which obstacle is that?  If we can identify specific things that are
>likely to frustrate users, we can work on improving them.  But I can't
>see in your message what that refers to.

It was earlier in the thread:

> One thing that I recall every newcomer experiencing is, at least
> initially, the feeling that Emacs was constantly biting them --
> constantly surprising them with unexpected and confusing behaviors
> that jump out from accidental keystrokes.  Two of the first things I
> always have to teach newcomers are `C-g' and `C-h l' :-).

This property results from the keybinding space being tightly packed, of course -- which is good for experts but rocky for newcomers.

Teaching newcomers how to use these accidental stumbles to their advantage is important, and I always try to do so.  But I find it helps to let them know that it's going to happen often -- that Emacs will react in unexpected ways and surprise them, and that persisting through that initial fog of unexpected reactions is worth the effort.

A perfect analogy is manual ("stick") transmission cars versus automatic transmission cars.  A stick car is harder for a newcomer to drive, but gives an experienced user more control than she would otherwise have.  An automatic transmission car is easier for a newcomer, but frustrating for the expert because it limits (a bit) what she can do.

Does this mean that no one learns to drive stick?  Of course not.  Some people do so by choice -- they make a conscious investment, made with the understanding that driving will be *harder* for a while before there is any discernable payoff.  But they are willing to make that choice because others told them how it would be worth it.  It's not something the user would find out from reading the manual for the car, though.

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15 21:42                         ` Karl Fogel
@ 2020-05-15 22:14                           ` Arthur Miller
  2020-05-16  0:03                             ` Dmitry Gutov
  2020-05-15 22:41                           ` Drew Adams
                                             ` (2 subsequent siblings)
  3 siblings, 1 reply; 281+ messages in thread
From: Arthur Miller @ 2020-05-15 22:14 UTC (permalink / raw)
  To: Karl Fogel; +Cc: dgutov, andreas.roehler, Richard Stallman, emacs-devel

Karl Fogel <kfogel@red-bean.com> writes:

> On 14 May 2020, Richard Stallman wrote:
>>  > * Tell newcomers up front that Emacs really starts to be worth it
>>  > * after a few years, not a few weeks.
>>
>>I don't believe that is true.  It is an exaggeration.
>
> Well, it's not a rhetorical exaggeration, in any case. That is, it is my actual
> belief, based on observation. (It could be wrong, of course, but just to be
> clear, it wasn't an exaggeration for the sake of effect.)
>
> Different people will naturally learn at different rates, depending on their
> aptitude and environment. The best environment is to have an Emacs expert nearby
> in person, who can occasionally watch the newcomer edit and point out faster
> ways to do things, point out ways to ask Emacs for help, etc. But even in that
> kind of environment, with a talented newcomer, I don't think I've seen it take
> less than approximately a year to get to the point where they are doing better
> with Emacs than they would have done with some less extensible, less capable
> text editor.

To me it took about 15 years to realize full potential of Emacs. I am
using Emacs since around year '99, 2000, since university. The first few
months were a sincere frustration, but Emacs, was the most powerful
editor installed on university server (Sun ray with Solaris at time) so
I opted for it. The alternative was Nedit, or something that was
included in CDE and OpenDesktop (or what was the name of Suns OpenLook
thing). My compiler course teacher used the editor included with
OpenDesktop. I used Emacs in OpenDesktop environment since CDE was
crawlingly slow as soon as there were more then five persons logged into
server. Most of people on our course were using Nedit since it was most
similar to what they had at home on Windows, some of us used Emacs. I
went through the frustration, learned Emacs shortcuts and so on, just
because one teacher told us on Java course, that Emacs is recommended
since it is most advanced editor we had on servers. It was funny to see
people identing their code, we were everybody sitting and tabbing through
each line of the file because nobody knew how to mark entire file and
ident it at once. I think it wasn't on refcard or something. You would
hear people clicking and tabbing (and annoying others) all the time.

Anyway, for longest years I was using Emacs just as-is, and just for
text editing. Only when I was really annoyed by something were I
looking on the internet how to change it and fix it. But then after
digging around for fixes i realized how Emacs can be used when I saw
configs of other people and what other people do with emacs and so on.

Now it is my main tool for the most stuff. I don't know if I am just not
talented, but I know I am extremelly pragmatic. I just want to do what I
feel is my current goal or task, I don't care for exploring stuff just
for exploration. I think doing work with a tool is more worth then
tinkering with the tool, so I was never really deeply interested to go
into Emacs in the beginning. I never really red the welcome screen in the
beginning, it was just an annoyance untill I learned how to turn it off
in my init file. Maybe some other people are more clever then I and read
that stuff, I was too lazy for it, I had stuff to do.

I dont' know if others are like me and just want to do their typing, or
if Emacs is nowdays better at introducing itself, but I remember my
first time with it, and it was annoying.

I agree, with everything you said, and I think how fast people will
learn depends probably on how they are exposed to Emacs. If one is on
his own, like we were, then one might miss lots of good stuff with Emacs
because it is hidden quite deeply and need quite some scratching under
the surface. Maybe the inital approach to Emacs just as a text editor
like any other was the biggest problem, since Emacs isn't just a text
editor like any other :-). I don't know. Blame me, but for me it took
quite some time to realize power of Emacs.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-15 21:42                         ` Karl Fogel
  2020-05-15 22:14                           ` Arthur Miller
@ 2020-05-15 22:41                           ` Drew Adams
  2020-05-20 21:47                             ` Karl Fogel
  2020-05-16  2:43                           ` Eduardo Ochs
  2020-05-16  8:05                           ` Yuri Khan
  3 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-15 22:41 UTC (permalink / raw)
  To: Karl Fogel, Richard Stallman; +Cc: dgutov, andreas.roehler, emacs-devel

> >  > * Tell newcomers up front that Emacs really starts to be worth it
> >  > * after a few years, not a few weeks.
> >
> >I don't believe that is true.  It is an exaggeration.
> 
> Well, it's not a rhetorical exaggeration, in any case.  That is, it is
> my actual belief, based on observation.  (It could be wrong, of course,
> but just to be clear, it wasn't an exaggeration for the sake of
> effect.)

It all depends on what one interprets "really" as.

I agree with you, for "_REALLY!_".  I agree with RMS
for "really", as in you get some real worth immediately.

But overall, I agree with the point you were making,
which I think is that the more you invest with Emacs
the more it's worth it, and if you invest only a tiny
amount (e.g. you just started using it) then you might
not see much of what it really has to offer.

Trying to pack such a message into just "really"
doesn't work, in general.

> Different people will naturally learn at different rates, depending on
> their aptitude and environment.  The best environment is to have an
> Emacs expert nearby in person, who can occasionally watch the newcomer
> edit and point out faster ways to do things, point out ways to ask
> Emacs for help, etc.  But even in that kind of environment, with a
> talented newcomer, I don't think I've seen it take less than
> approximately a year to get to the point where they are doing better
> with Emacs than they would have done with some less extensible, less
> capable text editor.
> 
> >  > * Also tell them about the ways in which Emacs may frustrate them
> >  > * along the way, and explain that those frustrations are common
> >  > * and are sometimes inevitably entangled with the same things that
> >  > * make Emacs winning in the long term.
> >
> >This sounds like a recipe for discouraging people from starting.
> 
> To me it is just realistic, and if I were a newcomer I'd want to be
> informed of it.

I agree, but I'm not sure how best to pass that message.

There are surely _some_ newcomers who might not get
that Emacs is a fine instrument.  There _is_ a lot to
learn, to make fine music.  But yes, you can get some
melody out of it without much practice.

I do think that newbies should be encouraged, not
discouraged.  But they should also know that Emacs is
like a piano or a lathe - there's more to it than meets
the eye.

> Teaching newcomers how to use these accidental stumbles to their
> advantage is important, and I always try to do so.  But I find it helps
> to let them know that it's going to happen often -- that Emacs will
> react in unexpected ways and surprise them, and that persisting through
> that initial fog of unexpected reactions is worth the effort.

Unexpected in terms of naive, uninformed expectations.
Which is why any intro/tutorial needs to stress the
importance of Emacs help/doc.

There is little that is unexpected in the sense of
unpredictable or undocumented.

> A perfect analogy is manual ("stick") transmission cars versus
> automatic transmission cars.  A stick car is harder for a newcomer to
> drive, but gives an experienced user more control than she would
> otherwise have.  An automatic transmission car is easier for a
> newcomer, but frustrating for the expert because it limits (a bit) what
> she can do.
> 
> Does this mean that no one learns to drive stick?  Of course not.  Some
> people do so by choice -- they make a conscious investment, made with
> the understanding that driving will be *harder* for a while before
> there is any discernable payoff.  But they are willing to make that
> choice because others told them how it would be worth it.  It's not
> something the user would find out from reading the manual for the car,
> though.

The analogy is pretty good (not perfect).  The last
sentence doesn't correspond to Emacs, though, I think.

You _can_ learn Emacs by reading its manuals and its
help (`C-h').  Asking Emacs is a good way to learn.
Maybe not as good as the expert-over-your-shoulder
method you cited, but pretty good.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15 22:14                           ` Arthur Miller
@ 2020-05-16  0:03                             ` Dmitry Gutov
  0 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-16  0:03 UTC (permalink / raw)
  To: Arthur Miller, Karl Fogel; +Cc: andreas.roehler, Richard Stallman, emacs-devel

On 16.05.2020 01:14, Arthur Miller wrote:
> I dont' know if others are like me and just want to do their typing, or
> if Emacs is nowdays better at introducing itself, but I remember my
> first time with it, and it was annoying.

It's probably better "at introducing itself" too, but not by orders of 
magnitude. But it for sure can do more, both with advancements in the 
core and with considerable help from the third-party community and the 
overall language support ecosystem (LSP, for example).

So it's quite powerful from the outset. And okay, maybe it will take 
some users a few months to start writing their own commands (and some 
will simply never do it), but it all depends on how they were introduced 
to Emacs, and what their immediate needs are.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15  3:18               ` Richard Stallman
@ 2020-05-16  0:56                 ` Tak Kunihiro
  2020-05-16  6:50                   ` Eli Zaretskii
  2020-05-28  4:12                 ` Karl Fogel
  1 sibling, 1 reply; 281+ messages in thread
From: Tak Kunihiro @ 2020-05-16  0:56 UTC (permalink / raw)
  To: Richard Stallman; +Cc: Karl Fogel, tkk, andreas.roehler, emacs-devel

>> Another area is the keybinding space and the minibuffer.  Just
>> about every time I have watched a new user use Emacs, I have noticed
>> how frequently they accidentally hit some key combination or sequence
>> and wind up in some weird state that they never meant to be in -- and
>> don't know how to get out of.
>
> We made this very simple a few years ago: Just keep typing C-g.
> I guess these users don't know that.
>
> Can anyone thing of a better way to teach them about this?

How about to click somewhere in main-buffer area to get him out of the
state and say `type C-g next time'?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15 21:42                         ` Karl Fogel
  2020-05-15 22:14                           ` Arthur Miller
  2020-05-15 22:41                           ` Drew Adams
@ 2020-05-16  2:43                           ` Eduardo Ochs
  2020-05-18  3:46                             ` Richard Stallman
  2020-05-16  8:05                           ` Yuri Khan
  3 siblings, 1 reply; 281+ messages in thread
From: Eduardo Ochs @ 2020-05-16  2:43 UTC (permalink / raw)
  To: Karl Fogel
  Cc: Dmitry Gutov, andreas.roehler, Richard Stallman, Emacs developers

On Fri, 15 May 2020 at 18:43, Karl Fogel <kfogel@red-bean.com> wrote:
>
> Different people will naturally learn at different rates, depending
> on their aptitude and environment. The best environment is to have
> an Emacs expert nearby in person, who can occasionally watch the
> newcomer edit and point out faster ways to do things, point out ways
> to ask Emacs for help, etc. But even in that kind of environment,
> with a talented newcomer, I don't think I've seen it take less than
> approximately a year to get to the point where they are doing better
> with Emacs than they would have done with some less extensible, less
> capable text editor.


The fun factor is getting absent from the discussion. Let me bring it
back in.

1.
==

When I started using using Solaris in a laboratory in the university
in the mid-90s I tried to learn vi - and for me that was torture.
After some time I bought a 386 and a CD with one of the first
GNU/Linux distributions, and I tried Emacs. No computers in the
university had Emacs - all the sysadmins were against it.

After a few hours playing with Emacs I found how to write my own .el
files and execute them. After a few days I found C-x C-e and I was
mind-blown by it. That was in the beginning of my holidays, and after
that during two months I spent practically all my time awake playing
with Emacs and using it to learn how use the GNU/Linux system that
came with it. Why? Because it was fun.

2.
==

In 2019 I had two opportunities to teach Emacs to friends who are
professional programmers (note: I don't interact much with
professional programmers in real life). It wouldn't work to show to
them what Emacs is capable of doing, to tell them that they would be
able to use Emacs for everything if they would invest 2000 hours in
that, or to show them that Emacs is a better _editor_ than their
favorite editors, that were vim and VSCode - especially because I am
not a very proficient user of Emacs-the-editor myself...

...so I helped them install Emacs in their machines, showed them the
basic ideas of Lisp, showed them how to open tutorials that were 80%
about Emacs-the-Lisp-environment and only 20% about Emacs-the-editor,
and helped them to follow the explanations, instructions, and
exercises. They loved it.

3.
==

A few days ago I discovered, reading discussions in this mailing list,
that I am not the only old-timer who has found Org difficult to learn,
and who has learned only tiny bits of it even after struggling with it
a lot.

I think that I found Org hard because learning it was not fun in the
same sense as learning Emacs was... I found the examples in the manual
very hard to run, and the feature of Org in which I was most
interested - code blocks - depended on many concepts that were treated
as black boxes.

We are trying to discuss what could make Emacs more appealing, easier
to learn, etc, etc, and how answers to these questions could become
features, videos, and tutorials.

There are several very different ways to make features, videos, and
tutorials that are "good". Some of these ways are very common now -
powerful features, very smart "Do what I mean" buttons, well-produced
videos with smiling presenters, with promises of productivity, fame,
and fortune... but there are some ways of making "good" things that
were very common some decades ago, but now are less so: the main key
terms are "elegance" and "hackeability".

I have even tried to make an experimental/prototype-ish tutorial for
Org following these ideas, but I didn't get very far. I even asked
some questions in the Org mailing list in nov/2019 and got answers for
them, but my original plan was to write a handful of new functions for
Org that would show the sub-actions of running `C-c C-c' on a code
block - see:

  (info "(org)Evaluating code blocks")

but I found the source code too hard to understand, and gave up after
some days.

There are also other parts of Emacs that I tried to understand but
gave up - for example, I've never been able to understand how to use
edebug, and I've only been able to learn the most basic things about
eshell, but a few days ago Sacha Chua posted this video in her Emacs
News, and this gave new hopes...

  http://www.youtube.com/watch?v=L1f2tulD9N8

Maybe we can try to coordinate people who have similar notions of
"good", "fun", "elegant", and "hackable", and try to form groups to
discuss and write tutorials?... I have the impression that these
tutorials can yield good material for discussion with people outside
the groups of writers - including package authors...

  Cheers,
    Eduardo Ochs
    http://angg.twu.net/emacsconf2019.html
    http://angg.twu.net/emacs.html



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16  0:56                 ` Tak Kunihiro
@ 2020-05-16  6:50                   ` Eli Zaretskii
  2020-05-16  9:10                     ` Sergey Organov
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-16  6:50 UTC (permalink / raw)
  To: Tak Kunihiro; +Cc: kfogel, tkk, andreas.roehler, rms, emacs-devel

> From: Tak Kunihiro <homeros.misasa@gmail.com>
> Date: Sat, 16 May 2020 09:56:30 +0900
> Cc: Karl Fogel <kfogel@red-bean.com>, tkk@misasa.okayama-u.ac.jp,
>  andreas.roehler@online.de, emacs-devel@gnu.org
> 
> > We made this very simple a few years ago: Just keep typing C-g.
> > I guess these users don't know that.
> >
> > Can anyone thing of a better way to teach them about this?
> 
> How about to click somewhere in main-buffer area to get him out of the
> state and say `type C-g next time'?

That would disable a very useful feature, whereby clicking somewhere
else leaves the minibuffer active and allows you to do something else
temporarily.  I also believe it might break scrolling by clicking on
the scroll bars or other similar mouse gestures, while the minibuffer
is active, or at least make the implementation of those gestures
harder.

It is also not something users will expect: AFAIK other GUI
applications allow you to clock the mouse anywhere without losing the
context of the current prompt.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15 21:42                         ` Karl Fogel
                                             ` (2 preceding siblings ...)
  2020-05-16  2:43                           ` Eduardo Ochs
@ 2020-05-16  8:05                           ` Yuri Khan
  2020-05-16 10:36                             ` Eli Zaretskii
  3 siblings, 1 reply; 281+ messages in thread
From: Yuri Khan @ 2020-05-16  8:05 UTC (permalink / raw)
  To: Karl Fogel
  Cc: Dmitry Gutov, Andreas Röhler, Richard Stallman,
	Emacs developers

On Sat, 16 May 2020 at 04:43, Karl Fogel <kfogel@red-bean.com> wrote:
> > Two of the first things I
> > always have to teach newcomers are `C-g' and `C-h l' :-).
>
> This property results from the keybinding space being tightly packed, of course -- which is good for experts but rocky for newcomers.

It results from the fact that ‘keyboard-quit’ is on an obscure[^1] C-g
key rather than the intuitive[^1] Esc. And that results from Esc being
used in most terminals to mean Meta.

[^1]: from a novice’s point of view



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16  6:50                   ` Eli Zaretskii
@ 2020-05-16  9:10                     ` Sergey Organov
  2020-05-16 10:38                       ` Eli Zaretskii
  2020-05-17  2:55                       ` Richard Stallman
  0 siblings, 2 replies; 281+ messages in thread
From: Sergey Organov @ 2020-05-16  9:10 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: rms, andreas.roehler, emacs-devel, kfogel, Tak Kunihiro, tkk

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Tak Kunihiro <homeros.misasa@gmail.com>
>> Date: Sat, 16 May 2020 09:56:30 +0900
>> Cc: Karl Fogel <kfogel@red-bean.com>, tkk@misasa.okayama-u.ac.jp,
>>  andreas.roehler@online.de, emacs-devel@gnu.org
>> 
>> > We made this very simple a few years ago: Just keep typing C-g.
>> > I guess these users don't know that.
>> >
>> > Can anyone thing of a better way to teach them about this?
>> 
>> How about to click somewhere in main-buffer area to get him out of the
>> state and say `type C-g next time'?
>
> That would disable a very useful feature, whereby clicking somewhere
> else leaves the minibuffer active and allows you to do something else
> temporarily.

And here there are 2 more problems for newbies. They usually expect
pop-up /modal/ dialog to be thrown on them for anything but text input
or moving around. So, first, they miss minibuffer prompts entirely, and
then get to recursive editing all the time, unintentionally.

I'm not sure if it makes sense to implement "pop-up dialog minibuffer"
mode for newbies though, and then if it makes sense to (optionally?)
make it modal.

Yet another way to help would be making minibuffer modal by default.

-- Sergey



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16  8:05                           ` Yuri Khan
@ 2020-05-16 10:36                             ` Eli Zaretskii
  2020-05-16 10:46                               ` Yuri Khan
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-16 10:36 UTC (permalink / raw)
  To: Yuri Khan; +Cc: kfogel, emacs-devel, andreas.roehler, rms, dgutov

> From: Yuri Khan <yuri.v.khan@gmail.com>
> Date: Sat, 16 May 2020 15:05:54 +0700
> Cc: Dmitry Gutov <dgutov@yandex.ru>,
>  Andreas Röhler <andreas.roehler@online.de>,
>  Richard Stallman <rms@gnu.org>, Emacs developers <emacs-devel@gnu.org>
> 
> It results from the fact that ‘keyboard-quit’ is on an obscure[^1] C-g
> key rather than the intuitive[^1] Esc.

We also have "ESC ESC ESC".



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16  9:10                     ` Sergey Organov
@ 2020-05-16 10:38                       ` Eli Zaretskii
  2020-05-16 12:24                         ` Sergey Organov
  2020-05-17  2:55                       ` Richard Stallman
  1 sibling, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-16 10:38 UTC (permalink / raw)
  To: Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk

> From: Sergey Organov <sorganov@gmail.com>
> Date: Sat, 16 May 2020 12:10:25 +0300
> Cc: rms@gnu.org, andreas.roehler@online.de, emacs-devel@gnu.org,
>  kfogel@red-bean.com, Tak Kunihiro <homeros.misasa@gmail.com>,
>  tkk@misasa.okayama-u.ac.jp
> 
> And here there are 2 more problems for newbies. They usually expect
> pop-up /modal/ dialog to be thrown on them for anything but text input
> or moving around.

That happens in Emacs for some/many commands invoked via the menu bar.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 10:36                             ` Eli Zaretskii
@ 2020-05-16 10:46                               ` Yuri Khan
  0 siblings, 0 replies; 281+ messages in thread
From: Yuri Khan @ 2020-05-16 10:46 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Karl Fogel, Emacs developers, Andreas Röhler,
	Richard Stallman, Dmitry Gutov

On Sat, 16 May 2020 at 17:37, Eli Zaretskii <eliz@gnu.org> wrote:

> We also have "ESC ESC ESC".

Yes. It takes a greater degree of impatience to discover, and it is
somewhat more aggressive in its effect than C-g.

We also have ‘q’ in any modes derived from special-mode.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 10:38                       ` Eli Zaretskii
@ 2020-05-16 12:24                         ` Sergey Organov
  2020-05-16 12:29                           ` Eli Zaretskii
  0 siblings, 1 reply; 281+ messages in thread
From: Sergey Organov @ 2020-05-16 12:24 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Sergey Organov <sorganov@gmail.com>
>> Date: Sat, 16 May 2020 12:10:25 +0300
>> Cc: rms@gnu.org, andreas.roehler@online.de, emacs-devel@gnu.org,
>>  kfogel@red-bean.com, Tak Kunihiro <homeros.misasa@gmail.com>,
>>  tkk@misasa.okayama-u.ac.jp
>> 
>> And here there are 2 more problems for newbies. They usually expect
>> pop-up /modal/ dialog to be thrown on them for anything but text input
>> or moving around.
>
> That happens in Emacs for some/many commands invoked via the menu bar.

Then this must be rather easy to achieve for keyboard induced commands
as well.

-- Sergey



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 12:24                         ` Sergey Organov
@ 2020-05-16 12:29                           ` Eli Zaretskii
  2020-05-16 12:34                             ` Sergey Organov
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-16 12:29 UTC (permalink / raw)
  To: Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk

> From: Sergey Organov <sorganov@gmail.com>
> Date: Sat, 16 May 2020 15:24:33 +0300
> Cc: rms@gnu.org, andreas.roehler@online.de, emacs-devel@gnu.org,
>  kfogel@red-bean.com, homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp
> 
> >> And here there are 2 more problems for newbies. They usually expect
> >> pop-up /modal/ dialog to be thrown on them for anything but text input
> >> or moving around.
> >
> > That happens in Emacs for some/many commands invoked via the menu bar.
> 
> Then this must be rather easy to achieve for keyboard induced commands
> as well.

Not really.  When the user invokes a command from the menu, we have a
clear signal that the mouse is being used, and therefore can display a
GUI dialog without fear.  But when the user types "C-x C-f", how can
we know that he/she expects a dialog box and not a minibuffer prompt?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 12:29                           ` Eli Zaretskii
@ 2020-05-16 12:34                             ` Sergey Organov
  2020-05-16 12:46                               ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: Sergey Organov @ 2020-05-16 12:34 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Sergey Organov <sorganov@gmail.com>
>> Date: Sat, 16 May 2020 15:24:33 +0300
>> Cc: rms@gnu.org, andreas.roehler@online.de, emacs-devel@gnu.org,
>>  kfogel@red-bean.com, homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp
>> 
>> >> And here there are 2 more problems for newbies. They usually expect
>> >> pop-up /modal/ dialog to be thrown on them for anything but text input
>> >> or moving around.
>> >
>> > That happens in Emacs for some/many commands invoked via the menu bar.
>> 
>> Then this must be rather easy to achieve for keyboard induced commands
>> as well.
>
> Not really.  When the user invokes a command from the menu, we have a
> clear signal that the mouse is being used, and therefore can display a
> GUI dialog without fear.  But when the user types "C-x C-f", how can
> we know that he/she expects a dialog box and not a minibuffer prompt?

My argument was that newbie never wants minibuffer prompt, so this is
not an issue. I mean it'd always be dialog unless "newbie-mode" is
turned off.

-- Sergey



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 12:34                             ` Sergey Organov
@ 2020-05-16 12:46                               ` Dmitry Gutov
  2020-05-16 13:57                                 ` Sergey Organov
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-16 12:46 UTC (permalink / raw)
  To: Sergey Organov, Eli Zaretskii
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk

On 16.05.2020 15:34, Sergey Organov wrote:
>>>>> And here there are 2 more problems for newbies. They usually expect
>>>>> pop-up/modal/  dialog to be thrown on them for anything but text input
>>>>> or moving around.
>>>> That happens in Emacs for some/many commands invoked via the menu bar.
>>> Then this must be rather easy to achieve for keyboard induced commands
>>> as well.
>> Not really.  When the user invokes a command from the menu, we have a
>> clear signal that the mouse is being used, and therefore can display a
>> GUI dialog without fear.  But when the user types "C-x C-f", how can
>> we know that he/she expects a dialog box and not a minibuffer prompt?
> My argument was that newbie never wants minibuffer prompt, so this is
> not an issue. I mean it'd always be dialog unless "newbie-mode" is
> turned off.

My anecdata shows otherwise: it's never been a problem personally.

As for the newbies who want modal dialogs, surely they will use the 
mouse and the toolbar to invoke the corresponding commands?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 12:46                               ` Dmitry Gutov
@ 2020-05-16 13:57                                 ` Sergey Organov
  2020-05-16 19:35                                   ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: Sergey Organov @ 2020-05-16 13:57 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 16.05.2020 15:34, Sergey Organov wrote:
>>>>>> And here there are 2 more problems for newbies. They usually expect
>>>>>> pop-up/modal/  dialog to be thrown on them for anything but text input
>>>>>> or moving around.
>>>>> That happens in Emacs for some/many commands invoked via the menu bar.
>>>> Then this must be rather easy to achieve for keyboard induced commands
>>>> as well.
>>> Not really.  When the user invokes a command from the menu, we have a
>>> clear signal that the mouse is being used, and therefore can display a
>>> GUI dialog without fear.  But when the user types "C-x C-f", how can
>>> we know that he/she expects a dialog box and not a minibuffer prompt?
>> My argument was that newbie never wants minibuffer prompt, so this is
>> not an issue. I mean it'd always be dialog unless "newbie-mode" is
>> turned off.
>
> My anecdata shows otherwise: it's never been a problem personally.

What exactly? Failure to notice Emacs suddenly asking you for something
in the minibuffer? I see it very often.

Rarely newbies look at the bottom of the screen/frame when cursor is
suddenly gone, even after some training. The most frequent instinct I
see is clicking with the mouse at the position on the screen where they
want cursor to be.

Here is an example:

1. Type C-x b (imitation of accident keystroke)
2. Click with the mouse _here_
3. In the menu click "Edit | Go To | Goto Line"

Result? For me it's:

completing-read-default: Command attempted to use minibuffer while in minibuffer

error message that, besides, is again being output into minibuffer
place, that for me even was immediately overwritten by a help string on
a lisp variable as I was doing it in the *scratch*.

Will any newbie be able to tell why this menu item suddenly didn't work
as expected? I'd rather afraid they may think Emacs is buggy and
unreliable. 

>
> As for the newbies who want modal dialogs, surely they will use the
> mouse and the toolbar to invoke the corresponding commands?

This is unrelated to the context of the suggestion.

Please recall that the problem being discussed is /accidental/
invocation of a command by a keystroke that brings newbie to minibuffer
that she often doesn't even notice! If Emacs rather threw big shiny
dialog into his face (even if only displaying this same minibuffer in
it), it'd leave the newbie little chances to remain ignorant.

In fact, many "expert" commands already do something like this, asking
to be explicitly enabled. This is not that helpful for complete newbies
though as the prompt still uses the minibuffer that newbies often forget
to pay attention to in the first place.

-- Sergey



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 13:57                                 ` Sergey Organov
@ 2020-05-16 19:35                                   ` Dmitry Gutov
  2020-05-16 20:05                                     ` Stefan Kangas
  2020-05-16 23:01                                     ` Arthur Miller
  0 siblings, 2 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-16 19:35 UTC (permalink / raw)
  To: Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

On 16.05.2020 16:57, Sergey Organov wrote:

>> My anecdata shows otherwise: it's never been a problem personally.
> 
> What exactly? Failure to notice Emacs suddenly asking you for something
> in the minibuffer? I see it very often.

Yes. I _have_ had problems reading the minibuffer's contents, however, 
on a few occasions.

> Rarely newbies look at the bottom of the screen/frame when cursor is
> suddenly gone, even after some training. The most frequent instinct I
> see is clicking with the mouse at the position on the screen where they
> want cursor to be.
> 
> Here is an example:
> 
> 1. Type C-x b (imitation of accident keystroke)
> 2. Click with the mouse _here_
> 3. In the menu click "Edit | Go To | Goto Line"
> 
> Result? For me it's:
> 
> completing-read-default: Command attempted to use minibuffer while in minibuffer
> 
> error message that, besides, is again being output into minibuffer
> place, that for me even was immediately overwritten by a help string on
> a lisp variable as I was doing it in the *scratch*.
> 
> Will any newbie be able to tell why this menu item suddenly didn't work
> as expected? I'd rather afraid they may think Emacs is buggy and
> unreliable.

Fair enough. But in the end, you're probably asking for something that 
doesn't exist in Emacs yet. Like, no graphical switches for buffers 
that's equal in power to the minibuffer-based one.

I agree that the prompts could be positioned better, and the result 
could be better readability. After all, if one uses the minibuffer a 
lot, isn't it a shame that it resides somewhere down below, and uses the 
same font as the rest of Emacs?

In that, I think VS Code, Atom, etc, have a better idea by positioning 
their input area somewhere near the top of the window, in an easy-to-see 
dropdown. Somewhere in the middle of the frame could also work.

If you like, try out https://github.com/honmaple/emacs-maple-minibuffer/ 
with (setq maple-minibuffer:position-type 'frame-top-center) or 
'frame-center.

I'd like to see Emacs something like this by default someday.

> This is unrelated to the context of the suggestion.
> 
> Please recall that the problem being discussed is /accidental/
> invocation of a command by a keystroke that brings newbie to minibuffer
> that she often doesn't even notice! If Emacs rather threw big shiny
> dialog into his face (even if only displaying this same minibuffer in
> it), it'd leave the newbie little chances to remain ignorant.
> 
> In fact, many "expert" commands already do something like this, asking
> to be explicitly enabled. This is not that helpful for complete newbies
> though as the prompt still uses the minibuffer that newbies often forget
> to pay attention to in the first place.

I see where you're coming from, but I think the minibuffer is too large 
a part of Emacs UI to shield the newbies from it like that.

Or at least, the above would be a better solution, by improving 
minibuffer's usability for both newbies and existing users.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 19:35                                   ` Dmitry Gutov
@ 2020-05-16 20:05                                     ` Stefan Kangas
  2020-05-16 20:34                                       ` Dmitry Gutov
                                                         ` (2 more replies)
  2020-05-16 23:01                                     ` Arthur Miller
  1 sibling, 3 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-16 20:05 UTC (permalink / raw)
  To: Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

Dmitry Gutov <dgutov@yandex.ru> writes:

> Fair enough. But in the end, you're probably asking for something that
> doesn't exist in Emacs yet. Like, no graphical switches for buffers
> that's equal in power to the minibuffer-based one.

Which capabilities are you referring to more exactly here?  I'm not too
familiar with the details, so please forgive me if this is obvious.

> I agree that the prompts could be positioned better, and the result
> could be better readability. After all, if one uses the minibuffer a
> lot, isn't it a shame that it resides somewhere down below, and uses the
> same font as the rest of Emacs?

I have never thought about it, but I personally think it's a very good
idea.  In combination with that, simple changes like giving it a border
or a different background, would also help make it more visible.

One frequent annoyance for me in more "modern" software is that the
popups hide the thing they are about.  For example, a "Search and
replace" dialog box positioned on top of the text it matches, so you
have to manually move the dialog box around to see what you're doing.
I think we should try to avoid that, at least by default, so maybe the
top positioning is a better default than in the center.

> In that, I think VS Code, Atom, etc, have a better idea by positioning
> their input area somewhere near the top of the window, in an easy-to-see
> dropdown. Somewhere in the middle of the frame could also work.

I have never used them.  Do you mean something like this (found on a
quick search)?

https://flight-manual.atom.io/using-atom/images/goto.png

Or could you provide a better screenshot or video of that?

> I'd like to see Emacs something like this by default someday.
[...]
> Or at least, the above would be a better solution, by improving
> minibuffer's usability for both newbies and existing users.

Agreed.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 20:05                                     ` Stefan Kangas
@ 2020-05-16 20:34                                       ` Dmitry Gutov
  2020-05-16 20:44                                       ` Bob Newell
  2020-05-16 23:12                                       ` Drew Adams
  2 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-16 20:34 UTC (permalink / raw)
  To: Stefan Kangas, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

On 16.05.2020 23:05, Stefan Kangas wrote:
> Which capabilities are you referring to more exactly here?  I'm not too
> familiar with the details, so please forgive me if this is obvious.

Switching between buffers using a mouse. Well, I mean, we do have a menu 
for that, but... Is that really better than fuzzy matching in the 
minibuffer?

OTOH, we don't have fuzzy matching by default either. Hmm.

> I have never thought about it, but I personally think it's a very good
> idea.  In combination with that, simple changes like giving it a border
> or a different background, would also help make it more visible.

Yup.

> One frequent annoyance for me in more "modern" software is that the
> popups hide the thing they are about.  For example, a "Search and
> replace" dialog box positioned on top of the text it matches, so you
> have to manually move the dialog box around to see what you're doing.
> I think we should try to avoid that, at least by default, so maybe the
> top positioning is a better default than in the center.

It could probably be configurable with little effort.

One big improvement I expect from such a feature personally is no more 
jumping of windows when the minibuffer goes multiline.

> I have never used them.

I install them occasionally, to see how things change over time.

> Do you mean something like this (found on a
> quick search)?
> 
> https://flight-manual.atom.io/using-atom/images/goto.png
> 
> Or could you provide a better screenshot or video of that?

Some other examples:

https://code.visualstudio.com/assets/docs/editor/editingevolved/symbol.png

Or: https://yann-leguilly.gitlab.io/img/no-member_vs_code/settings.webp

Or: 
https://vscode.rocks/static/fe22cb8c64e112b3acd1b9e6595bc498/0d2bd/file_search.png



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 20:05                                     ` Stefan Kangas
  2020-05-16 20:34                                       ` Dmitry Gutov
@ 2020-05-16 20:44                                       ` Bob Newell
  2020-06-24 15:37                                         ` Ricardo Wurmus
  2020-05-16 23:12                                       ` Drew Adams
  2 siblings, 1 reply; 281+ messages in thread
From: Bob Newell @ 2020-05-16 20:44 UTC (permalink / raw)
  To: emacs-devel

Aloha everyone,

I'm getting into this a bit late, but I have a slightly
contrarian view.

I certainly agree with the idea that Emacs is a tool that,
like all serious and complex tools, requires effort, and a
measure of how good the tool is can be found in how well the
effort is rewarded. With Emacs my experience has been that the
rewards are enormous, even if the effort involved is certainly
non-trivial. But is there any high-caliber tool (in any field of
endeavor) that doesn't require effort to master?

But let me contradict myself a little. I have been using Emacs
literally for decades, and have not "mastered" it, in the
sense that while I have what are to me sophisticated use
cases, I learn new things all the time. That is a tribute to
the power and depth of Emacs, and I consider this a positive
feature--- I'm always learning new ways to get even more out
of the tool. So, does Emacs take a day or three weeks or four
months or years to "master"? It should be an ongoing, layered
experience.

The difficulty here for newcomers (as I have alluded to in
other threads) is the current "instant gratification"
mentality: the attitude that if I can't get into something
quickly and with minimal effort, I'm not interested.

I first learned Emacs through the tutorial. If a newcomer were
to spend a couple of hours with the tutorial, basic usage
would be immediately possible and there would be an enticing
glimpse of things to come. I was at least minimally productive
with Emacs within part of an afternoon. Is that good enough? I
think so, but it does require a least some willingness to
branch out into the unfamiliar.

A week later, I could do more things. A year later, I could do
a lot of things. Decades later, it's an indispensible tool
with "killer" features such as org-mode and (yes!) gnus
... and as I said above, there are always new things.

If newcomers could be enticed with a layered approach, I think
some of them, at least the ones for whom Emacs is long-term
suitable, may see the advantages and follow the path; and long
though it may be, they will be increasingly more productive
along the way. This implies more tutorials, organized in this
layered manner. It's important, though, to be able to do the
basics in a relatively short time. But that's already possible.

The existing tutorial in fact does really cover the
essentials. The "must-know" features (after learning how to
move the cursor and so on) are C-g and 'undo'. Learn those and
you can always get out of a spot; and the tutorial is very
clear on this.

Now here's the contrarian part: Emacs uses different
terminology, different keybindings, and an overall different
approach from many Unix tools and certainly from Windows
tools. Should we (optionally for newcomers) change that?

I say 'no' and the reason is that from the get-go, I think
potential new users should understand that Emacs is different,
is built on a different paradigm, and does things in a
different way. In the long run, it's embracing these
differences that makes Emacs the tool that it is.

I'd submit that if the differences fatally deter a newcomer,
then perhaps that newcomer was never an Emacs candidate. And
I'll add my usual disclaimer: I do /not/ view Emacs as a tool
for some sort of snobbish elite to which you gain entrance
only through initiation rites and having the proper
pedigree. Emacs, in fact, is a tool for anyone who is willing
to invest in it.

Finally, as a sort of illustrative footnote: there is a
terminal-based text editor called "Fe, the folding editor"
written long ago by Michael Haart (moria.de). It isn't well
know and isn't in any Gnu-Linux distros that I'm aware of. It
is really a minimalist (non-extensible) Emacs to the extent
that it uses Emacs keybinding and contains just enough
essential features (like keyboard macros) to make it very
useful for many text editing use cases. It more or less
represents the level of productivity I had achieved after maybe
a couple of days with Emacs way back when. But that is an
amazingly useful amount.

-- 
Bob Newell
Honolulu, Hawai`i

- Via GNU/Linux/Emacs/Gnus/BBDB



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 19:35                                   ` Dmitry Gutov
  2020-05-16 20:05                                     ` Stefan Kangas
@ 2020-05-16 23:01                                     ` Arthur Miller
  1 sibling, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-16 23:01 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Sergey Organov, Eli Zaretskii

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 16.05.2020 16:57, Sergey Organov wrote:
>
>>> My anecdata shows otherwise: it's never been a problem personally.
>> What exactly? Failure to notice Emacs suddenly asking you for something
>> in the minibuffer? I see it very often.
>
> Yes. I _have_ had problems reading the minibuffer's contents, however, on a few
> occasions.
>
>> Rarely newbies look at the bottom of the screen/frame when cursor is
>> suddenly gone, even after some training. The most frequent instinct I
>> see is clicking with the mouse at the position on the screen where they
>> want cursor to be.
>> Here is an example:
>> 1. Type C-x b (imitation of accident keystroke)
>> 2. Click with the mouse _here_
>> 3. In the menu click "Edit | Go To | Goto Line"
>> Result? For me it's:
>> completing-read-default: Command attempted to use minibuffer while in
>> minibuffer
>> error message that, besides, is again being output into minibuffer
>> place, that for me even was immediately overwritten by a help string on
>> a lisp variable as I was doing it in the *scratch*.
>> Will any newbie be able to tell why this menu item suddenly didn't work
>> as expected? I'd rather afraid they may think Emacs is buggy and
>> unreliable.
>
> Fair enough. But in the end, you're probably asking for something that doesn't
> exist in Emacs yet. Like, no graphical switches for buffers that's equal in
> power to the minibuffer-based one.
>
> I agree that the prompts could be positioned better, and the result could be
> better readability. After all, if one uses the minibuffer a lot, isn't it a
> shame that it resides somewhere down below, and uses the same font as the rest
> of Emacs?
>
> In that, I think VS Code, Atom, etc, have a better idea by positioning their
> input area somewhere near the top of the window, in an easy-to-see dropdown.
> Somewhere in the middle of the frame could also work.
>
> If you like, try out https://github.com/honmaple/emacs-maple-minibuffer/ with
> (setq maple-minibuffer:position-type 'frame-top-center) or 'frame-center.
>
> I'd like to see Emacs something like this by default someday.
>
>> This is unrelated to the context of the suggestion.
>> Please recall that the problem being discussed is /accidental/
>> invocation of a command by a keystroke that brings newbie to minibuffer
>> that she often doesn't even notice! If Emacs rather threw big shiny
>> dialog into his face (even if only displaying this same minibuffer in
>> it), it'd leave the newbie little chances to remain ignorant.
>> In fact, many "expert" commands already do something like this, asking
>> to be explicitly enabled. This is not that helpful for complete newbies
>> though as the prompt still uses the minibuffer that newbies often forget
>> to pay attention to in the first place.
>
> I see where you're coming from, but I think the minibuffer is too large a part
> of Emacs UI to shield the newbies from it like that.
>
> Or at least, the above would be a better solution, by improving minibuffer's
> usability for both newbies and existing users.
Situation with minibuffer as you describe, being on the bottom and not
being looked is getting even more exaggarated since screens are getting
bigger (I talk about desktop), so one has to explicitly look down to the
bottom of the screen which has some consequence for my neck. I know I
can reposition minibuffer and so on, but I am kind-a used to have it on
the bottom and am not sure where to put it otherwise.

Btw, maybe if minibuffer was hidden away and poped-up only when it is
needed, it might be more attention attracting for new users. Or maybe it
could be flashed with different background color or something similar
that draws attention and eye to minibuffer when it asks for something.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-16 20:05                                     ` Stefan Kangas
  2020-05-16 20:34                                       ` Dmitry Gutov
  2020-05-16 20:44                                       ` Bob Newell
@ 2020-05-16 23:12                                       ` Drew Adams
  2020-05-16 23:18                                         ` Drew Adams
  2020-05-16 23:47                                         ` Stefan Kangas
  2 siblings, 2 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-16 23:12 UTC (permalink / raw)
  To: Stefan Kangas, Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

> > I agree that the prompts could be positioned better,
> > and the result could be better readability. After all,
> > if one uses the minibuffer a lot, isn't it a shame
> > that it resides somewhere down below, and uses
> > the same font as the rest of Emacs?
> 
> I personally think it's a very good idea.
> In combination with that, simple changes like
> giving it a border or a different background, 
              ^^^^^^                ^^^^^^^^^^
> would also help make it more visible.

FWIW, I use a separate minibuffer frame, which extends
across the bottom of the screen (by default - size &
position configurable).

I took this idea from Epoch back in the mid-90s.  The
fact that Emacs doesn't provide this as an option out
of the box, I've always thought is too bad.  (Epoch
had other UI innovations, but that's the one I missed
most when I went back to GNU Emacs.)

As a separate frame, `minibuffer-frame-alist' applies,
which includes its own default font (size, color) and
background color.  And as a frame, it has a border.
(By default, the text is larger, and red.)

Wrt positioning, one option is for moving the frame
so it's positioned near point whenever the minibuffer
is activated:

 1on1-move-minibuffer-frame-near-point is a variable
 defined in `oneonone.el'.  Its value is nil

 Documentation:
 Whether to move `1on1-minibuffer-frame' near point, and just where.

 * nil means do not move it.  

 * A single whole number, Y, means offset `top' by Y pixels from point.
   The `left' frame position is unchanged.  As always, positive is
   down (below point), negative is up (above point).

 * A cons of two whole numbers, (X . Y), means offset `left' by X and
   `top' by Y pixels from point.

   For example, (-200 . 30) moves the top left frame corner 200 pixels
   to the left and 30 pixels below point.  This option has no effect if
   `1on1-minibuffer-frame' is nil.

Personally, I prefer the default behavior, of remaining
at the bottom of the screen.  In particular, that way
it doesn't interfere with any Emacs content, anywhere.

> One frequent annoyance for me in more "modern" software
> is that the popups hide the thing they are about.

Exactly - see previous paragraph.  But I can understand
that, at least for some simple interactions, some users
like it.

That's also a problem in general for any popup frame,
whether for completions, info/help, whatever.  Some
DWIM can be applied, but the problem is inherent: how
to know just what is the most noticeable and near the
previous focus of attention, and simultaneously avoids
obscuring the info the user currently cares about.

Beyond letting users configure such behavior to some
extent, and giving some programmed positioning a bit
of "intelligence", giving users quick, keyboard, ways
to move frames around on the fly can help.

> so maybe the top positioning is a better default than
> in the center.

Top positioning has either the same problem as near
point (your annoyance: obscuring info) or the same
problem as bottom-positioning.

With my setup, other frames can be automatically
resized to fit their content, by default, in which
case they never overlap the minibuffer frame when it
stays put (e.g. at screen bottom).  (Auto-fitting of
frames can take a stay-put standalone minibuffer
frame into account, in effect reducing the available
screen space to exclude it.)

The problem with a minibuffer that stays put is that
it can be far from where your eye might currently be
focused.  That's more of a problem for the echo area
than the minibuffer, perhaps, because for the latter
you're anyway expecting to change your attention to it.

For a newbie, I think that having a separate frame,
with larger and more noticeable text takes care of
the problem of not being aware of the minibuffer or
echo-area messages - not knowing where to look or
what's expected of you.

In addition, with my setup the minibuffer frame
background changes hue slightly (configurable) when
it's active (and for each recursive minibuffer), and
also when Isearch is active.  That too helps draw
attention to it, and lets you know the interaction
status/expectation.

https://www.emacswiki.org/emacs/Dedicated_Minibuffer_Frame

Finally, although recursive editing is disabled by
default, to protect the innocent, I think it's
underappreciated as a feature. The main problem with
it is, once again, not being aware that you're in a
recursive edit - which interaction level you're on.
To help with that I have library `rec-edit.el'.  It
highlights the mode-line [[...]] indication, to make
it clear when you're in a recursive edit, and what
level it is.

https://www.emacswiki.org/emacs/RecursiveEdit#rec-edit.el



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-16 23:12                                       ` Drew Adams
@ 2020-05-16 23:18                                         ` Drew Adams
  2020-05-16 23:47                                         ` Stefan Kangas
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-16 23:18 UTC (permalink / raw)
  To: Stefan Kangas, Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

I meant to mention to that with a standalone
minibuffer frame you don't need a minibuffer
on any other frames (duh).

More importantly than saving screen real estate,
that means (assuming it stays put) that you have
one single, stable place to interact with, not N
places for N frames, any of which can have the
input focus.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-16 23:12                                       ` Drew Adams
  2020-05-16 23:18                                         ` Drew Adams
@ 2020-05-16 23:47                                         ` Stefan Kangas
  2020-05-17  1:14                                           ` Drew Adams
  1 sibling, 1 reply; 281+ messages in thread
From: Stefan Kangas @ 2020-05-16 23:47 UTC (permalink / raw)
  To: Drew Adams, Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

Drew Adams <drew.adams@oracle.com> writes:

> FWIW, I use a separate minibuffer frame, which extends
> across the bottom of the screen (by default - size &
> position configurable).

I'm not convinced frames would be the best technical solution, since
they have to be handled by window managers.  And that invites headaches,
not least when you add things like tiling window managers into the mix.

> Personally, I prefer the default behavior, of remaining
> at the bottom of the screen.

Same here.  But maybe I could be convinced to try something else if it
was done well.

> Top positioning has either the same problem as near
> point (your annoyance: obscuring info) or the same
> problem as bottom-positioning.

Agreed.  Top positioning might be better for other reasons though.

But I suppose this is all academic until Someone™ writes some code.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-16 23:47                                         ` Stefan Kangas
@ 2020-05-17  1:14                                           ` Drew Adams
  2020-05-17  3:13                                             ` Stefan Kangas
  2020-05-17 11:37                                             ` Dmitry Gutov
  0 siblings, 2 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17  1:14 UTC (permalink / raw)
  To: Stefan Kangas, Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

> > FWIW, I use a separate minibuffer frame, which extends
> > across the bottom of the screen (by default - size &
> > position configurable).
> 
> I'm not convinced frames would be the best technical solution,
> since they have to be handled by window managers.  And that
> invites headaches, not least when you add things like tiling
> window managers into the mix.

So Emacs shouldn't offer such a choice (OOTB) for
the many window managers (most?) that are capable
of putting a minibuffer frame at the bottom of
your screen?

Epoch (just another Emacs) did this, out of the
box, in the early 90s.  30 years ago.  And with
no hoops to jump through (such as I jump through
to get a semblance of that behavior with GNU Emacs).

> > Top positioning has either the same problem as near
> > point (your annoyance: obscuring info) or the same
> > problem as bottom-positioning.
> 
> Agreed.  Top positioning might be better for other
> reasons though.

What reasons?  The argument that a minibuffer at
the bottom of each frame is too far away from
point applies equally to top of frame, no?
Likewise, bottom of screen and top of screen.

In any case, most window mgrs that can put a
minibuffer frame at the bottom of the screen
can, I'm guessing, put it at the top instead.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-14  4:56                     ` Karl Fogel
                                         ` (2 preceding siblings ...)
  2020-05-15  3:16                       ` Richard Stallman
@ 2020-05-17  1:28                       ` Dmitry Gutov
  2020-05-17  1:39                         ` Dmitry Gutov
                                           ` (4 more replies)
  3 siblings, 5 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17  1:28 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Andreas Röhler, emacs-devel

On 14.05.2020 07:56, Karl Fogel wrote:

 > Any guiding principle can be misused, but that doesn't make it useless.

 > The particular misuses you cite above are speculative -- no one's
 > actually saying those things, as far as I'm aware.

Actually, those examples are closer to the discussions I have taken 
part in (let's not change xxx because existing users will complain; and 
the newbies will just have to get in line, the entry barrier is high 
anyway, who cares if they have to learn one more thing to get started).

On the flip side, I don't remember anybody propose to make key bindings 
less "staggered".

> In a reply to Christopher Lemmer Webber just now [1], I got a little bit more specific:
> 
>    > If we just say "Emacs should be easier for newcomers to learn",
>    > that's not a useful rallying cry IMHO.  If we say instead "Emacs
>    > should try to attract newcomers who have a higher-than-average
>    > probability of becoming high-investment users, and should explain
>    > early on to those newcomers what the road ahead looks like", *then*
>    > we have a high-level guiding principle we can actually use.

I think we already do (the rest flocks to #1, #2 and #4 popular 
options). No need to try harder in that direction.

> So there's some concrete guidance about *how* we might seek to improve the Getting Started guide (and other things like the Emacs web site, starter videos, etc):
> 
> * Tell newcomers up front that Emacs really starts to be worth it after a few years, not a few weeks.  Set expectations right from the start.

That feels like giving up. And "worth it" depends on personal 
expectations. From reading comments on Reddit, converts from Vim, for 
instance, try Spacemacs or Doom Emacs, and seemingly become satisfied in 
a matter of days.

> * Show them some of the abilities they will eventually have, so that they can see why it's worth it to make the investment.

Not sure what you have in mind here. If it's a "here's not an Emacs 
would solve a problem", this could turn into a useful tutorial for 
journeyman emacsers.

> * Also tell them about the ways in which Emacs may frustrate them along the way, and explain that those frustrations are common and are sometimes inevitably entangled with the same things that make Emacs winning in the long term.

Not a bad advice, but deciding on such a list in official documentation 
might not be easy (people have opinions). Once we do decide, it would be 
better to try to improve these things first.

> Ultimately, I personally find it helpful in thinking about how to teach Emacs and how to write packages.  Here is the principle, reworded slightly after a suggestion from H. Dieter Wilhelm:
> 
> "GNU Emacs's raison d'être is to be the text manipulation environment that best rewards sustained user investment."

I still don't like it. It either means "you don't get much until you 
struggle for a while" (which just sounds discouraging) and/or "no other 
program comes even close at text manipulation", which is... pretty 
conceited and kind of limited at the same time. I mean, Emacs is great 
and all, but I don't have "text manipulation" as the #1 goal in my life. 
Or even among top 10 goals.

The higher-level things one can implement with Emacs Lisp are a lot more 
interesting.

>> Are you sure that this particular aspect is _bad_ for new users, though?
> 
> Yes.  I am sure.
> 
> I've taught Emacs to a lot of people -- scores of them, at least; I don't keep track, but the sample size is large enough to be beyond merely anecdotal at this point.  I've watched newcomers run into the same obstacles over and over, and this particular obstacle is always one of the first they encounter.

Okay, but is it still a problem after they've tried Emacs for a day, for 
instance? For a week?

These periods of time would of course suggest Emacs is not ideal for 
total newbies, but they're not the kind of "sustained investment" you 
described either.

>> This part is expected of a professional tool, however, and the
>> experience for newcomers could be improved without taking away much
>>from the "oldies". See the 'transient' package, for example, recently 
>> proposed for inclusion on emacs-devel.
> 
> I don't have any experience using 'transient', so I'd need more explanation from you to understand what you meant by that part.  (I tried to understand 'transient' from reading [2] and [3], but unfortunately -- and somewhat surprisingly! -- the documentation at those pages does not give a single concrete example of transient's use.)

You press 'C-x', wait a while - and it pops up a window with the 
descriptions of all commands whose bindings start with 'C-x'. Same for 
all other "incomplete" key sequences. Looks pretty handy for beginners.

> However, your assertion that "the experience for newcomers could be improved without taking away much from the 'oldies'" is exactly what I'm arguing is not true.  I actually think we can't (much) improve this particular part of the experience for newcomers without taking away one of the things about Emacs that most rewards investment.
> 
> The newcomers who eventually *do* become experts do so in part by first stumbling across new commands accidentally (in that crowded keybinding space) and then using help tools like `C-h l' to see what they just did.  So one of the things we should prioritize is teaching newcomers how important those help facilities are and how to use them in a smart way.  I'm specifically saying that this is *more important for Emacs than it is for other editors*.  Sure, users of (say) the Atom editor should eventually know how to use the built-in help there too.  But it's a difference in prioritization: for Emacs users, using that built-in help is more important than it would be in other editors, and the methods and circumstances of using the help are different too.  So we should incorporate that fact i
 nto how we present Emacs to new users.

Yes, ok. Maybe this one is harder to improve that some others.

>> Some of them, probably. At this point, I think, there are still a lot
>> of decisions that would bring us closer to newcomer-friendliness while
>> keeping no worse high-investment compatibility.
> 
> That could be true, though I'm a bit more skeptical than you are.  In any case, it does not make the principle inoperative; it is consistent with the principle.
> 
> I believe we'll make better decisions if we keep in mind that "friendly to newcomers" is not, in itself, the primary goal.

It's not like extreme user-friendliness was ever a guiding principle 
here. :-)

In this we're, again, similar to other professional software.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  1:28                       ` Dmitry Gutov
@ 2020-05-17  1:39                         ` Dmitry Gutov
  2020-05-17  1:40                         ` Dmitry Gutov
                                           ` (3 subsequent siblings)
  4 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17  1:39 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Andreas Röhler, emacs-devel

Sorry,

On 17.05.2020 04:28, Dmitry Gutov wrote:
> I think we already do (the rest flocks to #1, #2 and #4 popular
                                                        ^ #3
> options). No need to try harder in that direction.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  1:28                       ` Dmitry Gutov
  2020-05-17  1:39                         ` Dmitry Gutov
@ 2020-05-17  1:40                         ` Dmitry Gutov
  2020-05-17  1:59                         ` Jean-Christophe Helary
                                           ` (2 subsequent siblings)
  4 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17  1:40 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Andreas Röhler, emacs-devel

Sorry again,

On 17.05.2020 04:28, Dmitry Gutov wrote:
> Not sure what you have in mind here. If it's a "here's not an Emacs 
> would solve a problem", this could turn into a useful tutorial for 
> journeyman emacsers.

^ "here's how an Emacs user would solve a problem"



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  1:28                       ` Dmitry Gutov
  2020-05-17  1:39                         ` Dmitry Gutov
  2020-05-17  1:40                         ` Dmitry Gutov
@ 2020-05-17  1:59                         ` Jean-Christophe Helary
  2020-05-17  2:52                           ` Stefan Kangas
  2020-05-18  3:43                           ` transient Richard Stallman
  2020-05-17  7:09                         ` GNU Emacs raison d'etre Drew Adams
  2020-05-20 22:00                         ` Karl Fogel
  4 siblings, 2 replies; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-17  1:59 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Karl Fogel, Andreas Röhler, emacs-devel



> On May 17, 2020, at 10:28, Dmitry Gutov <dgutov@yandex.ru> wrote:
> 
>>> This part is expected of a professional tool, however, and the
>>> experience for newcomers could be improved without taking away much
>>> from the "oldies". See the 'transient' package, for example, recently proposed for inclusion on emacs-devel.
>> I don't have any experience using 'transient', so I'd need more explanation from you to understand what you meant by that part.  (I tried to understand 'transient' from reading [2] and [3], but unfortunately -- and somewhat surprisingly! -- the documentation at those pages does not give a single concrete example of transient's use.)
> 
> You press 'C-x', wait a while - and it pops up a window with the descriptions of all commands whose bindings start with 'C-x'. Same for all other "incomplete" key sequences. Looks pretty handy for beginners.

which-key seems to do something similar. I like it very much because it helps see the rationale behind keybinding. After a while you get to learn the bindings for the commands you use the most and you can easily explore new commands.


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  1:59                         ` Jean-Christophe Helary
@ 2020-05-17  2:52                           ` Stefan Kangas
  2020-05-17  9:32                             ` Joost Kremers
  2020-05-17 11:07                             ` Arthur Miller
  2020-05-18  3:43                           ` transient Richard Stallman
  1 sibling, 2 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-17  2:52 UTC (permalink / raw)
  To: Jean-Christophe Helary, Dmitry Gutov
  Cc: Karl Fogel, Andreas Röhler, emacs-devel

Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>
writes:

> which-key seems to do something similar. I like it very much because
> it helps see the rationale behind keybinding. After a while you get to
> learn the bindings for the commands you use the most and you can
> easily explore new commands.

I've used which-key for a couple of years by now.  It has turned out to
be a huge time-saver and great for discovering new commands (or to
remind myself of some less frequently used ones).

I believe that we would have much to gain in terms of being new-user
friendly by having something like this in core, enabled by default.

The package is installable from MELPA, and screenshots are at:
https://github.com/justbur/emacs-which-key

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16  9:10                     ` Sergey Organov
  2020-05-16 10:38                       ` Eli Zaretskii
@ 2020-05-17  2:55                       ` Richard Stallman
  1 sibling, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-17  2:55 UTC (permalink / raw)
  To: Sergey Organov
  Cc: andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk, eliz

[[[ 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'm not sure if it makes sense to implement "pop-up dialog minibuffer"
  > mode for newbies though, and then if it makes sense to (optionally?)
  > make it modal.

I am partly guessing what that means, but it might be a good feature
for starting newbies out, if it explains the minibuffer and leads
newbies in switchiing to using ordinary minubuffers.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17  1:14                                           ` Drew Adams
@ 2020-05-17  3:13                                             ` Stefan Kangas
  2020-05-17  6:49                                               ` Drew Adams
  2020-05-17 11:37                                             ` Dmitry Gutov
  1 sibling, 1 reply; 281+ messages in thread
From: Stefan Kangas @ 2020-05-17  3:13 UTC (permalink / raw)
  To: Drew Adams, Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

Drew Adams <drew.adams@oracle.com> writes:

> So Emacs shouldn't offer such a choice (OOTB) for
> the many window managers (most?) that are capable
> of putting a minibuffer frame at the bottom of
> your screen?

I wouldn't be against having the minibuffer in a frame as optional
behaviour.

>> Agreed.  Top positioning might be better for other
>> reasons though.
>
> What reasons?

Well, a visual hierarchy usually starts at the top.  For example when
you read a book, a newspaper or browse the web.

There have been studies on eye-tracking on web pages, which show that
people generally start reading at the top left.

But I'm not an expert at UI design, so please take my opinion with a
grain of salt.  Maybe someone who took the time to study the question in
earnest could come up with a better answer.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17  3:13                                             ` Stefan Kangas
@ 2020-05-17  6:49                                               ` Drew Adams
  2020-05-17  7:02                                                 ` Jean-Christophe Helary
  0 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-17  6:49 UTC (permalink / raw)
  To: Stefan Kangas, Dmitry Gutov, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

> >> Agreed.  Top positioning might be better for other
> >> reasons though.
> >
> > What reasons?
> 
> Well, a visual hierarchy usually starts at the top.  For example when
> you read a book, a newspaper or browse the web.

What does that have to do with minibuffer
and echo-area interaction?

> There have been studies on eye-tracking on web
> pages, which show that people generally start
> reading at the top left.

Yes, they do (at least in a left-to-right
language/culture).  But what does that have to
do with where the minibuffer is placed?

Do you start with the minibuffer and then read
farther down or farther ahead through some
hierarchy?  I don't think so.  If you did, then
I imagine it would indeed be up top-left.

The minibuffer real estate is also used for the
echo area.  (Doesn't have to be, but in some ways
that's "natural" - especially makes sense when an
Emacs<->user dialog is involved.)

Having status and error messages at the bottom is
pretty common, and not just in editors.  It may
be less common to also have an input field there.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  6:49                                               ` Drew Adams
@ 2020-05-17  7:02                                                 ` Jean-Christophe Helary
  2020-05-17  7:11                                                   ` Drew Adams
  2020-05-17  7:54                                                   ` Sergey Organov
  0 siblings, 2 replies; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-17  7:02 UTC (permalink / raw)
  To: Drew Adams
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Dmitry Gutov, Eli Zaretskii



> On May 17, 2020, at 15:49, Drew Adams <drew.adams@oracle.com> wrote:
> 
> Having status and error messages at the bottom is
> pretty common, and not just in editors.

But is that a decision based on cognitive studies or on technical limitations when the solution was implemented ?

> It may be less common to also have an input field there.

FWIW, the macos equivalent to the minibuffer is a "frame" that you can move freely around the screen.



Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17  1:28                       ` Dmitry Gutov
                                           ` (2 preceding siblings ...)
  2020-05-17  1:59                         ` Jean-Christophe Helary
@ 2020-05-17  7:09                         ` Drew Adams
  2020-05-20 21:36                           ` Karl Fogel
  2020-05-20 22:00                         ` Karl Fogel
  4 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-17  7:09 UTC (permalink / raw)
  To: Dmitry Gutov, Karl Fogel; +Cc: Andreas Röhler, emacs-devel

> > I don't have any experience using 'transient', so
> > I'd need more explanation from you to understand
> > what you meant by that part.  (I tried to understand
> > 'transient' from reading [2] and [3], but unfortunately
> > -- and somewhat surprisingly! -- the documentation at
> > those pages does not give a single concrete example
> > of transient's use.)
> 
> You press 'C-x', wait a while - and it pops up a
> window with the descriptions of all commands whose
> bindings start with 'C-x'. Same for all other
> "incomplete" key sequences. Looks pretty handy for
> beginners.

https://www.emacswiki.org/emacs/Icicles_-_Key_Completion#AutomaticKeyCompletion

FWIW.  Key completion since 2007.

> > one of the things we should prioritize is teaching
> > newcomers how important those help facilities are
> > and how to use them in a smart way.  I'm specifically
> > saying that this is *more important for Emacs than
> > it is for other editors*.  ... it's a difference in 
> > prioritization: for Emacs users, using that
> > built-in help is more important than it would be in
> > other editors, and the methods and circumstances of
> > using the help are different too.  So we should
> > incorporate that fact into how we present Emacs to
> > new users.
> >
> > I believe we'll make better decisions if we keep in
> > mind that "friendly to newcomers" is not, in itself,
> > the primary goal.
> 
> It's not like extreme user-friendliness was ever a
> guiding principle here. :-)

I disagree.  There is a difference between "extreme
user-friendliness" - which I think is, and should be,
a guiding principle here, and prioritizing "friendly
to newcomers".

Just because something (a great book, a great work of
art or science or craft) doesn't immediately reflect
the preconceptions and baked-in expectations of a
newbie to it, that doesn't mean it's not rewarding
and "friendly" to its "users".  Not at all.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17  7:02                                                 ` Jean-Christophe Helary
@ 2020-05-17  7:11                                                   ` Drew Adams
  2020-05-17  9:07                                                     ` Jean-Christophe Helary
  2020-05-17  7:54                                                   ` Sergey Organov
  1 sibling, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-17  7:11 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Dmitry Gutov, Eli Zaretskii

> > It may be less common to also have an input field there.
> 
> FWIW, the macos equivalent to the minibuffer is a "frame" that you can
> move freely around the screen.

In Emacs too the minibuffer can be a frame
that you can move freely around the screen.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  7:02                                                 ` Jean-Christophe Helary
  2020-05-17  7:11                                                   ` Drew Adams
@ 2020-05-17  7:54                                                   ` Sergey Organov
  1 sibling, 0 replies; 281+ messages in thread
From: Sergey Organov @ 2020-05-17  7:54 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Stefan Kangas, Dmitry Gutov,
	Eli Zaretskii, Drew Adams

Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>
writes:

>> On May 17, 2020, at 15:49, Drew Adams <drew.adams@oracle.com> wrote:
>> 
>> Having status and error messages at the bottom is
>> pretty common, and not just in editors.
>
> But is that a decision based on cognitive studies or on technical
> limitations when the solution was implemented ?

I suspect it's modeled after simple text terminals, where both latest
messages and the input are at the bottom.

Who and when first moved input line to the top I don't know.

-- Sergey



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  7:11                                                   ` Drew Adams
@ 2020-05-17  9:07                                                     ` Jean-Christophe Helary
  2020-05-17 10:20                                                       ` Marcin Borkowski
                                                                         ` (3 more replies)
  0 siblings, 4 replies; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-17  9:07 UTC (permalink / raw)
  To: Drew Adams
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Dmitry Gutov, Eli Zaretskii



> On May 17, 2020, at 16:11, Drew Adams <drew.adams@oracle.com> wrote:
> 
>>> It may be less common to also have an input field there.
>> 
>> FWIW, the macos equivalent to the minibuffer is a "frame" that you can
>> move freely around the screen.
> 
> In Emacs too the minibuffer can be a frame
> that you can move freely around the screen.

I mean in macos it *is*. By default. I would love to have a similar feature by default in emacs.

Btw, I tried emacs-maple-minibuffer earlier today and there must be an issue with my configuration because I had remnants of windows in the desktop file that would float over my frames and just would not go away even after a restart. I had to manually edit the desktop file to make them go away, plus the echo area was not handled by the new windows so I had a minibuffer floating window and the echo remained at the bottom of the frame. It was confusing. But that's a different subject...


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  2:52                           ` Stefan Kangas
@ 2020-05-17  9:32                             ` Joost Kremers
  2020-05-17 11:07                             ` Arthur Miller
  1 sibling, 0 replies; 281+ messages in thread
From: Joost Kremers @ 2020-05-17  9:32 UTC (permalink / raw)
  To: emacs-devel


On Sun, May 17 2020, Stefan Kangas wrote:
[which-key]
> I believe that we would have much to gain in terms of being 
> new-user
> friendly by having something like this in core, enabled by 
> default.

I also find which-key extremely helpful and because it is only 
triggered after a short delay, it stays out of my way when I don't 
need it.

The question might as well be, why isn't in it core already? The 
file `which-key.el` actually says "Copyright (C) 2017  Free 
Software Foundation, Inc."

I course there are things that would need to be cleared first, but 
it does seem the author would be willing to make it happen.

-- 
Joost Kremers
Life has its moments



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  9:07                                                     ` Jean-Christophe Helary
@ 2020-05-17 10:20                                                       ` Marcin Borkowski
  2020-05-17 11:07                                                         ` Jean-Christophe Helary
  2020-05-17 15:25                                                       ` Eli Zaretskii
                                                                         ` (2 subsequent siblings)
  3 siblings, 1 reply; 281+ messages in thread
From: Marcin Borkowski @ 2020-05-17 10:20 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Dmitry Gutov, Eli Zaretskii, Drew Adams


On 2020-05-17, at 11:07, Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org> wrote:

>> On May 17, 2020, at 16:11, Drew Adams <drew.adams@oracle.com> wrote:
>> 
>>>> It may be less common to also have an input field there.
>>> 
>>> FWIW, the macos equivalent to the minibuffer is a "frame" that you can
>>> move freely around the screen.
>> 
>> In Emacs too the minibuffer can be a frame
>> that you can move freely around the screen.
>
> I mean in macos it *is*. By default. I would love to have a similar feature by default in emacs.

FWIW, I would absolutely hate it as the default, since window managers
are in general worse at managing Emacs frames than Emacs is at managing
its windows.

Though of course, if it were made the default, I wouldn't mind so much,
because I'd instantly turn it off.

Best,

-- 
Marcin Borkowski
http://mbork.pl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 10:20                                                       ` Marcin Borkowski
@ 2020-05-17 11:07                                                         ` Jean-Christophe Helary
  0 siblings, 0 replies; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-17 11:07 UTC (permalink / raw)
  To: Marcin Borkowski
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Dmitry Gutov, Eli Zaretskii, Drew Adams



> On May 17, 2020, at 19:20, Marcin Borkowski <mbork@mbork.pl> wrote:
> 
> 
> On 2020-05-17, at 11:07, Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org> wrote:
> 
>>> On May 17, 2020, at 16:11, Drew Adams <drew.adams@oracle.com> wrote:
>>> 
>>>>> It may be less common to also have an input field there.
>>>> 
>>>> FWIW, the macos equivalent to the minibuffer is a "frame" that you can
>>>> move freely around the screen.
>>> 
>>> In Emacs too the minibuffer can be a frame
>>> that you can move freely around the screen.
>> 
>> I mean in macos it *is*. By default. I would love to have a similar feature by default in emacs.
> 
> FWIW, I would absolutely hate it as the default, since window managers
> are in general worse at managing Emacs frames than Emacs is at managing
> its windows.
> 
> Though of course, if it were made the default, I wouldn't mind so much,
> because I'd instantly turn it off.

Indeed. I'm just thinking of the device as a thing to be packaged in emacs for easy triggering by newcomers, or something like this.


Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  2:52                           ` Stefan Kangas
  2020-05-17  9:32                             ` Joost Kremers
@ 2020-05-17 11:07                             ` Arthur Miller
  1 sibling, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-17 11:07 UTC (permalink / raw)
  To: Stefan Kangas
  Cc: Karl Fogel, Jean-Christophe Helary, emacs-devel,
	Andreas Röhler, Dmitry Gutov

Stefan Kangas <stefankangas@gmail.com> writes:

> Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>
> writes:
>
>> which-key seems to do something similar. I like it very much because
>> it helps see the rationale behind keybinding. After a while you get to
>> learn the bindings for the commands you use the most and you can
>> easily explore new commands.
>
> I've used which-key for a couple of years by now.  It has turned out to
> be a huge time-saver and great for discovering new commands (or to
> remind myself of some less frequently used ones).
>
> I believe that we would have much to gain in terms of being new-user
> friendly by having something like this in core, enabled by default.
>
> The package is installable from MELPA, and screenshots are at:
> https://github.com/justbur/emacs-which-key
>
> Best regards,
> Stefan Kangas
I also think you could have something like which-key on by default. I
have also used which-key at least a year or two, and I have just one
small issue with it: sometimes, when there are lots of options, it
renders botom line only partially. It renders it little behind the
minibuffer, I see only half the height of the bottom line. For me it is
not a major issue, and is probably not hard to fix, I just didn't bother
myself, but if you would have it in Emacs then it might need fix.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  1:14                                           ` Drew Adams
  2020-05-17  3:13                                             ` Stefan Kangas
@ 2020-05-17 11:37                                             ` Dmitry Gutov
  2020-05-17 18:11                                               ` Drew Adams
  1 sibling, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17 11:37 UTC (permalink / raw)
  To: Drew Adams, Stefan Kangas, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

On 17.05.2020 04:14, Drew Adams wrote:
>>> Top positioning has either the same problem as near
>>> point (your annoyance: obscuring info) or the same
>>> problem as bottom-positioning.
>> Agreed.  Top positioning might be better for other
>> reasons though.
> What reasons?

When the minibuffer is updated, and its height has to change, the 
bottom-positioned minibuffer will have to move its input area up.

That's hella annoying.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  9:07                                                     ` Jean-Christophe Helary
  2020-05-17 10:20                                                       ` Marcin Borkowski
@ 2020-05-17 15:25                                                       ` Eli Zaretskii
  2020-05-17 15:48                                                         ` Jean-Christophe Helary
  2020-05-17 17:59                                                       ` Drew Adams
  2020-05-17 18:07                                                       ` Dmitry Gutov
  3 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-17 15:25 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	sorganov, stefankangas, dgutov, drew.adams

> From: Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>
> Date: Sun, 17 May 2020 18:07:54 +0900
> Cc: Richard Stallman <rms@gnu.org>,
>  Andreas Röhler <andreas.roehler@online.de>,
>  Emacs developers <emacs-devel@gnu.org>,
>  Karl Fogel <kfogel@red-bean.com>,
>  homeros.misasa@gmail.com,
>  tkk@misasa.okayama-u.ac.jp,
>  Sergey Organov <sorganov@gmail.com>,
>  Stefan Kangas <stefankangas@gmail.com>,
>  Dmitry Gutov <dgutov@yandex.ru>,
>  Eli Zaretskii <eliz@gnu.org>
> 
> I mean in macos it *is*. By default. I would love to have a similar feature by default in emacs.

This happens on macOS because that's what users of that system
expect.  I don't think we should follow that on all the other
platforms.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 15:25                                                       ` Eli Zaretskii
@ 2020-05-17 15:48                                                         ` Jean-Christophe Helary
  2020-05-17 17:06                                                           ` Stefan Monnier
  2020-05-17 18:28                                                           ` Drew Adams
  0 siblings, 2 replies; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-17 15:48 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	dgutov, Drew Adams



> On May 18, 2020, at 0:25, Eli Zaretskii <eliz@gnu.org> wrote:
> 
>> From: Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>
>> Date: Sun, 17 May 2020 18:07:54 +0900
>> Cc: Richard Stallman <rms@gnu.org>,
>> Andreas Röhler <andreas.roehler@online.de>,
>> Emacs developers <emacs-devel@gnu.org>,
>> Karl Fogel <kfogel@red-bean.com>,
>> homeros.misasa@gmail.com,
>> tkk@misasa.okayama-u.ac.jp,
>> Sergey Organov <sorganov@gmail.com>,
>> Stefan Kangas <stefankangas@gmail.com>,
>> Dmitry Gutov <dgutov@yandex.ru>,
>> Eli Zaretskii <eliz@gnu.org>
>> 
>> I mean in macos it *is*. By default. I would love to have a similar feature by default in emacs.
> 
> This happens on macOS because that's what users of that system
> expect.

? No. macos users don't expect a floating kind of system "minibuffer". That's actually unlike the rest of macos UI. But it happens to exist (that's "Spotlight" in case you want to know and it is an *extremely* limited "minibuffer", by emacs standards.)

I was just mentioning that vs Drew's "in emacs the mini buffer *can* be in a frame". Because *that* requires a lot of manually installing packages that he refers to here:

https://www.emacswiki.org/emacs/OneOnOneEmacs

Which seems to be very nice, by the way.

> I don't think we should follow that on all the other platforms.

Sure. But as far as the UI/UX is concerned, it's actually existing and can be tested to see if a similar UI could work with emacs too. At least, macos users would not be surprised, because there are lots of applications that "extend" spotlight or want to replace it altogether, like Butler, Quicksilver and the likes.

Jean-Christophe Helary
-----------------------------------------------
http://mac4translators.blogspot.com @brandelune





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 15:48                                                         ` Jean-Christophe Helary
@ 2020-05-17 17:06                                                           ` Stefan Monnier
  2020-05-17 17:31                                                             ` Arthur Miller
                                                                               ` (2 more replies)
  2020-05-17 18:28                                                           ` Drew Adams
  1 sibling, 3 replies; 281+ messages in thread
From: Stefan Monnier @ 2020-05-17 17:06 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	dgutov, Eli Zaretskii, Drew Adams

> I was just mentioning that vs Drew's "in emacs the mini buffer *can* be in
> a frame". Because *that* requires a lot of manually installing packages that
> he refers to here:
>
> https://www.emacswiki.org/emacs/OneOnOneEmacs

FWIW, to get started, you just need:

    emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"

But this indeed just begs the question of how to *manage* that
minibuffer-only frame (i.e. make it so that it's easily accessible when
the user needs it but it doesn't constantly get in the way the rest of
the time).

I don't know of any package/theme/thingy that provides a good solution
to that yet.  I think such a thing could be very useful&popular, so I'd
encourage you (or whoever else) to take a stab at it.


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 17:06                                                           ` Stefan Monnier
@ 2020-05-17 17:31                                                             ` Arthur Miller
  2020-05-17 18:57                                                               ` Drew Adams
  2020-05-17 18:36                                                             ` GNU Emacs raison d'etre Drew Adams
  2020-05-17 18:38                                                             ` Dmitry Gutov
  2 siblings, 1 reply; 281+ messages in thread
From: Arthur Miller @ 2020-05-17 17:31 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii, Drew Adams

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> I was just mentioning that vs Drew's "in emacs the mini buffer *can* be in
>> a frame". Because *that* requires a lot of manually installing packages that
>> he refers to here:
>>
>> https://www.emacswiki.org/emacs/OneOnOneEmacs
>
> FWIW, to get started, you just need:
>
>     emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
>
> But this indeed just begs the question of how to *manage* that
> minibuffer-only frame (i.e. make it so that it's easily accessible when
> the user needs it but it doesn't constantly get in the way the rest of
> the time).
>
> I don't know of any package/theme/thingy that provides a good solution
> to that yet.  I think such a thing could be very useful&popular, so I'd
> encourage you (or whoever else) to take a stab at it.
>
>
>         Stefan
"autohide" (similar as windows taskbar) could be a way? But it is
hardcoded in c-code that minibuffer can not be hidden.

What I learned some decades ago when I took my driving license is that
human eye is trained to register motion, better then static objects. So
if minibuffer poped/raised/lowered (like a quake console :-)) when
needed, that motion could draw attention more then just some text
prompting in a tatic minibuffer. Same effect is probably achieved by
flushing minibuffers background/foreground colors or similar.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17  9:07                                                     ` Jean-Christophe Helary
  2020-05-17 10:20                                                       ` Marcin Borkowski
  2020-05-17 15:25                                                       ` Eli Zaretskii
@ 2020-05-17 17:59                                                       ` Drew Adams
  2020-05-17 18:07                                                       ` Dmitry Gutov
  3 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17 17:59 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Dmitry Gutov, Eli Zaretskii

> >> the macos equivalent to the minibuffer is a "frame"
> >> that you can move freely around the screen.
> >
> > In Emacs too the minibuffer can be a frame
> > that you can move freely around the screen.
> 
> I mean in macos it *is*. By default. I would love to have a similar
> feature by default in emacs.

Have the feature, or make it the default behavior?
Not clear what you mean by "have [the feature] by default".



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  9:07                                                     ` Jean-Christophe Helary
                                                                         ` (2 preceding siblings ...)
  2020-05-17 17:59                                                       ` Drew Adams
@ 2020-05-17 18:07                                                       ` Dmitry Gutov
  3 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17 18:07 UTC (permalink / raw)
  To: Jean-Christophe Helary, Drew Adams
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Eli Zaretskii

On 17.05.2020 12:07, Jean-Christophe Helary wrote:
> Btw, I tried emacs-maple-minibuffer earlier today and there must be an issue with my configuration because I had remnants of windows in the desktop file that would float over my frames and just would not go away even after a restart. I had to manually edit the desktop file to make them go away, plus the echo area was not handled by the new windows so I had a minibuffer floating window and the echo remained at the bottom of the frame. It was confusing. But that's a different subject...

Yes, it's not perfect, but it seemed the most stable out of all similar 
packages that I tried (there are several).

This could be another good reason to bring it inside the core, to review 
the code with more experienced eyes.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17 11:37                                             ` Dmitry Gutov
@ 2020-05-17 18:11                                               ` Drew Adams
  0 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17 18:11 UTC (permalink / raw)
  To: Dmitry Gutov, Stefan Kangas, Sergey Organov
  Cc: rms, andreas.roehler, emacs-devel, kfogel, homeros.misasa, tkk,
	Eli Zaretskii

> >>> Top positioning has either the same problem as near
> >>> point (your annoyance: obscuring info) or the same
> >>> problem as bottom-positioning.
> >> Agreed.  Top positioning might be better for other
> >> reasons though.
> > What reasons?
> 
> When the minibuffer is updated, and its height has to change, the
> bottom-positioned minibuffer will have to move its input area up.
> That's hella annoying.

Is it?  Doesn't annoy me, and that's what I
use daily.

How is it worse than a minibuffer at screen
top extending its input area downward?

In any case, as I said, if you can put the
minibuffer at screen bottom then you can put
it at screen top - user choice.  There's no
need to debate individual preferences or
annoyances in that regard.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17 15:48                                                         ` Jean-Christophe Helary
  2020-05-17 17:06                                                           ` Stefan Monnier
@ 2020-05-17 18:28                                                           ` Drew Adams
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17 18:28 UTC (permalink / raw)
  To: Jean-Christophe Helary, Eli Zaretskii
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	dgutov

> macos users don't expect a floating kind of system "minibuffer".
> That's actually unlike the rest of macos UI. But it happens to exist
> (that's "Spotlight" in case you want to know and it is an *extremely*
> limited "minibuffer", by emacs standards.)
> 
> I was just mentioning that vs Drew's "in emacs the mini buffer *can* be
> in a frame". Because *that* requires a lot of manually installing
> packages that he refers to here:
> 
> https://www.emacswiki.org/emacs/OneOnOneEmacs
> 
> Which seems to be very nice, by the way.

I wouldn't say it "requires" all that I try
to do.

I'm sure it's possible to at least have (only)
a standalone minibuffer frame, without all of
what my code tries to do.

E.g., customize `initial-frame-alist' (and
`default-frame-alist' probably), to have a
nil `minibuffer' parameter, and create a
minibuffer frame, will get you partway there.

That wiki page you link to describes problems
I ran into when trying to get reasonable
behavior for a standalone minibuffer frame.
In particular, there can be problems of input
focus not being systematically what one might
expect.

But I think Stefan also uses a standalone
minibuffer frame, and probably he does something
simpler and perhaps better in some ways.  I've
never seen any code for his setup, but he might
have something useful to say about Emacs
offering such a thing as an option.  (Or not.)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17 17:06                                                           ` Stefan Monnier
  2020-05-17 17:31                                                             ` Arthur Miller
@ 2020-05-17 18:36                                                             ` Drew Adams
  2020-05-17 21:04                                                               ` Stefan Monnier
  2020-05-17 18:38                                                             ` Dmitry Gutov
  2 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-17 18:36 UTC (permalink / raw)
  To: Stefan Monnier, Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	dgutov, Eli Zaretskii

> FWIW, to get started, you just need:
>     emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
> 
> But this indeed just begs the question of how to *manage* that
> minibuffer-only frame (i.e. make it so that it's easily accessible when
> the user needs it but it doesn't constantly get in the way the rest of
> the time).

And it always has input focus when you expect/want
it to, and only then, regardless of what interactions
might be going on.

> I don't know of any package/theme/thingy that provides a good solution
> to that yet.  I think such a thing could be very useful&popular, so I'd
> encourage you (or whoever else) to take a stab at it.

+1.

I do think I have a good solution - I've been
using it for decades.  But it's not a perfect
solution.

It's essentially a code-coordinated set of
settings that might be considered more or less
workarounds to the facts that (1) Emacs is not
very friendly to frames (frame-oriented), and
(2) Emacs doesn't ultimately control frame
management/behavior - a window manager does.

Wrt #1, I've long thought that this is because
most Emacs developers (and users) don't try to
use it - Catch-22.  Wrt #2, that's something
to live with, and Emacs generally tries to
work well regardless of window manager.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 17:06                                                           ` Stefan Monnier
  2020-05-17 17:31                                                             ` Arthur Miller
  2020-05-17 18:36                                                             ` GNU Emacs raison d'etre Drew Adams
@ 2020-05-17 18:38                                                             ` Dmitry Gutov
  2020-05-17 21:17                                                               ` Stefan Monnier
  2 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17 18:38 UTC (permalink / raw)
  To: Stefan Monnier, Jean-Christophe Helary
  Cc: Richard Stallman, Andreas Röhler, Emacs developers,
	Karl Fogel, homeros.misasa, tkk, Sergey Organov, Stefan Kangas,
	Eli Zaretskii, Drew Adams

On 17.05.2020 20:06, Stefan Monnier wrote:
> FWIW, to get started, you just need:
> 
>      emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
> 
> But this indeed just begs the question of how to*manage*  that
> minibuffer-only frame (i.e. make it so that it's easily accessible when
> the user needs it but it doesn't constantly get in the way the rest of
> the time).
> 
> I don't know of any package/theme/thingy that provides a good solution
> to that yet.

What your opinion on maple-minibuffer?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17 17:31                                                             ` Arthur Miller
@ 2020-05-17 18:57                                                               ` Drew Adams
  2020-05-17 20:03                                                                 ` Arthur Miller
  2020-05-18  8:32                                                                 ` martin rudalics
  0 siblings, 2 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17 18:57 UTC (permalink / raw)
  To: Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii

> "autohide" (similar as windows taskbar) could be a way? But it is
> hardcoded in c-code that minibuffer cannot be hidden.

That's not true (depending on what you mean,
I guess).

1. It's trivial to move a minibuffer-only frame
off screen (and bring it back on screen).

2. Alternatively, it's possible to make a frame
invisible (and visible again).

(modify-frame-parameters 1on1-minibuffer-frame
                         '((alpha . 0)))
(modify-frame-parameters 1on1-minibuffer-frame
                         '((alpha . 100)))
___

[No, alpha is not a satisfactory solution for
trying to get real invisibility.  Zero doesn't
make a frame completely invisible.  And the
frame is still present, at the same location,
which can be bothersome in terms of interaction.

Presumably, frame parameter `visibility' would
also be usable for this, but it doesn't seem
to have an effect on a minibuffer-only frame,
at least on MS Windows.  Same with parameter
`minibuffer-exit', and same with functions
`make-frame-(in)visible'.  Dunno whether those
are just bugs.  As I said, my impression is
that use of minibuffer frames doesn't get
tested much when features are introduced.]

> What I learned some decades ago when I took my driving license is that
> human eye is trained to register motion, better then static objects. So
> if minibuffer poped/raised/lowered (like a quake console :-)) when
> needed, that motion could draw attention more then just some text
> prompting in a tatic minibuffer. Same effect is probably achieved by
> flushing minibuffers background/foreground colors or similar.

One person's helpful attention attracter is
another person's annoyance.  So yes, but such
things need to be optional - user preferences.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
       [not found]                   ` <d28fe30d-c192-8022-b758-d8b7019e49b5@yandex.ru-M7KnL6R----2>
@ 2020-05-17 19:11                     ` excalamus--- via Emacs development discussions.
  2020-05-19 14:14                       ` excalamus--- via Emacs development discussions.
  0 siblings, 1 reply; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-17 19:11 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Emacs Devel, Andreas Röhler, Stefan Kangas,
	Richard Stallman

[-- Attachment #1: Type: text/plain, Size: 4495 bytes --]


May 14, 2020, 20:46 by dgutov@yandex.ru:

> On your proposed text:
>
>  built from the idea that each key calls a tiny program (or macro)
> Keys don't call macros anymore (all commands must be functions, not macros). Seems like the meaning of the word "macro" has changed over the years.
>
My intent with this paragraph is to explain what "Emacs" is and what defines an "Emacs", at a high level.  Emacs stands for  "Editor MACroS" and the idea of explicitly associating a function with each key, as I see it, is the defining aspect of an Emacs.  I think the etymology is an appropriate starting place for explaining what "Emacs" is, especially since it is an unusual word, potentially confused with something like "email" or Apple's "mac" computer.  However, starting with the etymology restricts the author to using the term "macro" somewhere.  I agree that "function" is a better word.  But to Andreas Röhler's point, I'm trying to strike a balance between programmer and non-programmer.  I used "tiny program" instead of "function" for this reason.  I think a programmer is likely to get the gist of "tiny program" whereas a non-programmer would be confused by jargon like "function"  (Based on my convos with non-programmers, aka., my girlfriend). "macro" is bad, maybe worse, but etymologically unavoidable. I think the manual should cater to the non-programmer; let the Emacs Lisp reference cater to programmers.
So much for what Emacs is.  

What *defines* an Emacs? Is it "the Emacs idea", as I've called it, that each key press is transparently associated with a function?  Word or Gmail probably call a function on a keypress, but that's not exposed to the user like it is with Emacs.  (This is partly what I was asking about when I asked for Emacs' raison d'etre.)  Thoughts?

>  GNU Emacs is the GNU project's
>  incarnation of the Emacs idea.
>
> ...I'm not 100% sure what the idea is. Keys having bindings? I'll admit I might have missed that in the original text.
>
You're right that it's confusing; it's not well expressed and not a complete thought.  Here's what I'm trying to get at: there is *an* Emacs, a piece of software characterized by *something*, and there is *the* GNU Emacs.  Is Word an Emacs? No. Is Epoch an Emacs? Yes. Why is that? Further, there is Lucid Emacs, DrRacket, Multics Emacs, Gosling Emacs, etc.  GNU Emacs is only one *instance* of an Emacs.  What sets GNU Emacs apart, specifically? Is it just that it's currently the most active in development? Or, is there something more underpinning GNU Emacs' existence? Why is it we're talking about GNU Emacs and not any of the others? 

>  The documentation even reaches down to the source code
>  itself!
>
> What does this mean? Functions having docstrings? Which they do everywhere.
>
I mean the source code itself is documentation and that the user has easy acess to it.  Word has documentation, but no access to source code. Notepad++ is free sotware, but the source code is not easily accessed (relative to Emacs).  The immediate access to the source is, I feel, a key compenent of the self-documentation of Emacs and what puts it in that unique space between user and developer.
>  We love GNU Emacs because we
>  feel that no other editing environment rewards sustained user
>  investment quite like it.
>
> Personally, I don't love this sentiment. It implies that one must invest a lot of time to get something good out of it. I'd rather emphasize power, flexibility and interactivity rather than paint a picture of the user polishing his Emacs for decades. Which we do, but, well, a lot of professionals in different industries do this too with their industry-specific tools.
>
This is a good point. I think Karl Fogel nailed it when he said, "Emacs's best prospects are with the sorts of people who *do* see -- or who can be persuaded to see -- text editing as worthy of investment."  I think the only people who will make it far enough to read the manual are the sort of people who are willing to invest in their time *and* have decided to investigate.  It's important to let them know they will be rewarded for that and how.  The manual intro, I feel, is an appropriate place to do that.  I agree we should emphasize power, flexibility, and interactivity as a selling point, but that will/should have happened well before a user gets to the manual.  

Thank you for sharing your thoughts! I am interesting in hearing more of them!

[-- Attachment #2: Type: text/html, Size: 6405 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 18:57                                                               ` Drew Adams
@ 2020-05-17 20:03                                                                 ` Arthur Miller
  2020-05-18  8:32                                                                 ` martin rudalics
  1 sibling, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-17 20:03 UTC (permalink / raw)
  To: Drew Adams
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, dgutov, Eli Zaretskii, Stefan Kangas

Drew Adams <drew.adams@oracle.com> writes:

>> "autohide" (similar as windows taskbar) could be a way? But it is
>> hardcoded in c-code that minibuffer cannot be hidden.
>
> That's not true (depending on what you mean,
> I guess).
>
> 1. It's trivial to move a minibuffer-only frame
> off screen (and bring it back on screen).
>
> 2. Alternatively, it's possible to make a frame
> invisible (and visible again).
>
> (modify-frame-parameters 1on1-minibuffer-frame
>                          '((alpha . 0)))
> (modify-frame-parameters 1on1-minibuffer-frame
>                          '((alpha . 100)))
> ___
>
> [No, alpha is not a satisfactory solution for
> trying to get real invisibility.  Zero doesn't
> make a frame completely invisible.  And the
> frame is still present, at the same location,
> which can be bothersome in terms of interaction.

Indeed, setting alpha is not enough, the frame will still be visible,
and it will also still take space. Believe me I tried, and I traced the
problem to C code (I think in buffer.c, I don't remember). I think there
was even an explicit comment saying minibuffer can not be hidden.By the
way, I wasn't thinking of having it in separate frame. I prefer to have
just one single frame so I minimize frame switching (alt-tabbing). So I
ment for the "usual" minibuffer as on the bottom of the visible Emacs
frame. So that put out of the question to set minibuffer away from the
screen and then show it back. Albeit it might be a solution if
minibuffer would be used in a pop-up manner.
>
> Presumably, frame parameter `visibility' would
> also be usable for this, but it doesn't seem
> to have an effect on a minibuffer-only frame,
> at least on MS Windows.  Same with parameter
> `minibuffer-exit', and same with functions
> `make-frame-(in)visible'.  Dunno whether those
> are just bugs.  As I said, my impression is
> that use of minibuffer frames doesn't get
> tested much when features are introduced.]
>
>> What I learned some decades ago when I took my driving license is that
>> human eye is trained to register motion, better then static objects. So
>> if minibuffer poped/raised/lowered (like a quake console :-)) when
>> needed, that motion could draw attention more then just some text
>> prompting in a tatic minibuffer. Same effect is probably achieved by
>> flushing minibuffers background/foreground colors or similar.
>
> One person's helpful attention attracter is
> another person's annoyance.  So yes, but such
> things need to be optional - user preferences.
It might be; but annoyance or not, it is an attention drawer. It is not
about preferance here, but more about what draws peoples attention.

When they are new to Emacs and dont' notice that minibuffer asks them
something, I recognize myself when I was new, something moving on the
screen might draw the attention. Once they get more experienced with
Emacs they can choose to have it always visible as it is now, place it
somewhere etc.

Just as analogy if it helps, when one drive, the brain automatically
focus on thing that moves, not on things that are static. Don't know if
it is because of evolution or not since bears and tigers were our
neighbours, but obviously that is how we are wired as humans.

Personally I prefer less distraction, that is why I use simple window
manager instead of a desktop, but in this case, I would prefer
minibuffer as autohide. Also because vertical screen estate is a scarce
resource since we evolved into wide-screen age :-).



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 18:36                                                             ` GNU Emacs raison d'etre Drew Adams
@ 2020-05-17 21:04                                                               ` Stefan Monnier
  2020-05-17 21:48                                                                 ` Drew Adams
  0 siblings, 1 reply; 281+ messages in thread
From: Stefan Monnier @ 2020-05-17 21:04 UTC (permalink / raw)
  To: Drew Adams
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii

> I do think I have a good solution - I've been
> using it for decades.  But it's not a perfect
> solution.

I'm talking about something that just places the minibuffer in
a separate frame without changing the way frames are otherwise used
(e.g. with still an assumption that the user may very work with just
one frame).

That's quite different from your setup (and mine), AFAICT.

In my setup, the minibuffer-only frame is handled specially to try and
behave as some kind of "global" control, kind of like an XFCE4 panel, or
the macOS top menu-bar.  It's placed at the very bottom of the screen
and on a higher "layer" so it's never hidden by normal windows.
This works fairly well (always available since it's "on top" of
everything else, yet out of the way since it's at the bottom of the
screen), but when I'm working with a big screen (e.g. more than
100 text lines) that minibuffer feels kinda far.


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 18:38                                                             ` Dmitry Gutov
@ 2020-05-17 21:17                                                               ` Stefan Monnier
  2020-05-17 21:37                                                                 ` Dmitry Gutov
  2020-05-17 21:57                                                                 ` Drew Adams
  0 siblings, 2 replies; 281+ messages in thread
From: Stefan Monnier @ 2020-05-17 21:17 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii, Drew Adams

> What your opinion on maple-minibuffer?

No opinion yet, I just saw a reference to it for the first time earlier
in this thread.

[ ... time passes ... ]

I wonder how it works out in practice: I like the idea of the minibuffer
being "near point" rather than at the bottom of my screen, but at the
same time I don't like the minibuffer hiding text "near point".

Another issue is that it only applies to actual minibuffer use, so it
doesn't affect Isearch nor echo-area messages, but for me a significant
part of the problem of having the minibuffer "all the way down" is that
I don't see echo messages either (i.e. it's not just the minibuffer
per-se but all uses of the mini-window).


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 21:17                                                               ` Stefan Monnier
@ 2020-05-17 21:37                                                                 ` Dmitry Gutov
  2020-05-18  8:33                                                                   ` martin rudalics
  2020-05-17 21:57                                                                 ` Drew Adams
  1 sibling, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-17 21:37 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii, Drew Adams

On 18.05.2020 00:17, Stefan Monnier wrote:
> I wonder how it works out in practice: I like the idea of the minibuffer
> being "near point" rather than at the bottom of my screen, but at the
> same time I don't like the minibuffer hiding text "near point".

It doesn't actually follows point, at least in this solution. The 
position is more or less fixed, albeit, if the position is in the center 
of the frame, it would be closer to point on average.

The idea is to rather "capture the gaze".

> Another issue is that it only applies to actual minibuffer use, so it
> doesn't affect Isearch nor echo-area messages, but for me a significant
> part of the problem of having the minibuffer "all the way down" is that
> I don't see echo messages either (i.e. it's not just the minibuffer
> per-se but all uses of the mini-window).

I think that conflation of the minibuffer and the echo area is one of 
oldest problems in Emacs. That's not to say that we can't do anything 
similar for the echo area.

Someone should experiment with that as well: for instance, they could be 
displayed like desktop notifications. Stacked, on the right side of the 
screen (top or bottom). I don't have particular experience with that, 
"solving" the minibuffer seems more urgent.

Another idea: show the messages at the bottom of the minibuffer pop-up, 
on a separate line, perhaps with a different background, when the 
minibuffer is active. Otherwise, continue showing them at the bottom of 
the frame.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17 21:04                                                               ` Stefan Monnier
@ 2020-05-17 21:48                                                                 ` Drew Adams
  0 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17 21:48 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii

> I'm talking about something that just places the minibuffer in
> a separate frame without changing the way frames are otherwise used
> (e.g. with still an assumption that the user may very work with just
> one frame).

So the other frames also have minibuffers?

> That's quite different from your setup (and mine), AFAICT.

Yes, different from mine, anyway.

> In my setup, the minibuffer-only frame is handled specially to try and
> behave as some kind of "global" control, kind of like an XFCE4 panel,
> or the macOS top menu-bar.

I don't know what that means, sorry.  (I guess
if I were really curious I could google for
"XFCE4" and "macOS menu-bar".)

> It's placed at the very bottom of the screen
> and on a higher "layer" so it's never hidden by normal windows.

So it obscures all other win-mgr windows
(including other Emacs frames) that overlap it?

> This works fairly well (always available since it's "on top" of
> everything else, yet out of the way since it's at the bottom of the
> screen), but when I'm working with a big screen (e.g. more than
> 100 text lines) that minibuffer feels kinda far.

I thought you said that what you're describing
is quite different from your setup.  Now it
sounds like you're describing your setup.

Care to share the code for your setup in this
regard?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-17 21:17                                                               ` Stefan Monnier
  2020-05-17 21:37                                                                 ` Dmitry Gutov
@ 2020-05-17 21:57                                                                 ` Drew Adams
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-17 21:57 UTC (permalink / raw)
  To: Stefan Monnier, Dmitry Gutov
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

> I like the idea of the minibuffer being "near point"
> rather than at the bottom of my screen, but at the
> same time I don't like the minibuffer hiding text
> "near point".

Exactly.  Having used both (a user option that I
mentioned), I'd say each has pros & cons, and
those differ depending on what you're doing.

E.g., for `M-x', `M-:' and the like, you (I)
typically don't need/want it near point, but
it doesn't bother me there.  But for an
interaction that involves text near point it
can be a real drag.

Perhaps this could be improved with a bit of
smart DWIM and user configuration.

> Another issue is that it only applies to actual minibuffer use, so it
> doesn't affect Isearch nor echo-area messages, but for me a significant
> part of the problem of having the minibuffer "all the way down" is that
> I don't see echo messages either (i.e. it's not just the minibuffer
> per-se but all uses of the mini-window).

Hm.  That's true.  But on the other hand,
you always know where to look for a message,
when you do expect one.  And the annoyance
of a minibuffer frame warping to get near
point would be multiplied if done also for
echo-area use.

It could certainly be done, at least for
`message'. I haven't offered it because I
haven't been convinced of its value.  But
maybe some users would prefer it, so maybe
I should consider it (or at least try it).



^ permalink raw reply	[flat|nested] 281+ messages in thread

* transient
  2020-05-17  1:59                         ` Jean-Christophe Helary
  2020-05-17  2:52                           ` Stefan Kangas
@ 2020-05-18  3:43                           ` Richard Stallman
  2020-05-18  6:58                             ` transient Joost Kremers
  1 sibling, 1 reply; 281+ messages in thread
From: Richard Stallman @ 2020-05-18  3:43 UTC (permalink / raw)
  To: Jean-Christophe Helary; +Cc: kfogel, emacs-devel, andreas.roehler, dgutov

[[[ 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 like it very much because it helps see the rationale behind
  > keybinding. After a while you get to learn the bindings for the
  > commands you use the most and you can easily explore new commands.

For those that know Transient -- do you think it would provide that
benefit too?

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16  2:43                           ` Eduardo Ochs
@ 2020-05-18  3:46                             ` Richard Stallman
  2020-05-18 11:26                               ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: Richard Stallman @ 2020-05-18  3:46 UTC (permalink / raw)
  To: Eduardo Ochs; +Cc: kfogel, emacs-devel, andreas.roehler, dgutov

[[[ 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. ]]]

Your message suggests another way of stating Emacs's special virtue:
     
Emacs is the editor that encourages you to hack it to make it better.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-18  3:43                           ` transient Richard Stallman
@ 2020-05-18  6:58                             ` Joost Kremers
  2020-05-18 11:29                               ` transient Dmitry Gutov
                                                 ` (2 more replies)
  0 siblings, 3 replies; 281+ messages in thread
From: Joost Kremers @ 2020-05-18  6:58 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel


On Mon, May 18 2020, Richard Stallman wrote:
>   > I like it very much because it helps see the rationale 
>   > behind
>   > keybinding. After a while you get to learn the bindings for 
>   > the
>   > commands you use the most and you can easily explore new 
>   > commands.
>
> For those that know Transient -- do you think it would provide 
> that
> benefit too?

Well, which-key simply displays existing keybindings. A package 
author doesn't have to do anything, which-key just works.

Transient OTOH defines its own key sequences, so you can't use it 
to show users existing keybindings. If a package author wants 
their package to work with transient, they have to define 
transient menus for all functionality they want to expose.

Transient key bindings also work differently from standard Emacs 
key bindings. That's not a bad thing, because transient's main 
purpose is to provide an interface to external command line 
programs (such as git, as it was originally developed as part of 
magit) and it's well-suited for that.

It would be possible to use transient to provide an interface to 
Emacs packages, but the interface would be different from what is 
standard, so it's not a which-key replacement.


-- 
Joost Kremers
Life has its moments



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 18:57                                                               ` Drew Adams
  2020-05-17 20:03                                                                 ` Arthur Miller
@ 2020-05-18  8:32                                                                 ` martin rudalics
  2020-05-18 11:39                                                                   ` Dmitry Gutov
                                                                                     ` (2 more replies)
  1 sibling, 3 replies; 281+ messages in thread
From: martin rudalics @ 2020-05-18  8:32 UTC (permalink / raw)
  To: Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii

 > 1. It's trivial to move a minibuffer-only frame
 > off screen (and bring it back on screen).

Not in my experience.  Not even for arbitrary frames.

 > 2. Alternatively, it's possible to make a frame
 > invisible (and visible again).
 >
 > (modify-frame-parameters 1on1-minibuffer-frame
 >                           '((alpha . 0)))
 > (modify-frame-parameters 1on1-minibuffer-frame
 >                           '((alpha . 100)))

Only on systems that do support that.

 > Presumably, frame parameter `visibility' would
 > also be usable for this, but it doesn't seem
 > to have an effect on a minibuffer-only frame,
 > at least on MS Windows.  Same with parameter
 > `minibuffer-exit', and same with functions
 > `make-frame-(in)visible'.  Dunno whether those
 > are just bugs.

On every GUI I've seen so far

(make-frame-invisible (window-frame (minibuffer-window)))

works as intended.  I call it thousands of times daily whenever a
minibuffer becomes empty.

 > As I said, my impression is
 > that use of minibuffer frames doesn't get
 > tested much when features are introduced.]

I use a minibuffer child frame all the time.  It is invisible whenever I
don't need it, promptly shows up on any window where I want to interact
with it and resizes just like any normal minibuffer window.

I do not use the echo area for ElDoc though and occasionally the echo
area noisily pops up to tell me that I'm at the beginning or end of a
buffer.  I've been told that I have to live with the latter.

In either case I can assure you that minibuffer frames are tested by me
intensively whenever features are introduced.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17 21:37                                                                 ` Dmitry Gutov
@ 2020-05-18  8:33                                                                   ` martin rudalics
  2020-05-18 11:37                                                                     ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-18  8:33 UTC (permalink / raw)
  To: Dmitry Gutov, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii, Drew Adams

 > I think that conflation of the minibuffer and the echo area is one of oldest problems in Emacs.

True, unfortunately.  It has been stated often enough here (recall last
year's 'y-or-n-p' - 'yes-or-no-p' controversy) that this conflation has
been carved in stone.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18  3:46                             ` Richard Stallman
@ 2020-05-18 11:26                               ` Dmitry Gutov
  0 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-18 11:26 UTC (permalink / raw)
  To: rms, Eduardo Ochs; +Cc: kfogel, andreas.roehler, emacs-devel

On 18.05.2020 06:46, Richard Stallman wrote:
> Your message suggests another way of stating Emacs's special virtue:
>       
> Emacs is the editor that encourages you to hack it to make it better.

That sounds more fun than "sustained investment". :-)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-18  6:58                             ` transient Joost Kremers
@ 2020-05-18 11:29                               ` Dmitry Gutov
  2020-05-18 18:41                               ` transient Howard Melman
  2020-05-19  4:02                               ` which-key Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-18 11:29 UTC (permalink / raw)
  To: Joost Kremers, rms; +Cc: emacs-devel

On 18.05.2020 09:58, Joost Kremers wrote:
> 
> On Mon, May 18 2020, Richard Stallman wrote:
>>   > I like it very much because it helps see the rationale   > behind
>>   > keybinding. After a while you get to learn the bindings for   > the
>>   > commands you use the most and you can easily explore new   > 
>> commands.
>>
>> For those that know Transient -- do you think it would provide that
>> benefit too?
> 
> Well, which-key simply displays existing keybindings. A package author 
> doesn't have to do anything, which-key just works.

Perhaps I was wrong (sorry, not actively using either of the packages), 
and it's the which-key package that I was thinking about after all.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18  8:33                                                                   ` martin rudalics
@ 2020-05-18 11:37                                                                     ` Dmitry Gutov
  0 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-18 11:37 UTC (permalink / raw)
  To: martin rudalics, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii, Drew Adams

On 18.05.2020 11:33, martin rudalics wrote:
>  > I think that conflation of the minibuffer and the echo area is one of 
> oldest problems in Emacs.
> 
> True, unfortunately.  It has been stated often enough here (recall last
> year's 'y-or-n-p' - 'yes-or-no-p' controversy) that this conflation has
> been carved in stone.

I think that went past me, (un)fortunately.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18  8:32                                                                 ` martin rudalics
@ 2020-05-18 11:39                                                                   ` Dmitry Gutov
  2020-05-18 13:02                                                                     ` martin rudalics
  2020-05-19  8:40                                                                     ` martin rudalics
  2020-05-18 15:57                                                                   ` Drew Adams
  2020-05-21 18:19                                                                   ` Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre) Noam Postavsky
  2 siblings, 2 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-18 11:39 UTC (permalink / raw)
  To: martin rudalics, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

On 18.05.2020 11:32, martin rudalics wrote:
> I use a minibuffer child frame all the time.  It is invisible whenever I
> don't need it, promptly shows up on any window where I want to interact
> with it and resizes just like any normal minibuffer window.

Could you share your config? Perhaps we could make it into a package,  too.

> I do not use the echo area for ElDoc though and occasionally the echo
> area noisily pops up to tell me that I'm at the beginning or end of a
> buffer.  I've been told that I have to live with the latter.

Now that we have set-message-function and clear-message-function, 
couldn't you move message display somewhere else?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 11:39                                                                   ` Dmitry Gutov
@ 2020-05-18 13:02                                                                     ` martin rudalics
  2020-05-18 13:38                                                                       ` Dmitry Gutov
  2020-05-19  8:40                                                                     ` martin rudalics
  1 sibling, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-18 13:02 UTC (permalink / raw)
  To: Dmitry Gutov, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

[-- Attachment #1: Type: text/plain, Size: 409 bytes --]

 > Could you share your config? Perhaps we could make it into a package,  too.

An old version is on the last line of that thread

https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33498

but I attach the latest version here.

 > Now that we have set-message-function and clear-message-function, couldn't you move message display somewhere else?

Nirvana would be a good choice.  But I haven't tried yet.

martin

[-- Attachment #2: pop-up-mini.el --]
[-- Type: text/x-emacs-lisp, Size: 24299 bytes --]

;;; pop-up-mini.el --- pop up mini window in child frame -*- lexical-binding:t -*-

;; Copyright (C) 2019  Free Software Foundation, Inc.

;; Author: Martin Rudalics <rudalics@gmx.at>
;; Keywords: frames, minibuffers, windows
;; Version: 1.0
;; Package-Requires: ((emacs "27.1"))

;; pop-up-mini.el is free software; you can redistribute it and/or
;; modify it under the terms of the GNU General Public License as
;; published by the Free Software Foundation; either version 3, or (at
;; your option) any later version.

;; pop-up-mini.el is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
;; General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with this program.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:

;; Minor mode to pop up minibuffer and echo area in a child frame of
;; the selected frame.  This mode automatizes the following behaviors:
;;
;; - Reparent child frame when switching frames.
;;
;; - Facultatively host child frame at the bottom or top of selected
;;   window or selected frame's main or root window.
;;
;; - Resize and reposition child frame corresponding to size of its
;;   text and/or host window.
;;
;; - Hide empty child frame.
;;
;; A sample form with recommended variable settings for customizing
;; the .emacs init file is included at the end of this file.

;; Note: This file will work only with Emacs 27.1 and higher.

;;; Code:

(defvar pop-up-mini-mode)

(defvar pop-up-mini-frame nil
  "The minibuffer child-frame of 'pop-up-mini-mode'.
Usually displayed as child frame of the selected frame.")

(defvar pop-up-mini-window nil
  "The root window of 'pop-up-mini-frame'.")

(defgroup pop-up-mini nil
  "Customization group for 'pop-up-mini-mode'."
  :version "27.1"
  :group 'convenience
  :group 'frames)

(defun pop-up-mini--set-value (symbol value)
  "Helper function for customizing 'pop-up-mini-mode' options."
  (set-default symbol value)
  (cond
   ((not (frame-live-p pop-up-mini-frame)))
   ((eq symbol 'pop-up-mini-internal-border)
    (set-face-background 'internal-border value pop-up-mini-frame))
   ((frame-visible-p pop-up-mini-frame)
    (when (frame-live-p (frame-parent pop-up-mini-frame))
      (pop-up-mini-move (frame-parent pop-up-mini-frame))))))

(defcustom pop-up-mini-host 'selected
  "Type of window hosting 'pop-up-mini-frame'.
Choices are

'selected' - the selected window

'main' - the selected frame's main window

'root' - the selected frame's root window

Note that both 'main' and 'root' may overwrite the mode lines of
the windows at the bottom of the frame."
  :type '(choice (const selected)
                 (const main)
                 (const root))
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-host-min-width 20
  "Minimum width of host window for 'pop-up-mini-frame'.
If the window designated by 'pop-up-mini-host' is not as wide as
specified by this option, rehost 'pop-up-mini-frame' at the main
or root window of its parent frame."
  :type 'integer
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-host-min-height 3
  "Minimum height of of host window for 'pop-up-mini-frame'.
If the window designated by 'pop-up-mini-host' is not as high as
specified by this option, rehost 'pop-up-mini-frame' at the main
or root window of its parent frame."
  :type 'integer
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-rehost-to-fit t
  "If non-nil, rehost 'pop-up-mini-frame' when its text does not fit.
If this option is non-nil, 'pop-up-mini-host' equals 'selected'
and the text shown in 'pop-up-mini-frame' exceeds the width of
the selected window, rehost 'pop-up-mini-frame' to the selected
frame's main window."
  :type 'boolean
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-hide-if-empty 0.5
  "If non-nil, delay for hiding the empty 'pop-up-mini-frame'.
If this is nil, never hide the 'pop-up-mini-frame'.  Otherwise,
it specifies the number of seconds to wait before hiding an empty
'pop-up-mini-frame'.  Zero means to hide 'pop-up-mini-frame'
immediately after it becomes empty."
  :type '(choice (const nil)
		 (number :tag "delay"))
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-position 'scroll-bar
  "Position of 'pop-up-mini-frame' within its host window.
Choices are

'body-bottom' - at the bottom of the host's body if the host is a
   live window, at the bottom of the host window otherwise.  For
   a live host window this avoids covering the window's mode line
   and any scroll bars, fringes, or margins.

'body-top' - at the top of the host window's body if the host is
   a live window, at the top of the host window otherwise.  For a
   live host window this avoids covering the window's header line
   and any scroll bars, fringes, or margins.

'scroll-bar' - above the mode line of the host window if it is
   live, at the bottom of the host window otherwise.  This will
   usually hide the horizontal scroll bar of the host window.

'bottom' - at the bottom of the host window.  This will usually
   cover the host window's mode line, if any.

'top' - at the top of the host window.  This will usually cover
   the host window's header line, if any.

The width of 'pop-up-mini-frame' is the body width of the host
window for the first two options and the total width of the host
window for the remaining ones."
  :type '(choice (const body-bottom)
                 (const body-top)
		 (const scroll-bar)
                 (const bottom)
                 (const top))
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-resize-manually t
  "If non-nil, allow manually resizing of 'pop-up-mini-frame'.
This allows to drag the upper border of the 'pop-up-mini-frame'
with the mouse provided its window is the active minibuffer
window, until it either shrinks back to one line or becomes
empty."
  :type 'boolean
  :initialize 'custom-initialize-default
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defcustom pop-up-mini-internal-border "blue"
  "Background of internal border of 'pop-up-mini-frame'."
  :type 'string
  :set 'pop-up-mini--set-value
  :version "27.1"
  :group 'pop-up-mini)

(defvar pop-up-mini-buffer nil
  "Present or past buffer of 'pop-up-mini-window'.
This is the buffer shown in 'pop-up-mini-window' the last time
'resize-mini-frame' was called for its frame.")

(defvar pop-up-mini-text ""
  "Text displayed in 'pop-up-mini-window'.")

(defvar pop-up-mini-text-pixel-size '(0 . 0)
  "Size of 'pop-up-mini-text' the last time it was calculated.
The return value of 'window-text-pixel-size' the last time it was
run for 'pop-up-mini-window'.  The X-LIMIT for that run was the
width of the parent frame of 'pop-up-mini-frame' at that time.
The buffer text of 'pop-up-mini-window' at that time was
'pop-up-mini-text'.")

(defvar pop-up-mini-window-pixel-width 0
  "Pixel width of 'pop-up-mini-window'.")

(defvar pop-up-mini-window-pixel-height 0
  "Pixel height of 'pop-up-mini-window'.")

(defvar pop-up-mini-block-height nil
  "Non-nil means temporarily block height adjustment.")

(defvar pop-up-mini-hide-if-empty-timer nil
  "Timer for hiding 'pop-up-mini-frame'.")

(defun pop-up-mini-host-window (&optional frame)
  "Return window to host 'pop-up-mini-frame' on FRAME.
FRAME defaults to the selected frame."
  (cond
   ((eq pop-up-mini-host 'main)
    (window-main-window frame))
   ((eq pop-up-mini-host 'root)
    (frame-root-window frame))
   (t
    (frame-selected-window frame))))

(defun pop-up-mini-hide ()
  "Hide pop-up-mini-frame."
  (when (frame-live-p pop-up-mini-frame)
    (make-frame-invisible pop-up-mini-frame)
    (when (timerp pop-up-mini-hide-if-empty-timer)
      (cancel-timer pop-up-mini-hide-if-empty-timer)
      (setq pop-up-mini-hide-if-empty-timer nil))))

(defun pop-up-mini-move (frame &optional hide-immediately)
  "Maybe move and resize 'pop-up-mini-frame' to FRAME."
  (let* ((host (pop-up-mini-host-window frame))
	 (position pop-up-mini-position)
	 (body (and (window-live-p host)
		    (memq position '(body-bottom body-top))))
	 (edges (window-edges host body nil t))
	 (borders-width
	  (* (frame-parameter pop-up-mini-frame 'internal-border-width) 2))
	 (body-width (car pop-up-mini-text-pixel-size))
	 (body-height (cdr pop-up-mini-text-pixel-size))
	 total-width total-height extended-width) ; extended-main)

;;     (foo-it hide-immediately)

    (if (and (numberp pop-up-mini-hide-if-empty)
	     (zerop body-width) (zerop body-height))
	(cond
	 ((or hide-immediately (<= pop-up-mini-hide-if-empty 0))
	  ;; An empty 'pop-up-mini-buffer' - hide it.
	  (setq pop-up-mini-block-height nil)
	  (make-frame-invisible pop-up-mini-frame))
	 (t
	  (setq pop-up-mini-block-height nil)
	  (setq pop-up-mini-hide-if-empty-timer
		(run-with-timer
		 pop-up-mini-hide-if-empty nil 'pop-up-mini-hide))))
      ;; If 'pop-up-mini-resize-manually' is non-nil, preserve height
      ;; of a manually resized 'pop-up-mini-frame' as long as its
      ;; window is the active minibuffer window, is larger than one
      ;; line and its buffer is non-empty.
      (if pop-up-mini-block-height
	  (setq pop-up-mini-block-height
		(and (minibuffer-window-active-p pop-up-mini-window)
		     (not (zerop body-width))
		     (not (zerop body-height))
		     (> (window-pixel-height pop-up-mini-window)
			(frame-char-height pop-up-mini-frame))))
	(setq pop-up-mini-block-height
	      (and pop-up-mini-resize-manually
		   (minibuffer-window-active-p pop-up-mini-window)
		   (/= (window-body-height pop-up-mini-window t)
		       body-height))))

;;       (foo-it pop-up-mini-hide-if-empty body-width body-height)

      ;; Check minimum width and height of selected window.
      (cond
       ;; For 'scroll-bar' detract mode line and divider height from
       ;; third edge.
       ((and (eq position 'scroll-bar) (eq pop-up-mini-host 'selected))
	(setq edges (list (nth 0 edges) (nth 1 edges) (nth 2 edges)
			  (- (nth 3 edges) (window-mode-line-height host)
			     (window-bottom-divider-width host))))
	(setq position 'bottom))
       ;; For 'bottom' detract divider height from third edge when host
       ;; is live ('main' slightly loses here).
       ((and (eq position 'bottom) (window-live-p host))
	(setq edges (list (nth 0 edges) (nth 1 edges) (nth 2 edges)
			  (- (nth 3 edges)
			     (window-bottom-divider-width host))))))
      (setq total-width
	    (+ body-width
	       (- (window-pixel-width pop-up-mini-window)
		  (window-body-width pop-up-mini-window t))
	       (- (window-scroll-bar-width pop-up-mini-window))
	       (- (let ((fringes (window-fringes pop-up-mini-window)))
		    (+ (car fringes) (nth 1 fringes))))))

      (unless pop-up-mini-block-height
	(setq total-height
	      (+ body-height
		 (let ((scroll-bars (window-scroll-bars pop-up-mini-window)))
		   (or (nth 3 scroll-bars)
		       (and (eq (nth 5 scroll-bars) t)
			    (frame-scroll-bar-height pop-up-mini-frame))
		       0))
		 (- (frame-scroll-bar-height pop-up-mini-frame)))))

      ;; Extend on scroll bars, maybe.
      (when (and (eq pop-up-mini-position 'scroll-bar)
		 (window-combined-p nil t)
		 (or (< (- (nth 2 edges) (nth 0 edges)
			   (window-right-divider-width host))
			total-width)
		     (< (- (nth 2 edges) (nth 0 edges)
			   (window-right-divider-width host))
			pop-up-mini-host-min-width)))
	(let* ((edge-0 (nth 0 edges))
	       (sibling (window-next-sibling))
	       (edge-2 (nth 2 (window-edges sibling nil nil t)))
	       (width (- edge-2 edge-0)))
	  (while (and sibling (< width total-width))
	    (setq sibling (window-next-sibling sibling))
	    (setq edge-2 (nth 2 (window-edges sibling nil nil t)))
	    (setq width (- edge-2 edge-0)))
	  (if (>= width total-width)
	      (progn
		(setq extended-width width)
;; 		(setq extended-main
;; 		      (and sibling (not (window-live-p sibling))))
		)
	    (setq edge-2 (nth 2 (window-edges
				 (window-main-window frame) nil nil t)))
	    (setq width (- edge-2 edge-0))
	    (when (>= width total-width)
;; 	      (setq extended-main t)
	      (setq extended-width width)))))

      (when (and (not pop-up-mini-block-height)
		 (eq pop-up-mini-host 'selected)
		 (not extended-width)
		 (or (not (zerop pop-up-mini-host-min-width))
		     (not (zerop pop-up-mini-host-min-height))
		     pop-up-mini-rehost-to-fit)
		 (or (and (/= (window-total-width host)
			      (window-total-width (window-main-window frame)))
			  (or (< (- (nth 2 edges) (nth 0 edges)
				    (window-right-divider-width host))
				 total-width)
			      (< (- (nth 2 edges) (nth 0 edges)
				    (window-right-divider-width host))
				 pop-up-mini-host-min-width)
		     (and (/= (window-total-height host)
			      (window-total-height (window-main-window frame)))
			  (or (< (- (nth 3 edges) (nth 1 edges)) total-height)
			      (< (- (nth 3 edges) (nth 1 edges))
				 pop-up-mini-host-min-height)))))))
	;; FRAME's selected window is too small, use its main window.
	(setq host (window-main-window frame))
	(setq position
	      (cond
	       ((eq position 'body-top) 'top)
	       ((eq position 'body-bottom) 'bottom)
	       (t position)))
	(setq edges (window-edges host nil nil t)))

;;       (foo-it pop-up-mini-buffer pop-up-mini-text
;; 	      pop-up-mini-text-pixel-size
;; 	      host (- (nth 2 edges) (nth 0 edges)) body-width)

;;       (foo-it (- (frame-pixel-height frame) (nth 3 edges))
;; 	      total-height)

      ;; Cancel our timer.
      (when (timerp pop-up-mini-hide-if-empty-timer)
	(cancel-timer pop-up-mini-hide-if-empty-timer)
	(setq pop-up-mini-hide-if-empty-timer nil))
      ;; Resize and position.
      (modify-frame-parameters
       pop-up-mini-frame
       `((parent-frame . ,frame)
	 (visibility . t)
	 (top . ,(if (memq pop-up-mini-position '(top body-top))
		     (nth 1 edges)
		   `(- ,(- (frame-pixel-height frame) (nth 3 edges)))))
	 (left . ,(nth 0 edges))
	 ,(unless pop-up-mini-block-height
	    `(height . ,(cons 'text-pixels
			      ;; Don't make 'pop-up-mini-frame' higher
			      ;; than its host window.
			      (min (- (nth 3 edges) (nth 1 edges))
				   total-height))))
	 (width . ,(cons 'text-pixels
			 ;; Make 'pop-up-mini-frame' as wide as its
			 ;; host window.
			 (or (and extended-width
				  (- extended-width
				     (- (window-pixel-width pop-up-mini-window)
					(window-body-width pop-up-mini-window t))
				     borders-width))
			     (- (nth 2 edges) (nth 0 edges)
				(if (window-live-p host)
				    (window-right-divider-width host)
				  0)
				(- (window-pixel-width pop-up-mini-window)
				   (window-body-width pop-up-mini-window t))
				borders-width))))))
      (setq pop-up-mini-window-pixel-width
	    (window-pixel-width pop-up-mini-window))
      (setq pop-up-mini-window-pixel-height
	    (window-pixel-height pop-up-mini-window)))))

(defvar pop-up-mini-window-reparented nil)

(defun pop-up-mini-window-state-change ()
  "'pop-up-mini-mode' function run by 'window-state-change-hook'.
If the selected window, the window specfied by 'pop-up-mini-host'
or 'pop-up-mini-text' changed since last redisplay, reparent,
resize and/or reposition 'pop-up-mini-frame' if necessary."
  (when (frame-live-p pop-up-mini-frame)
    (setq pop-up-mini-window-reparented
	  (and pop-up-mini-window-reparented
	       (not (zerop (minibuffer-depth)))))

    (let* ((old-parent
	    (and (frame-live-p (frame-parent pop-up-mini-frame))
		 (frame-parent pop-up-mini-frame)))
	   (new-parent
	    (cond
	     ((eq (selected-frame) old-parent) old-parent)
	     ((eq (selected-frame) pop-up-mini-frame)
	      (if (minibuffer-selected-window)
		  (let ((frame (window-frame (minibuffer-selected-window))))
		    (if (and (not pop-up-mini-window-reparented)
			     (not (eq frame old-parent))
			     (eq (minibuffer-window frame) pop-up-mini-window))
			;; Special case where selected window changed
			;; _and_ 'pop-up-mini-window' got selected.
			(progn
			  (setq pop-up-mini-window-reparented t)
			  frame)
		      old-parent))))
	     ((eq (minibuffer-window) pop-up-mini-window) (selected-frame))
	     (t old-parent)))
	   hide-immediately)

;;       (unless (eq (frame-old-selected-window new-parent)
;; 		  (frame-selected-window new-parent))
;; 	(foo-it (frame-old-selected-window new-parent)
;; 		(frame-selected-window new-parent)))

      (when (and (frame-live-p new-parent)
		 (or (setq hide-immediately (not (eq old-parent new-parent)))
		     (let ((host-window (pop-up-mini-host-window new-parent)))
		       (setq hide-immediately
			     (or (and (eq pop-up-mini-host 'selected)
				      (not (eq (frame-old-selected-window
						new-parent)
					       (frame-selected-window
						new-parent))))
				 (/= (window-pixel-height host-window)
				     (window-old-pixel-height host-window))
				 (/= (window-pixel-width host-window)
				     (window-old-pixel-width host-window)))))
		     (frame-window-state-change pop-up-mini-frame)))
	;; Something really changed, dig further.
	(pop-up-mini-move new-parent hide-immediately)))))

(defun pop-up-mini-resize-mini-frame (frame)
  "'resize-mini-frames' function of 'pop-up-mini-mode'."
  (when (eq frame pop-up-mini-frame)
    (let* ((buffer (window-buffer pop-up-mini-window))
	   (text (with-current-buffer buffer
		   ;; Since we ignore text properties we will miss the
		   ;; case of displaying the same string with
		   ;; different text properties twice in a row.
		   (buffer-substring-no-properties (point-min) (point-max)))))
      ;; Return when there's no change.  This means that
      ;; 'pop-up-mini-buffer', 'pop-up-mini-text' as well as width and
      ;; height of 'pop-up-mini-window' are the same as the last time
      ;; we displayed them.
      (unless (and (eq buffer pop-up-mini-buffer)
		   (string-equal pop-up-mini-text text)
		   ;; Make sure that we do not miss a case where we
		   ;; want to make 'pop-up-mini-frame' invisible.
		   (or (not pop-up-mini-hide-if-empty)
		       (not (string-equal text ""))
		       (not (frame-visible-p pop-up-mini-frame)))
		   (equal (window-pixel-width pop-up-mini-window)
			  pop-up-mini-window-pixel-width)
		   (equal (window-pixel-height pop-up-mini-window)
			  pop-up-mini-window-pixel-height))
	;; Remember old string.
	(setq pop-up-mini-buffer buffer)
	(setq pop-up-mini-text text)
	(setq pop-up-mini-window-pixel-width
	      (window-pixel-width pop-up-mini-window))
	(setq pop-up-mini-window-pixel-height
	      (window-pixel-height pop-up-mini-window))
	;; This is the only place where we can calculate the size.
	(setq pop-up-mini-text-pixel-size
	      (and (buffer-live-p buffer)
		   (window-text-pixel-size
		    pop-up-mini-window
		    nil nil (frame-text-width
			     (frame-parent pop-up-mini-frame)))))

;; 	(when (buffer-live-p buffer)
;; 	  (foo-it buffer (eq buffer pop-up-mini-buffer)
;; 		  text (string-equal text pop-up-mini-text)
;; 		  pop-up-mini-text-pixel-size
;; 		  (frame-text-width
;; 		   (frame-parent pop-up-mini-frame))))

	;; Notify ourselves of change.
	(set-frame-window-state-change frame t)))))

(defun pop-up-mini-after-make-frame (frame)
  "Maybe make FRAME client of 'pop-up-mini-frame'."
  (when (and (not (frame-parameter frame 'minibuffer))
	     (window-live-p pop-up-mini-window))
    (set-frame-parameter frame 'minibuffer pop-up-mini-window)))

(defun pop-up-mini-setup ()
  "Set up minibuffer child frame mode.
This function makes the first minibuffer-only frame it finds the
'pop-up-mini-frame'.  Needs a minibuffer-only frame."
  (setq pop-up-mini-frame nil)

  ;; Make 'pop-up-mini-frame' the first 'minibuffer-only' frame found
  ;; on 'frame-list'.  Throw an error if we don't find one.
  (unless (catch 'found
	    (dolist (frame (frame-list))
	      (when (eq (frame-parameter frame 'minibuffer) 'only)
		(throw 'found (setq pop-up-mini-frame frame)))))
    (error "'pop-up-mini-mode' needs a minibuffer-only frame"))

  ;; The following will fail whenever someone resets the
  ;; 'unsplittable' parameter of 'pop-up-mini-frame'.
  (setq pop-up-mini-window (frame-root-window pop-up-mini-frame))
  (setq pop-up-mini-buffer (window-buffer pop-up-mini-window))
  (set-face-background
   'internal-border pop-up-mini-internal-border pop-up-mini-frame)
  ;; Usurpate 'resize-mini-frames'.  On exit reset that to nil.
  (setq resize-mini-frames 'pop-up-mini-resize-mini-frame)
  (add-hook
   'window-state-change-hook 'pop-up-mini-window-state-change)
  (add-hook
   'after-make-frame-functions 'pop-up-mini-after-make-frame))

;;;###autoload
(define-minor-mode pop-up-mini-mode
  "Show minibuffer and echo area in a child frame.
'pop-up-mini-mode' uses a child frame called 'pop-up-mini-frame'
for displaying the minibuffer or the echo area.  The parent frame
of 'pop-up-mini-frame' is the currently selected frame.  Within
its parent, 'pop-up-mini-frame' can be hosted at that frame's
selected, main or root window (see 'pop-up-mini-host') either at
that window's top or bottom (see 'pop-up-mini-position').  A
'pop-up-mini-frame' that does not display any text can be hidden
using the option 'pop-up-mini-hide-if-empty'."
  :global t
  :group 'pop-up-mini
  :init-value nil
  :link '(emacs-commentary-link "pop-up-mini.el")
  (if pop-up-mini-mode
      (if frame-initial-frame
	  ;; When the initial frame is still around wait until
	  ;; 'window-setup-hook' is run.
	  (add-hook 'window-setup-hook 'pop-up-mini-setup)
	;; Otherwise run immediately.
	(pop-up-mini-setup))
    ;; Cancel our timer.
    (when (timerp pop-up-mini-hide-if-empty-timer)
      (cancel-timer pop-up-mini-hide-if-empty-timer)
      (setq pop-up-mini-hide-if-empty-timer nil))
    (remove-hook
     'window-state-change-hook 'pop-up-mini-window-state-change)
    (remove-hook
     'after-make-frame-functions 'pop-up-mini-after-make-frame)
    ;; This is not very nice but any previous value might be broken.
    (setq resize-mini-frames nil)
    ;; Reset our variables.
    (setq pop-up-mini-window nil)
    (when pop-up-mini-frame
      ;; Unparent our frame and make it visible.
      (modify-frame-parameters
       pop-up-mini-frame
       `((parent-frame . nil) (visibility . t)))
      (setq pop-up-mini-frame nil))))

(provide 'pop-up-mini)

;;; Recommended variable settings for .emacs init file.

(custom-set-variables
 ;; Enable ourselves.
 '(pop-up-mini-mode 1)
 ;; Resize frames exactly.
 '(frame-resize-pixelwise t)
 ;; At least two lines scroll margin for selected window host.
 '(scroll-margin 2)
 ;; Automatically create a minibuffer child frame at startup and
 ;; reparent it immediately.
 '(initial-frame-alist
    (cons '(minibuffer . child-frame) initial-frame-alist))
 ;; Reuse minibuffer child frame when making a new frame.  Do not use
 ;; '(minibuffer . child-frame) here, it would make a new child frame.
 '(default-frame-alist
    (cons '(minibuffer . nil) default-frame-alist))
 '(minibuffer-frame-alist
   '(;; Initial positioning and sizing for the window manager.
     (height . 1)
     (width . 1.0)
     (top . 1.0)
     ;; Always show at least one line.
     (min-height . 1)
     ;; No horizontal scroll bars (they don't work properly in
     ;; minibuffer windows).
     (horizontal-scroll-bars . nil)
     ;; No title bar.
     (undecorated . t)
     ;; To drag the child frame's top with the mouse.
     (internal-border-width . 1)
     (drag-internal-border . t)
     ;; No special glyphs.
     (no-special-glyphs . t)
     ;; No foucs when child frame is (re-)mapped.
     (no-focus-on-map . t))))

;;; pop-up-mini.el ends here

;; (set-frame-parameter (window-frame (minibuffer-window)) 'mini-window-horizontal-scroll-bar t)
;; (frame-parameter (window-frame (minibuffer-window)) 'mini-window-horizontal-scroll-bar)

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 13:02                                                                     ` martin rudalics
@ 2020-05-18 13:38                                                                       ` Dmitry Gutov
  2020-05-18 16:31                                                                         ` Robert Pluim
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-18 13:38 UTC (permalink / raw)
  To: martin rudalics, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

On 18.05.2020 16:02, martin rudalics wrote:
>  > Could you share your config? Perhaps we could make it into a 
> package,  too.
> 
> An old version is on the last line of that thread
> 
> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33498
> 
> but I attach the latest version here.

Thank you.

If I visit the file and M-x eval-buffer, I get this error:

Error setting pop-up-mini-mode: (error ’pop-up-mini-mode’ needs a 
minibuffer-only frame)

(Whether I start from 'emacs -Q' or not.)

>  > Now that we have set-message-function and clear-message-function, 
> couldn't you move message display somewhere else?
> 
> Nirvana would be a good choice.  But I haven't tried yet.

This one?

https://en.wikipedia.org/wiki/NEdit



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-18  8:32                                                                 ` martin rudalics
  2020-05-18 11:39                                                                   ` Dmitry Gutov
@ 2020-05-18 15:57                                                                   ` Drew Adams
  2020-05-19  8:41                                                                     ` martin rudalics
  2020-05-21 18:19                                                                   ` Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre) Noam Postavsky
  2 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-18 15:57 UTC (permalink / raw)
  To: martin rudalics, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii

>  > 1. It's trivial to move a minibuffer-only frame
>  > off screen (and bring it back on screen).
> 
> Not in my experience.  Not even for arbitrary frames.

I think it is, at least on MS Windows, and I think
on other OSes also.

I just did it, interactively, using a command that
moves a frame down incrementally.  It just calls
`modify-frame-parameters, changing `top'.

That works fine, whether the minibuffer is active
or not.

Maybe you meant something different?

>  > Presumably, frame parameter `visibility' would
>  > also be usable for this, but it doesn't seem
>  > to have an effect on a minibuffer-only frame,
>  > at least on MS Windows.  Same with parameter
>  > `minibuffer-exit', and same with functions
>  > `make-frame-(in)visible'.  Dunno whether those
>  > are just bugs.
> 
> On every GUI I've seen so far
> (make-frame-invisible (window-frame (minibuffer-window)))
> works as intended.  I call it thousands of times daily
> whenever a minibuffer becomes empty.

Hm.  I've checked only with my setup.  Maybe
something else is going on there.

(progn (make-frame-invisible
         (window-frame (minibuffer-window)))
       (pp-eval-expression
         (frame-parameter nil 'visibility) t))

tells me `t', with my setup.  And the frame
stays visible.

But if what you say is true, then that too
(in addition to moving the frame off-screen
temporarily) should be an option for the
requested behavior.

> I use a minibuffer child frame all the time.  It is invisible whenever
> I don't need it, promptly shows up on any window where I want to interact
> with it and resizes just like any normal minibuffer window.

Great.  I haven't bothered with child frames yet.

Maybe show (or point to) your code for that, as
it sounds like what the requestor is looking for.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 13:38                                                                       ` Dmitry Gutov
@ 2020-05-18 16:31                                                                         ` Robert Pluim
  2020-05-18 23:14                                                                           ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: Robert Pluim @ 2020-05-18 16:31 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, martin rudalics, homeros.misasa,
	tkk, Sergey Organov, Stefan Monnier, Arthur Miller, Eli Zaretskii,
	Drew Adams, Stefan Kangas

>>>>> On Mon, 18 May 2020 16:38:36 +0300, Dmitry Gutov <dgutov@yandex.ru> said:

    Dmitry> On 18.05.2020 16:02, martin rudalics wrote:
    >> > Could you share your config? Perhaps we could make it into a
    >> package,  too.
    >> An old version is on the last line of that thread
    >> https://debbugs.gnu.org/cgi/bugreport.cgi?bug=33498
    >> but I attach the latest version here.

    Dmitry> Thank you.

    Dmitry> If I visit the file and M-x eval-buffer, I get this error:

    Dmitry> Error setting pop-up-mini-mode: (error ’pop-up-mini-mode’ needs a
    Dmitry> minibuffer-only frame)

    Dmitry> (Whether I start from 'emacs -Q' or not.)

And if you set emacs to use a minibuffer-only frame?

    emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"

Robert



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-18  6:58                             ` transient Joost Kremers
  2020-05-18 11:29                               ` transient Dmitry Gutov
@ 2020-05-18 18:41                               ` Howard Melman
  2020-05-18 19:35                                 ` transient John Yates
  2020-05-19  5:38                                 ` transient Drew Adams
  2020-05-19  4:02                               ` which-key Richard Stallman
  2 siblings, 2 replies; 281+ messages in thread
From: Howard Melman @ 2020-05-18 18:41 UTC (permalink / raw)
  To: emacs-devel

Joost Kremers <joostkremers@fastmail.fm> writes:

> On Mon, May 18 2020, Richard Stallman wrote:
>>   > I like it very much because it helps see the rationale behind
>>   > keybinding. After a while you get to learn the bindings for the
>>   > commands you use the most and you can easily explore
>>   > new commands.
>>
>> For those that know Transient -- do you think it would provide that
>> benefit too?
>
> Well, which-key simply displays existing keybindings. A package author
> doesn't have to do anything, which-key just works.
>
> Transient OTOH defines its own key sequences, so you can't use it to
> show users existing keybindings. If a package author wants their
> package to work with transient, they have to define transient menus
> for all functionality they want to expose.

Agreed. I've used both. which-key let's me explore existing
bindings with no effort.  Type C-x r and wait a second and
see all the rectangle and register commands. It was great
for learning the M-s and M-g keymaps when they were added.

which-key has been very helpful for learning bindings and I
think it would be great addition to core. Though for a busy
keymap it can take a second to read it to find what you
want. The C-h map is a perfect example. 

I've written a few transients that I've found useful,
including one for help and others for customize, ediff,
frame commands and one that toggles a ton of different minor
modes and visual features. Unlike which-key, transient
allows you to specify the order and groupings of bindings
when activated which can make scaning and learning them much
easier

hydra is a similar package to transient in that you can
define such temporary keymaps and customize a help display
that's shown while using it.  It has advantages and
disadvantages but so far I've prefered transient.

-- 

Howard




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-18 18:41                               ` transient Howard Melman
@ 2020-05-18 19:35                                 ` John Yates
  2020-05-18 19:57                                   ` transient Howard Melman
  2020-05-19  5:38                                 ` transient Drew Adams
  1 sibling, 1 reply; 281+ messages in thread
From: John Yates @ 2020-05-18 19:35 UTC (permalink / raw)
  To: Howard Melman; +Cc: Emacs developers

On Mon, May 18, 2020 at 2:41 PM Howard Melman <hmelman@gmail.com> wrote:
> I've written a few transients that I've found useful,
> including one for help and others for customize, ediff,
> frame commands and one that toggles a ton of different minor
> modes and visual features.

Are these available anywhere?

/john



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-18 19:35                                 ` transient John Yates
@ 2020-05-18 19:57                                   ` Howard Melman
  0 siblings, 0 replies; 281+ messages in thread
From: Howard Melman @ 2020-05-18 19:57 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 589 bytes --]

John Yates <john@yates-sheets.org> writes:

> On Mon, May 18, 2020 at 2:41 PM Howard Melman <hmelman@gmail.com> wrote:
>> I've written a few transients that I've found useful,
>> including one for help and others for customize, ediff,
>> frame commands and one that toggles a ton of different minor
>> modes and visual features.
>
> Are these available anywhere?

Not as a package as they are just my own personal config. I
did post a few here:
https://www.reddit.com/r/emacs/comments/f3o0v8/anyone_have_good_examples_for_transient/fhq1lky/?context=3

Here's a screenshot of my help one:


[-- Attachment #2: Help Transient Window --]
[-- Type: image/png, Size: 61561 bytes --]

[-- Attachment #3: Type: text/plain, Size: 14 bytes --]



-- 

Howard

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 16:31                                                                         ` Robert Pluim
@ 2020-05-18 23:14                                                                           ` Dmitry Gutov
  2020-05-19  8:41                                                                             ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-18 23:14 UTC (permalink / raw)
  To: Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, martin rudalics, homeros.misasa,
	tkk, Sergey Organov, Stefan Monnier, Arthur Miller, Eli Zaretskii,
	Drew Adams, Stefan Kangas

On 18.05.2020 19:31, Robert Pluim wrote:

>      Dmitry> Error setting pop-up-mini-mode: (error ’pop-up-mini-mode’ needs a
>      Dmitry> minibuffer-only frame)
> 
>      Dmitry> (Whether I start from 'emacs -Q' or not.)
> 
> And if you set emacs to use a minibuffer-only frame?
> 
>      emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"

That setting is at the bottom of the file Martin attached.

I finally understood what I was doing wrong: I tried to visit the file 
and 'M-x eval-buffer' from an existing graphical frame. That got me the 
error.

If I load it from init.el, the result is fairly functional (though with 
a number of glitches), and it really does look like an improvement over 
the current situation. Even if the main benefit is simply locality: it 
displays the "minibuffer" at the bottom of the current window, not frame.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* which-key
  2020-05-18  6:58                             ` transient Joost Kremers
  2020-05-18 11:29                               ` transient Dmitry Gutov
  2020-05-18 18:41                               ` transient Howard Melman
@ 2020-05-19  4:02                               ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-19  4:02 UTC (permalink / raw)
  To: Joost Kremers; +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. ]]]

  > Well, which-key simply displays existing keybindings. A package 
  > author doesn't have to do anything, which-key just works.

I see.  That sounds useful.  Does anyone disagree?

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: transient
  2020-05-18 18:41                               ` transient Howard Melman
  2020-05-18 19:35                                 ` transient John Yates
@ 2020-05-19  5:38                                 ` Drew Adams
  2020-05-19 14:00                                   ` transient Arthur Miller
  2020-05-19 22:04                                   ` transient Stefan Kangas
  1 sibling, 2 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-19  5:38 UTC (permalink / raw)
  To: Howard Melman, emacs-devel

> >>> I like it very much because it helps see the rationale behind
> >>> keybinding. After a while you get to learn the bindings for the
> >>> commands you use the most and you can easily explore
> >>> new commands.
> 
> ... which-key let's me explore existing bindings with
> no effort.  Type C-x r and wait a second and see all
> the rectangle and register commands. It was great for
> learning the M-s and M-g keymaps when they were added.
> which-key has been very helpful for learning bindings...

FWIW -

Icicles key completion is similar, but there are
notable differences:

1. You can use it on-demand (as well as just
   automatically) - complete only when you want
   to, and without a delay.

2. Because of that you can also use it at top
   level, not just after hitting a prefix key.
   Use it to see what key bindings are available
   in the current context (e.g. active modes).

3. Completion candidates have 2 parts: key and
   command name: `KEY  =  COMMAND'.  You can
   match either or both.  Prefix keys have `...'
   instead of `COMMAND: `PREFIX-KEY  =  ...'.

4. Choosing a candidate with a COMMAND invokes
   it.  Choosing a prefix-key candidate changes
   the set of candidates to its completions.
   E.g., choosing `C-h  =  ...' shows candidates
   such as `f  =  describe-function'.

5. You can filter the current matches, by typing
   input that matches key or command names, or
   both.  You can filter multiple times (multiple
   patterns).  Remove your current pattern from
   the minibuffer and type another one to see a
   different set of matches at the same level
   (same prefix key or top level).

6. When completing a prefix key, the first
   candidate shown is `..', which you can choose
   to go back up a level (completions above that
   prefix key).  Then you can go down another
   prefix key - explore the entire key-sequence
   forest.

7. That forest includes menus, as prefix-key
   candidates (`menu-bar  = ...').  So you can
   explore menus in the same way. [*]

8. You can sort candidates in these ways:

    * local bindings first, then non-local, each
      group in alphabetic order by key name
    * prefix keys first, then non-prefix, again,
      in key-name alphabetic order
    * alphabetic order by command name

   You can cycle among those sort orders anytime,
   using `C-,'.

9. Local bindings are highlighted differently
   from non-local - two faces.  Menus get two
   other faces (local, non-local).

10. You can show full help (`C-h f' help) for
    any candidate, anytime, without ending
    completion.  (Use `C-M-RET' on it.)

11. Being able to match minibuffer input against
   key and command names means that, unlike the
   approach of `which-key' and similar, when
   completing a prefix key you don't just hit
   keys that complete the key sequence, to
   invoke its command.  A workaround for that is
   to hit `M-q' and then hit a key, to insert
   its name in the minibuffer and then choose it.
   E.g., `M-q C-M-f' inserts the text `C-M-f' in
   the minibuffer.
_____

[*] Exploring menu-bar menus this way is one
    step (menu level) at a time, the same as
    exploring other key sequences.  A better way
    to explore menu-bar menus is to use library
    La Carte.  Then you can match menu items or
    submenus directly, at any level.  I.e., you
    can type a single pattern that dives down
    into the menu hierarchy - like file-name
    completion.  (But you can also navigate
    stepwise.)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 11:39                                                                   ` Dmitry Gutov
  2020-05-18 13:02                                                                     ` martin rudalics
@ 2020-05-19  8:40                                                                     ` martin rudalics
  2020-05-20  0:40                                                                       ` Dmitry Gutov
  1 sibling, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-19  8:40 UTC (permalink / raw)
  To: Dmitry Gutov, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

 > Now that we have set-message-function and clear-message-function, couldn't you move message display somewhere else?

I tried that now but it doesn't work.  Probably because
'set-message-function' works for non-logged messages only.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 15:57                                                                   ` Drew Adams
@ 2020-05-19  8:41                                                                     ` martin rudalics
  0 siblings, 0 replies; 281+ messages in thread
From: martin rudalics @ 2020-05-19  8:41 UTC (permalink / raw)
  To: Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, dgutov, Eli Zaretskii

 >>   > 1. It's trivial to move a minibuffer-only frame
 >>   > off screen (and bring it back on screen).
 >>
 >> Not in my experience.  Not even for arbitrary frames.
 >
 > I think it is, at least on MS Windows, and I think
 > on other OSes also.

It's up to the respective window manager to decide that.

 > Hm.  I've checked only with my setup.  Maybe
 > something else is going on there.
 >
 > (progn (make-frame-invisible
 >           (window-frame (minibuffer-window)))
 >         (pp-eval-expression
 >           (frame-parameter nil 'visibility) t))
 >
 > tells me `t', with my setup.  And the frame
 > stays visible.

The minibuffer frame does not _stay_ visible.  It becomes visible again
because it is supposed to display the result of 'pp-eval-expression' in
the minibuffer.

If you use the correct form - nil stands for the selected frame which is
not the minibuffer-only frame, 'pp-eval-expression' allows one argument
only -

(progn (make-frame-invisible
          (window-frame (minibuffer-window)))
        (pp-eval-expression
         (window-frame (minibuffer-window))))

it will tell you nil, as expected.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-18 23:14                                                                           ` Dmitry Gutov
@ 2020-05-19  8:41                                                                             ` martin rudalics
  2020-05-20  1:01                                                                               ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-19  8:41 UTC (permalink / raw)
  To: Dmitry Gutov, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

 > I finally understood what I was doing wrong: I tried to visit the file
 > and 'M-x eval-buffer' from an existing graphical frame. That got me
 > the error.

Right.  In a "normal" session you have to create a minibuffer-only frame
first and then delete the normal frame to get uniform behavior.  Emacs
does not offer a function to remove the minibuffer window from a normal
frame so this is the best you can get.

 > If I load it from init.el, the result is fairly functional (though
 > with a number of glitches),

Since I use it with my customizations only, such glitches are to be
expected.  And, as you know, mutter is not very child-frame friendly.

 > and it really does look like an
 > improvement over the current situation. Even if the main benefit is
 > simply locality: it displays the "minibuffer" at the bottom of the
 > current window, not frame.

You can put it anywhere on the parent frame via 'pop-up-mini-host'
and/or 'pop-up-mini-position'.  If something is lacking here, it can be
added easily.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-19  5:38                                 ` transient Drew Adams
@ 2020-05-19 14:00                                   ` Arthur Miller
  2020-05-20  3:14                                     ` transient Michael Heerdegen
  2020-05-19 22:04                                   ` transient Stefan Kangas
  1 sibling, 1 reply; 281+ messages in thread
From: Arthur Miller @ 2020-05-19 14:00 UTC (permalink / raw)
  To: Drew Adams; +Cc: Howard Melman, emacs-devel

Drew Adams <drew.adams@oracle.com> writes:

>> >>> I like it very much because it helps see the rationale behind
>> >>> keybinding. After a while you get to learn the bindings for the
>> >>> commands you use the most and you can easily explore
>> >>> new commands.
>> 
>> ... which-key let's me explore existing bindings with
>> no effort.  Type C-x r and wait a second and see all
>> the rectangle and register commands. It was great for
>> learning the M-s and M-g keymaps when they were added.
>> which-key has been very helpful for learning bindings...
>
> FWIW -
>
> Icicles key completion is similar, but there are
> notable differences:
>
> 1. You can use it on-demand (as well as just
>    automatically) - complete only when you want
>    to, and without a delay.
>
> 2. Because of that you can also use it at top
>    level, not just after hitting a prefix key.
>    Use it to see what key bindings are available
>    in the current context (e.g. active modes).
>
> 3. Completion candidates have 2 parts: key and
>    command name: `KEY  =  COMMAND'.  You can
>    match either or both.  Prefix keys have `...'
>    instead of `COMMAND: `PREFIX-KEY  =  ...'.
>
> 4. Choosing a candidate with a COMMAND invokes
>    it.  Choosing a prefix-key candidate changes
>    the set of candidates to its completions.
>    E.g., choosing `C-h  =  ...' shows candidates
>    such as `f  =  describe-function'.
>
> 5. You can filter the current matches, by typing
>    input that matches key or command names, or
>    both.  You can filter multiple times (multiple
>    patterns).  Remove your current pattern from
>    the minibuffer and type another one to see a
>    different set of matches at the same level
>    (same prefix key or top level).
>
> 6. When completing a prefix key, the first
>    candidate shown is `..', which you can choose
>    to go back up a level (completions above that
>    prefix key).  Then you can go down another
>    prefix key - explore the entire key-sequence
>    forest.
>
> 7. That forest includes menus, as prefix-key
>    candidates (`menu-bar  = ...').  So you can
>    explore menus in the same way. [*]
>
> 8. You can sort candidates in these ways:
>
>     * local bindings first, then non-local, each
>       group in alphabetic order by key name
>     * prefix keys first, then non-prefix, again,
>       in key-name alphabetic order
>     * alphabetic order by command name
>
>    You can cycle among those sort orders anytime,
>    using `C-,'.
>
> 9. Local bindings are highlighted differently
>    from non-local - two faces.  Menus get two
>    other faces (local, non-local).
>
> 10. You can show full help (`C-h f' help) for
>     any candidate, anytime, without ending
>     completion.  (Use `C-M-RET' on it.)
>
> 11. Being able to match minibuffer input against
>    key and command names means that, unlike the
>    approach of `which-key' and similar, when
>    completing a prefix key you don't just hit
>    keys that complete the key sequence, to
>    invoke its command.  A workaround for that is
>    to hit `M-q' and then hit a key, to insert
>    its name in the minibuffer and then choose it.
>    E.g., `M-q C-M-f' inserts the text `C-M-f' in
>    the minibuffer.
> _____
>
> [*] Exploring menu-bar menus this way is one
>     step (menu level) at a time, the same as
>     exploring other key sequences.  A better way
>     to explore menu-bar menus is to use library
>     La Carte.  Then you can match menu items or
>     submenus directly, at any level.  I.e., you
>     can type a single pattern that dives down
>     into the menu hierarchy - like file-name
>     completion.  (But you can also navigate
>     stepwise.)
I haven't used Icicles yet, but seen this list, maybe I
should give it a try and see if I can use it instead of which-key. Can
Icicles be used without any additional learning and as easy as
which-key? Which-key is kind-of "just works", one installs it and it does
what it does without additional effort on user side. Is "automatic"
feature of Icicles in same manner?

Regression, but I have to say, I am impressed Drew. With how much you
have written. I went yesterday through your changelog for Dired+. Just
reading the changelog and thinking though the extra features you have
there took quite some time I have to say. What spontaneously to look
usefull is marking/toggeling/untoggling files per region only. That
seems like a usefull feature. Maybe you should try to get that part into
standard Dired?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-17 19:11                     ` excalamus--- via Emacs development discussions.
@ 2020-05-19 14:14                       ` excalamus--- via Emacs development discussions.
       [not found]                         ` <d66793e5-07f9-4dd9-928d-e7e8c342b781@default>
  0 siblings, 1 reply; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-19 14:14 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Emacs Devel, Andreas Röhler, Stefan Kangas,
	Richard Stallman

Is this something I should continue investing time in?  

Before posting a revision, I've been awaiting feedback on:

* What *defines* an Emacs? Is it "the Emacs idea", as I've called it, that each key press is transparently associated with a function?

* What sets GNU Emacs apart, specifically, from other Emacs?

* Did I clarify the reasoning behind the sections that caused confusion?  I intend to revise those sections and want to be sure that their focus is correct and that it is the merely the wording, and not the purpose of the section, which needs revision.

First draft copied below for your convenience:

> Welcome to GNU Emacs!
>
> An Emacs, short for "Editor MACroS", is a kind of text editor built
> from the idea that each key calls a tiny program (or macro). This idea
> proves powerful in practice, enabling far more than simple insertion
> and deletion of characters.  With it, you can operate on words or
> lines, sentences or paragraphs, even whole pages.  You can navigate
> within or between documents, automate tasks, and control subprocesses;
> all with the press of a key!  GNU Emacs is the GNU project's
> incarnation of the Emacs idea.
>
> GNU Emacs is built for introspection and extensibility.
>
> "Introspection" means GNU Emacs has self-knowledge.  Every aspect of
> the system is documented and, because of the Emacs idea, that
> information is easy to access.  The documentation may be general, like
> this introduction.  It may be instructive, like the tutorials that
> are included.  The documentation even reaches down to the source code
> itself!  All of this is right at your fingertips.  See Help.
>
> "Extensibility" means behavior can be altered and improved.  Users can
> customize their environment, from keyboard shortcuts to color themes
> and most everything in-between.  See Customization.  The extensibility
> goes beyond simple customization: new commands can be created and
> applied in real-time.  New commands can be bundled in packages and
> shared with the diverse Emacs community. Most of the commands in Emacs
> are written in Lisp, with a few exceptions in C.  See Emacs Lisp
> Intro(eintr) if you want to learn Emacs Lisp programming.
>
> GNU Emacs is used by authors and researchers, as well as programmers.
> It has seen active development for more than 30 years; it is a
> heritage as much as a community project.  We love GNU Emacs because we
> feel that no other editing environment rewards sustained user
> investment quite like it.  We hope that will be your experience, too.





^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: transient
  2020-05-19  5:38                                 ` transient Drew Adams
  2020-05-19 14:00                                   ` transient Arthur Miller
@ 2020-05-19 22:04                                   ` Stefan Kangas
  2020-05-19 22:53                                     ` transient Drew Adams
  1 sibling, 1 reply; 281+ messages in thread
From: Stefan Kangas @ 2020-05-19 22:04 UTC (permalink / raw)
  To: Drew Adams, Howard Melman, emacs-devel

Drew Adams <drew.adams@oracle.com> writes:

> Icicles key completion is similar, but there are
> notable differences:
>
> 1. You can use it on-demand (as well as just
>    automatically) - complete only when you want
>    to, and without a delay.

What binding do you use here?  Won't it conflict with other keybindings?

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: transient
  2020-05-19 22:04                                   ` transient Stefan Kangas
@ 2020-05-19 22:53                                     ` Drew Adams
  0 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-19 22:53 UTC (permalink / raw)
  To: Stefan Kangas, Howard Melman, emacs-devel

> > Icicles key completion is similar, but there are
> > notable differences:
> >
> > 1. You can use it on-demand (as well as just
> >    automatically) - complete only when you want
> >    to, and without a delay.
> 
> What binding do you use here?  Won't it conflict with
> other keybindings?

Are you sure you really want to know? ;-)

tl;dr:

By default, the key (`S-TAB' by default) doesn't
get bound in any keymaps where it's already bound.

___

Option:

 `icicle-key-complete-keys' is a variable defined in `icicles-opt.el'.
 Its value is ([backtab])

 Documentation:
 Key sequences to use for `icicle-complete-keys'.
 A list of values that each has the same form as a key-sequence
 argument to `define-key'.  It is a list mainly in order to accommodate
 different keyboards - for example, `S-tab' and `S-iso-lefttab'.

(IOW the key to complete keys is `S-TAB' only by default.)
___

These options are also relevant here:

1.
 `icicle-key-complete-keys-for-minibuffer' is a variable defined in `icicles-opt.el'.
 Its value is ([M-backtab] [ESC backtab])

 Documentation:
 Key sequences to use for `icicle-complete-keys' in the minibuffer.
 A list of values that each has the same form as a key-sequence
 argument to `define-key'.

 Note: Some operating systems intercept `M-S-TAB' for their own use.
 For some versions of MS Windows, you can use
 (w32-register-hot-key [M-S-tab]) to allow Emacs to use `M-S-TAB'.

[The reason for this is that by default `S-TAB' is also used
in Icicles in the minibuffer completion maps, to complete
minibuffer input.  So by default, _key_ completion in the
minibuffer itself (yes, it's possible) uses `M-S-TAB'.]

2.
 `icicle-keymaps-for-key-completion' is a variable defined in `icicles-opt.el'.
 Its value is (...)

 Documentation:
 List of keymaps in which to bind `S-TAB' to `icicle-complete-keys'.
 List elements are symbols that are bound to keymaps.

 Each keymap should have at least one prefix key.  `S-TAB' is bound in
 each keymap, so that you can use it to complete the prefix keys.

 If one of the keymaps is not defined when Icicle mode is entered, then
 it is ignored.  If you later define it, then just exit and reenter
 Icicle mode, to bind `S-TAB' in the newly defined map.  For example,
 use `M-x icy-mode' twice after entering Calendar mode, to be able to
 complete `calendar-mode' prefix keys such as `A'.

 Do not add `global-map' or any keymaps, such as `ctl-x-map', that are
 accessible from the global keymap to the list - they are already
 treated, by default.

 Do not add any of the translation keymaps, `function-key-map',
 `key-translation-map', or `iso-transl-ctl-x-8-map' to the list - that
 will not work.

[These are keymaps inaccessible from `global-map',
as maps accessible from it are already included.]

3.
 `icicle-complete-key-anyway-flag' is a variable defined in `icicles-opt.el'.
 Its value is nil

 Documentation:
 Non-nil means bind `S-TAB' for key completion even if already
 bound.  If nil, then each of the keys in `icicle-key-complete-keys' is
 bound to `icicle-complete-keys' in each keymap of
 `icicle-keymaps-for-key-completion' only if `S-TAB' is not already
 bound in the keymap.

 Note: the keys in `icicle-key-complete-keys' are always bound to
 `icicle-complete-keys' in `icicle-mode-map'.  This option affects only
 the binding of those keys in `icicle-keymaps-for-key-completion'.

[Besides the keymaps defined by that option, keymaps
reachable from `global-map' with this function get the
`S-TAB' binding, IF either they don't already have
`S-TAB' bound OR option `icicle-complete-key-anyway-flag'
is non-nil.
This is the reason behind the "Do not add `global-map'..."
part of the `icicle-keymaps-for-key-completion' doc string.]

(defun icicle-bind-key-completion-keys-in-keymaps-from (map &optional keys)
  "Bind keys in `icicle-key-complete-keys' to `icicle-complete-keys'.
Each key in `icicle-complete-keys' (or optional arg KEYS, if non-nil)
is bound in all keymaps accessible from keymap MAP."
  (dolist (key+map  (accessible-keymaps map))
    (let ((map  (cdr key+map)))
      (when (keymapp map)
        (dolist (key  (or keys  icicle-key-complete-keys))
          (when (or icicle-complete-key-anyway-flag
                    (not (lookup-key map key)))
            (condition-case nil
               (define-key map key 'icicle-complete-keys)
             (error nil))))))))

The same kind of treatment happens in reverse when
you turn `icy-mode' off: key-completion keys are
unbound.  (Yes, it can't be perfect.  For example,
the set of keymaps accessible from the then current
global map might be different, or their keys might
be different.)

See this part of the doc:

https://www.emacswiki.org/emacs/Icicles_-_Key_Completion#KeymapsInaccessibleFromGlobalMap

Search that same page for "option" to see the above
options and others having to do with key completion
described in context.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-19  8:40                                                                     ` martin rudalics
@ 2020-05-20  0:40                                                                       ` Dmitry Gutov
  2020-05-20  9:04                                                                         ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20  0:40 UTC (permalink / raw)
  To: martin rudalics, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

On 19.05.2020 11:40, martin rudalics wrote:
>  > Now that we have set-message-function and clear-message-function, 
> couldn't you move message display somewhere else?
> 
> I tried that now but it doesn't work.  Probably because
> 'set-message-function' works for non-logged messages only.

Is that right? I don't see this distinction in its documentation.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-19  8:41                                                                             ` martin rudalics
@ 2020-05-20  1:01                                                                               ` Dmitry Gutov
  2020-05-20  9:06                                                                                 ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20  1:01 UTC (permalink / raw)
  To: martin rudalics, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

On 19.05.2020 11:41, martin rudalics wrote:
>  > I finally understood what I was doing wrong: I tried to visit the file
>  > and 'M-x eval-buffer' from an existing graphical frame. That got me
>  > the error.
> 
> Right.  In a "normal" session you have to create a minibuffer-only frame
> first and then delete the normal frame to get uniform behavior.  Emacs
> does not offer a function to remove the minibuffer window from a normal
> frame so this is the best you can get.

Any chance to change the latter in Emacs 28? Is that difficult?

It would improve the starting experience quite a bit.

>  > If I load it from init.el, the result is fairly functional (though
>  > with a number of glitches),
> 
> Since I use it with my customizations only, such glitches are to be
> expected.  And, as you know, mutter is not very child-frame friendly.

Thanks for the reminder: with the appropriate value of 
x-gtk-resize-child-frames, the behavior looks more sensible now.

The main remaining annoyance is the blink when the child frame is 
resized/repositioned.

>  > and it really does look like an
>  > improvement over the current situation. Even if the main benefit is
>  > simply locality: it displays the "minibuffer" at the bottom of the
>  > current window, not frame.
> 
> You can put it anywhere on the parent frame via 'pop-up-mini-host'
> and/or 'pop-up-mini-position'.  If something is lacking here, it can be
> added easily.

So how do you feel about a package in GNU ELPA?

If we can move the settings into the definition of pop-up-mini-mode, it 
should be quite usable. And also do something with the scenario where 
someone installs it, turns on the mode, and simply stares at the error.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: transient
  2020-05-19 14:00                                   ` transient Arthur Miller
@ 2020-05-20  3:14                                     ` Michael Heerdegen
  0 siblings, 0 replies; 281+ messages in thread
From: Michael Heerdegen @ 2020-05-20  3:14 UTC (permalink / raw)
  To: emacs-devel

Arthur Miller <arthur.miller@live.com> writes:

> usefull is marking/toggeling/untoggling files per region only. That
> seems like a usefull feature. Maybe you should try to get that part into
> standard Dired?

After Bug#39902 had been treated this has improved in vanilla Emacs.
Toggling was not changed, however.

Michael.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20  0:40                                                                       ` Dmitry Gutov
@ 2020-05-20  9:04                                                                         ` martin rudalics
  2020-05-20 13:28                                                                           ` Dmitry Gutov
  2020-05-20 14:45                                                                           ` Eli Zaretskii
  0 siblings, 2 replies; 281+ messages in thread
From: martin rudalics @ 2020-05-20  9:04 UTC (permalink / raw)
  To: Dmitry Gutov, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii

 >> I tried that now but it doesn't work.  Probably because
 >> 'set-message-function' works for non-logged messages only.
 >
 > Is that right? I don't see this distinction in its documentation.

set_message in xdisp.c (which here is the only function that handles
Vset_message_function) is called by message3_nolog but not by message3.
I have no idea whether this is by design.  Maybe I'm missing something.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20  1:01                                                                               ` Dmitry Gutov
@ 2020-05-20  9:06                                                                                 ` martin rudalics
  2020-05-21  0:15                                                                                   ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-20  9:06 UTC (permalink / raw)
  To: Dmitry Gutov, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

 >> Right.  In a "normal" session you have to create a minibuffer-only frame
 >> first and then delete the normal frame to get uniform behavior.  Emacs
 >> does not offer a function to remove the minibuffer window from a normal
 >> frame so this is the best you can get.
 >
 > Any chance to change the latter in Emacs 28? Is that difficult?

It's hairy and that's why people never tried to change the ritual of
setting up an initial frame with a minibuffer window.  Likely to make
sure that if things go wrong anywhere, there's always at least one
minibuffer window you can act upon or that displays vital information
about what went wrong during setup.

Note that producing the minibuffer-less + minibuffer-only setup is
accomplished by 'frame-notice-user-settings' which deletes the initial
minibuffer-equipped frame in a hair-raising fashion in order to make
sure that at least one minibuffer window is available at any time.

 > It would improve the starting experience quite a bit.

The startup experience of general minibuffer-only frame setups or that
of the setup with a minibuffer-only child frame?  I think these are today
also affected by other parameters like, for example, whether you put
these specifications into an early init file or the normal one.

 > The main remaining annoyance is the blink when the child frame is resized/repositioned.

You would have to tell me more about that blink.  If it's due to the
setting of 'x-gtk-resize-child-frames', there's nothing I can do about
it.  If it's due to the delay implied by 'pop-up-mini-hide-if-empty',
try to experiment with that.

 > So how do you feel about a package in GNU ELPA?

Not really enthusiastic.  The historical constraints of how to set up
and use the minibuffer window are too restrictive IMHO so what you see
here is just a workaround.  Maybe things will change in a couple of
years.

 > If we can move the settings into the definition of pop-up-mini-mode,
 > it should be quite usable. And also do something with the scenario
 > where someone installs it, turns on the mode, and simply stares at the
 > error.

What's so bad about that error?  It simply tells what is missing.  If
you provide such a frame, things should work, even in parallel with the
already existing minibuffer window.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20  9:04                                                                         ` martin rudalics
@ 2020-05-20 13:28                                                                           ` Dmitry Gutov
  2020-05-20 14:45                                                                           ` Eli Zaretskii
  1 sibling, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20 13:28 UTC (permalink / raw)
  To: martin rudalics, Drew Adams, Arthur Miller, Stefan Monnier
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Kangas, Eli Zaretskii, Juri Linkov

On 20.05.2020 12:04, martin rudalics wrote:
>  >> I tried that now but it doesn't work.  Probably because
>  >> 'set-message-function' works for non-logged messages only.
>  >
>  > Is that right? I don't see this distinction in its documentation.
> 
> set_message in xdisp.c (which here is the only function that handles
> Vset_message_function) is called by message3_nolog but not by message3.
> I have no idea whether this is by design.  Maybe I'm missing something.

Maybe Juri could elaborate?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20  9:04                                                                         ` martin rudalics
  2020-05-20 13:28                                                                           ` Dmitry Gutov
@ 2020-05-20 14:45                                                                           ` Eli Zaretskii
  2020-05-20 14:56                                                                             ` Dmitry Gutov
  1 sibling, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-20 14:45 UTC (permalink / raw)
  To: martin rudalics
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, dgutov,
	drew.adams, stefankangas

> Cc: Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>,
>  Richard Stallman <rms@gnu.org>, Andreas Röhler
>  <andreas.roehler@online.de>, Emacs developers <emacs-devel@gnu.org>,
>  Karl Fogel <kfogel@red-bean.com>, homeros.misasa@gmail.com,
>  tkk@misasa.okayama-u.ac.jp, Sergey Organov <sorganov@gmail.com>,
>  Stefan Kangas <stefankangas@gmail.com>, Eli Zaretskii <eliz@gnu.org>
> From: martin rudalics <rudalics@gmx.at>
> Date: Wed, 20 May 2020 11:04:41 +0200
> 
>  >> I tried that now but it doesn't work.  Probably because
>  >> 'set-message-function' works for non-logged messages only.
>  >
>  > Is that right? I don't see this distinction in its documentation.
> 
> set_message in xdisp.c (which here is the only function that handles
> Vset_message_function) is called by message3_nolog but not by message3.
> I have no idea whether this is by design.

It's by design: that facility is supposed to control only how the
messages are _displayed_; the logging mechanism is unaffected.  the
doc string says that much:

  If non-nil, function to handle display of echo-area messages.

Note the "display" part.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 14:45                                                                           ` Eli Zaretskii
@ 2020-05-20 14:56                                                                             ` Dmitry Gutov
  2020-05-20 16:12                                                                               ` Eli Zaretskii
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20 14:56 UTC (permalink / raw)
  To: Eli Zaretskii, martin rudalics
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, drew.adams,
	stefankangas

On 20.05.2020 17:45, Eli Zaretskii wrote:
> It's by design: that facility is supposed to control only how the
> messages are_displayed_; the logging mechanism is unaffected.  the
> doc string says that much:
> 
>    If non-nil, function to handle display of echo-area messages.
> 
> Note the "display" part.

But it should still affect how the _logged_ messages are displayed, right?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 14:56                                                                             ` Dmitry Gutov
@ 2020-05-20 16:12                                                                               ` Eli Zaretskii
  2020-05-20 17:45                                                                                 ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-20 16:12 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

> Cc: drew.adams@oracle.com, arthur.miller@live.com, monnier@iro.umontreal.ca,
>  jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp, sorganov@gmail.com,
>  stefankangas@gmail.com
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Wed, 20 May 2020 17:56:44 +0300
> 
> >    If non-nil, function to handle display of echo-area messages.
> > 
> > Note the "display" part.
> 
> But it should still affect how the _logged_ messages are displayed, right?

I don't think I understand the question.  A message is first logged
(unless logging is disabled) and then displayed.  set-message-function
is called during the latter part.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 16:12                                                                               ` Eli Zaretskii
@ 2020-05-20 17:45                                                                                 ` martin rudalics
  2020-05-20 18:09                                                                                   ` Eli Zaretskii
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-20 17:45 UTC (permalink / raw)
  To: Eli Zaretskii, Dmitry Gutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, drew.adams,
	stefankangas

 > I don't think I understand the question.  A message is first logged
 > (unless logging is disabled) and then displayed.  set-message-function
 > is called during the latter part.

Right.  Then I'm lost.  With either

(defun my-fun (string) "")

or

(defun my-fun (string) t)

and

(setq set-message-function 'my-fun)

(message "?") displays "?".  What am I doing wrong?

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 17:45                                                                                 ` martin rudalics
@ 2020-05-20 18:09                                                                                   ` Eli Zaretskii
  2020-05-20 18:16                                                                                     ` Eli Zaretskii
  2020-05-20 18:24                                                                                     ` Dmitry Gutov
  0 siblings, 2 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-20 18:09 UTC (permalink / raw)
  To: martin rudalics
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, dgutov,
	drew.adams, stefankangas

> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp, sorganov@gmail.com,
>  monnier@iro.umontreal.ca, arthur.miller@live.com, drew.adams@oracle.com,
>  stefankangas@gmail.com
> From: martin rudalics <rudalics@gmx.at>
> Date: Wed, 20 May 2020 19:45:38 +0200
> 
> Right.  Then I'm lost.  With either
> 
> (defun my-fun (string) "")
> 
> or
> 
> (defun my-fun (string) t)
> 
> and
> 
> (setq set-message-function 'my-fun)
> 
> (message "?") displays "?".  What am I doing wrong?

You are evaluation the call to 'message', so the return value is
printed in the echo-area by the evaluation.  The telltale quotes are
the indication of that.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 18:09                                                                                   ` Eli Zaretskii
@ 2020-05-20 18:16                                                                                     ` Eli Zaretskii
  2020-05-20 18:24                                                                                     ` Dmitry Gutov
  1 sibling, 0 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-20 18:16 UTC (permalink / raw)
  To: rudalics
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, dgutov,
	drew.adams, stefankangas

> Date: Wed, 20 May 2020 21:09:19 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp, sorganov@gmail.com,
>  monnier@iro.umontreal.ca, arthur.miller@live.com, dgutov@yandex.ru,
>  drew.adams@oracle.com, stefankangas@gmail.com
> 
> You are evaluation the call to 'message', so the return value is
          ^^^^^^^^^^
"evaluating", sorry



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 18:09                                                                                   ` Eli Zaretskii
  2020-05-20 18:16                                                                                     ` Eli Zaretskii
@ 2020-05-20 18:24                                                                                     ` Dmitry Gutov
  2020-05-20 18:33                                                                                       ` Eli Zaretskii
  1 sibling, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20 18:24 UTC (permalink / raw)
  To: Eli Zaretskii, martin rudalics
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, drew.adams,
	stefankangas

On 20.05.2020 21:09, Eli Zaretskii wrote:
> You are evaluation the call to 'message', so the return value is
> printed in the echo-area by the evaluation.  The telltale quotes are
> the indication of that.

Shouldn't it just use my-fun for printing?

Even the results of evaluations.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 18:24                                                                                     ` Dmitry Gutov
@ 2020-05-20 18:33                                                                                       ` Eli Zaretskii
  2020-05-20 18:56                                                                                         ` Eli Zaretskii
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-20 18:33 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp, sorganov@gmail.com,
>  monnier@iro.umontreal.ca, arthur.miller@live.com, drew.adams@oracle.com,
>  stefankangas@gmail.com
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Wed, 20 May 2020 21:24:06 +0300
> 
> On 20.05.2020 21:09, Eli Zaretskii wrote:
> > You are evaluation the call to 'message', so the return value is
> > printed in the echo-area by the evaluation.  The telltale quotes are
> > the indication of that.
> 
> Shouldn't it just use my-fun for printing?
> 
> Even the results of evaluations.

Why?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 18:33                                                                                       ` Eli Zaretskii
@ 2020-05-20 18:56                                                                                         ` Eli Zaretskii
  2020-05-20 19:22                                                                                           ` Dmitry Gutov
  2020-05-20 23:07                                                                                           ` martin rudalics
  0 siblings, 2 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-20 18:56 UTC (permalink / raw)
  To: dgutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

> Date: Wed, 20 May 2020 21:33:27 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  rudalics@gmx.at, homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp,
>  sorganov@gmail.com, monnier@iro.umontreal.ca, arthur.miller@live.com,
>  drew.adams@oracle.com, stefankangas@gmail.com
> 
> > Shouldn't it just use my-fun for printing?
> > 
> > Even the results of evaluations.
> 
> Why?

To clarify: set-message-function is not supposed to affect all the
ways we have to show something in the echo area, it is only supposed
to affect calls to 'message', because that's how messages to the user
are printed.

eval-last-sexp uses prin1 to display the result, so it is not
affected, as intended.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 18:56                                                                                         ` Eli Zaretskii
@ 2020-05-20 19:22                                                                                           ` Dmitry Gutov
  2020-05-20 19:53                                                                                             ` tomas
  2020-05-21  2:28                                                                                             ` Eli Zaretskii
  2020-05-20 23:07                                                                                           ` martin rudalics
  1 sibling, 2 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20 19:22 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

On 20.05.2020 21:56, Eli Zaretskii wrote:
> To clarify: set-message-function is not supposed to affect all the
> ways we have to show something in the echo area, it is only supposed
> to affect calls to 'message', because that's how messages to the user
> are printed.
> 
> eval-last-sexp uses prin1 to display the result, so it is not
> affected, as intended.

But aren't all echo area displays targeted at the user anyway?

I'm not saying the current behavior is necessarily "broken", but perhaps 
we could enhance it further.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 19:22                                                                                           ` Dmitry Gutov
@ 2020-05-20 19:53                                                                                             ` tomas
  2020-05-20 21:22                                                                                               ` Dmitry Gutov
  2020-05-21  2:28                                                                                             ` Eli Zaretskii
  1 sibling, 1 reply; 281+ messages in thread
From: tomas @ 2020-05-20 19:53 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1134 bytes --]

On Wed, May 20, 2020 at 10:22:53PM +0300, Dmitry Gutov wrote:
> On 20.05.2020 21:56, Eli Zaretskii wrote:
> >To clarify: set-message-function is not supposed to affect all the
> >ways we have to show something in the echo area, it is only supposed
> >to affect calls to 'message', because that's how messages to the user
> >are printed.
> >
> >eval-last-sexp uses prin1 to display the result, so it is not
> >affected, as intended.
> 
> But aren't all echo area displays targeted at the user anyway?
> 
> I'm not saying the current behavior is necessarily "broken", but
> perhaps we could enhance it further.

Sorry, I don't quite understand. You are proposing that message-fun
should not only take over messages proper but also the repl's print?

Because (message "foo") displays foo twice (well once it's foo, as
a side effect, then it's "foo", as the repl's "print" part, as the
result of the S-expression's evaluation.

FWIW, I'd expect setting set-message-function (strange name for a
var, BTW) to just take over the side effect, not the repl's "print".

But that's just one data point.

Cheers
-- t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 19:53                                                                                             ` tomas
@ 2020-05-20 21:22                                                                                               ` Dmitry Gutov
  2020-05-21  7:43                                                                                                 ` tomas
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20 21:22 UTC (permalink / raw)
  To: tomas, emacs-devel

On 20.05.2020 22:53, tomas@tuxteam.de wrote:
> Sorry, I don't quite understand. You are proposing that message-fun
> should not only take over messages proper but also the repl's print?

Yes, why not?

> Because (message "foo") displays foo twice (well once it's foo, as
> a side effect, then it's "foo", as the repl's "print" part, as the
> result of the S-expression's evaluation.

When it is evaluated in the REPL, yes. Because you're seeing both the 
result of 'message' itself, as well as the result of eval-expression.

> FWIW, I'd expect setting set-message-function (strange name for a
> var, BTW) to just take over the side effect, not the repl's "print".

Do you have an example of set-message-function where it would be a bad idea?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  7:09                         ` GNU Emacs raison d'etre Drew Adams
@ 2020-05-20 21:36                           ` Karl Fogel
  2020-05-20 21:57                             ` Drew Adams
  0 siblings, 1 reply; 281+ messages in thread
From: Karl Fogel @ 2020-05-20 21:36 UTC (permalink / raw)
  To: Drew Adams; +Cc: emacs-devel, Andreas Röhler, Dmitry Gutov

On 17 May 2020, Drew Adams wrote:
>> > I believe we'll make better decisions if we keep in
>> > mind that "friendly to newcomers" is not, in itself,
>> > the primary goal.
>> 
>> It's not like extreme user-friendliness was ever a
>> guiding principle here. :-)
>
>I disagree.  There is a difference between "extreme
>user-friendliness" - which I think is, and should be,
>a guiding principle here, and prioritizing "friendly
>to newcomers".

While "friendly to newcomers" means something on its own, "user-friendliness" only means something after one has characterized the users in question.  That's the main point I've been trying to make: that there is no such thing as a generic user, so we have to make decisions about which kinds of users to optimize for.

In most UI/UX conversations (not necessarily here, but on the Net in general), most of the time people unconsciously say "user-friendly" as a synonym for "easy for newcomers to pick up quickly" -- without realizing that it also implies "tends not to reward sustained investment", since these two qualities inevitably trade off.

So if we characterize our users as "those who see, or who have the potential to see, the value of making a sustained investment in their text manipulation environment", *then* yes, by all means Emacs should be user-friendly.  But if we're saying "user-friendly" in the colloquial sense that most people use the term in, then no, I think it would be a mistake for Emacs to aim for that.

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15 22:41                           ` Drew Adams
@ 2020-05-20 21:47                             ` Karl Fogel
  2020-05-20 22:35                               ` Drew Adams
  0 siblings, 1 reply; 281+ messages in thread
From: Karl Fogel @ 2020-05-20 21:47 UTC (permalink / raw)
  To: Drew Adams; +Cc: dgutov, andreas.roehler, Richard Stallman, emacs-devel

On 15 May 2020, Drew Adams wrote:
>> A perfect analogy is manual ("stick") transmission cars versus
>> automatic transmission cars.  A stick car is harder for a newcomer to
>> drive, but gives an experienced user more control than she would
>> otherwise have.  An automatic transmission car is easier for a
>> newcomer, but frustrating for the expert because it limits (a bit) what
>> she can do.
>> 
>> Does this mean that no one learns to drive stick?  Of course not.  Some
>> people do so by choice -- they make a conscious investment, made with
>> the understanding that driving will be *harder* for a while before
>> there is any discernable payoff.  But they are willing to make that
>> choice because others told them how it would be worth it.  It's not
>> something the user would find out from reading the manual for the car,
>> though.
>
>The analogy is pretty good (not perfect).  The last
>sentence doesn't correspond to Emacs, though, I think.
>
>You _can_ learn Emacs by reading its manuals and its
>help (`C-h').  Asking Emacs is a good way to learn.
>Maybe not as good as the expert-over-your-shoulder
>method you cited, but pretty good.

Ah, you seem to think I was saying "no one learns how to drive stick by reading the manual".

But that's not what I was saying.  I was saying that you don't find out from the manual *why* driving stick might be worth it for you -- why it might be worth the investment.

Even if the manual were to talk about that, the manual is still not where most people would actually *learn* it from.  They would learn it from talking to someone who already drives stick, or from reading an article that discusses the benefits of driving stick and how it takes some investment to do so, or some other source like that.

Learning *the fact that Emacs expects & rewards sustained investment* is different from *learning Emacs*.  Learning that you need to make an investment is different from making the investment.  I was talking about the former, so I think the analogy holds.

Now, the Emacs manual (and web site) can & should talk about how Emacs requires some investment, and about how it then rewards that investment.  But we shouldn't expect those places to be where most people learn this fact.  It's a message that has to be spread via other channels.

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-20 21:36                           ` Karl Fogel
@ 2020-05-20 21:57                             ` Drew Adams
  0 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-20 21:57 UTC (permalink / raw)
  To: Karl Fogel; +Cc: emacs-devel, Andreas Röhler, Dmitry Gutov

> >> It's not like extreme user-friendliness was ever a
> >> guiding principle here. :-)
> >
> >I disagree.  There is a difference between "extreme
> >user-friendliness" - which I think is, and should be,
> >a guiding principle here, and prioritizing "friendly
> >to newcomers".
> 
> While "friendly to newcomers" means something on its own, "user-
> friendliness" only means something after one has characterized the
> users in question.  That's the main point I've been trying to make:
> that there is no such thing as a generic user, so we have to make
> decisions about which kinds of users to optimize for.
> 
> In most UI/UX conversations (not necessarily here, but on the Net in
> general), most of the time people unconsciously say "user-friendly" as
> a synonym for "easy for newcomers to pick up quickly" -- without
> realizing that it also implies "tends not to reward sustained
> investment", since these two qualities inevitably trade off.
> 
> So if we characterize our users as "those who see, or who have the
> potential to see, the value of making a sustained investment in their
> text manipulation environment", *then* yes, by all means Emacs should
> be user-friendly.  But if we're saying "user-friendly" in the
> colloquial sense that most people use the term in, then no, I think it
> would be a mistake for Emacs to aim for that.

I agreed with that point when you made it earlier.

My point was that Emacs does have the quoted
"extreme user-friendliness" as a guiding principle,
even if it does not treat the quoted "friendly to
newcomers" as the highest priority.

And the difference involves just what you said:
Emacs users are not only, or even particularly,
newcomers.  Emacs tries hard to be friendly to its
users, and you've described its main users well.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-17  1:28                       ` Dmitry Gutov
                                           ` (3 preceding siblings ...)
  2020-05-17  7:09                         ` GNU Emacs raison d'etre Drew Adams
@ 2020-05-20 22:00                         ` Karl Fogel
  2020-05-20 22:07                           ` Dmitry Gutov
  4 siblings, 1 reply; 281+ messages in thread
From: Karl Fogel @ 2020-05-20 22:00 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: Andreas Röhler, emacs-devel

On 17 May 2020, Dmitry Gutov wrote:
>>> Are you sure that this particular aspect is _bad_ for new users, though?
>> Yes.  I am sure.
>> I've taught Emacs to a lot of people -- scores of them, at least; I
>> don't keep track, but the sample size is large enough to be beyond
>> merely anecdotal at this point.  I've watched newcomers run into the
>> same obstacles over and over, and this particular obstacle is always
>> one of the first they encounter.
>
>Okay, but is it still a problem after they've tried Emacs for a day,
>for instance? For a week?
>
>These periods of time would of course suggest Emacs is not ideal for
>total newbies, but they're not the kind of "sustained investment" you 
>described either.

The nature and variety of a newcomer's problems with Emacs depends a lot on how much coaching the newcomer is getting from someone with more experience.

But even with good coaching, it takes a long time for Emacs to become "worth it", by which I mean "better for that user than the J. Random Popular Text Editor they might have gone with instead".

>>> This part is expected of a professional tool, however, and the
>>> experience for newcomers could be improved without taking away much
>>> from the "oldies". See the 'transient' package, for example,
>>> recently proposed for inclusion on emacs-devel.
>> I don't have any experience using 'transient', so I'd need more
>> explanation from you to understand what you meant by that part.  (I
>> tried to understand 'transient' from reading [2] and [3], but
>> unfortunately -- and somewhat surprisingly! -- the documentation at
>> those pages does not give a single concrete example of transient's
>> use.)
>
>You press 'C-x', wait a while - and it pops up a window with the
>descriptions of all commands whose bindings start with 'C-x'. Same for 
>all other "incomplete" key sequences. Looks pretty handy for beginners.

Thanks for the explanation.  I haven't used it myself nor seen anyone else use it, so I don't feel confident in saying one way or the other whether it would help beginners.  Next time I'm teaching someone, maybe I should try it, though.

>> However, your assertion that "the experience for newcomers could be
>> improved without taking away much from the 'oldies'" is exactly what
>> I'm arguing is not true.  I actually think we can't (much) improve
>> this particular part of the experience for newcomers without taking
>> away one of the things about Emacs that most rewards investment.
>> The newcomers who eventually *do* become experts do so in part by
>> first stumbling across new commands accidentally (in that crowded
>> keybinding space) and then using help tools like `C-h l' to see what
>> they just did.  So one of the things we should prioritize is
>> teaching newcomers how important those help facilities are and how
>> to use them in a smart way.  I'm specifically saying that this is
>> *more important for Emacs than it is for other editors*.  Sure,
>> users of (say) the Atom editor should eventually know how to use the
>> built-in help there too.  But it's a difference in prioritization:
>> for Emacs users, using that built-in help is more important than it
>> would be in other editors, and the methods and circumstances of
>> using the help are different too.  So we should incorporate that
>> fact into how we present Emacs to new users.
>
>Yes, ok. Maybe this one is harder to improve that some others.

Thanks -- glad that helped.

>>> Some of them, probably. At this point, I think, there are still a lot
>>> of decisions that would bring us closer to newcomer-friendliness while
>>> keeping no worse high-investment compatibility.
>> That could be true, though I'm a bit more skeptical than you are.
>> In any case, it does not make the principle inoperative; it is
>> consistent with the principle.
>> I believe we'll make better decisions if we keep in mind that
>> "friendly to newcomers" is not, in itself, the primary goal.
>
>It's not like extreme user-friendliness was ever a guiding principle
>here. :-)

In another message I sent a moment ago, I replied to the above (via someone else who was quoting you), so I'll repeat that part of my response here:

  > While "friendly to newcomers" means something on its own,
  > "user-friendliness" only means something after one has characterized
  > the users in question.  That's the main point I've been trying to
  > make: that there is no such thing as a generic user, so we have to
  > make decisions about which kinds of users to optimize for.
  >
  > In most UI/UX conversations (not necessarily here, but on the Net in
  > general), most of the time people unconsciously say "user-friendly"
  > as a synonym for "easy for newcomers to pick up quickly" -- without
  > realizing that it also implies "tends not to reward sustained
  > investment", since these two qualities inevitably trade off.
  > 
  > So if we characterize our users as "those who see, or who have the
  > potential to see, the value of making a sustained investment in
  > their text manipulation environment", *then* yes, by all means Emacs
  > should be user-friendly.  But if we're saying "user-friendly" in the
  > colloquial sense that most people use the term in, then no, I think
  > it would be a mistake for Emacs to aim for that.

I wish that the first thing they would teach in UX school is to stop using the term "user-friendly" :-), much as medical professionals are (I'm told) taught to stop saying "throw it away" because there's no such thing as "away" in a hospital -- each kind of medical waste needs to be disposed of by a specific & suitable method.

>In this we're, again, similar to other professional software.

Well, I'm not sure exactly what "professional software" means in this context, but if it means "expects the user to make sustained investment", then I agree.

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 22:00                         ` Karl Fogel
@ 2020-05-20 22:07                           ` Dmitry Gutov
  2020-05-21  8:03                             ` tomas
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-20 22:07 UTC (permalink / raw)
  To: Karl Fogel; +Cc: Andreas Röhler, emacs-devel

On 21.05.2020 01:00, Karl Fogel wrote:
>> In this we're, again, similar to other professional software.
> Well, I'm not sure exactly what "professional software" means in this context, but if it means "expects the user to make sustained investment", then I agree.

I don't know, Blender? Which has reportedly made some strides in 
usability lately. Other 3D editors and associated programs.

Advanced audio/video creativity software.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-20 21:47                             ` Karl Fogel
@ 2020-05-20 22:35                               ` Drew Adams
  2020-05-21  0:35                                 ` Karl Fogel
  0 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-20 22:35 UTC (permalink / raw)
  To: Karl Fogel; +Cc: dgutov, andreas.roehler, Richard Stallman, emacs-devel

> >> Does this mean that no one learns to drive stick?  Of course not.
> >> Some people do so by choice -- they make a conscious investment,
> >> made with the understanding that driving will be *harder* for a
> >> while before there is any discernable payoff.  But they are
> >> willing to make that choice because others told them how it would
> >> be worth it.  It's not something the user would find out from
> >> reading the manual for the car, though.
> >
> >The analogy is pretty good (not perfect).  The last
> >sentence doesn't correspond to Emacs, though, I think.
> >
> >You _can_ learn Emacs by reading its manuals and its
> >help (`C-h').  Asking Emacs is a good way to learn.
> >Maybe not as good as the expert-over-your-shoulder
> >method you cited, but pretty good.
> 
> Ah, you seem to think I was saying "no one learns how to drive stick by
> reading the manual".
> 
> But that's not what I was saying.  I was saying that you don't find out
> from the manual *why* driving stick might be worth it for you -- why it
> might be worth the investment.

Yes, I see now that you more likely meant that by "it".
(It could have meant learning stick or learning that
driving stick will ultimately pay off.)

I'd say that many who end up being Emacs users (in the
sense you intend) were _not_ convinced by others ahead
of time as you suggest - though many others were, no
doubt.

And I'd say that some of those who weren't thus
convinced have likely gotten their "Emacs user" bona
fides at least partly thanks to the manuals and the
help UI ("ask Emacs").

IOW, I agree with your characterization of most Emacs
users (i.e., other than any drive-by tasters who don't
stay).  And I agree with your claim that having a
mentor over the shoulder can be very helpful.  And I
agree with your guess that many who do stay become
convinced to try it and stick with it because of a
payoff promised from outside Emacs itself (manuals).
I disagree, if you also claim that _only_ those with
mentors, or those convinced by others to stick it out,
end up as users.

The point that users who stick around and really use
Emacs are the prime target of its "user friendliness"
is one I agree with.  (Not the only target, but the
main one.)  And the things you say help create Emacs
users do in fact help, and they can even sometimes be
determinant.  But it's not the case, IMO, that those
things are required, to become an Emacs user (again,
in your sense).



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 18:56                                                                                         ` Eli Zaretskii
  2020-05-20 19:22                                                                                           ` Dmitry Gutov
@ 2020-05-20 23:07                                                                                           ` martin rudalics
  2020-05-21 13:11                                                                                             ` Eli Zaretskii
  1 sibling, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-20 23:07 UTC (permalink / raw)
  To: Eli Zaretskii, dgutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, drew.adams,
	stefankangas

 > To clarify: set-message-function is not supposed to affect all the
 > ways we have to show something in the echo area, it is only supposed
 > to affect calls to 'message', because that's how messages to the user
 > are printed.
 >
 > eval-last-sexp uses prin1 to display the result, so it is not
 > affected, as intended.

OK.  Which means that I should finally stop interpreting whatever I see
and just post my observation: When with emacs -Q I evaluate either

(defun my-fun (string) "")

or

(defun my-fun (string) t)

and then

(setq set-message-function 'my-fun)

and repeatedly press the <up> key, the minibuffer tells me

Beginning of buffer

If this is the intended behavior, then this is simply to inform Dmitry
that 'set-message-function' does not provide any help to fix my problem
with suppressing a message I never want to see.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20  9:06                                                                                 ` martin rudalics
@ 2020-05-21  0:15                                                                                   ` Dmitry Gutov
  2020-05-21  9:07                                                                                     ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-21  0:15 UTC (permalink / raw)
  To: martin rudalics, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

On 20.05.2020 12:06, martin rudalics wrote:
>  >> Right.  In a "normal" session you have to create a minibuffer-only 
> frame
>  >> first and then delete the normal frame to get uniform behavior.  Emacs
>  >> does not offer a function to remove the minibuffer window from a normal
>  >> frame so this is the best you can get.
>  >
>  > Any chance to change the latter in Emacs 28? Is that difficult?
> 
> It's hairy and that's why people never tried to change the ritual of
> setting up an initial frame with a minibuffer window.  Likely to make
> sure that if things go wrong anywhere, there's always at least one
> minibuffer window you can act upon or that displays vital information
> about what went wrong during setup.

I get the idea, but Emacs is not a whole computer, to try to keep 
running at all costs. The config can be fixed, and Emacs can usually be 
restarted. So whatever the original reasons are, a user option could 
still be doable.

> Note that producing the minibuffer-less + minibuffer-only setup is
> accomplished by 'frame-notice-user-settings' which deletes the initial
> minibuffer-equipped frame in a hair-raising fashion in order to make
> sure that at least one minibuffer window is available at any time.

I've also noticed that initial blink during startup, but didn't know 
what to attribute it to. Would be great to be able to avoid it.

>  > It would improve the starting experience quite a bit.
> 
> The startup experience of general minibuffer-only frame setups or that
> of the setup with a minibuffer-only child frame?  I think these are today
> also affected by other parameters like, for example, whether you put
> these specifications into an early init file or the normal one.

The startup experience of pop-up-mini-mode. I can imagine two main 
scenarios:

- The user installs the package and turns the mode one. If we can't 
disable the minibuffer, maybe just enable the rest of the functionality, 
and describe minibuffer-disabling-on-init functionality separately? It 
could even just be a line we'd tell the users to put in their init script.

Alternatively, since you described what happens currently, 
pop-up-mini-mode could try to remember the current window configuration, 
create a new frame on the same position without a minibuffer, restore 
the window configuration there, and delete the original frame. Or is 
that something that could only happen during startup?

- pop-up-mini-mode is enabled in the user's init script. Is that worse 
than early init? We could try to document the early init as the best option.

>  > The main remaining annoyance is the blink when the child frame is 
> resized/repositioned.
> 
> You would have to tell me more about that blink.  If it's due to the
> setting of 'x-gtk-resize-child-frames', there's nothing I can do about
> it.  If it's due to the delay implied by 'pop-up-mini-hide-if-empty',
> try to experiment with that.

My x-gtk-resize-child-frames value is 'resize-mode.

Blinking happens when it's resized. But not every single time.

Here's what I do:

1. src/emacs -Q --eval "(setq x-gtk-resize-child-frames 'resize-mode)" 
-l ~/.emacs.d/site-lisp/pop-up-mini.el

2. M-x ido-mode.

3. C-x C-f, type 'e'. If you're inside Emacs source directory, the 
completions should span 2-3 lines. When the child frame is resized, it 
will blink. Sometimes it looks like the mode-line quickly moves up and 
back (or at least _something_ grey moves like that).

Instead of ido-mode, fido-mode can be used with similar effect. Though 
blinking seems less frequent with it.

Another issue: when the child frame covers the scroll bar, it renders 
some junk on it.

>  > So how do you feel about a package in GNU ELPA?
> 
> Not really enthusiastic.  The historical constraints of how to set up
> and use the minibuffer window are too restrictive IMHO so what you see
> here is just a workaround.  Maybe things will change in a couple of
> years.

Do you mean the child frame problems?

A package could declare that it only works on Emacs 28+, BTW.

>  > If we can move the settings into the definition of pop-up-mini-mode,
>  > it should be quite usable. And also do something with the scenario
>  > where someone installs it, turns on the mode, and simply stares at the
>  > error.
> 
> What's so bad about that error?  It simply tells what is missing.  If
> you provide such a frame, things should work, even in parallel with the
> already existing minibuffer window.

I didn't understand what I needed to do from it, and I'm a fairly 
experienced user. When doing a package, we usually try to cater to even 
less experienced users. Not always succeed, but try to.

BTW, here's a today's thread on Reddit with similar complaints by users: 
https://www.reddit.com/r/emacs/comments/gmsnoy/minibufferecho_area_ergonomics/

One suggestion option is this package: 
https://github.com/muffinmad/emacs-mini-frame.

There are a few others with this goal as well. But none of them try to 
hide the minibuffer (or know that it's possible, looks like). They only 
create a child frame with an "effective" minibuffer, and position it to 
their liking. Whereas the minibuffer line is left untouched, and is only 
used as echo area.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 22:35                               ` Drew Adams
@ 2020-05-21  0:35                                 ` Karl Fogel
  0 siblings, 0 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-21  0:35 UTC (permalink / raw)
  To: Drew Adams; +Cc: dgutov, andreas.roehler, Richard Stallman, emacs-devel

On 20 May 2020, Drew Adams wrote:
>Yes, I see now that you more likely meant that by "it".
>(It could have meant learning stick or learning that
>driving stick will ultimately pay off.)
>
>I'd say that many who end up being Emacs users (in the
>sense you intend) were _not_ convinced by others ahead
>of time as you suggest - though many others were, no
>doubt.
>
>And I'd say that some of those who weren't thus
>convinced have likely gotten their "Emacs user" bona
>fides at least partly thanks to the manuals and the
>help UI ("ask Emacs").
>
>IOW, I agree with your characterization of most Emacs
>users (i.e., other than any drive-by tasters who don't
>stay).  And I agree with your claim that having a
>mentor over the shoulder can be very helpful.  And I
>agree with your guess that many who do stay become
>convinced to try it and stick with it because of a
>payoff promised from outside Emacs itself (manuals).
>I disagree, if you also claim that _only_ those with
>mentors, or those convinced by others to stick it out,
>end up as users.
>
>The point that users who stick around and really use
>Emacs are the prime target of its "user friendliness"
>is one I agree with.  (Not the only target, but the
>main one.)  And the things you say help create Emacs
>users do in fact help, and they can even sometimes be
>determinant.  But it's not the case, IMO, that those
>things are required, to become an Emacs user (again,
>in your sense).

Agreed -- I don't think that's absolutely required.  I do think that a new user stands a much greater chance of becoming a long-term, invested user when persuaded (and ideally helped) by others who have already made that investment successfully.  But it's not required.  

Most of the long-term Emacs users I know personally seem to have been socialized into it, but it could be the case that there's some selection bias among the Emacs users I know!

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 19:22                                                                                           ` Dmitry Gutov
  2020-05-20 19:53                                                                                             ` tomas
@ 2020-05-21  2:28                                                                                             ` Eli Zaretskii
  2020-05-21 22:19                                                                                               ` Dmitry Gutov
  1 sibling, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-21  2:28 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  rudalics@gmx.at, homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp,
>  sorganov@gmail.com, monnier@iro.umontreal.ca, arthur.miller@live.com,
>  drew.adams@oracle.com, stefankangas@gmail.com
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Wed, 20 May 2020 22:22:53 +0300
> 
> > eval-last-sexp uses prin1 to display the result, so it is not
> > affected, as intended.
> 
> But aren't all echo area displays targeted at the user anyway?
> 
> I'm not saying the current behavior is necessarily "broken", but perhaps 
> we could enhance it further.

The intent was to affect messages that are a "surprise" for the user.
eval-last-sexp is invoked by the user, so no surprise here.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 21:22                                                                                               ` Dmitry Gutov
@ 2020-05-21  7:43                                                                                                 ` tomas
  0 siblings, 0 replies; 281+ messages in thread
From: tomas @ 2020-05-21  7:43 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1145 bytes --]

On Thu, May 21, 2020 at 12:22:04AM +0300, Dmitry Gutov wrote:
> On 20.05.2020 22:53, tomas@tuxteam.de wrote:
> >Sorry, I don't quite understand. You are proposing that message-fun
> >should not only take over messages proper but also the repl's print?
> 
> Yes, why not?

I think, at the end it's a matter of taste/expectations, so
don't attach too much weight to mine.

> >Because (message "foo") displays foo twice [...]

> When it is evaluated in the REPL, yes. Because you're seeing both
> the result of 'message' itself, as well as the result of
> eval-expression.

Exactly. And I'd expect `set-message-function' to only touch the
`(message)' part -- but see above.

> Do you have an example of set-message-function where it would be a bad idea?

Hm. I don't quite understand your question: I suspect that we're
talking past each other, but I can't yet grasp how.

It's not "examples" I'd looking for. It's just that in my head,
the "print" of REPL and the "message" are two different things,
and should be controlled by different knobs.

But, as I said above, it's something rather subjective.

Cheers
-- t

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 22:07                           ` Dmitry Gutov
@ 2020-05-21  8:03                             ` tomas
  2020-05-21  9:33                               ` Arthur Miller
  2020-05-21 17:07                               ` Karl Fogel
  0 siblings, 2 replies; 281+ messages in thread
From: tomas @ 2020-05-21  8:03 UTC (permalink / raw)
  To: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1426 bytes --]

On Thu, May 21, 2020 at 01:07:41AM +0300, Dmitry Gutov wrote:
> On 21.05.2020 01:00, Karl Fogel wrote:
> >>In this we're, again, similar to other professional software.
> >Well, I'm not sure exactly what "professional software" means in this context, but if it means "expects the user to make sustained investment", then I agree.
> 
> I don't know, Blender? Which has reportedly made some strides in
> usability lately. Other 3D editors and associated programs.

I keep seeing Blender mentioned here. One thing which should
be considered is that Blender was "born" 1994. At that time,
Emacs was around its 19th version and was already 18 -- so
allowed to drink (in some jurisdictions, that is).

So I'd expect a more complex community to have gathered around
Emacs by now.

Basically, I think the main "asset" [1] of a software project
to be it's community. Software can be written and can be thrown
away (and sometimes it's good to throw some software away, or
better, to stash it away for softwar archaeologists to have
fun fifty years from now). The longer a community lives, the
more complex it is to balance out continuity and innovation.

In my eyes, Emacs is doing an outstanding job on that.

Cheers

[1] I always hesitate to describe humans and groups of them
   as "assets". It's cold, cynical HR talk. So if you have
   a better shorthand for me, I'll adopt it Right Now.

-- tomás

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  0:15                                                                                   ` Dmitry Gutov
@ 2020-05-21  9:07                                                                                     ` martin rudalics
  2020-05-21 23:16                                                                                       ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-21  9:07 UTC (permalink / raw)
  To: Dmitry Gutov, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

 > I get the idea, but Emacs is not a whole computer, to try to keep
 > running at all costs. The config can be fixed, and Emacs can usually
 > be restarted. So whatever the original reasons are, a user option
 > could still be doable.

Not really.  There's C code that relies on the invariant that a
minibuffer/echo area window exists at each and every moment of execution
(I know because I once spent some time to find them all).  If we manage
to remove that single window, Emacs may just crash.

 > I've also noticed that initial blink during startup, but didn't know
 > what to attribute it to. Would be great to be able to avoid it.

Is this a blink that happens also when you do

emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"

or does it require the presence of a child frame?

 > - The user installs the package and turns the mode one. If we can't
 > disable the minibuffer, maybe just enable the rest of the
 > functionality, and describe minibuffer-disabling-on-init functionality
 > separately? It could even just be a line we'd tell the users to put in
 > their init script.

It's not as simple as that.  Users who want to use that mode have to
make themselves familiar with child frames and minibuffer-only frames
first.  And even after that there may be glitches, especially when
working with multiple frames.  For example, transferring focus from one
frame to another, while a minibuffer interaction is in progress, is a
hairy operation regardless of whether you use the standard setup, a
top-level minibuffer(-only) frame or a minibuffer child frame.

 > Alternatively, since you described what happens currently,
 > pop-up-mini-mode could try to remember the current window
 > configuration, create a new frame on the same position without a
 > minibuffer, restore the window configuration there, and delete the
 > original frame. Or is that something that could only happen during
 > startup?

I would have to guess the user's intention here.  'pop-up-mini-mode'
does not forbid a mixed mode where one frame uses its own minibuffer
window for interaction and other frames want to use the more "global"
minibuffer-only window 'pop-up-mini-mode' found when it started.  Also
note that we have various strategies to assign the minibuffer window
('set-minibuffer-window', the 'minibuffer' frame parameter) so all this
is more convoluted than it appears at first sight.

 > - pop-up-mini-mode is enabled in the user's init script. Is that worse
 > than early init? We could try to document the early init as the best
 > option.

It's not a good option if it fails for some reason.  On a TTY, say.

 >> You would have to tell me more about that blink.  If it's due to the
 >> setting of 'x-gtk-resize-child-frames', there's nothing I can do about
 >> it.  If it's due to the delay implied by 'pop-up-mini-hide-if-empty',
 >> try to experiment with that.
 >
 > My x-gtk-resize-child-frames value is 'resize-mode.
 >
 > Blinking happens when it's resized. But not every single time.
 >
 > Here's what I do:
 >
 > 1. src/emacs -Q --eval "(setq x-gtk-resize-child-frames 'resize-mode)" -l ~/.emacs.d/site-lisp/pop-up-mini.el
 >
 > 2. M-x ido-mode.
 >
 > 3. C-x C-f, type 'e'. If you're inside Emacs source directory, the completions should span 2-3 lines. When the child frame is resized, it will blink. Sometimes it looks like the mode-line quickly moves up and back (or at least _something_ grey moves like that).

I can't reproduce that here.  But I'm on xfce and currently can't test
with GNOME shell which disabled itself during its never-ending attempts
of unattended upgrades.

 > Instead of ido-mode, fido-mode can be used with similar effect. Though
 > blinking seems less frequent with it.

Again, it would be interesting to know whether this happens with mutter
only.

 > Another issue: when the child frame covers the scroll bar, it renders some junk on it.

The horizontal scroll bar?  That's where it is here all the time.

 >> Not really enthusiastic.  The historical constraints of how to set up
 >> and use the minibuffer window are too restrictive IMHO so what you see
 >> here is just a workaround.  Maybe things will change in a couple of
 >> years.
 >
 > Do you mean the child frame problems?

No.  I spent a couple of months in the intestines of the minibuffer
window implementation and came to the conclusion that sooner or later it
will break down under the load people are piling up on it.

Nobody here can tell you how many messages go by unnoticed in a session
because one last message hides all the ones that were emitted earlier.
And as soon as we start a minibuffer interaction, we enter an area where
a message may temporarily obscure (or amend to?) parts of the text we
just entered.  And all this happens because we got used to it over the
decades like the frog being boiled alive.

What should be reformed here are two things:

- Break up the conflation of minibuffer and echo area you mentioned
   earlier.

- Provide the possibility to make the minibuffer window temporarily
   nonexistent (invisible or dead).

Both are hard to achieve.  The conflation was a premature optimization.
People got used to it with the consequence that it will be very hard to
dissolve it.  Having a minibuffer window always present is a restriction
that is now "built in".  Dissolving it is hard because it would require
to amend lots of code used to the fact that that window is always here.

 > A package could declare that it only works on Emacs 28+, BTW.

pop-up-mini.el has

;; Package-Requires: ((emacs "27.1"))

 >> What's so bad about that error?  It simply tells what is missing.  If
 >> you provide such a frame, things should work, even in parallel with the
 >> already existing minibuffer window.
 >
 > I didn't understand what I needed to do from it, and I'm a fairly experienced user. When doing a package, we usually try to cater to even less experienced users. Not always succeed, but try to.

As I explained above: If you want to use 'pop-up-mini-mode' you have to
get familiar with both, minibuffer windows and child frames, first.

 > BTW, here's a today's thread on Reddit with similar complaints by
 > users:
 > https://www.reddit.com/r/emacs/comments/gmsnoy/minibufferecho_area_ergonomics/

IIUC this one's about using Emacs on a TTY.  In that case
minibuffer-only frames won't help anyway.

 > One suggestion option is this package: https://github.com/muffinmad/emacs-mini-frame.

Years ago I wrote the code to put the minibuffer window on top of a
frame - something which should work on TTYs as well.  But it's annoying:
When resizing the minibuffer, the entire text in the windows beneath has
to move up or down.  When the minibuffer window is at the bottom, the
text in the windows above usually only gets truncated.

 > There are a few others with this goal as well. But none of them try to
 > hide the minibuffer (or know that it's possible, looks like). They
 > only create a child frame with an "effective" minibuffer, and position
 > it to their liking. Whereas the minibuffer line is left untouched, and
 > is only used as echo area.

It would be interesting to see a list of requirements for a practical
solution to this problem.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  8:03                             ` tomas
@ 2020-05-21  9:33                               ` Arthur Miller
  2020-05-21 10:04                                 ` tomas
  2020-05-21 16:20                                 ` xristos
  2020-05-21 17:07                               ` Karl Fogel
  1 sibling, 2 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-21  9:33 UTC (permalink / raw)
  To: tomas; +Cc: emacs-devel

<tomas@tuxteam.de> writes:

> On Thu, May 21, 2020 at 01:07:41AM +0300, Dmitry Gutov wrote:
>> On 21.05.2020 01:00, Karl Fogel wrote:
>> >>In this we're, again, similar to other professional software.
>> >Well, I'm not sure exactly what "professional software" means in this
>> > context, but if it means "expects the user to make sustained investment",
>> > then I agree.
>> 
>> I don't know, Blender? Which has reportedly made some strides in
>> usability lately. Other 3D editors and associated programs.
>
> I keep seeing Blender mentioned here. One thing which should
> be considered is that Blender was "born" 1994. At that time,
> Emacs was around its 19th version and was already 18 -- so
> allowed to drink (in some jurisdictions, that is).
There was an interview in Linux Format magazine, in January issue this
year, with Blender creator, which circled mostly about how Blender
turned into widely accepted professional 3D modelling/animation software
from being an obscure 3D package mostly ignored by professionals.
I recognized Emacs in Blender and posted here so now it is mentioned
here and there. You might get a copy of the issue, or find it on the
Internet, particlar interview is available to read for free, albeit the
website uses non-free javascript, so I'll not link to it here.

> So I'd expect a more complex community to have gathered around
> Emacs by now.
Why? :-)
>
> Basically, I think the main "asset" [1] of a software project
> to be it's community. Software can be written and can be thrown
> away (and sometimes it's good to throw some software away, or
> better, to stash it away for softwar archaeologists to have
> fun fifty years from now). The longer a community lives, the
> more complex it is to balance out continuity and innovation.
Indeed. But for anything to live long, it needs to adapt to changs, and
software/IT community changes rapidly. That seems to be basic law of
evolution. Emacs does not seem to adapt despite being super adaptable
software package so well. Is community big enough to be sustainable in
long term?
> In my eyes, Emacs is doing an outstanding job on that.
Personally I don't think Emacs will go extinct any time soon, neither,
but what will happen in next 40 years? Is it important though? But I
would like to see bigger community now so we get even more developers
and even better Emacs :-)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  9:33                               ` Arthur Miller
@ 2020-05-21 10:04                                 ` tomas
  2020-05-24 14:05                                   ` Arthur Miller
  2020-05-21 16:20                                 ` xristos
  1 sibling, 1 reply; 281+ messages in thread
From: tomas @ 2020-05-21 10:04 UTC (permalink / raw)
  To: Arthur Miller; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1928 bytes --]

On Thu, May 21, 2020 at 11:33:25AM +0200, Arthur Miller wrote:
> <tomas@tuxteam.de> writes:
> 
> > On Thu, May 21, 2020 at 01:07:41AM +0300, Dmitry Gutov wrote:

[...]

> > So I'd expect a more complex community to have gathered around
> > Emacs by now.
> Why? :-)

Because people just don't die that quickly [1] ;-P

> > Basically, I think the main "asset" of a software project
> > to be it's community [...]

[...]

> Indeed. But for anything to live long, it needs to adapt to changs, and
> software/IT community changes rapidly.

Fads, I tell you [2] ;-P

> That seems to be basic law of
> evolution. Emacs does not seem to adapt despite being super adaptable
> software package so well. Is community big enough to be sustainable in
> long term?

> > In my eyes, Emacs is doing an outstanding job on that.

> Personally I don't think Emacs will go extinct any time soon, neither,
> but what will happen in next 40 years? Is it important though? But I
> would like to see bigger community now so we get even more developers
> and even better Emacs :-)

Yes -- and part of the job is, whenever there is a complex community,
discussing with them on what "better" means. And being prepared to
accept that there are other opinions.

Or forking. Both is OK. Heck, if you are careful about it, forking
hasn't to be hostile. And it can be productive, too (cf. XEmacs).

Cheers

[1] that was somewhat tongue-in-cheek. I am surprised that
   ask why a culture complexifies as it evolves.

[2] Of course an exaggeration too. But look back: 1980 it
   was OO all-over-the-place (Smalltalk was picking height).
   Then it culminated with Java (which I call the 2000's COBOL).
   Then it was Hindley-Milner. Now it is leftpad -- uh -- npm.
   Emacs has seen those come and go :-)
   The art (and you *never* know you'll succeed at that) is
   to pick up *some* of that.

-- tomás

[-- Attachment #2: Digital signature --]
[-- Type: application/pgp-signature, Size: 198 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-20 23:07                                                                                           ` martin rudalics
@ 2020-05-21 13:11                                                                                             ` Eli Zaretskii
  2020-05-21 17:55                                                                                               ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-21 13:11 UTC (permalink / raw)
  To: martin rudalics
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, dgutov,
	drew.adams, stefankangas

> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp, sorganov@gmail.com,
>  monnier@iro.umontreal.ca, arthur.miller@live.com, drew.adams@oracle.com,
>  stefankangas@gmail.com
> From: martin rudalics <rudalics@gmx.at>
> Date: Thu, 21 May 2020 01:07:31 +0200
> 
> (defun my-fun (string) "")
> 
> or
> 
> (defun my-fun (string) t)
> 
> and then
> 
> (setq set-message-function 'my-fun)
> 
> and repeatedly press the <up> key, the minibuffer tells me
> 
> Beginning of buffer
> 
> If this is the intended behavior

Yes, it is.  Errors are not reported via 'message'.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  9:33                               ` Arthur Miller
  2020-05-21 10:04                                 ` tomas
@ 2020-05-21 16:20                                 ` xristos
  2020-05-24 13:45                                   ` Arthur Miller
  2020-05-25 17:34                                   ` João Távora
  1 sibling, 2 replies; 281+ messages in thread
From: xristos @ 2020-05-21 16:20 UTC (permalink / raw)
  To: Arthur Miller; +Cc: tomas, emacs-devel

On Thu, 21 May 2020 11:33:25 +0200, 
Arthur Miller <arthur.miller@live.com> wrote:
> Indeed. But for anything to live long, it needs to adapt to changs, and
> software/IT community changes rapidly. That seems to be basic law of
> evolution. Emacs does not seem to adapt despite being super adaptable
> software package so well. Is community big enough to be sustainable in
> long term?

Emacs has lived long, hasn't it? It is certainly one of the longest-living
pieces of software that I use daily. This could mean that Emacs has adapted
well to changes in the field or that said changes were fads, not worth
adapting to. Either way, it seems the model that lies at the core of Emacs
has stood the test of time. 

>> In my eyes, Emacs is doing an outstanding job on that.
> Personally I don't think Emacs will go extinct any time soon, neither,
> but what will happen in next 40 years? 

No one can tell what will happen in the next 10 years, never mind 40.
It is a mistake to make decisions by working backwards from a hypothetical
projection rather than looking at the past and recognizing what has made
Emacs truly unique:

Its capacity to symbiotically [1] mold with the user and give raise to a
metasystem [2] that is much more than the sum of its parts. If Emacs has a
superpower, that is it.

> Is it important though? But I would like to see bigger community now so
> we get even more developers and even better Emacs :-)

That would be nice, but Emacs should not compromise on its core values in
order to achieve it. Emacs can not win going toe-to-toe with VSCode but
it can certainly shift the arena from not-quite feature parity with
fad-editor-of-the-decade [3] to doubling down on user-empowerment:

A lot of Emacs users, even old users, don't see Emacs as anything more than
an editor and haven't been exposed to the "moldable information processing
tool" way of thinking. This should be addressed by us doing everything we
can to shorten the time needed for a new user to first be fully exposed
to this paradigm and subsequently ignite the molding process.

I see João admit that he's not familiar with a lot of the C-h commands.
This is a problem that should be easy to fix. I've long seen the Emacs
tutorial as unnecessarily narrow-minded in its focus on text editing.
Richard mentioned a robot game but I suggest the tutorial be reworked
instead to be much more extensive. It should first lay out the models that
make Emacs powerful and then through exercises expose the user to said
models and reinforce the central paradigm.

That should include familiarization with all introspective commands,
configuration and customization, how buffers and processes work, and a
practical introduction to Emacs Lisp, including showing IELM and what one
can do inside it (e.g. Set working buffer).

I think this would go a long way towards letting users have a glimpse of
the possibilities on offer. Emacs has great manuals but either very few
newcomers read them or if they do, still don't get the big picture.
An interactive, hand-on approach would surely work better.

[1] https://groups.csail.mit.edu/medg/people/psz/Licklider.html

[2] https://xristos.sdf.org/why-emacs.txt

[3] That's not to say that Emacs should not provide VSCode features where
    it makes sense to do so. But the moment you start compromising on
    core values (e.g. providing a singular model that everyone should adopt
    and making alternatives hard or impossible to do) is when things start
    to go wrong since you're fighting the essence of what makes you great.
    I haven't so far seen anything here that makes me believe this will be
    the case but it's something to think about.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  8:03                             ` tomas
  2020-05-21  9:33                               ` Arthur Miller
@ 2020-05-21 17:07                               ` Karl Fogel
  2020-05-23 20:36                                 ` Dmitry Gutov
  1 sibling, 1 reply; 281+ messages in thread
From: Karl Fogel @ 2020-05-21 17:07 UTC (permalink / raw)
  To: tomas; +Cc: emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1610 bytes --]

On 21 May 2020, tomas@tuxteam.de wrote:
>On Thu, May 21, 2020 at 01:07:41AM +0300, Dmitry Gutov wrote:
>> On 21.05.2020 01:00, Karl Fogel wrote:
>> >>In this we're, again, similar to other professional software.
>> >Well, I'm not sure exactly what "professional software" means in this context, but if it means "expects the user to make sustained investment", then I agree.
>> 
>> I don't know, Blender? Which has reportedly made some strides in
>> usability lately. Other 3D editors and associated programs.
>
>I keep seeing Blender mentioned here. One thing which should
>be considered is that Blender was "born" 1994. At that time,
>Emacs was around its 19th version and was already 18 -- so
>allowed to drink (in some jurisdictions, that is).

For those who would like to learn more about Blender's efforts to improve its usability for "professional" users -- in this case, helped by someone who is literally a professional user -- there's a Libre Lounge podcast episode that talks about this:

  https://librelounge.org/episodes/36-david-revoy-on-pepper--carrot-and-free-culture.html

The interviewee is David Revoy, author of the webcomic series "Pepper and Carrot".  (Our very own Christopher Lemmer Webber is one of the two co-hosts of this episode; the other is libre sofware/culture activist Serge Wroclawski.)

I'm not sure how the lessons there might apply to Emacs, but someone else might think of something I didn't.

Libre Lounge is, naturally, available in entirely Free audio formats (though, alas, I don't think there's a transcript available).

Best regards,
-Karl

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 861 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 13:11                                                                                             ` Eli Zaretskii
@ 2020-05-21 17:55                                                                                               ` martin rudalics
  0 siblings, 0 replies; 281+ messages in thread
From: martin rudalics @ 2020-05-21 17:55 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	homeros.misasa, tkk, sorganov, monnier, arthur.miller, dgutov,
	drew.adams, stefankangas

>> If this is the intended behavior
>
> Yes, it is.  Errors are not reported via 'message'.

Thanks, martin





^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: (emacs) Intro [was: Making Emacs popular again with a video]
       [not found]                           ` <M7iByNw--3-2@tutanota.com>
@ 2020-05-21 18:18                             ` excalamus--- via Emacs development discussions.
       [not found]                             ` <M7sSK-m--3-2@tutanota.com-M7sSUVm--3-2>
  1 sibling, 0 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-21 18:18 UTC (permalink / raw)
  To: Drew Adams; +Cc: Emacs Devel

Resending in order to add to the public archives.  Apologies for the extra messages!


May 20, 2020, 12:58 by excalamus@tutanota.com:

>
> May 19, 2020, 13:26 by drew.adams@oracle.com:
>
>>> Is this something I should continue investing time in?
>>>
>>
>> IMO, yes, please do.  Why not?  It will be fun for
>> you (and us) anyway, regardless of the outcome.
>>
> I agree it's fun and I'm glad you've joined in!  I meant as opposed to pursuing something like this: > https://lists.gnu.org/archive/html/emacs-devel/2019-12/msg00206.html
>
>
>> 1. Command, not just function.
>>
> Thank you for this!  The difficulty with this section is separating the jargon from the expression of the idea.  (The idea being, "each key calls a tiny program (or macro)".  Macro is clearly jargon and extremely ambiguous at that (e.g. lisp macro, Excel VBA macro, C macro, keyboard macro, etc.).  "Function" is more accurate, but also jargon.  "Command" is a term I had not considered.  
>
>
>> > What *defines* an Emacs? Is it "the Emacs idea", as I've called it, that each key press is 
>> > transparently associated with a function?
>>
>> 2. Why do you say "transparently" here?
>>
> By transparent, I mean that it is easy for a user to see "the Emacs idea" (i.e. "each key calls a tiny program (or macro)").  The Idea is made transparent through C-h k:
>
> 1. C-h k <up> opens *Help* which states, "<up> runs a command which is a function"
> 2. There is a link to the function definition, previous-line
>
> That's what I mean by "transparent".  
>
> The more it's discussed, I think it's the functionality of C-h is specifically what *defines*, in practical terms, an "Emacs".  I think it would be helpful to explain this to non-programmers along with *why the Idea is important and powerful*.  Other editors undoubtedly call a function when "<up>", or a button on the UI, is pressed; it's software, so it has to work that way at some level.  However, an "Emacs" grants users visibility and access behind the curtains.  Aside from this transparency existing,  I don't think it's necessarily seen as a virtue.  On the contrary, I think it's viewed as irrelevant; the sentiment is "I don't care if I can disassemble my John Deere engine, I have seeds to plant right now.  How does this help me do that?"
>
>
>




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre)
  2020-05-18  8:32                                                                 ` martin rudalics
  2020-05-18 11:39                                                                   ` Dmitry Gutov
  2020-05-18 15:57                                                                   ` Drew Adams
@ 2020-05-21 18:19                                                                   ` Noam Postavsky
  2020-05-22  9:30                                                                     ` martin rudalics
  2 siblings, 1 reply; 281+ messages in thread
From: Noam Postavsky @ 2020-05-21 18:19 UTC (permalink / raw)
  To: martin rudalics; +Cc: Emacs developers

On Mon, 18 May 2020 at 04:33, martin rudalics <rudalics@gmx.at> wrote:

> I do not use the echo area for ElDoc though and occasionally the echo
> area noisily pops up to tell me that I'm at the beginning or end of a
> buffer.  I've been told that I have to live with the latter.

Hmm, I don't see why. Try this:

    (defun ignore-edge-of-buffer-errors (default-fun error context signaller)
      (unless (memq (car error) '(beginning-of-buffer end-of-buffer))
        (funcall default-fun error context signaller)))
    (add-function :around command-error-function
                  #'ignore-edge-of-buffer-errors)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  2:28                                                                                             ` Eli Zaretskii
@ 2020-05-21 22:19                                                                                               ` Dmitry Gutov
  2020-05-22  7:28                                                                                                 ` Eli Zaretskii
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-21 22:19 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

On 21.05.2020 05:28, Eli Zaretskii wrote:
>>> eval-last-sexp uses prin1 to display the result, so it is not
>>> affected, as intended.
>> But aren't all echo area displays targeted at the user anyway?
>>
>> I'm not saying the current behavior is necessarily "broken", but perhaps
>> we could enhance it further.
> The intent was to affect messages that are a "surprise" for the user.
> eval-last-sexp is invoked by the user, so no surprise here.

But not all 'message' calls are a "surprise". One might even say that 
the vast majority of them aren't. And yet, they obey set-message-function.

eval-last-sexp uses 'prin1' under the covers. While it's different from 
'message', it's not entirely clear to me that it's intended to be 
different semantically, e.g. used for distinctly different purposes. So 
I might as well imagine the same code that calls 'message' decide at 
some point to call 'prin1' (in addition to 'message', or instead).

Looking at its description, it could delegate to 'standard-output', 
which is overridable. It's not particularly convenient, though.

But this patch would do it:

@@ -1132,7 +1132,7 @@
      ;; Setup the lexical environment if lexical-binding is enabled.
      (elisp--eval-last-sexp-print-value
       (eval (eval-sexp-add-defvars (elisp--preceding-sexp)) 
lexical-binding)
-     (if insert-value (current-buffer) t) no-truncate char-print-limit)))
+     (if insert-value (current-buffer)) no-truncate char-print-limit)))

  (defun elisp--eval-last-sexp-print-value
      (value output &optional no-truncate char-print-limit)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21  9:07                                                                                     ` martin rudalics
@ 2020-05-21 23:16                                                                                       ` Dmitry Gutov
  2020-05-22  9:31                                                                                         ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-21 23:16 UTC (permalink / raw)
  To: martin rudalics, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

On 21.05.2020 12:07, martin rudalics wrote:

> Not really.  There's C code that relies on the invariant that a
> minibuffer/echo area window exists at each and every moment of execution
> (I know because I once spent some time to find them all).  If we manage
> to remove that single window, Emacs may just crash.

Hmm, okay.

>  > I've also noticed that initial blink during startup, but didn't know
>  > what to attribute it to. Would be great to be able to avoid it.
> 
> Is this a blink that happens also when you do
> 
> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
> 
> or does it require the presence of a child frame?

I couldn't manage to reproduce the bug there. Even with 
resize-mini-frames=t. But then, it doesn't resize as responsively as 
your code.

>  > - The user installs the package and turns the mode one. If we can't
>  > disable the minibuffer, maybe just enable the rest of the
>  > functionality, and describe minibuffer-disabling-on-init functionality
>  > separately? It could even just be a line we'd tell the users to put in
>  > their init script.
> 
> It's not as simple as that.  Users who want to use that mode have to
> make themselves familiar with child frames and minibuffer-only frames
> first.

Please, no.

You know the reason why we only fixed child frames under GNOME now? Or 
why packages using child frames only started to become popular?

This is arcane stuff, and it took someone really motivated to turn the 
child frames support you created into a library every Emacs developer 
can use. There are a few other authors who understand it, but we can't 
expect the average user to know these details.

> And even after that there may be glitches, especially when
> working with multiple frames.  For example, transferring focus from one
> frame to another, while a minibuffer interaction is in progress, is a
> hairy operation regardless of whether you use the standard setup, a
> top-level minibuffer(-only) frame or a minibuffer child frame.

Is there a problem in creating a minibuffer child frame for every frame?

>  > Alternatively, since you described what happens currently,
>  > pop-up-mini-mode could try to remember the current window
>  > configuration, create a new frame on the same position without a
>  > minibuffer, restore the window configuration there, and delete the
>  > original frame. Or is that something that could only happen during
>  > startup?
> 
> I would have to guess the user's intention here.  'pop-up-mini-mode'
> does not forbid a mixed mode where one frame uses its own minibuffer
> window for interaction and other frames want to use the more "global"
> minibuffer-only window 'pop-up-mini-mode' found when it started.

We don't have to support every possible intention, just the most likely 
one. The rest can be left for future development, or available as a 
customization option.

BTW, when you delete the initial frame at startup, is there a 
possibility to make in invisible at the start, so that it's actually 
never displayed, and when it's deleted, that blink doesn't happen?

> Also
> note that we have various strategies to assign the minibuffer window
> ('set-minibuffer-window', the 'minibuffer' frame parameter) so all this
> is more convoluted than it appears at first sight.

These are implementation options, right? Just pick the most appropriate.

>  > - pop-up-mini-mode is enabled in the user's init script. Is that worse
>  > than early init? We could try to document the early init as the best
>  > option.
> 
> It's not a good option if it fails for some reason.  On a TTY, say.

So pop-up-mini-mode would check if it's running on a terminal, and if 
so, abort with a message.

>  >> You would have to tell me more about that blink.  If it's due to the
>  >> setting of 'x-gtk-resize-child-frames', there's nothing I can do about
>  >> it.  If it's due to the delay implied by 'pop-up-mini-hide-if-empty',
>  >> try to experiment with that.
>  >
>  > My x-gtk-resize-child-frames value is 'resize-mode.
>  >
>  > Blinking happens when it's resized. But not every single time.
>  >
>  > Here's what I do:
>  >
>  > 1. src/emacs -Q --eval "(setq x-gtk-resize-child-frames 
> 'resize-mode)" -l ~/.emacs.d/site-lisp/pop-up-mini.el
>  >
>  > 2. M-x ido-mode.
>  >
>  > 3. C-x C-f, type 'e'. If you're inside Emacs source directory, the 
> completions should span 2-3 lines. When the child frame is resized, it 
> will blink. Sometimes it looks like the mode-line quickly moves up and 
> back (or at least _something_ grey moves like that).
> 
> I can't reproduce that here.  But I'm on xfce and currently can't test
> with GNOME shell which disabled itself during its never-ending attempts
> of unattended upgrades.

A full reinstall of a distro and/or switch to another one is out of the 
question, I take it?

I'm not sure it's a GNOME issue. It doesn't update itself: package 
managers do it.

>  > Instead of ido-mode, fido-mode can be used with similar effect. Though
>  > blinking seems less frequent with it.
> 
> Again, it would be interesting to know whether this happens with mutter
> only.

With Mutter only, or with GTK3 toolkit build only? I can make a build 
using a different toolkit, at least.

>  > Another issue: when the child frame covers the scroll bar, it renders 
> some junk on it.
> 
> The horizontal scroll bar?  That's where it is here all the time.

The vertical one. The child frame spans the whole width of the frame, 
and its right end overlaps the parent frame's scroll bar.

>  >> Not really enthusiastic.  The historical constraints of how to set up
>  >> and use the minibuffer window are too restrictive IMHO so what you see
>  >> here is just a workaround.  Maybe things will change in a couple of
>  >> years.
>  >
>  > Do you mean the child frame problems?
> 
> No.  I spent a couple of months in the intestines of the minibuffer
> window implementation and came to the conclusion that sooner or later it
> will break down under the load people are piling up on it.
> 
> Nobody here can tell you how many messages go by unnoticed in a session
> because one last message hides all the ones that were emitted earlier.
> And as soon as we start a minibuffer interaction, we enter an area where
> a message may temporarily obscure (or amend to?) parts of the text we
> just entered.  And all this happens because we got used to it over the
> decades like the frog being boiled alive.

I agree it's a problem, just don't see how it is a problem for this 
particular endeavor.

> What should be reformed here are two things:
> 
> - Break up the conflation of minibuffer and echo area you mentioned
>    earlier.
> 
> - Provide the possibility to make the minibuffer window temporarily
>    nonexistent (invisible or dead).
> 
> Both are hard to achieve.  The conflation was a premature optimization.
> People got used to it with the consequence that it will be very hard to
> dissolve it.  Having a minibuffer window always present is a restriction
> that is now "built in".  Dissolving it is hard because it would require
> to amend lots of code used to the fact that that window is always here.

Sounds like we're talking about low-level code only, right? Like prin1. 
I suspect there's a limited number of functions like that.

>  > BTW, here's a today's thread on Reddit with similar complaints by
>  > users:
>  > 
> https://www.reddit.com/r/emacs/comments/gmsnoy/minibufferecho_area_ergonomics/ 
> 
> 
> IIUC this one's about using Emacs on a TTY.  In that case
> minibuffer-only frames won't help anyway.
> 
>  > One suggestion option is this package: 
> https://github.com/muffinmad/emacs-mini-frame.
> 
> Years ago I wrote the code to put the minibuffer window on top of a
> frame - something which should work on TTYs as well.  But it's annoying:
> When resizing the minibuffer, the entire text in the windows beneath has
> to move up or down.  When the minibuffer window is at the bottom, the
> text in the windows above usually only gets truncated.

Right. That's a similar reason why I really want minibuffer out of the 
current frame: as soon as it gets multiline, window borders start 
jumping up and down.

>  > There are a few others with this goal as well. But none of them try to
>  > hide the minibuffer (or know that it's possible, looks like). They
>  > only create a child frame with an "effective" minibuffer, and position
>  > it to their liking. Whereas the minibuffer line is left untouched, and
>  > is only used as echo area.
> 
> It would be interesting to see a list of requirements for a practical
> solution to this problem.

Behavior-wise, I think we're fairly close already, but "the user has to 
get familiar with both, minibuffer windows and child frames, first" 
sounds like a deal-breaker.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 22:19                                                                                               ` Dmitry Gutov
@ 2020-05-22  7:28                                                                                                 ` Eli Zaretskii
  2020-05-22 12:16                                                                                                   ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-22  7:28 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

> Cc: jean.christophe.helary@traduction-libre.org, rms@gnu.org,
>  andreas.roehler@online.de, emacs-devel@gnu.org, kfogel@red-bean.com,
>  rudalics@gmx.at, homeros.misasa@gmail.com, tkk@misasa.okayama-u.ac.jp,
>  sorganov@gmail.com, monnier@iro.umontreal.ca, arthur.miller@live.com,
>  drew.adams@oracle.com, stefankangas@gmail.com
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Fri, 22 May 2020 01:19:54 +0300
> 
> >> I'm not saying the current behavior is necessarily "broken", but perhaps
> >> we could enhance it further.
> > The intent was to affect messages that are a "surprise" for the user.
> > eval-last-sexp is invoked by the user, so no surprise here.
> 
> But not all 'message' calls are a "surprise". One might even say that 
> the vast majority of them aren't. And yet, they obey set-message-function.

We provided a possibility to customize this functionality out of
principle, without investing too much research into the various ways
this could be used in situations very different from those for which
the code was written, which is display of a message when the
minibuffer is active.  It is possible that using this as a
customization tool in other situations could also make sense, and that
other sense would then suggest us that the feature should be extended
to other means of displaying messages in the echo area.

However, it sounds too early to consider those additional
possibilities.  I'd like first to collect real-life use experience
with this feature in Emacs 27.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre)
  2020-05-21 18:19                                                                   ` Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre) Noam Postavsky
@ 2020-05-22  9:30                                                                     ` martin rudalics
  2020-05-22 12:46                                                                       ` Noam Postavsky
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-22  9:30 UTC (permalink / raw)
  To: Noam Postavsky; +Cc: Emacs developers

 > Try this:
 >
 >      (defun ignore-edge-of-buffer-errors (default-fun error context signaller)
 >        (unless (memq (car error) '(beginning-of-buffer end-of-buffer))
 >          (funcall default-fun error context signaller)))
 >      (add-function :around command-error-function
 >                    #'ignore-edge-of-buffer-errors)

That will save me a lot of trouble.

I suppose it would also work when I set 'command-error-function' to
'ignore-edge-of-buffer-errors' right away but the advice is probably
cleaner.

Many thanks, martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 23:16                                                                                       ` Dmitry Gutov
@ 2020-05-22  9:31                                                                                         ` martin rudalics
  2020-05-25  2:37                                                                                           ` Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-22  9:31 UTC (permalink / raw)
  To: Dmitry Gutov, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

 >>  > I've also noticed that initial blink during startup,

I forgot to ask what "startup" means here.  Invoking 'pop-up-mini-mode'
itself or starting a dialogue as with 'ido-mode'?

 >>  > but didn't know
 >>  > what to attribute it to. Would be great to be able to avoid it.
 >>
 >> Is this a blink that happens also when you do
 >>
 >> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
 >>
 >> or does it require the presence of a child frame?
 >
 > I couldn't manage to reproduce the bug there. Even with
 >>  > resize-mini-frames=t. But then, it doesn't resize as responsively as your code.

Why not?  The resizing step is quite the same.

 >> It's not as simple as that.  Users who want to use that mode have to
 >> make themselves familiar with child frames and minibuffer-only frames
 >> first.
 >
 > Please, no.
 >
 > You know the reason why we only fixed child frames under GNOME now? Or why packages using child frames only started to become popular?
 >
 > This is arcane stuff, and it took someone really motivated to turn the child frames support you created into a library every Emacs developer can use. There are a few other authors who understand it, but we can't expect the average user to know these details.

This is not about understanding the details.  If you want to use a mode
that is based on child frames and minibuffer-only frames, you first have
to know what kind of advantages these offer.  And both, package
developers and users, should be aware of the basic glitches that are to
be expected in this area.

Sometimes I'm not sure whether child frames are used only because they
are there.  Basically, child frames make sense only if any changes the
window manager applies to the parent frame (like deletion, iconifying,
changes of visibility, size or position including the z-order) should
automatically (without Emacs intervention) apply to the child frame too.
I added child frame support mainly because the handling of the signals
that come with any of these changes can be cumbersome and occasionally
even daunting.

Things a package could handle with a normal frame or a tooltip frame
should probably be done without child frames because, for example,
reparenting a child frame and fitting its size and position to the new
frame can be tricky.

 >> And even after that there may be glitches, especially when
 >> working with multiple frames.  For example, transferring focus from one
 >> frame to another, while a minibuffer interaction is in progress, is a
 >> hairy operation regardless of whether you use the standard setup, a
 >> top-level minibuffer(-only) frame or a minibuffer child frame.
 >
 > Is there a problem in creating a minibuffer child frame for every frame?

I had that in an initial version but it's unlikely that I can still find
the code.  By design, you can create and use an arbitrary number of
minibuffer frames.  The only problem is to find the right frame you want
to use and transfer the text you want to show there to it.

Note also that IIRC the text you see in a minibuffer window is sometimes
only available there and bears no relationship to any text stored in any
buffer (or at least the buffer whose contents the minibuffer window is
supposed to display).  The display engine automagically handles the
display and sometimes cancels the traces of the source it used (Eli will
correct me if I'm wrong).

 >> I would have to guess the user's intention here.  'pop-up-mini-mode'
 >> does not forbid a mixed mode where one frame uses its own minibuffer
 >> window for interaction and other frames want to use the more "global"
 >> minibuffer-only window 'pop-up-mini-mode' found when it started.
 >
 > We don't have to support every possible intention, just the most likely one. The rest can be left for future development, or available as a customization option.

Agreed.  And that's why users have to put the necessary customizations
in their init files and not simply call 'pop-up-mini-mode' from a
running session.  Although the latter might be a seductive way to test
it.

 > BTW, when you delete the initial frame at startup, is there a
 > possibility to make in invisible at the start, so that it's actually
 > never displayed, and when it's deleted, that blink doesn't happen?

You mean when Emacs starts in minibuffer-only mode, I presume.  It
should be possible but the following part

	    ;; If the frame isn't visible yet, wait till it is.
	    ;; If the user has to position the window,
	    ;; Emacs doesn't know its real position until
	    ;; the frame is seen to be visible.
	    (while (not (cdr (assq 'visibility
				   (frame-parameters frame-initial-frame))))
	      (sleep-for 1))

inhibits it currently.  The problem perceived here is that one cannot
derive the actual coordinates of a frame _before_ that frame was mapped
by the WM and mapping always means to make it visible.  OTOH the actual
coordinates of the minibuffer-equipped frame are needed to make the
minibuffer-only frame appear at the same position and with the
requested, properly modified size, taking the user customizations into
account.

 >> Also
 >> note that we have various strategies to assign the minibuffer window
 >> ('set-minibuffer-window', the 'minibuffer' frame parameter) so all this
 >> is more convoluted than it appears at first sight.
 >
 > These are implementation options, right? Just pick the most appropriate.

These are user options a user can change any time in a running session.

 >>  > - pop-up-mini-mode is enabled in the user's init script. Is that worse
 >>  > than early init? We could try to document the early init as the best
 >>  > option.
 >>
 >> It's not a good option if it fails for some reason.  On a TTY, say.
 >
 > So pop-up-mini-mode would check if it's running on a terminal, and if so, abort with a message.

But you don't like such aborts ...

 > A full reinstall of a distro and/or switch to another one is out of the question, I take it?
 >
 > I'm not sure it's a GNOME issue. It doesn't update itself: package managers do it.

Maybe it's a also just a GNOME on Debian (unstable) issue.  Installing
GNOME shell here as additional desktop forced me to install all sorts of
additional software amounting in sum to around one GB of code.  This
included games and horrific applications like tracker which I had a hard
time to switch off.  I'll eventually try to remove and reinstall it but
it's nothing for the faint at heart.

 > With Mutter only, or with GTK3 toolkit build only? I can make a build
 > using a different toolkit, at least.

Try both, if you can.

 >>  > Another issue: when the child frame covers the scroll bar, it renders some junk on it.
 >>
 >> The horizontal scroll bar?  That's where it is here all the time.
 >
 > The vertical one. The child frame spans the whole width of the frame, and its right end overlaps the parent frame's scroll bar.

I faintly recall to have seen this with GNOME shell.  Which means you
have to put it on the mode line or the horizontal scroll bar there.  Do
other child frames too have problems when covering the scroll bar?  What
happens with the scroll bar at the right?  What happens when the
minibuffer window has a scroll bar itself?

 > I agree it's a problem, just don't see how it is a problem for this particular endeavor.

Because "this particular endeavor" would then only serve to cover an
underlying, deeper-rooted problem and possibly postpone fixing that.

 > Sounds like we're talking about low-level code only, right? Like prin1. I suspect there's a limited number of functions like that.

High-level code - for example, code that wants to know the width of the
minibuffer window before putting things there.

 >> It would be interesting to see a list of requirements for a practical
 >> solution to this problem.
 >
 > Behavior-wise, I think we're fairly close already, but "the user has to get familiar with both, minibuffer windows and child frames, first" sounds like a deal-breaker.

I'd still like to see a list of what people really would like to see wrt
positioning and resizing the minibuffer window first.

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-22  7:28                                                                                                 ` Eli Zaretskii
@ 2020-05-22 12:16                                                                                                   ` Dmitry Gutov
  0 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-22 12:16 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: jean.christophe.helary, rms, andreas.roehler, emacs-devel, kfogel,
	rudalics, homeros.misasa, tkk, sorganov, monnier, arthur.miller,
	drew.adams, stefankangas

On 22.05.2020 10:28, Eli Zaretskii wrote:
>>>> I'm not saying the current behavior is necessarily "broken", but perhaps
>>>> we could enhance it further.
>>> The intent was to affect messages that are a "surprise" for the user.
>>> eval-last-sexp is invoked by the user, so no surprise here.
>> But not all 'message' calls are a "surprise". One might even say that
>> the vast majority of them aren't. And yet, they obey set-message-function.
> We provided a possibility to customize this functionality out of
> principle, without investing too much research into the various ways
> this could be used in situations very different from those for which
> the code was written, which is display of a message when the
> minibuffer is active.  It is possible that using this as a
> customization tool in other situations could also make sense, and that
> other sense would then suggest us that the feature should be extended
> to other means of displaying messages in the echo area.
> 
> However, it sounds too early to consider those additional
> possibilities.  I'd like first to collect real-life use experience
> with this feature in Emacs 27.

Fair enough.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre)
  2020-05-22  9:30                                                                     ` martin rudalics
@ 2020-05-22 12:46                                                                       ` Noam Postavsky
       [not found]                                                                         ` <11bfe86b-131c-4f55-5125-c269a73e360d@gmx.at>
  0 siblings, 1 reply; 281+ messages in thread
From: Noam Postavsky @ 2020-05-22 12:46 UTC (permalink / raw)
  To: martin rudalics; +Cc: Emacs developers

On Fri, 22 May 2020 at 05:30, martin rudalics <rudalics@gmx.at> wrote:

>  >      (defun ignore-edge-of-buffer-errors (default-fun error context signaller)
>  >        (unless (memq (car error) '(beginning-of-buffer end-of-buffer))
>  >          (funcall default-fun error context signaller)))
>  >      (add-function :around command-error-function
>  >                    #'ignore-edge-of-buffer-errors)
>
> That will save me a lot of trouble.
>
> I suppose it would also work when I set 'command-error-function' to
> 'ignore-edge-of-buffer-errors' right away but the advice is probably
> cleaner.

If you set directly, then getting hold of the original value of
command-error-function becomes bit trickier. The following should do
the same, but I prefer the add-function version since it depends less
on the order of evaluation.

    (defvar original-command-error-function command-error-function)
    (defun ignore-edge-of-buffer-errors (error context signaller)
      (unless (memq (car error) '(beginning-of-buffer end-of-buffer))
        (funcall original-command-error-function
                 error context signaller)))
    (setq command-error-function #'ignore-edge-of-buffer-errors)

(alternatively, you can hardcode command-error-default-function, but
then you lose other additions to command-error-function, like
help-command-error-confusable-suggestions)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
  2020-05-15  3:25                 ` Richard Stallman
  2020-05-15  7:55                   ` Arthur Miller
  2020-05-15 18:41                   ` H. Dieter Wilhelm
@ 2020-05-22 19:09                   ` Ben McGinnes
       [not found]                     ` <E1jcLVP-0003SB-II@fencepost.gnu.org>
  2 siblings, 1 reply; 281+ messages in thread
From: Ben McGinnes @ 2020-05-22 19:09 UTC (permalink / raw)
  To: Richard Stallman
  Cc: Robert Pluim, colinetnathan98, andreas.roehler, arthur.miller,
	emacs-devel

[-- Attachment #1: Type: text/plain, Size: 1666 bytes --]

On Thu, May 14, 2020 at 11:25:31PM -0400, Richard Stallman wrote:
> 
> I would like Emacs to have the features of LibreOffice -- at least
> for word processing and slides.

That's ambitious ...

Would you intend that to produce existing open standard formats
(i.e. mainly OpenDocument Format files, but someone will inevitably
include DOCX and PPTX out of necessity)?

> It would take years to get there, but I hope to see it during my
> lifetime.

Perhaps.  It depends on how much your vision actually requires native
support and how much can be done by utilising existing technology
which GNU Emacs already understands to produce that end result.

Both of those open formats[1] are based on XML.  So there's already
plenty of avenues for generating those more complicated formats from
something more readily edited by Emacs now.

OTOH, there are reasons I almost never use Emacs to write fiction and,
though I do use it in some aspects of preparing or making minor edits
of the pre-publication source files (which are in another XML format),
it's not really the primary tool there either.  Still, my use case is
fairly niche because most word processor users (and *all* slide
presentation users) don't need to care about traditional publishing
standards.

So, edge cases like mine aside, you can probably do a lot of what you
want now.  Though I suspect the org-mode project is in a better
position to make that a reality right now.


Regards,
Ben

 1. Including MS's formats out of practicality; let's skip the quirks
    of their license since people on this list either are, or should
    already be, aware of all that.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre)
       [not found]                                                                         ` <11bfe86b-131c-4f55-5125-c269a73e360d@gmx.at>
@ 2020-05-23 11:10                                                                           ` Noam Postavsky
  0 siblings, 0 replies; 281+ messages in thread
From: Noam Postavsky @ 2020-05-23 11:10 UTC (permalink / raw)
  To: martin rudalics; +Cc: Emacs developers

On Sat, 23 May 2020 at 04:22, martin rudalics <rudalics@gmx.at> wrote:

> (setq original-command-error-function #'command-error-function

That should be #'command-error-default-function,

>  > (alternatively, you can hardcode command-error-default-function, but

which is what I meant by this.

>  > then you lose other additions to command-error-function, like
>  > help-command-error-confusable-suggestions)
>
> And maybe 'minibuffer-error-function'.  So I'll stick with your original
> proposal making it the first occurrence of 'add-function' in my initial
> file.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 17:07                               ` Karl Fogel
@ 2020-05-23 20:36                                 ` Dmitry Gutov
  0 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-23 20:36 UTC (permalink / raw)
  To: Karl Fogel, tomas; +Cc: emacs-devel

On 21.05.2020 20:07, Karl Fogel wrote:
> For those who would like to learn more about Blender's efforts to improve its usability for "professional" users -- in this case, helped by someone who is literally a professional user -- there's a Libre Lounge podcast episode that talks about this:
> 
>    https://librelounge.org/episodes/36-david-revoy-on-pepper--carrot-and-free-culture.html

It's a pretty cool interview, but on the Blender side (or its evolution 
of the UI), it seems to covers less than the articles we've read previously.

Episode 38 is also pretty cool, but again it was more of a life 
story/basic community interaction discussion. If it has any lessons for 
Emacs, it's that it's good practice to watch your users and prioritize 
problems, and that the mailing lists are where the trolls are. :-)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 16:20                                 ` xristos
@ 2020-05-24 13:45                                   ` Arthur Miller
  2020-05-24 16:52                                     ` xristos
  2020-05-24 18:31                                     ` Philip K.
  2020-05-25 17:34                                   ` João Távora
  1 sibling, 2 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-24 13:45 UTC (permalink / raw)
  To: xristos; +Cc: tomas, emacs-devel

xristos <xristos@sdf.org> writes:

> A lot of Emacs users, even old users, don't see Emacs as anything more than
> an editor and haven't been exposed to the "moldable information processing
> tool" way of thinking. This should be addressed by us doing everything we
> can to shorten the time needed for a new user to first be fully exposed
> to this paradigm and subsequently ignite the molding process.
Completely agree on that one!

> I see João admit that he's not familiar with a lot of the C-h commands.
> This is a problem that should be easy to fix. I've long seen the Emacs
> tutorial as unnecessarily narrow-minded in its focus on text editing.
> Richard mentioned a robot game but I suggest the tutorial be reworked
> instead to be much more extensive. It should first lay out the models that
> make Emacs powerful and then through exercises expose the user to said
> models and reinforce the central paradigm.
Yes, indeed,  you are onto something here. It would be nice if there
were different smaller tutorials, for example one for text, one for file
managing, one for email etc. I guess everybody could agree with that,
and probably only reason why it didn't happened yet is because somebody
actually have to produce those, which is not as trivial as it might
sound, I guess. There are some floating resources, tutorial-like blog
posts, some YT content etc. I don't know if Emacs could link to those
as extra resources etc.

When we already speak about tutorial, I think it could pick up shortcuts
uses have and automatically show those instead of saying something like
"default shortcut changed" or something similar, I don't remember any
more what it says. Is that very hard to do?

> That should include familiarization with all introspective commands,
> configuration and customization, how buffers and processes work, and a
> practical introduction to Emacs Lisp, including showing IELM and what one
> can do inside it (e.g. Set working buffer).
Yeah, a tutorial on help, a tutorial och semantic navigation, a tutorial
on remote editing, etc. A set of more focused shorter tutorials. But as
said I am affraid that the problem is that somebody has to put
voluntarily work into making this, which might take substantial time.

> I think this would go a long way towards letting users have a glimpse of
> the possibilities on offer.
Sure, I agree.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 10:04                                 ` tomas
@ 2020-05-24 14:05                                   ` Arthur Miller
  0 siblings, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-24 14:05 UTC (permalink / raw)
  To: tomas; +Cc: emacs-devel

tomas@tuxteam.de writes:

> On Thu, May 21, 2020 at 11:33:25AM +0200, Arthur Miller wrote:
>> <tomas@tuxteam.de> writes:
>> 
>> > On Thu, May 21, 2020 at 01:07:41AM +0300, Dmitry Gutov wrote:
>
> [...]
>
>> > So I'd expect a more complex community to have gathered around
>> > Emacs by now.
>> Why? :-)
>
> Because people just don't die that quickly [1] ;-P
>
>> > Basically, I think the main "asset" of a software project
>> > to be it's community [...]
>
> [...]
>
>> Indeed. But for anything to live long, it needs to adapt to changs, and
>> software/IT community changes rapidly.
>
> Fads, I tell you [2] ;-P
>
>> That seems to be basic law of
>> evolution. Emacs does not seem to adapt despite being super adaptable
>> software package so well. Is community big enough to be sustainable in
>> long term?
>
>> > In my eyes, Emacs is doing an outstanding job on that.
>
>> Personally I don't think Emacs will go extinct any time soon, neither,
>> but what will happen in next 40 years? Is it important though? But I
>> would like to see bigger community now so we get even more developers
>> and even better Emacs :-)
>
> Yes -- and part of the job is, whenever there is a complex community,
> discussing with them on what "better" means. And being prepared to
> accept that there are other opinions.
>
> Or forking. Both is OK. Heck, if you are careful about it, forking
> hasn't to be hostile. And it can be productive, too (cf. XEmacs).
>
> Cheers
>
> [1] that was somewhat tongue-in-cheek. I am surprised that
>    ask why a culture complexifies as it evolves.
>
> [2] Of course an exaggeration too. But look back: 1980 it
>    was OO all-over-the-place (Smalltalk was picking height).
>    Then it culminated with Java (which I call the 2000's COBOL).
>    Then it was Hindley-Milner. Now it is leftpad -- uh -- npm.
Njah, npm is already yesteryear :-)

>    Emacs has seen those come and go :-)
>    The art (and you *never* know you'll succeed at that) is
>    to pick up *some* of that.
Indeed, someone said once in some documentary about future, that only
thing we are sure about future is that it always looks differently from
anything we have thought it would look like.

By the way I was just reading some tech new today and I see MS is taking
terminals seroiusly: https://github.com/microsoft/terminal/releases

Seems like they have missed Emacs somehow.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-24 13:45                                   ` Arthur Miller
@ 2020-05-24 16:52                                     ` xristos
  2020-05-24 17:00                                       ` Eli Zaretskii
  2020-05-24 18:31                                     ` Philip K.
  1 sibling, 1 reply; 281+ messages in thread
From: xristos @ 2020-05-24 16:52 UTC (permalink / raw)
  To: Arthur Miller; +Cc: tomas, emacs-devel

On Sun, 24 May 2020 15:45:08 +0200, 
Arthur Miller <arthur.miller@live.com> wrote:
> Yes, indeed,  you are onto something here. It would be nice if there
> were different smaller tutorials, for example one for text, one for file
> managing, one for email etc. I guess everybody could agree with that,
> and probably only reason why it didn't happened yet is because somebody
> actually have to produce those, which is not as trivial as it might
> sound, I guess. There are some floating resources, tutorial-like blog
> posts, some YT content etc. I don't know if Emacs could link to those
> as extra resources etc.

It is important to stress the need for interactivity. Emacs is an
interactive environment and the existing tutorial -aptly- acknowledges
that by also being interactive. Emacs can link to hundreds of additional
resources that don't even come close to having the same impact a more
extensive, _interactive_ tutorial would.

> > That should include familiarization with all introspective commands,
> > configuration and customization, how buffers and processes work, and a
> > practical introduction to Emacs Lisp, including showing IELM and what one
> > can do inside it (e.g. Set working buffer).

> Yeah, a tutorial on help, a tutorial och semantic navigation, a tutorial
> on remote editing, etc. A set of more focused shorter tutorials. But as
> said I am affraid that the problem is that somebody has to put
> voluntarily work into making this, which might take substantial time.

I am bringing this up here to first determine if what I proposed resonates
with others and build some form of consensus. The necessary time & effort
investment can then be more easily justified.

Let me finish by saying that I've been using & programming Emacs daily
for more than a decade, but most of my observations are based on what
I see others come to #emacs on Freenode to ask questions about. It is my
understanding that very few newcomers read the -extensive- Emacs manuals
and even if they do, a lot of them still lack a basic understanding of
the fundamental models (buffers and processes) that Emacs is built on.
And these are the areas that I would suggest be included first (rather
than specialized areas like semantic navigation, remote editing which can
be added later).

It may be helpful to think of the tutorial as a programmable mode that
can be extended by additional libraries. That way, a library author can
provide a mini-tutorial for his library that plugs into Emacs's. But
let me stress that these are secondary considerations and that plenty of
low-hanging fruit can be plucked by simply extending the existing tutorial
to include material that covers the fundamental models of Emacs and provides
a simple interactive introduction to Emacs Lisp and IELM.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-24 16:52                                     ` xristos
@ 2020-05-24 17:00                                       ` Eli Zaretskii
  0 siblings, 0 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-24 17:00 UTC (permalink / raw)
  To: xristos; +Cc: tomas, arthur.miller, emacs-devel

> From: xristos <xristos@sdf.org>
> Date: Sun, 24 May 2020 12:52:04 -0400
> Cc: tomas@tuxteam.de, emacs-devel@gnu.org
> 
> I am bringing this up here to first determine if what I proposed resonates
> with others and build some form of consensus. The necessary time & effort
> investment can then be more easily justified.

There's no need to wait for any consensus.  I'm telling you here and
now that any well-written tutorial on any subject related to using
Emacs will be very welcome.  It's just that writing a good tutorial is
an extremely hard and demanding job.

So if you or someone else have the time and the motivation, and think
you can produce a good tutorial on any of the related subjects, please
do, and thanks in advance.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-24 13:45                                   ` Arthur Miller
  2020-05-24 16:52                                     ` xristos
@ 2020-05-24 18:31                                     ` Philip K.
  1 sibling, 0 replies; 281+ messages in thread
From: Philip K. @ 2020-05-24 18:31 UTC (permalink / raw)
  To: Arthur Miller; +Cc: xristos, tomas, emacs-devel

Arthur Miller <arthur.miller@live.com> writes:

> Yes, indeed,  you are onto something here. It would be nice if there
> were different smaller tutorials, for example one for text, one for file
> managing, one for email etc. I guess everybody could agree with that,
> and probably only reason why it didn't happened yet is because somebody
> actually have to produce those, which is not as trivial as it might
> sound, I guess. There are some floating resources, tutorial-like blog
> posts, some YT content etc. I don't know if Emacs could link to those
> as extra resources etc.

I find this very interesting, the built in tutorial is often seen as
boring, and I remember trying multiple times to get through it, most
after 10%-20%.

What might be interesting is to use child frames to only show what's
necessary, like many other programms do (highlighting what's
interesting, waiting for user interaction, etc.).

But that would require a kind of DSL or pseudo-DSL to "programm" these
interactive tutorials, unless one would want to manually write them out
for every topic. Might look something like this:

        (deftutorial window-managment "Window Managment"
          "A basic tutorial on window managment"
          :estemated-time "3m"
          :difficulty 'easy
          (show "This tutorial introduces the user to window managment")
          (wait)
          (show "Press \\[split-window-below] to split the current window.")
          (expect 'split-window-below)
          (show "Good! Now you can switch to that buffer with
 C-x o runs the \\[other-window].")
          ...)

where the user might later invoke a command like M-x introduce RET, and
choose "Window Managment" from a list of options. On the other hand, a
list-buffers like approach would be better, because the default
completion system can be unintuitive.

Ideally it might even be used by external packages to introduce user to
whatever it has to offer.

-- 
	Philip K.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Making Emacs popular again with a video
       [not found]                     ` <E1jcLVP-0003SB-II@fencepost.gnu.org>
@ 2020-05-24 19:16                       ` Ben McGinnes
  0 siblings, 0 replies; 281+ messages in thread
From: Ben McGinnes @ 2020-05-24 19:16 UTC (permalink / raw)
  To: Richard Stallman
  Cc: rpluim, colinetnathan98, andreas.roehler, arthur.miller,
	emacs-devel

[-- Attachment #1: Type: text/plain, Size: 4887 bytes --]

On Sat, May 23, 2020 at 12:11:27AM -0400, Richard Stallman wrote:
> 
>> Would you intend that to produce existing open standard formats
>> (i.e. mainly OpenDocument Format files, but someone will inevitably
>> include DOCX and PPTX out of necessity)?
> 
> Sure, ideally.

Well, ODF does have a flat file format which can make it a little
easier to work with, though it's been a few years since I last did
anything like that.  Actually, maybe more than a few.  IIRC, though,
DOCX is far less painful under the hood (which is annoying, but not
much we can do about that now).

>> Perhaps.  It depends on how much your vision actually requires
>> native support and how much can be done by utilising existing
>> technology which GNU Emacs already understands to produce that end
>> result.
> 
> It is fine to make use of external free programs to do the job,
> provided that gives good practical results.

Then that opens up a lot of options, especially for intermediate
solutions to produce the desired output prior to achieving WYSIWYG
functionality in Emacs.  You should certainly be able to achieve
WYSIWYM right now.  Org-mode effectively already does.

Mainly, though, I was thinking of taking advantage of the fact that
the existing document formats already used are XML formats then you
could just utlise that and XSLT to go from some simpler format and
interface to produce whatever you want.  There's already plenty of
existing support within the GNU project, so why not use it?

> Perhaps I didn't make this clear, but the goal I have in mind
> includes WYSIWYG display of formatted text.

Yeah, I thought so, hence the "ambitious" comment.

>> OTOH, there are reasons I almost never use Emacs to write fiction 
> 
> Would you like to explain why?  We might learn something from seeing
> your reasons.

Fair enough.  For me it's a combination of function and state of mind;
Emacs can only really affect the former, of course.

I suspect much of the functionality issues could probably be gotten
around with some custom major and/or minor modes.  There are certain
things which are generally just done with styles or templates that
most purely text based editors would address by inserting additional
content (e.g. extra blank lines, special characters, etc.).  Ligatures
would be very nice, but are less of a concern when the publishing
software[1] will take care of that properly later.

Smart quotation marks for either single or double quotes are pretty
much essential for anything dialogue related (so ‘ or ’ instead of ',
except when the latter is just an apostrophe - though that does get a
little more finicky sometimes, and “ or ” instead of ").  As well as
"smart typing" like always capitalising the lone "i" or fixing
capitalisation on a new sentence is frequently exploited when writing
a lot.  There's almost certainly several other things which aren't
coming to mind because normally I don't need to think about them.

To put into perspective how much a difference these little things can
make:  I think my record in one writing session was a chapter of about
20,800 words in around 21 hours.  Doing that without all those little
features would either take far longer (and risk interrupting the
writing flow), or significantly increase the amount of manual editing
required later.

The state of mind thing is more a matter of encouraging the creative
flow and sometimes that means manipulating the way I see the text as I
write it (the nature of which generally varies according to the
subject matter).  Usually, though it just comes down to never having
to really think about doing something with the software other than
just write.

At the moment LibreOffice does all that and more, which makes it ideal
for fiction and longer political work.  With the added bonus of not
generally making my mind follow more technical paths when I look at
it.  Which is something Emacs does with me to a large extent, since
it's so integral to many of my more geeky pursuits.  I've certainly
quite happily used it to write technical documentation[2] and code,
and no doubt will continue to do so.  It's even helped with part of my
little Unicode cheat sheet,[3] even though that's still mostly done in
LibreOffice.[4]


Regards,
Ben

 1. My publishing platform is rather more technical than the scope of
    this thread, so I'm leaving that part out.

 2. Like this (using Org-mode and its XHTML export):
    http://files.au.adversary.org/crypto/gpgme-python-howto.html

 3. http://files.east1.us.adversary.org/files/UnicodeNotes.pdf

 4. Because Emacs still beats everything else for inserting code
    points from plane 1 or above.  The relevant part of my ~/.emacs
    file for displaying most of the current Unicode spec is at the end
    of the PDF linked above.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-22  9:31                                                                                         ` martin rudalics
@ 2020-05-25  2:37                                                                                           ` Dmitry Gutov
  2020-05-26  8:06                                                                                             ` martin rudalics
  0 siblings, 1 reply; 281+ messages in thread
From: Dmitry Gutov @ 2020-05-25  2:37 UTC (permalink / raw)
  To: martin rudalics, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

On 22.05.2020 12:31, martin rudalics wrote:
>  >>  > I've also noticed that initial blink during startup,
> 
> I forgot to ask what "startup" means here.  Invoking 'pop-up-mini-mode'
> itself or starting a dialogue as with 'ido-mode'?

Neither. Emacs startup, and the blink that comes with re-creating the 
frame. I just meant that I was going to talk about this at some later 
point, but now I didn't have to.

>  >>  > but didn't know
>  >>  > what to attribute it to. Would be great to be able to avoid it.
>  >>
>  >> Is this a blink that happens also when you do
>  >>
>  >> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
>  >>
>  >> or does it require the presence of a child frame?
>  >
>  > I couldn't manage to reproduce the bug there. Even with
>  >>  > resize-mini-frames=t. But then, it doesn't resize as responsively 
> as your code.
> 
> Why not?  The resizing step is quite the same.

One difference I noticed is that the child frame created by 
pop-up-mini-mode is constant width, but the mini-frame created by the 
above recipe updates its width dynamically as well. And always feels 
kinda cramped.

In any case, it really seems like the blink is due to how updating the 
size of the popup works: first, the buffer is updated (and redrawn), 
then the timer resizes the popup, and the buffer is redrawn again. Not 
sure what the better implementation is going to do, though.

>  > This is arcane stuff, and it took someone really motivated to turn 
> the child frames support you created into a library every Emacs 
> developer can use. There are a few other authors who understand it, but 
> we can't expect the average user to know these details.
> 
> This is not about understanding the details.  If you want to use a mode
> that is based on child frames and minibuffer-only frames, you first have
> to know what kind of advantages these offer.  And both, package
> developers and users, should be aware of the basic glitches that are to
> be expected in this area.

That could be described in the README, I suppose. And it's one thing to 
grasp the benefits/drawbacks, and another thing to know in advance how 
to set up a minibuffer-only frame for your own setup.

> Sometimes I'm not sure whether child frames are used only because they
> are there.

Well, why else? It's the only real way we have to implement "popup" 
windows. Too bad they don't work in the terminal.

> Basically, child frames make sense only if any changes the
> window manager applies to the parent frame (like deletion, iconifying,
> changes of visibility, size or position including the z-order) should
> automatically (without Emacs intervention) apply to the child frame too.
> I added child frame support mainly because the handling of the signals
> that come with any of these changes can be cumbersome and occasionally
> even daunting.

Makes sense.

> Things a package could handle with a normal frame or a tooltip frame
> should probably be done without child frames because, for example,
> reparenting a child frame and fitting its size and position to the new
> frame can be tricky.

Not sure how it's relevant to the package under discussion. The 
minibuffer frame I've tried with that default-frame-alist setup didn't 
really provide a good UI, looks or behavior-wise.

>  >> And even after that there may be glitches, especially when
>  >> working with multiple frames.  For example, transferring focus from one
>  >> frame to another, while a minibuffer interaction is in progress, is a
>  >> hairy operation regardless of whether you use the standard setup, a
>  >> top-level minibuffer(-only) frame or a minibuffer child frame.
>  >
>  > Is there a problem in creating a minibuffer child frame for every frame?
> 
> I had that in an initial version but it's unlikely that I can still find
> the code.  By design, you can create and use an arbitrary number of
> minibuffer frames.  The only problem is to find the right frame you want
> to use ...

Via... a frame parameter? OK, I'm probably not going to be very helpful 
here, at this level of discussion detail. If there are specific hard 
problems with repro senarios, I could try to take a look later, but I'm 
only interested in going in this direction if our goal is to make a 
package for a broad audience.

Anyway, having glitches could be fine if they are outside of the main 
usage scenarios and/or well-understood and documented.

> Note also that IIRC the text you see in a minibuffer window is sometimes
> only available there and bears no relationship to any text stored in any
> buffer (or at least the buffer whose contents the minibuffer window is
> supposed to display).  The display engine automagically handles the
> display and sometimes cancels the traces of the source it used (Eli will
> correct me if I'm wrong).

That's um, sounds like space for improvement.

>  >> I would have to guess the user's intention here.  'pop-up-mini-mode'
>  >> does not forbid a mixed mode where one frame uses its own minibuffer
>  >> window for interaction and other frames want to use the more "global"
>  >> minibuffer-only window 'pop-up-mini-mode' found when it started.
>  >
>  > We don't have to support every possible intention, just the most 
> likely one. The rest can be left for future development, or available as 
> a customization option.
> 
> Agreed.  And that's why users have to put the necessary customizations
> in their init files and not simply call 'pop-up-mini-mode' from a
> running session.  Although the latter might be a seductive way to test
> it.

Are you sure this customization couldn't be applied by pop-up-mini-mode? 
Alternatively, it could be a setup function.

>  > BTW, when you delete the initial frame at startup, is there a
>  > possibility to make in invisible at the start, so that it's actually
>  > never displayed, and when it's deleted, that blink doesn't happen?
> 
> You mean when Emacs starts in minibuffer-only mode, I presume.  It
> should be possible but the following part
> 
>          ;; If the frame isn't visible yet, wait till it is.
>          ;; If the user has to position the window,
>          ;; Emacs doesn't know its real position until
>          ;; the frame is seen to be visible.
>          (while (not (cdr (assq 'visibility
>                     (frame-parameters frame-initial-frame))))
>            (sleep-for 1))
> 
> inhibits it currently.  The problem perceived here is that one cannot
> derive the actual coordinates of a frame _before_ that frame was mapped
> by the WM and mapping always means to make it visible.

What about full transparency, then?

> OTOH the actual
> coordinates of the minibuffer-equipped frame are needed to make the
> minibuffer-only frame appear at the same position and with the
> requested, properly modified size, taking the user customizations into
> account.

The minibuffer-only frame which is immediately hidden itself while 
pop-up-mini-mode is active?

>  >> Also
>  >> note that we have various strategies to assign the minibuffer window
>  >> ('set-minibuffer-window', the 'minibuffer' frame parameter) so all this
>  >> is more convoluted than it appears at first sight.
>  >
>  > These are implementation options, right? Just pick the most appropriate.
> 
> These are user options a user can change any time in a running session.

Perhaps we can say that they shouldn't.

>  >>  > - pop-up-mini-mode is enabled in the user's init script. Is that 
> worse
>  >>  > than early init? We could try to document the early init as the best
>  >>  > option.
>  >>
>  >> It's not a good option if it fails for some reason.  On a TTY, say.
>  >
>  > So pop-up-mini-mode would check if it's running on a terminal, and if 
> so, abort with a message.
> 
> But you don't like such aborts ...

I don't like abort which presume a lot of prior knowledge and/or manual 
setup.

"Sorry, pop-up-mini-mode is not supported in a terminal" sounds just 
fine to me. There's nothing else to do anyway.

>  > A full reinstall of a distro and/or switch to another one is out of 
> the question, I take it?
>  >
>  > I'm not sure it's a GNOME issue. It doesn't update itself: package 
> managers do it.
> 
> Maybe it's a also just a GNOME on Debian (unstable) issue.  Installing
> GNOME shell here as additional desktop forced me to install all sorts of
> additional software amounting in sum to around one GB of code.  This
> included games and horrific applications like tracker which I had a hard
> time to switch off.  I'll eventually try to remove and reinstall it but
> it's nothing for the faint at heart.

There's also the option to use a virtual machine. Provided the 
"physical" machine is fast enough.

>  > With Mutter only, or with GTK3 toolkit build only? I can make a build
>  > using a different toolkit, at least.
> 
> Try both, if you can.

With Lucid, the blink is the same.

>  >>  > Another issue: when the child frame covers the scroll bar, it 
> renders some junk on it.
>  >>
>  >> The horizontal scroll bar?  That's where it is here all the time.
>  >
>  > The vertical one. The child frame spans the whole width of the frame, 
> and its right end overlaps the parent frame's scroll bar.
> 
> I faintly recall to have seen this with GNOME shell.  Which means you
> have to put it on the mode line or the horizontal scroll bar there.  Do
> other child frames too have problems when covering the scroll bar?  What
> happens with the scroll bar at the right?  What happens when the
> minibuffer window has a scroll bar itself?

I have just tried company-posframe, which renders its popup through the 
posframe package, and could find such artifacts, even when the popup 
overlapped the right scroll bar.

The minibuffer child frame from pop-up-mini-mode seemed to show glitches 
like that when it was resized, to accommodate multiple lines.

>  > I agree it's a problem, just don't see how it is a problem for this 
> particular endeavor.
> 
> Because "this particular endeavor" would then only serve to cover an
> underlying, deeper-rooted problem and possibly postpone fixing that.

I wonder if anyone would be working on it at all, if we weren't talking 
about it here.

>  > Sounds like we're talking about low-level code only, right? Like 
> prin1. I suspect there's a limited number of functions like that.
> 
> High-level code - for example, code that wants to know the width of the
> minibuffer window before putting things there.

OK. I've seen problems of this sort.

>  >> It would be interesting to see a list of requirements for a practical
>  >> solution to this problem.
>  >
>  > Behavior-wise, I think we're fairly close already, but "the user has 
> to get familiar with both, minibuffer windows and child frames, first" 
> sounds like a deal-breaker.
> 
> I'd still like to see a list of what people really would like to see wrt
> positioning and resizing the minibuffer window first.

Does the list at the bottom here look useful? 
https://github.com/honmaple/emacs-maple-minibuffer/#maple-minibufferpostion-type 


If we had something like that, as well as automatic resizing of the 
minibuffer popup without blinking, that would be great. Especially if 
the result worked fine with packages such as icomplete-vertical-mode.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-21 16:20                                 ` xristos
  2020-05-24 13:45                                   ` Arthur Miller
@ 2020-05-25 17:34                                   ` João Távora
  2020-05-26  4:14                                     ` Richard Stallman
  1 sibling, 1 reply; 281+ messages in thread
From: João Távora @ 2020-05-25 17:34 UTC (permalink / raw)
  To: xristos; +Cc: tomas, Arthur Miller, emacs-devel

xristos <xristos@sdf.org> writes:

> On Thu, 21 May 2020 11:33:25 +0200, 
> I see João admit that he's not familiar with a lot of the C-h commands.
> This is a problem that should be easy to fix. I've long seen the Emacs
> tutorial as unnecessarily narrow-minded in its focus on text editing.

Just caught my name here by accident and accurately cited :-) I just
wanted to add that I first encoutered the Emacs tutorial some 3/4 years
after I started using Emacs and it was a wonderful revelation: _that_
was the thing that made me remove all my "make emacs work like Eclipse"
configuration.  So, narrow-minded or not, pretty effective for me.  I
haven't done the tutorial in years... I do vaguely remember having fun
with it and wanting it to go on, but finding it pretty short.  As a
provocation, I wonder if more of that adventure-style interactive
tutorial wouldn't be the thing to bring those Spacemancs fanboys to
vanilla?

João



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-25 17:34                                   ` João Távora
@ 2020-05-26  4:14                                     ` Richard Stallman
  2020-05-26 11:32                                       ` João Távora
  0 siblings, 1 reply; 281+ messages in thread
From: Richard Stallman @ 2020-05-26  4:14 UTC (permalink / raw)
  To: João Távora
  Cc: xristos, tomas, arthur.miller, 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. ]]]

  >   As a
  > provocation, I wonder if more of that adventure-style interactive
  > tutorial wouldn't be the thing to bring those Spacemancs fanboys to
  > vanilla?

I suggested a different sort of game-tutorial a week ago, where you
try to correct random errors in a text while a robot introduces them
and speeds up over time.

We could call it Text Invaders.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-25  2:37                                                                                           ` Dmitry Gutov
@ 2020-05-26  8:06                                                                                             ` martin rudalics
  2020-06-05  2:40                                                                                               ` pop-up-mini-mode, was " Dmitry Gutov
  0 siblings, 1 reply; 281+ messages in thread
From: martin rudalics @ 2020-05-26  8:06 UTC (permalink / raw)
  To: Dmitry Gutov, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

 >> I forgot to ask what "startup" means here.  Invoking 'pop-up-mini-mode'
 >> itself or starting a dialogue as with 'ido-mode'?
 >
 > Neither. Emacs startup, and the blink that comes with re-creating the frame. I just meant that I was going to talk about this at some later point, but now I didn't have to.
...
 >
 >>  >>  > but didn't know
 >>  >>  > what to attribute it to. Would be great to be able to avoid it.
 >>  >>
 >>  >> Is this a blink that happens also when you do
 >>  >>
 >>  >> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
 >>  >>
 >>  >> or does it require the presence of a child frame?
 >>  >
 >>  > I couldn't manage to reproduce the bug there.

I'm confused.  When you do

emacs -Q --eval "(setq initial-frame-alist '((minibuffer . nil)))"

you do not see any "blink".  Right?  When instead you do

emacs -Q --eval "(setq initial-frame-alist '((minibuffer . child-frame)))"

do you see the blink?  Finally, when you do

emacs -Q --load ~/pop-up-mini.el

you see a blink.  Right?

 > One difference I noticed is that the child frame created by
 > pop-up-mini-mode is constant width,

I don't understand.  Here it changes its width together with its parent
frame.

 > but the mini-frame created by the
 > above recipe updates its width dynamically as well

Why "as well" if the pop-up-mini-mode child frame is _constant_ width?

 > . And always feels kinda cramped.

Which one is cramped?  The normal minibuffer-only frame?

 > In any case, it really seems like the blink is due to how updating the size of the popup works: first, the buffer is updated (and redrawn), then the timer resizes the popup, and the buffer is redrawn again. Not sure what the better implementation is going to do, though.

There is one problem you cannot avoid: You have to know the size of the
minibuffer text before resizing its frame and only after that you can
determine its position (within the display or its parent frame).

 > Well, why else? It's the only real way we have to implement "popup" windows. Too bad they don't work in the terminal.

We could do that just as we pop up menus in a terminal.  But such popup
windows would be modal - you cannot really pop them down to see the text
beneath them.

 > Not sure how it's relevant to the package under discussion. The minibuffer frame I've tried with that default-frame-alist setup didn't really provide a good UI, looks or behavior-wise.

The (minibuffer . nil) one or the (minibuffer . child-frame) one?

 >>  > Is there a problem in creating a minibuffer child frame for every frame?
 >>
 >> I had that in an initial version but it's unlikely that I can still find
 >> the code.  By design, you can create and use an arbitrary number of
 >> minibuffer frames.  The only problem is to find the right frame you want
 >> to use ...
 >
 > Via... a frame parameter? OK, I'm probably not going to be very helpful here, at this level of discussion detail. If there are specific hard problems with repro senarios, I could try to take a look later, but I'm only interested in going in this direction if our goal is to make a package for a broad audience.

Currently, every frame must have a corresponding minibuffer window.  If
you have more than one minibuffer window at hand, you have to decide
which one to choose.  For example, with (minibuffer . child-frame) the
situation is clear - the minibuffer window of each frame is that of its
minibuffer child frame.

 >> Agreed.  And that's why users have to put the necessary customizations
 >> in their init files and not simply call 'pop-up-mini-mode' from a
 >> running session.  Although the latter might be a seductive way to test
 >> it.
 >
 > Are you sure this customization couldn't be applied by pop-up-mini-mode? Alternatively, it could be a setup function.

In practice 'pop-up-mini-mode' is simply not something that comes up
without customizations in your init file or by calling it from the
command line.  The reason is the one explained before: You cannot
convert a minibuffer-equipped frame into a minibuffer-less frame (or do
the opposite).  The same holds for (minibuffer . child-frame) and
(minibuffer . nil) setups.

 >>  > BTW, when you delete the initial frame at startup, is there a
 >>  > possibility to make in invisible at the start, so that it's actually
 >>  > never displayed, and when it's deleted, that blink doesn't happen?
 >>
 >> You mean when Emacs starts in minibuffer-only mode, I presume.  It
 >> should be possible but the following part
 >>
 >>          ;; If the frame isn't visible yet, wait till it is.
 >>          ;; If the user has to position the window,
 >>          ;; Emacs doesn't know its real position until
 >>          ;; the frame is seen to be visible.
 >>          (while (not (cdr (assq 'visibility
 >>                     (frame-parameters frame-initial-frame))))
 >>            (sleep-for 1))
 >>
 >> inhibits it currently.  The problem perceived here is that one cannot
 >> derive the actual coordinates of a frame _before_ that frame was mapped
 >> by the WM and mapping always means to make it visible.
 >
 > What about full transparency, then?

You mean we should come up with a fully transparent frame first, resize
it and make it opaque then.  I never played around with that but note
that this would require a compositing window manager and not all of them
support transparency of child frames.

 >> OTOH the actual
 >> coordinates of the minibuffer-equipped frame are needed to make the
 >> minibuffer-only frame appear at the same position and with the
 >> requested, properly modified size, taking the user customizations into
 >> account.
 >
 > The minibuffer-only frame which is immediately hidden itself while pop-up-mini-mode is active?

The "normal" frame.  Note that you have to delete the old
minibuffer-equipped frame created initially and then replace it with an
"as similar as possible" minibuffer-less frame.  Look at the code of
'frame-notice-user-settings'.

 >>  >> Also
 >>  >> note that we have various strategies to assign the minibuffer window
 >>  >> ('set-minibuffer-window', the 'minibuffer' frame parameter) so all this
 >>  >> is more convoluted than it appears at first sight.
 >>  >
 >>  > These are implementation options, right? Just pick the most appropriate.
 >>
 >> These are user options a user can change any time in a running session.
 >
 > Perhaps we can say that they shouldn't.

I think they do already.

 >> But you don't like such aborts ...
 >
 > I don't like abort which presume a lot of prior knowledge and/or manual setup.
 >
 > "Sorry, pop-up-mini-mode is not supported in a terminal" sounds just fine to me. There's nothing else to do anyway.

It means that when you customize the minibuffer behavior in your init
file, you will have to take into account whether you are going to work
on a terminal or a GUI or maybe both.

 > With Lucid, the blink is the same.

OK.  IIRC you had some old machine somewhere with a non-mutter WM ...

 > I have just tried company-posframe, which renders its popup through the posframe package, and could find such artifacts, even when the popup overlapped the right scroll bar.

"could find" or "could not find"?

 > The minibuffer child frame from pop-up-mini-mode seemed to show glitches like that when it was resized, to accommodate multiple lines.

Glitches with the scroll bar?

 >> I'd still like to see a list of what people really would like to see wrt
 >> positioning and resizing the minibuffer window first.
 >
 > Does the list at the bottom here look useful? https://github.com/honmaple/emacs-maple-minibuffer/#maple-minibufferpostion-type

You mean the list of positions?  We can add that to 'pop-up-mini-mode'
if we make sure that the child frame always fits into its parent.
Although we do not care much about the size of the minibuffer window of
a minibuffer-equipped frame when that frame gets very small either.

 > If we had something like that, as well as automatic resizing of the minibuffer popup without blinking, that would be great. Especially if the result worked fine with packages such as icomplete-vertical-mode.

Since I already don't use icomplete investigating the latter would be
quite demanding for me.  Does 'icomplete-vertical-mode' have problems
with Emacs' default minibuffer layout?

martin



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-26  4:14                                     ` Richard Stallman
@ 2020-05-26 11:32                                       ` João Távora
  2020-05-27  3:08                                         ` Richard Stallman
  0 siblings, 1 reply; 281+ messages in thread
From: João Távora @ 2020-05-26 11:32 UTC (permalink / raw)
  To: Richard Stallman; +Cc: xristos, tomas, arthur.miller, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> I suggested a different sort of game-tutorial a week ago, where you
> try to correct random errors in a text while a robot introduces them
> and speeds up over time.
>
> We could call it Text Invaders.

That's a nice idea.  A slower-passed classic adventure/charade where
there is an encrypted message in some piece of text could also be fun.
But writing these is hard (I for one wouldn't no where to start).

João



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-26 11:32                                       ` João Távora
@ 2020-05-27  3:08                                         ` Richard Stallman
  2020-05-27  5:01                                           ` Drew Adams
  2020-05-29 12:59                                           ` Arthur Miller
  0 siblings, 2 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-27  3:08 UTC (permalink / raw)
  To: João Távora
  Cc: xristos, tomas, arthur.miller, 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. ]]]

  > > We could call it Text Invaders.

  > That's a nice idea.  A slower-passed classic adventure/charade where
  > there is an encrypted message in some piece of text could also be fun.
  > But writing these is hard (I for one wouldn't no where to start).

Text Invaders should be easy.  You start with a buffer containing
suitable text.  Set up a timer that runs N times a second
and carries out one move for the invaders.

Every so often you reduce the timer interval a few percent,
so that the game gets harder.

As for the user, you don't have to do anything except switch to the buffer
in a window for the user to edit.
The user's "moves" are simply Emacs editing commands, executed as fast as the
user types them.

Delightfully simple!

The errors don't have to be random.  An invader could move over the
screen, introducing errors.  You eliminate it by moving point onto it.
Then you can fix the errors it has already inserted.

Lots of variations can be imagined.


-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-27  3:08                                         ` Richard Stallman
@ 2020-05-27  5:01                                           ` Drew Adams
  2020-05-29 12:59                                           ` Arthur Miller
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-27  5:01 UTC (permalink / raw)
  To: rms, João Távora
  Cc: xristos, tomas, arthur.miller, emacs-devel

> The errors don't have to be random.  An invader could move over the
> screen, introducing errors.

A `dissociated-press' effect comes to mind...



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: (emacs) Intro [was: Making Emacs popular again with a video]
       [not found]                             ` <M7sSK-m--3-2@tutanota.com-M7sSUVm--3-2>
@ 2020-05-28  1:21                               ` excalamus--- via Emacs development discussions.
  2020-05-28  7:08                                 ` Eli Zaretskii
  2020-05-28 10:23                                 ` Stefan Kangas
  0 siblings, 2 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-28  1:21 UTC (permalink / raw)
  To: excalamus; +Cc: Drew Adams, Emacs Devel


Updated the proposed intro based on everyone's excellent feedback!

> (nil)Top
>
> Welcome to the Exciting World of GNU Emacs!
> *******************************************
>
> GNU Emacs is born of two ideas, the GNU project and Emacs editors.  The
> goal of the GNU project is to provide a complete, free software system.
> This means GNU Emacs respects you. It can adapt to how you work, not the
> other way around![1] An "Emacs" is a command oriented text editor
> designed for introspection and extensibility.  These qualities enable
> far more than basic word processing, as this manual describes.
>
> "Introspection" means GNU Emacs has self-knowledge.  Every aspect of the
> system is documented and accessible.  Each level of inquiry has
> tutorials, guides, and references.  It can answer questions like, "What
> commands might help me?", "What does this do?", and, "How does this
> work?"  The documentation extends from general concepts to the source
> code itself!  GNU Emacs has everything conveniently in-house, at your
> fingertips.  See Help.
>
> "Extensibility" means that you can alter GNU Emacs itself.  You can
> customize the environment, from keyboard shortcuts to color themes, and
> most everything in-between.  See Customization.  Moreover, you can
> create and apply new commands in real-time. These can be packaged and
> shared with the diverse Emacs community.  Most of GNU Emacs is written
> in Lisp.  See Emacs Lisp Intro(eintr) if you want to learn how to extend
> GNU Emacs.
>
> Authors and researchers, as well as programmers, use GNU Emacs.  It has
> seen active development for more than 40 years and includes innumerable
> features; it is a heritage as much as a tool.  We love GNU Emacs because
> we find its editing environment a rewarding experience like no other.
> We hope you'll feel that way, too.
>
>    ---------- Footnotes ----------
>
>    [1] GNU is a recursive acronym for GNU's Not Unix.  The 'G' in GNU
>    is not silent.  To learn more about the GNU project and how it can
>    benefit you, see Philosophy (<https://www.gnu.org/philosophy/>)

I like this revision, though I have two reservations:

First, I think it oversells the accessibility of the documentation.
The Emacs documentation is extensive and well written.  However, I
find it quite difficult to navigate to a concept if that thing isn't a
function or variable.  I have been a beginner and asked myself, "What
is a cons cell?".  I found then, as I often still do, that leaving
Emacs (to use a web browser) yields results fast enough to not use
Emacs itself.  Ironically, I most often wind up at the gnu.org html
documentation.

Second, the menu description is "Intro::An introduction to Emacs
concepts" which is no longer true in this version.  I have updated it
to be an intro to *GNU* Emacs, which includes reference to the GNU
project.  I consider being a component of the GNU system a feature and
something integral to distinguishing GNU Emacs from other Emacsen.  It
feels right to talk about it in the manual introduction.  However,
this implies structural, if not intention, changes to the overall
manual.  I feel those are over my head at this point.  There are less
dramatic doc tasks to assist with.

Thoughts?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-15  3:18               ` Richard Stallman
  2020-05-16  0:56                 ` Tak Kunihiro
@ 2020-05-28  4:12                 ` Karl Fogel
  2020-05-28  5:51                   ` Eduardo Ochs
                                     ` (2 more replies)
  1 sibling, 3 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-28  4:12 UTC (permalink / raw)
  To: Richard Stallman; +Cc: andreas.roehler, emacs-devel

On 14 May 2020, Richard Stallman wrote:
>>Another area is the keybinding space and the minibuffer.  Just
>>about every time I have watched a new user use Emacs, I have noticed
>>how frequently they accidentally hit some key combination or sequence
>>and wind up in some weird state that they never meant to be in -- and
>>don't know how to get out of.
>
>We made this very simple a few years ago: Just keep typing C-g.
>I guess these users don't know that.

Sometimes they know that, but it's still stressful for them to have to do it.  They don't like the sensation of getting into state they don't understand, and then having to type a magical quit-key to get out of that state.  It makes them apprehensive about even using the editor -- they feel like they got bitten.

>Can anyone thing of a better way to teach them about this?
>It could teach them first about the minibuffer, then about C-g
>to get out.  It could copy the current minibuffer prompt
>into the help screen to make the explanation clearer.
>
>The tricky part is how to detect when a user could use this help.

I don't think the issue is ignorance about C-g.  It's that people have a relationship with software interfaces in which they're not accustomed to being bitten.  Even when the bite draws no blood, they still don't like the feeling.

I can see directly that they don't like the feeling, that it's upsetting to them.  I conjecture that part of the reason is that even if they quickly ascertain that everything's all right this time, they still have a (rational) fear that the next time the bite might actually cause harm -- e.g., that maybe they'll lose a file, or accidentally rename something, or that edits that they don't know about will be accidentally made somewhere.  

I haven't actually asked new users if that's their worry, but on the now-rare occasions when Emacs bites me, I worry about such things.  Also, I've been using Emacs long enough to know that most likely nothing harmful happened, and that if I patiently unwind the state I'll be able to figure it all out.  A newcomer does not have that comfort at first, and they can only acquire it through sustained exposure to the editor.

Again, none of the above is meant to suggest that Emacs should change something.  I'm just saying that we should be intentional about the kinds of users Emacs is likely to attract, and not make changes designed around people who are unlikely to be long-term Emacs users anyway.

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28  4:12                 ` Karl Fogel
@ 2020-05-28  5:51                   ` Eduardo Ochs
  2020-05-28  6:13                   ` Drew Adams
  2020-05-29  3:04                   ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Eduardo Ochs @ 2020-05-28  5:51 UTC (permalink / raw)
  To: Karl Fogel, Emacs developers

Maybe we should experiment with changing the line in the startup
screen that says

  To quit a partially entered command, type Control-g.

to make it also mention <ESC> <ESC> <ESC>, and also add links to these
nodes of the Emacs Manual...

  (info "(emacs)Quitting")
  (info "(emacs)Basic Undo")

I just noticed that I don't know where the manual explains that Emacs
makes very hard for users to lose files or text with a single wrong
keystroke.  When I learned GNU/Linux it was somehow obvious that an
editor that allowed that would be considered very rude - but I checked
the definiton of "rude" in the Jargon Dictionary with "dict rude" and
it says just this:

  rude
   adj.

      1. (of a program) Badly written.

      2. Functionally poor, e.g., a program that is very difficult to
      use because of gratuitously poor (random?) design decisions.
      Oppose {cuspy}.

      3. Anything that manipulates a shared resource without regard
      for its other users in such a way as to cause a (non-fatal)
      problem. Examples: programs that change tty modes without
      resetting them on exit, or windowing programs that keep forcing
      themselves to the top of the window stack.

which means that I'm misremembering things.

Here's one easy way (untested!) to experiment with that. If you live
with someone who is learning Emacs, change the function
`fancy-startup-tail' in the file startup.el in the person's computer
and explain to her that you are trying to get a better startup screen
and would like her to test it, stick a post-it to her screen or table
or whatever that says "M-x fancy-startup-screen", and tell her to go
back to the modified startup screen whenever she's lost.

I can't test that because of the quarantine and because I live alone
with Doggy.

  Cheers,
    Eduardo Ochs
    http://angg.twu.net/emacsconf2019.html


On Thu, 28 May 2020 at 01:13, Karl Fogel <kfogel@red-bean.com> wrote:
>
> Sometimes they know that, but it's still stressful for them to have
> to do it.  They don't like the sensation of getting into state
> they don't understand, and then having to type a magical quit-key to
> get out of that state.  It makes them apprehensive about even
> using the editor -- they feel like they got bitten.
>
> (...)
>
> I don't think the issue is ignorance about C-g.  It's that people
> have a relationship with software interfaces in which they're not
> accustomed to being bitten.  Even when the bite draws no blood,
> they still don't like the feeling.
>
> I can see directly that they don't like the feeling, that it's
> upsetting to them.  I conjecture that part of the reason is that
> even if they quickly ascertain that everything's all right this
> time, they still have a (rational) fear that the next time the bite
> might actually cause harm -- e.g., that maybe they'll lose a file,
> or accidentally rename something, or that edits that they don't know
> about will be accidentally made somewhere.
>
> I haven't actually asked new users if that's their worry, but on the
> now-rare occasions when Emacs bites me, I worry about such things.
>  Also, I've been using Emacs long enough to know that most likely
> nothing harmful happened, and that if I patiently unwind the state
> I'll be able to figure it all out.  A newcomer does not have that
> comfort at first, and they can only acquire it through sustained
> exposure to the editor.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-28  4:12                 ` Karl Fogel
  2020-05-28  5:51                   ` Eduardo Ochs
@ 2020-05-28  6:13                   ` Drew Adams
  2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
  2020-05-29  3:04                   ` Richard Stallman
  2 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-28  6:13 UTC (permalink / raw)
  To: Karl Fogel, Richard Stallman; +Cc: andreas.roehler, emacs-devel

> >We made this very simple a few years ago: Just keep typing C-g.
> >I guess these users don't know that.
> 
> Sometimes they know that, but it's still stressful for them to have to
> do it.  They don't like the sensation of getting into state they don't
> understand, and then having to type a magical quit-key to get out of
> that state.  It makes them apprehensive about even using the editor --
> they feel like they got bitten.
> 
> >Can anyone thing of a better way to teach them about this?
> >It could teach them first about the minibuffer, then about C-g
> >to get out.  It could copy the current minibuffer prompt
> >into the help screen to make the explanation clearer.
> >
> >The tricky part is how to detect when a user could use this help.
> 
> I don't think the issue is ignorance about C-g.  It's that people have
> a relationship with software interfaces in which they're not accustomed
> to being bitten.  Even when the bite draws no blood, they still don't
> like the feeling.
> 
> I can see directly that they don't like the feeling, that it's
> upsetting to them.  I conjecture that part of the reason is that even
> if they quickly ascertain that everything's all right this time, they
> still have a (rational) fear that the next time the bite might actually
> cause harm -- e.g., that maybe they'll lose a file, or accidentally
> rename something, or that edits that they don't know about will be
> accidentally made somewhere.
> 
> I haven't actually asked new users if that's their worry, but on the
> now-rare occasions when Emacs bites me, I worry about such things.
> Also, I've been using Emacs long enough to know that most likely
> nothing harmful happened, and that if I patiently unwind the state I'll
> be able to figure it all out.  A newcomer does not have that comfort at
> first, and they can only acquire it through sustained exposure to the
> editor.
> 
> Again, none of the above is meant to suggest that Emacs should change
> something.  I'm just saying that we should be intentional about the
> kinds of users Emacs is likely to attract, and not make changes
> designed around people who are unlikely to be long-term Emacs users
> anyway.

I hear you, Karl.  Just a thought - sorry it's
longer than I thought it would be.

I think it makes sense for the Emacs tutorial -
or some Emacs tutorial(s) - to have users use C-g
right off the bat, in a realistic way.  In fact,
have them use C-g at various points in the
tutorial, to show what it can do in different
contexts.

Users should get to know C-g and some important
help keys right at the outset - and now and again
throughout the tutorials.  Doing stuff with Emacs
is a dialog with Emacs, including a lot of asking
Emacs and learning about what's going on in any
given context.

By having them use these things over and over, to 
different ends, tutorial(s) can help users learn
why they are important - how helpful they can be.

There's a tremendous amount of stuff you can
learn about Emacs, and you can learn pretty much
all of it by asking Emacs itself.  Learning how
to do that - at least some basic ways - gives
you a leg up.

I mentioned the `Whoops!?' submenu I add to the
`Help' menu.  It has 3 items:

 `Cancel Current Action' (C-g)
 `Back to Top Level' (no key; command `top-level')
 `What Did I Do!?'       (C-h l)

Regardless of whether we put such things in a
help menu, I think an Emacs tutorial should have
users use them a bit.
___

Yes, `C-h l' could still be improved.  But it's
useful as it is, and showing the output in a
tutorial can be a way to point out some key
notation, including pseudo function keys.

The first thing to point out about `C-h l' output
are the keyboard key sequences.  They, at least,
are recognizable, once you know the notation.

We can also say what things like <down-mouse-1>,
<help-echo>, <menu-bar>, <view-lossage>, and
[view-lossage] represent, in general.  That way,
the output isn't so scary or just a wall of vomit.

Knowing in general what you're looking at, even
without understanding it, lets you see past what
(to you at that point) is just noise, to some
meaningful signals that you can recognize (e.g.
keyboard keys).
___

And of course, tutorials that get into some Lisp
can get users acquainted with more powerful ways
to ask Emacs.

Some of the things that are obstacles, because
Emacs is maybe not helpful enough regarding them,
can be subject to (later) tutorial explorations.
How to find out about faces, highlighting, chars,
overlays, fringe, mode-line, etc.

Someone who uses Emacs to work quickly, as Karl
suggests, knows Emacs well in one sense.  Someone
who knows how to dig in and ask Emacs things about
itself knows Emacs well in another sense.

Knowing something about asking Emacs provides (1)
self-confidence, (2) power to learn further, and
(3) knowledge that you can find out, yourself,
how to learn further _further_.  It's an eye-opener
to learn that Emacs is pretty much interactively
transparent all the way down.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-28  1:21                               ` excalamus--- via Emacs development discussions.
@ 2020-05-28  7:08                                 ` Eli Zaretskii
  2020-05-28  7:41                                   ` Andreas Röhler
  2020-05-28 10:23                                 ` Stefan Kangas
  1 sibling, 1 reply; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-28  7:08 UTC (permalink / raw)
  To: excalamus; +Cc: drew.adams, emacs-devel

> Date: Thu, 28 May 2020 03:21:34 +0200 (CEST)
> Cc: Drew Adams <drew.adams@oracle.com>, Emacs Devel <emacs-devel@gnu.org>
> From: excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org>
> 
> First, I think it oversells the accessibility of the documentation.
> The Emacs documentation is extensive and well written.  However, I
> find it quite difficult to navigate to a concept if that thing isn't a
> function or variable.  I have been a beginner and asked myself, "What
> is a cons cell?".  I found then, as I often still do, that leaving
> Emacs (to use a web browser) yields results fast enough to not use
> Emacs itself.  Ironically, I most often wind up at the gnu.org html
> documentation.

Are you aware of the 'i' command in Info, and using it?  Because its
purpose is precisely to help in the situations like you describe.  For
example, "what is a cons cell?" is immediately answered by typing this
in Info:

  i cons cell RET

or even

  i cons RET

Maybe we should have an interactive command that would let users type
the likes of "what is a cons cell" and translate that to the
appropriate Info-index command?  Because this extremely useful command
seems to be unknown and under-used.

> I consider being a component of the GNU system a feature and
> something integral to distinguishing GNU Emacs from other Emacsen.

I think at this time and place, there's only one Emacs.  What
"non-GNU" Emacsen are there that still need to be kept in mind?



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-28  7:08                                 ` Eli Zaretskii
@ 2020-05-28  7:41                                   ` Andreas Röhler
  0 siblings, 0 replies; 281+ messages in thread
From: Andreas Röhler @ 2020-05-28  7:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: excalamus, Drew Adams, emacs-devel


On 28.05.20 09:08, Eli Zaretskii wrote:
>> Date: Thu, 28 May 2020 03:21:34 +0200 (CEST)
>> Cc: Drew Adams <drew.adams@oracle.com>, Emacs Devel <emacs-devel@gnu.org>
>> From: excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org>
>>
>> First, I think it oversells the accessibility of the documentation.
>> The Emacs documentation is extensive and well written.  However, I
>> find it quite difficult to navigate to a concept if that thing isn't a
>> function or variable.  I have been a beginner and asked myself, "What
>> is a cons cell?".  I found then, as I often still do, that leaving
>> Emacs (to use a web browser) yields results fast enough to not use
>> Emacs itself.  Ironically, I most often wind up at the gnu.org html
>> documentation.
> Are you aware of the 'i' command in Info, and using it?

Get an error at the top of Info - works only inside Elisp


>    Because its
> purpose is precisely to help in the situations like you describe.  For
> example, "what is a cons cell?" is immediately answered by typing this
> in Info:
>
>    i cons cell RET
>
> or even
>
>    i cons RET
>
> Maybe we should have an interactive command that would let users type
> the likes of "what is a cons cell" and translate that to the
> appropriate Info-index command?  Because this extremely useful command
> seems to be unknown and under-used.

Think that would be helpful.






^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-28  1:21                               ` excalamus--- via Emacs development discussions.
  2020-05-28  7:08                                 ` Eli Zaretskii
@ 2020-05-28 10:23                                 ` Stefan Kangas
  2020-05-29  2:39                                   ` excalamus--- via Emacs development discussions.
  1 sibling, 1 reply; 281+ messages in thread
From: Stefan Kangas @ 2020-05-28 10:23 UTC (permalink / raw)
  To: excalamus--- via Emacs development discussions., excalamus; +Cc: Drew Adams

Hi,

My day-job involves copy-editing among other things.  I like this
revision overall, but hope you find the below observations useful.

First, it doesn't push the point that this is an editor for "power
users".  In my opinion, we should emphasize that point, as others have
suggested.

excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org>
writes:

> Updated the proposed intro based on everyone's excellent feedback!
>
>> (nil)Top
>>
>> Welcome to the Exciting World of GNU Emacs!
>> *******************************************
>>
>> GNU Emacs is born of two ideas, the GNU project and Emacs editors.  The

"Emacs editors" here is confusing.  I'm not sure how to reformulate it,
but see the below point.

>> goal of the GNU project is to provide a complete, free software system.
>> This means GNU Emacs respects you. It can adapt to how you work, not the
>> other way around![1] An "Emacs" is a command oriented text editor

Better: "Emacs is a command oriented text editor".  I understand what
you're going for (there are other Emacs editors) but frankly it's not
really a key point in an introduction and it is not easy understand this
subtle point for readers.

>> designed for introspection and extensibility.  These qualities enable
>> far more than basic word processing, as this manual describes.

Scratch "as this manual describes", it is superfluous.

>> "Introspection" means GNU Emacs has self-knowledge.  Every aspect of the

I'm not sure about replacing "self-documenting" with "introspection",
but whatever word we use I think it reads better if it starts
"Introspection means that every aspect of the system...".

>> system is documented and accessible.  Each level of inquiry has
>> tutorials, guides, and references.  It can answer questions like, "What
>> commands might help me?", "What does this do?", and, "How does this
>> work?"  The documentation extends from general concepts to the source
>> code itself!  GNU Emacs has everything conveniently in-house, at your

I would avoid using an exclamation mark here.

I would also scratch the word "in-house".  Perhaps add something that
you don't need to fire up a web browser to read documentation, but can
do it directly in Emacs itself.

>> fingertips.  See Help.
>>
>> "Extensibility" means that you can alter GNU Emacs itself.  You can
>> customize the environment, from keyboard shortcuts to color themes, and

"Color themes" is mostly an assumed feature in text editors and not
terribly exciting.  Could we find a better example?

>> most everything in-between.  See Customization.  Moreover, you can
>> create and apply new commands in real-time. These can be packaged and
>> shared with the diverse Emacs community.  Most of GNU Emacs is written
>> in Lisp.  See Emacs Lisp Intro(eintr) if you want to learn how to extend
>> GNU Emacs.
>>
>> Authors and researchers, as well as programmers, use GNU Emacs.  It has

Better: "Authors, researchers and programmers all use GNU Emacs."

>> seen active development for more than 40 years and includes innumerable
>> features; it is a heritage as much as a tool.  We love GNU Emacs because
>> we find its editing environment a rewarding experience like no other.
>> We hope you'll feel that way, too.

This paragraph is excellent.  Possibly you could try something like:

"We love GNU Emacs because we find its editing environment a rewarding
experience like no other.  It can adapt to your needs and grows with
you.  We hope you'll love using it, too."

(Just a rough draft, but something along those lines maybe.)

> First, I think it oversells the accessibility of the documentation.
> The Emacs documentation is extensive and well written.  However, I
> find it quite difficult to navigate to a concept if that thing isn't a
> function or variable.  I have been a beginner and asked myself, "What
> is a cons cell?".  I found then, as I often still do, that leaving
> Emacs (to use a web browser) yields results fast enough to not use
> Emacs itself.  Ironically, I most often wind up at the gnu.org html
> documentation.

The problem is not necessarily with your text.  It could just be that we
should should identify the problematic areas and improve our
documentation, the tutorial, etc.

> Second, the menu description is "Intro::An introduction to Emacs
> concepts" which is no longer true in this version.

I propose to rename it to "An introduction to GNU Emacs".

> However, this implies structural, if not intention, changes to the
> overall manual.

What do you have in mind more exactly?

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-28  6:13                   ` Drew Adams
@ 2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
  2020-05-28 14:42                       ` Jean-Christophe Helary
                                         ` (3 more replies)
  0 siblings, 4 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-28 14:12 UTC (permalink / raw)
  To: Drew Adams; +Cc: Karl Fogel, Richard Stallman, Andreas Roehler, Emacs Devel



28 mai 2020 à 02:13 de drew.adams@oracle.com:

>> >We made this very simple a few years ago: Just keep typing C-g.
>> >I guess these users don't know that.
>>
>> Sometimes they know that, but it's still stressful for them to have to
>> do it. 
>>
What does C-g mean? Why the sequence C-g specifically? I think the disconnect may be that C-g appears outwardly meaningless.

For contrast, <escape> clearly means to retreat and is often used in other applications to cancel (e.g. vi).  C-h is related to help via the 'h', which makes it easy to learn/remember. 

So why 'g'? 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
@ 2020-05-28 14:42                       ` Jean-Christophe Helary
  2020-05-28 16:34                         ` Drew Adams
  2020-05-28 15:00                       ` Philip K.
                                         ` (2 subsequent siblings)
  3 siblings, 1 reply; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-28 14:42 UTC (permalink / raw)
  To: excalamus
  Cc: Karl Fogel, Andreas Roehler, Richard Stallman, Drew Adams,
	Emacs Devel

>>>> We made this very simple a few years ago: Just keep typing C-g.
>>>> I guess these users don't know that.
>>> 
>>> Sometimes they know that, but it's still stressful for them to have to
>>> do it. 
> For contrast, <escape> clearly means to retreat and is often used in other applications to cancel (e.g. vi).  C-h is related to help via the 'h', which makes it easy to learn/remember. 
> 
> So why 'g'? 

[g]et out of here ?


-- 
Jean-Christophe Helary @brandelune
http://mac4translators.blogspot.com




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
  2020-05-28 14:42                       ` Jean-Christophe Helary
@ 2020-05-28 15:00                       ` Philip K.
  2020-05-28 15:13                         ` João Távora
                                           ` (3 more replies)
  2020-05-28 16:41                       ` FW: " Drew Adams
  2020-05-28 17:37                       ` Stefan Monnier
  3 siblings, 4 replies; 281+ messages in thread
From: Philip K. @ 2020-05-28 15:00 UTC (permalink / raw)
  To: excalamus--- via Emacs development discussions.
  Cc: Karl Fogel, excalamus, Andreas Roehler, Richard Stallman,
	Drew Adams


excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org> writes:

> What does C-g mean? Why the sequence C-g specifically? I think the
> disconnect may be that C-g appears outwardly meaningless.

I always assumed it was because C-g, when inserted literally had the
same value as does the ASCII bell (BEL, or '\a' in C) character. When
you open the "ascii" man-page on G and BEL even appear on the same
line. So in some sense it's like C-m/C-i, that do the same as
return/tab. 

But I guess that's neither consistent, relavant or intuitive.

-- 
	Philip K.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 15:00                       ` Philip K.
@ 2020-05-28 15:13                         ` João Távora
  2020-05-28 16:04                         ` T.V Raman
                                           ` (2 subsequent siblings)
  3 siblings, 0 replies; 281+ messages in thread
From: João Távora @ 2020-05-28 15:13 UTC (permalink / raw)
  To: Philip K.
  Cc: Richard Stallman, Andreas Roehler,
	excalamus--- via Emacs development discussions., Karl Fogel,
	excalamus, Drew Adams

On Thu, May 28, 2020 at 4:00 PM Philip K. <philip@warpmail.net> wrote:
>
>
> excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org> writes:
>
> > What does C-g mean? Why the sequence C-g specifically? I think the
> > disconnect may be that C-g appears outwardly meaningless.
>
> I always assumed it was because C-g, when inserted literally had the
> same value as does the ASCII bell (BEL, or '\a' in C) character. When
> you open the "ascii" man-page on G and BEL even appear on the same
> line. So in some sense it's like C-m/C-i, that do the same as
> return/tab.

Yes, and those things are where they are because they're very
commonly typed and very easily typed.  I'm in no way a keyboard
historian, but I imagine Control and Meta to have had a similar role
as Shift does nowadays.  Also, Control didn't use to be where it
is today, this is why many, including me, make Caps Lock an
extra control.

João



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 15:00                       ` Philip K.
  2020-05-28 15:13                         ` João Távora
@ 2020-05-28 16:04                         ` T.V Raman
       [not found]                         ` <p914ks0kpui.fsf@google.com-M8R14r9----2>
  2020-05-30  1:44                         ` Richard Stallman
  3 siblings, 0 replies; 281+ messages in thread
From: T.V Raman @ 2020-05-28 16:04 UTC (permalink / raw)
  To: Philip K.
  Cc: excalamus--- via Emacs development discussions., Karl Fogel,
	excalamus, Andreas Roehler, Richard Stallman, Drew Adams

"Philip K." <philip@warpmail.net> writes:


It's no more or no less intuitive than alt-F4 in "other platforms" that
people often label intuitive without thinking about it.

And for the record, the insert/replace key is a carry-over from
DOS word-processors of the early 80's.

> excalamus--- via "Emacs development discussions."
<emacs-devel@gnu.org> writes:  
>
>> What does C-g mean? Why the sequence C-g specifically? I think the
>> disconnect may be that C-g appears outwardly meaningless.
>
> I always assumed it was because C-g, when inserted literally had the
> same value as does the ASCII bell (BEL, or '\a' in C) character. When
> you open the "ascii" man-page on G and BEL even appear on the same
> line. So in some sense it's like C-m/C-i, that do the same as
> return/tab. 
>
> But I guess that's neither consistent, relavant or intuitive.

-- 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
       [not found]                         ` <p914ks0kpui.fsf@google.com-M8R14r9----2>
@ 2020-05-28 16:12                           ` excalamus--- via Emacs development discussions.
  2020-05-28 16:46                             ` T.V Raman
  0 siblings, 1 reply; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-28 16:12 UTC (permalink / raw)
  To: T.V Raman
  Cc: Philip K., excalamus--- via Emacs development discussions.,
	Karl Fogel, Andreas Roehler, Richard Stallman, Drew Adams

May 28, 2020, 12:04 by raman@google.com:

> "Philip K." <philip@warpmail.net> writes:
>
>
> It's no more or no less intuitive than alt-F4 in "other platforms" that
> people often label intuitive without thinking about it.
>
> And for the record, the insert/replace key is a carry-over from
> DOS word-processors of the early 80's.
>
>> excalamus--- via "Emacs development discussions."
>>
> <emacs-devel@gnu.org> writes: 
>
>>> What does C-g mean? Why the sequence C-g specifically? I think the
>>> disconnect may be that C-g appears outwardly meaningless.
>>>
>>
>> I always assumed it was because C-g, when inserted literally had the
>> same value as does the ASCII bell (BEL, or '\a' in C) character. When
>> you open the "ascii" man-page on G and BEL even appear on the same
>> line. So in some sense it's like C-m/C-i, that do the same as
>> return/tab. 
>>
>> But I guess that's neither consistent, relavant or intuitive.
>>
These are excellent observations (and I always love the history I learn through being an Emacs user).  Arguably, 'C-g' is one of the most important keybindings/functions in Emacs.  It's unfortunate that there's not a clear winner for a mnemonic.  "Get out" or "Get away" is the best I can come up with for English.  I tried translating the following possible interpretations to other languages (German, French, Spanish) and "giro" ("turn" in Spanish, apparently) was the 'best'.  

cancel
escape
abort
terminate
scrub
curtail
stop
discontinue
cease
counteract
redirect
avert
undo
disengage
avert
deflect
abstain
divert
reversal
turnabout
doubleback
turnaround
reverse
repeal
retract
annul



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-05-28 14:42                       ` Jean-Christophe Helary
@ 2020-05-28 16:34                         ` Drew Adams
  2020-05-29 14:44                           ` Jean-Christophe Helary
  0 siblings, 1 reply; 281+ messages in thread
From: Drew Adams @ 2020-05-28 16:34 UTC (permalink / raw)
  To: Jean-Christophe Helary, excalamus
  Cc: Karl Fogel, Andreas Roehler, Richard Stallman, Emacs Devel

> > So why 'g'?
> 
> [g]et out of here ?

Ha!  I just wrote the same thing.  I didn't
really think that it would be so "natural"
as to occur to others, but I guess great
minds think alike. ;-)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* FW: GNU Emacs raison d'etre
  2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
  2020-05-28 14:42                       ` Jean-Christophe Helary
  2020-05-28 15:00                       ` Philip K.
@ 2020-05-28 16:41                       ` Drew Adams
  2020-05-28 17:37                       ` Stefan Monnier
  3 siblings, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-05-28 16:41 UTC (permalink / raw)
  To: Emacs Devel

[For some reason, when I used Reply All to excalamus's
message, emacs-devel got dropped from the cc list.

So I'm forwarding the message I sent a few minutes
ago.  Dunno how many other messages might have gotten
dropped from the list this way.  I believe the same
thing happened to me once before, perhaps when I
replied to another excalamus message.]

-----Original Message-----
From: Drew Adams <drew.adams@oracle.com> 
Sent: Thursday, May 28, 2020 9:33 AM
To: 'excalamus@tutanota.com' <excalamus@tutanota.com>
Cc: 'Karl Fogel' <kfogel@red-bean.com>; 'Richard Stallman' <rms@gnu.org>; 'Andreas Roehler' <andreas.roehler@online.de>
Subject: RE: GNU Emacs raison d'etre

> What does C-g mean? 

It should mean what `C-h k C-g' or `C-h c C-g' tells
you - like other key sequences.  Unfortunately, that
doesn't work.

Maybe/probably by design, but maybe worth revisiting?

How important is being able to easily ask Emacs about
this key, versus being able to use it to quit a help
command that asks about it?  Dunno.  Maybe there's a
third way?

If you somehow can find out that `C-g' is generally
bound to command `keyboard-quit', then `C-h f' gives
you a page of helpful description/explanation.  But
if you don't know that command name then it's not so
easy to find out what `C-g' is all about.  (Yes, the
manual.)

> Why the sequence C-g specifically? I think the
> disconnect may be that C-g appears outwardly meaningless.

(What disconnect?)

Yes, I realize that that's your real question:
what's the mnemonic, or other relation, here?

Well, there is none.  None that's readily useful to
most people nowadays.  For those who might really be
interested, the answer is "hysterical raisins".

The ASCII control character Control G is described
as follows:

 Key       Dec    Hex   Abbr.  Name
 [Ctrl] G	7	07	 BEL	Bell

 Description in C0 of ISO 646:

 A control character that is used when there is a
 need to call for attention; it may control alarm
 or attention devices.

http://ascii-table.com/control-chars.php

That info is actually useful, as is the general
info that some Emacs control keys are associated
by default with ASCII control characters.  That
info is interesting, if somewhat quaint.

But it's not important to understanding what `C-g'
does in Emacs.

How long does it take someone to learn what `C-g'
does in Emacs?  Especially if we cover that at
outset in a tutorial?

> For contrast, <escape> clearly means to retreat

Escape doesn't mean retreat.  But OK.

> and is often used in other applications to
> cancel (e.g. vi).  

And `ESC ESC ESC' is used similarly in Emacs.

https://www.gnu.org/software/emacs/manual/html_node/emacs/Quitting.html

But `ESC' has additional meanings, starting,
again, with its meaning as an ASCII control
char:

 Key       Dec    Hex   Abbr.  Name
 [Ctrl] [	27	1B	 ESC	Escape	 	

 Description in C0 of ISO 646:

 A control character which is used to provide
 additional control functions.
 It alters the meaning of a limited number of
 contiguously following bit combinations.
 The use of this character is specified in
 International Standard ISO 2022.

Well, whaddya know?  It can alter the meaning
of some chars that follow it.  And in Emacs
it's used just that way - for Meta chars.

This is actually a useful thing for users to
learn, and it's one that they don't learn so
much nowadays.

That you can generally use `ESC <key>' in
place of `M-<key>' is handy in some contexts.

Recently I posted messages about my library
`keysee.el', which provides help on keys by
providing key completion.  In that UI, you
can find a key such as `C-M-q' under that
name, but you can also follow `ESC' as a
prefix key and find it as (ESC) `C-q'.

And more generally, Emacs help commands that
list keys show you that `ESC' is a prefix key.
So knowing about this relation between `ESC'
and Meta chars can help.  It can help you ask
Emacs.

> C-h is related to help via the 'h', which
> makes it easy to learn/remember.

Well, yes.  But `h' isn't just associated
with help.  It can be associated with
"highlight", "here", "header", and more.

It's just that you've _learned_ the h=help
association, and it's become second nature.
Another char that's "naturally" associated
with help is `?'.

> So why 'g'?

Why not?  Here's a mnemonic for you: "_G_et
me outta here now!"



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 16:12                           ` excalamus--- via Emacs development discussions.
@ 2020-05-28 16:46                             ` T.V Raman
  2020-05-28 17:34                               ` Karl Fogel
                                                 ` (2 more replies)
  0 siblings, 3 replies; 281+ messages in thread
From: T.V Raman @ 2020-05-28 16:46 UTC (permalink / raw)
  To: excalamus
  Cc: raman, philip, emacs-devel, kfogel, andreas.roehler, rms,
	drew.adams

emacs kbd commands -- and other well-designed ergonomic systems, eg
vi's h,j,k,l for navigation are better thought of as muscle
memory. The mnemonics are useful to learn, yes, but given the weird
layout of the qwerty keyboard,  rigidly sticking to mnemonics often
leads to non-ergonomic keybindings.

So it's always a choice --- does one wish to create a system that is
"easy to learn" but painful to use, or one that "a little harder to
learn" with the benefit of being extremely efficient in the
long-run. I still think VI's nav keys are one of the best choices I've
seen from an ergonomics point of view, but completely "unintuitive"
for whatever "intuitive" means.
excalamus@tutanota.com writes:
 > May 28, 2020, 12:04 by raman@google.com:
 > 
 > > "Philip K." <philip@warpmail.net> writes:
 > >
 > >
 > > It's no more or no less intuitive than alt-F4 in "other platforms" that
 > > people often label intuitive without thinking about it.
 > >
 > > And for the record, the insert/replace key is a carry-over from
 > > DOS word-processors of the early 80's.
 > >
 > >> excalamus--- via "Emacs development discussions."
 > >>
 > > <emacs-devel@gnu.org> writes: 
 > >
 > >>> What does C-g mean? Why the sequence C-g specifically? I think the
 > >>> disconnect may be that C-g appears outwardly meaningless.
 > >>>
 > >>
 > >> I always assumed it was because C-g, when inserted literally had the
 > >> same value as does the ASCII bell (BEL, or '\a' in C) character. When
 > >> you open the "ascii" man-page on G and BEL even appear on the same
 > >> line. So in some sense it's like C-m/C-i, that do the same as
 > >> return/tab. 
 > >>
 > >> But I guess that's neither consistent, relavant or intuitive.
 > >>
 > These are excellent observations (and I always love the history I learn through being an Emacs user).  Arguably, 'C-g' is one of the most important keybindings/functions in Emacs.  It's unfortunate that there's not a clear winner for a mnemonic.  "Get out" or "Get away" is the best I can come up with for English.  I tried translating the following possible interpretations to other languages (German, French, Spanish) and "giro" ("turn" in Spanish, apparently) was the 'best'.  
 > 
 > cancel
 > escape
 > abort
 > terminate
 > scrub
 > curtail
 > stop
 > discontinue
 > cease
 > counteract
 > redirect
 > avert
 > undo
 > disengage
 > avert
 > deflect
 > abstain
 > divert
 > reversal
 > turnabout
 > doubleback
 > turnaround
 > reverse
 > repeal
 > retract
 > annul

-- 
Id: kg:/m/0285kf1 

--
Id: kg:/m/0285kf1



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 16:46                             ` T.V Raman
@ 2020-05-28 17:34                               ` Karl Fogel
  2020-05-28 18:11                               ` andres.ramirez
       [not found]                               ` <877dwwezfr.fsf@red-bean.com-M8RLd3p--3-2>
  2 siblings, 0 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-28 17:34 UTC (permalink / raw)
  To: T.V Raman
  Cc: rms, andreas.roehler, emacs-devel, excalamus, philip, drew.adams

On 28 May 2020, T.V Raman wrote:
>emacs kbd commands -- and other well-designed ergonomic systems, eg
>vi's h,j,k,l for navigation are better thought of as muscle
>memory. The mnemonics are useful to learn, yes, but given the weird
>layout of the qwerty keyboard,  rigidly sticking to mnemonics often
>leads to non-ergonomic keybindings.

Amen to what T.V. says here.

Often, when people say that keybindings should be "intuitive", they mean something like "there should be some connection between a plausible English-language description of what the keybinding does and the letters involved in the keybinding itself".

But such language/key associations are only useful to newcomers anyway.  After all, there is nothing about the word "quit" that inherently suggests its meaning -- it's just that those who have learned English have learned what that word means.  Similarly, those who have learned the language of Emacs know that C-g means the same thing (well, something very similar).

Even independently of keyboard layout (mine is not QWERTY) this kind of intuitiveness is of questionable value.  It *does* help newcomers somewhat, but if used as an overriding principle it can result in an overly sparse keybinding space or in problematic physical combinations like single-finger hurdles.

>So it's always a choice --- does one wish to create a system that is
>"easy to learn" but painful to use, or one that "a little harder to
>learn" with the benefit of being extremely efficient in the
>long-run. I still think VI's nav keys are one of the best choices I've
>seen from an ergonomics point of view, but completely "unintuitive"
>for whatever "intuitive" means.

Agreed.  Vi's default navigation keybindings are, frankly, better than Emacs' (or at least they are on a QWERTY keyboard).  It also takes people a long time to learn them.

(I'm not suggesting Emacs change its default here: too many people have learned the existing way, the efficiency gain is not so huge anyway, and other bits of Emacs have been built around the assumptions of those default navigational keybindings so there's no telling what full effects of such a switch would be at this point.)

Best regards,
-Karl



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
                                         ` (2 preceding siblings ...)
  2020-05-28 16:41                       ` FW: " Drew Adams
@ 2020-05-28 17:37                       ` Stefan Monnier
  2020-05-28 20:33                         ` Perry E. Metzger
  3 siblings, 1 reply; 281+ messages in thread
From: Stefan Monnier @ 2020-05-28 17:37 UTC (permalink / raw)
  To: excalamus--- via Emacs development discussions.
  Cc: Karl Fogel, excalamus, Andreas Roehler, Richard Stallman,
	Drew Adams

> What does C-g mean?

For me, the intuition is a sound that I find hard to transcribe into
ASCII but could be something like "ghuhuh!" with the accent on the second
"u" and a good dose of frustration sprinkled throughout ;-)


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 16:46                             ` T.V Raman
  2020-05-28 17:34                               ` Karl Fogel
@ 2020-05-28 18:11                               ` andres.ramirez
       [not found]                               ` <877dwwezfr.fsf@red-bean.com-M8RLd3p--3-2>
  2 siblings, 0 replies; 281+ messages in thread
From: andres.ramirez @ 2020-05-28 18:11 UTC (permalink / raw)
  To: T.V Raman
  Cc: rms, andreas.roehler, emacs-devel, kfogel, excalamus, philip,
	drew.adams

Hi.

>>>>> "T" == T V Raman <raman@google.com> writes:

    T> emacs kbd commands -- and other well-designed ergonomic
    T> systems, eg vi's h,j,k,l for navigation are better thought of
    T> as muscle memory. The mnemonics are useful to learn, yes, but
    T> given the weird layout of the qwerty keyboard, rigidly sticking
    T> to mnemonics often leads to non-ergonomic keybindings.

Take in account also different keyboard layouts 'dvorak' as an example of
severals. On dvorak C-t is easier than C-x. But perhaps a tip for
someone going to a different layout would be try modal editing with
'god-mode' or other similar tools.

And Also. Do not forget the emacs pinky problem. That' sometimes leads
You to rebind some most used keybindings.

[...]

Best Regards



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
       [not found]                               ` <877dwwezfr.fsf@red-bean.com-M8RLd3p--3-2>
@ 2020-05-28 18:28                                 ` excalamus--- via Emacs development discussions.
  2020-05-29  1:12                                   ` Karl Fogel
  0 siblings, 1 reply; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-28 18:28 UTC (permalink / raw)
  To: Karl Fogel
  Cc: T.V Raman, Richard Stallman, Andreas Roehler, Emacs Devel,
	Philip K., Drew Adams

May 28, 2020, 13:34 by kfogel@red-bean.com:

> On 28 May 2020, T.V Raman wrote:
> >emacs kbd commands -- and other well-designed ergonomic systems, eg
> >vi's h,j,k,l for navigation are better thought of as muscle
> >memory. The mnemonics are useful to learn, yes, but given the weird
> >layout of the qwerty keyboard,  rigidly sticking to mnemonics often
> >leads to non-ergonomic keybindings.
>
> Amen to what T.V. says here.
>
> Often, when people say that keybindings should be "intuitive", they mean something like "there should be some connection between a plausible English-language description of what the keybinding does and the letters involved in the keybinding itself".
>
> But such language/key associations are only useful to newcomers anyway.  After all, there is nothing about the word "quit" that inherently suggests its meaning -- it's just that those who have learned English have learned what that word means.  Similarly, those who have learned the language of Emacs know that C-g means the same thing (well, something very similar).
>
> Even independently of keyboard layout (mine is not QWERTY) this kind of intuitiveness is of questionable value.  It *does* help newcomers somewhat, but if used as an overriding principle it can result in an overly sparse keybinding space or in problematic physical combinations like single-finger hurdles.
>
> >So it's always a choice --- does one wish to create a system that is
> >"easy to learn" but painful to use, or one that "a little harder to
> >learn" with the benefit of being extremely efficient in the
> >long-run. I still think VI's nav keys are one of the best choices I've
> >seen from an ergonomics point of view, but completely "unintuitive"
> >for whatever "intuitive" means.
>
> Agreed.  Vi's default navigation keybindings are, frankly, better than Emacs' (or at least they are on a QWERTY keyboard).  It also takes people a long time to learn them.
>
> (I'm not suggesting Emacs change its default here: too many people have learned the existing way, the efficiency gain is not so huge anyway, and other bits of Emacs have been built around the assumptions of those default navigational keybindings so there's no telling what full effects of such a switch would be at this point.)
>
> Best regards,
> -Karl
>
Fair enough.  My thoughts were centered on how to explain to newcomers the use/benefits of 'C-g', especially within the manual.  I was curious what perspectives others have.

My understanding of the discussion prior to my interjection was that newcomers appear to misunderstand, are reluctant to use, or forget about 'C-g'.  I hope I didn't derail the convo into one of changing the physical location or the keybinding!  There's too much history to change 'C-g'.  For better or worse, it's what we have.




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 17:37                       ` Stefan Monnier
@ 2020-05-28 20:33                         ` Perry E. Metzger
  2020-05-28 23:44                           ` T.V Raman
  0 siblings, 1 reply; 281+ messages in thread
From: Perry E. Metzger @ 2020-05-28 20:33 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Richard Stallman, Andreas Roehler,
	excalamus--- via "Emacs development discussions.",
	Karl Fogel, excalamus, Drew Adams

On Thu, 28 May 2020 13:37:19 -0400 Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
> > What does C-g mean?  
> 
> For me, the intuition is a sound that I find hard to transcribe into
> ASCII but could be something like "ghuhuh!" with the accent on the
> second "u" and a good dose of frustration sprinkled throughout ;-)

And besides, it doesn't matter where C-g comes from. Thousands and
thousands of people memorized it. I memorized it in 1983. My fingers
will not do anything else at this point.

Any other key sequence would, regardless, be just as arbitrary and
capricious, and not any easier to learn for newcomers.

It is the nature of a system like Emacs that the learning curve is
extremely steep, but once you have crossed it, you work far more
efficiently than you did before you assaulted it.

Perry
-- 
Perry E. Metzger		perry@piermont.com



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 20:33                         ` Perry E. Metzger
@ 2020-05-28 23:44                           ` T.V Raman
  0 siblings, 0 replies; 281+ messages in thread
From: T.V Raman @ 2020-05-28 23:44 UTC (permalink / raw)
  To: Perry E. Metzger
  Cc: Stefan Monnier, Richard Stallman, Andreas Roehler,
	excalamus--- via "Emacs development discussions.",
	Karl Fogel, excalamus, Drew Adams

"Perry E. Metzger" <perry@piermont.com> writes:
People often complain of "steep learning curves" as being "bad", but
that is a value judgement.

If you want to go  high, I prefer a steep curve to a flat plain -- and
metaphors aside, so-called easy-to-learn systems  usually dont get their
users anywhere very fast. A better goal is perhaps "fun-to-learn"
> On Thu, 28 May 2020 13:37:19 -0400 Stefan Monnier
> <monnier@iro.umontreal.ca> wrote:
>> > What does C-g mean?  
>> 
>> For me, the intuition is a sound that I find hard to transcribe into
>> ASCII but could be something like "ghuhuh!" with the accent on the
>> second "u" and a good dose of frustration sprinkled throughout ;-)
>
> And besides, it doesn't matter where C-g comes from. Thousands and
> thousands of people memorized it. I memorized it in 1983. My fingers
> will not do anything else at this point.
>
> Any other key sequence would, regardless, be just as arbitrary and
> capricious, and not any easier to learn for newcomers.
>
> It is the nature of a system like Emacs that the learning curve is
> extremely steep, but once you have crossed it, you work far more
> efficiently than you did before you assaulted it.
>
> Perry

-- 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 18:28                                 ` excalamus--- via Emacs development discussions.
@ 2020-05-29  1:12                                   ` Karl Fogel
  0 siblings, 0 replies; 281+ messages in thread
From: Karl Fogel @ 2020-05-29  1:12 UTC (permalink / raw)
  To: excalamus
  Cc: Richard Stallman, Andreas Roehler, Emacs Devel, Philip K.,
	T.V Raman, Drew Adams

On 28 May 2020, excalamus@tutanota.com wrote:
>My understanding of the discussion prior to my interjection was that
>newcomers appear to misunderstand, are reluctant to use, or forget
>about 'C-g'.  I hope I didn't derail the convo into one of changing
>the physical location or the keybinding!  There's too much history to
>change 'C-g'.  For better or worse, it's what we have.

Agreed.  I've always just taught it as "C-g" -- as an axiomatic thing that should be memorized because it will be used frequently.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-28 10:23                                 ` Stefan Kangas
@ 2020-05-29  2:39                                   ` excalamus--- via Emacs development discussions.
  2020-05-29  7:28                                     ` Eli Zaretskii
  2020-05-29  7:40                                     ` Stefan Kangas
  0 siblings, 2 replies; 281+ messages in thread
From: excalamus--- via Emacs development discussions. @ 2020-05-29  2:39 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: excalamus--- via Emacs development discussions., Drew Adams



>> May 28, 2020, 03:08 by >> eliz@gnu.org>> :
>>
>> Are you aware of the 'i' command in Info, and using it?   Because its purpose is precisely to help in the situations like you describe.
>>
Yes and no.  Thank you for reminding me and for bringing this up.  I find I run into problems  similar to those Andreas points out.  

> May 28, 2020, 03:08 by > eliz@gnu.org> :
>
> I think at this time and place, there's only one Emacs.  What
> "non-GNU" Emacsen are there that still need to be kept in mind?
>
GNU Emacs definitely dominates now.  Yet, GNU Emacs is not the only Emacs.  I'm not sure how to account for that when revising the manual.  

For instance, the first line of the current version is nonsense if GNU Emacs and Emacs are conflated:

> You are reading about GNU Emacs, the GNU incarnation of the advanced, self-documenting, 
> customizable, extensible editor Emacs.

The node link description for the intro is "An introduction to Emacs concepts."  I took that to mean Emacsen, as that's primarily what (emacs) Intro describes.  Is it describing something else?  If it *is* describing Emacsen and we don't want it to be, what direction should it go?

Other thoughts:

- Strictly speaking GNU Emacs and Emacs are distinct.  What recommendations do you have for navigating the distinction?  Or should we *not* make a distinction?  Maybe I'm just being pedantic.
- Part of understanding GNU Emacs as a program is understanding its history.  It's easier for me to comprehend aspects of Emacs (e.g. window/frame) when I realize it's been in existence longer than I have.  Maybe we should gloss over the distinction in the manual text and include a separate history node?   There are places, like (emacs) User Input, that reference "historical reasons" that might benefit from that.
- Terminology, like "Emacsen", exists within the community (EmacsWiki, etc.) which is confusing if you conflate GNU Emacs with Emacs.  I was certainly confused by this.  Maybe add such terminology to the glossary?
- Other Emacs are referenced within GNU Emacs's code-base.  Running grep on my Emacs install turns up 281 matches for "xemacs".  I doubt that's going to trip many people up, but who knows.


> May 28, 2020, 06:23 by > stefankangas@gmail.com> :
>
> Hi,
>
> My day-job involves copy-editing among other things.  I like this
> revision overall, but hope you find the below observations useful.
>
Absolutely!  I'm so stinkin' excited to be working with you (all) on this.  Thank you for taking the time to share your perspective and experience!

> First, it doesn't push the point that this is an editor for "power
> users".  In my opinion, we should emphasize that point, as others have
> suggested.
>
I'm not sure how to do this.  How do you define a power user?

Other discussions make it seem like a focus on power users is a focus on features.  I opted to avoid that here.  A person will have already been sold on trying Emacs, likely based on features, well in advance to reading the manual.  Focusing on features also opens the impossible question of "Which features should I highlight?"  I tried to provide context instead.  


> excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org>
> writes:
>
>> Updated the proposed intro based on everyone's excellent feedback!
>>
>>> (nil)Top
>>>
>>> Welcome to the Exciting World of GNU Emacs!
>>> *******************************************
>>>
>>> GNU Emacs is born of two ideas, the GNU project and Emacs editors.  The
>>>
>
> "Emacs editors" here is confusing.  I'm not sure how to reformulate it,
> but see the below point.
>
>>> goal of the GNU project is to provide a complete, free software system.
>>> This means GNU Emacs respects you. It can adapt to how you work, not the
>>> other way around![1] An "Emacs" is a command oriented text editor
>>>
>
> Better: "Emacs is a command oriented text editor".  I understand what
> you're going for (there are other Emacs editors) but frankly it's not
> really a key point in an introduction and it is not easy understand this
> subtle point for readers.
>
Yeah, I grappled quite a bit with explaining what an Emacs is.  It's awkward.   I think my comments to Eli above cover the main obstacles.

>>> "Introspection" means GNU Emacs has self-knowledge.  Every aspect of the
>>>
>
> I'm not sure about replacing "self-documenting" with "introspection",
> but whatever word we use I think it reads better if it starts
> "Introspection means that every aspect of the system...".
>
>>> system is documented and accessible.  Each level of inquiry has
>>> tutorials, guides, and references.  It can answer questions like, "What
>>> commands might help me?", "What does this do?", and, "How does this
>>> work?"  The documentation extends from general concepts to the source
>>> code itself!  GNU Emacs has everything conveniently in-house, at your
>>>
I'm beginning to doubt using "introspection", too.  RMS gives a good description of "self-documenting" on page 18 of "EMACS: The Extensible, Customizable, Self-Documenting Display Editor" (https://dspace.mit.edu/handle/1721.1/5736) <https://dspace.mit.edu/handle/1721.1/5736>. I tried to reuse the ideas.  The term "self-documenting" is undoubtedly correct, especially in the technical "search the dispatch table" sense.  Yet I find it doesn't encompass, at least immediately, the other aspects of the documentation: tutorials, references, and the source code, as well as ease of navigation. I feel introspection  gets at those more easily at the expense of being less precise.  Maybe "self-knowledge" and the line about the source code is enough?

> I would also scratch the word "in-house".  Perhaps add something that
> you don't need to fire up a web browser to read documentation, but can
> do it directly in Emacs itself.
>
Interesting.  I was going for brevity and trying to emphasize the ease of navigating the Emacs documentation.  I see your point.  Precise is probably better than general.   Actually, (navigates to Gutenberg), that's Strunk's Rule 12: Use definite, specific, concrete language.

>>> fingertips.  See Help.
>>>
>>> "Extensibility" means that you can alter GNU Emacs itself.  You can
>>> customize the environment, from keyboard shortcuts to color themes, and
>>>
>
> "Color themes" is mostly an assumed feature in text editors and not
> terribly exciting.  Could we find a better example?
>
I wish... It's the riddle of what features to mention.  I don't have an answer for it.  I went with themes because even though it's common, people love messing with them.  At least it's beloved if not exciting.  Suggestions?

>>> most everything in-between.  See Customization.  Moreover, you can
>>> create and apply new commands in real-time. These can be packaged and
>>> shared with the diverse Emacs community.  Most of GNU Emacs is written
>>> in Lisp.  See Emacs Lisp Intro(eintr) if you want to learn how to extend
>>> GNU Emacs.
>>>
>>> Authors and researchers, as well as programmers, use GNU Emacs.  It has
>>>
>
> Better: "Authors, researchers and programmers all use GNU Emacs."
>
Agreed.

>>> seen active development for more than 40 years and includes innumerable
>>> features; it is a heritage as much as a tool.  We love GNU Emacs because
>>> we find its editing environment a rewarding experience like no other.
>>> We hope you'll feel that way, too.
>>>
>
> This paragraph is excellent.  Possibly you could try something like:
>
> "We love GNU Emacs because we find its editing environment a rewarding
> experience like no other.  It can adapt to your needs and grows with
> you.  We hope you'll love using it, too."
>
Thank you! I worked hard to come up with a variant to Karl's (?) "no other editing environment rewards sustained user investment quite like it" that didn't imply a steep learning curve*.  I hope this strikes the right balance.  I like your suggestion, too, of moving the adapt+grow from P1 to here.  

*I am a SLC denier.

> (Just a rough draft, but something along those lines maybe.)
>
>> First, I think it oversells the accessibility of the documentation.
>> The Emacs documentation is extensive and well written.  However, I
>> find it quite difficult to navigate to a concept if that thing isn't a
>> function or variable.  I have been a beginner and asked myself, "What
>> is a cons cell?".  I found then, as I often still do, that leaving
>> Emacs (to use a web browser) yields results fast enough to not use
>> Emacs itself.  Ironically, I most often wind up at the gnu.org html
>> documentation.
>>
>
> The problem is not necessarily with your text.  It could just be that we
> should should identify the problematic areas and improve our
> documentation, the tutorial, etc.
>
Agreed.  I would like to talk about C-h discoverability and navigation when I have time.  I think there are taters there.

>> Second, the menu description is "Intro::An introduction to Emacs
>> concepts" which is no longer true in this version.
>>
>
> I propose to rename it to "An introduction to GNU Emacs".
>
Agreed.

>> However, this implies structural, if not intention, changes to the
>> overall manual.
>>
>
> What do you have in mind more exactly?
>
I mentioned some in my reply to Eli above.  Basically, I think "An Introduction to Emacs[en]" is addressed differently than "An Introduction to GNU Emacs".  The intro sets the user up for what's to come.  Part of me wants to say the manual should guide end users to being hackers (power users?).  I have a hard time separating hackability from the other features listed.  I'm probably losing sight of the intent/purpose of the manual/introduction.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28  4:12                 ` Karl Fogel
  2020-05-28  5:51                   ` Eduardo Ochs
  2020-05-28  6:13                   ` Drew Adams
@ 2020-05-29  3:04                   ` Richard Stallman
  2 siblings, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-29  3:04 UTC (permalink / raw)
  To: Karl Fogel; +Cc: 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. ]]]

  > I don't think the issue is ignorance about C-g.  It's that people
  > have a relationship with software interfaces in which they're not
  > accustomed to being bitten.  Even when the bite draws no blood,
  > they still don't like the feeling.

  ...
  > Again, none of the above is meant to suggest that Emacs should
  > change something.  I'm just saying that we should be intentional
  > about the kinds of users Emacs is likely to attract, and not make
  > changes designed around people who are unlikely to be long-term
  > Emacs users anyway.

That sounds like valid reasoning to me.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-29  2:39                                   ` excalamus--- via Emacs development discussions.
@ 2020-05-29  7:28                                     ` Eli Zaretskii
  2020-05-29  7:40                                     ` Stefan Kangas
  1 sibling, 0 replies; 281+ messages in thread
From: Eli Zaretskii @ 2020-05-29  7:28 UTC (permalink / raw)
  To: excalamus; +Cc: stefankangas, drew.adams, emacs-devel

> Date: Fri, 29 May 2020 04:39:03 +0200 (CEST)
> Cc: "excalamus--- via Emacs development discussions." <emacs-devel@gnu.org>,
>  Drew Adams <drew.adams@oracle.com>
> From: excalamus--- via "Emacs development discussions." <emacs-devel@gnu.org>
> 
> > May 28, 2020, 03:08 by > eliz@gnu.org> :
> >
> > I think at this time and place, there's only one Emacs.  What
> > "non-GNU" Emacsen are there that still need to be kept in mind?
> >
> GNU Emacs definitely dominates now.  Yet, GNU Emacs is not the only Emacs.

Again, what other Emacsen still need to be kept in mind?  They are all
dead, AFAIK.  Why allude to them in a document that will see light in
a year or two at the earliest?  It will just confuse people.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-29  2:39                                   ` excalamus--- via Emacs development discussions.
  2020-05-29  7:28                                     ` Eli Zaretskii
@ 2020-05-29  7:40                                     ` Stefan Kangas
  2020-05-29 15:14                                       ` Stefan Monnier
  2020-05-30  1:39                                       ` Richard Stallman
  1 sibling, 2 replies; 281+ messages in thread
From: Stefan Kangas @ 2020-05-29  7:40 UTC (permalink / raw)
  To: excalamus; +Cc: Drew Adams, excalamus--- via Emacs development discussions.

excalamus@tutanota.com writes:

> - Strictly speaking GNU Emacs and Emacs are distinct.  What
> recommendations do you have for navigating the distinction?  Or should
> we *not* make a distinction?  Maybe I'm just being pedantic.

There is an interesting history here, and I'm as fascinated by this as
the next guy.  But in this day and age, GNU Emacs has completely
eclipsed all other versions of Emacs.

I'm not sure the benefit of bringing up that history here, especially
since there are many good articles and resources that discuss this
elsewhere.  It risks confusing or even sending users looking for other
Emacsen (likely a dead-end).

My conclusion is that we should avoid discussing other versions of Emacs
in this introduction.

> Maybe we should gloss over the distinction in the manual text
> and include a separate history node?

I don't see why not.  The only problem I know of is that the manual is
already very long in printed form.

> - Terminology, like "Emacsen", exists within the community (EmacsWiki,
> etc.) which is confusing if you conflate GNU Emacs with Emacs.  I was
> certainly confused by this.  Maybe add such terminology to the
> glossary?

Maybe EmacsWiki should just be refocused on GNU Emacs, instead.

> - Other Emacs are referenced within GNU Emacs's code-base.  Running
> grep on my Emacs install turns up 281 matches for "xemacs".  I doubt
> that's going to trip many people up, but who knows.

We have been working on reducing the number of such instances.  I think
some things just needs work, and in some cases (e.g. cc-mode) it's not
clear to me if the maintainer wants to drop XEmacs support just yet.

> Absolutely!  I'm so stinkin' excited to be working with you (all) on
> this.  Thank you for taking the time to share your perspective and
> experience!

Happy to help, thanks for working on this.  You had some specific
questions but I couldn't think of a good answer, so I'll leave that in
the hope that someone else will.

Best regards,
Stefan Kangas



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-27  3:08                                         ` Richard Stallman
  2020-05-27  5:01                                           ` Drew Adams
@ 2020-05-29 12:59                                           ` Arthur Miller
  2020-06-23  3:59                                             ` Richard Stallman
  1 sibling, 1 reply; 281+ messages in thread
From: Arthur Miller @ 2020-05-29 12:59 UTC (permalink / raw)
  To: Richard Stallman
  Cc: xristos, tomas, João Távora, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> [[[ 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. ]]]
>
>   > > We could call it Text Invaders.
>
>   > That's a nice idea.  A slower-passed classic adventure/charade where
>   > there is an encrypted message in some piece of text could also be fun.
>   > But writing these is hard (I for one wouldn't no where to start).
>
> Text Invaders should be easy.  You start with a buffer containing
> suitable text.  Set up a timer that runs N times a second
> and carries out one move for the invaders.
>
> Every so often you reduce the timer interval a few percent,
> so that the game gets harder.
>
> As for the user, you don't have to do anything except switch to the buffer
> in a window for the user to edit.
> The user's "moves" are simply Emacs editing commands, executed as fast as the
> user types them.
>
> Delightfully simple!
>
> The errors don't have to be random.  An invader could move over the
> screen, introducing errors.  You eliminate it by moving point onto it.
> Then you can fix the errors it has already inserted.
>
> Lots of variations can be imagined.
That sounds like a cool idea.

There is also a game called Starcraft, which is a competitive RTS played
in tournaments nowadays, considered as a hardest to date RTS to play.
They have some mods/trainers for people to practice their game skills.
They have one such trainer for peopel to learn shortcuts in game, and
same idea might be usefull for Emacs maybe.

The game would shouw icons of some stuff to be created and poeple would
have to press the shortcut key for that structure/unit etc. It was as
well on a speeding timer and everything would go on for a certain amount
of time. After the complete period of time expired, say 2 minutes or so,
one was presented with a screen of total misses and hits.

I don't know if it is possible, but maybe Emacs could show name of
command to be invoked and user would have to press the associated
shortcut. The Emacs would have to pick whatever shortcut user have
defined. Maybe Emacs could show a sentence and a selected region and
user would have to kill/yank that region, divide window, do whatever
etc. Such tasks could circle with ever shorter timer for say about 2 - 5
minutes and at the end user would be presented with the score of hits &
misses. Could be even saved into a file as a "best score". Don't know if
that idea would work in Emacs, but it feels on a first thought like it
could be used to teach out Emacs terminology and some general global
shortcuts at least.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 16:34                         ` Drew Adams
@ 2020-05-29 14:44                           ` Jean-Christophe Helary
  0 siblings, 0 replies; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-29 14:44 UTC (permalink / raw)
  To: Drew Adams
  Cc: Karl Fogel, excalamus, Andreas Roehler, Richard Stallman,
	Emacs Devel



> On May 29, 2020, at 1:34, Drew Adams <drew.adams@oracle.com> wrote:
> 
>>> So why 'g'?
>> 
>> [g]et out of here ?
> 
> Ha!  I just wrote the same thing.

Yes, I just saw that. But your reply was way deeper than my one-liner :)

> I didn't
> really think that it would be so "natural"
> as to occur to others, but I guess great
> minds think alike. ;-)

I'm not even sure my kids think I'm a "great mind" :)

-- 
Jean-Christophe Helary @brandelune
http://mac4translators.blogspot.com




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-29  7:40                                     ` Stefan Kangas
@ 2020-05-29 15:14                                       ` Stefan Monnier
  2020-05-30  1:39                                       ` Richard Stallman
  1 sibling, 0 replies; 281+ messages in thread
From: Stefan Monnier @ 2020-05-29 15:14 UTC (permalink / raw)
  To: Stefan Kangas
  Cc: excalamus, Drew Adams,
	excalamus--- via Emacs development discussions.

>> - Strictly speaking GNU Emacs and Emacs are distinct.  What
>> recommendations do you have for navigating the distinction?  Or should
>> we *not* make a distinction?  Maybe I'm just being pedantic.
> There is an interesting history here, and I'm as fascinated by this as
> the next guy.  But in this day and age, GNU Emacs has completely
> eclipsed all other versions of Emacs.

That is true.  The editor we're all working on right now is called
"Emacs", and the reason why we sometimes refer to it as "GNU Emacs" is
to remind people that is part of the GNU project, not to distinguish it
from other Emacsen such as "Lucid Emacs".

Notice that all other Emacsen out there use another name: e.g. "XEmacs"
is not called "X Emacs", "Zile" is not called "Zile Emacs", ...


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: (emacs) Intro [was: Making Emacs popular again with a video]
  2020-05-29  7:40                                     ` Stefan Kangas
  2020-05-29 15:14                                       ` Stefan Monnier
@ 2020-05-30  1:39                                       ` Richard Stallman
  1 sibling, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-30  1:39 UTC (permalink / raw)
  To: Stefan Kangas; +Cc: excalamus, drew.adams, 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. ]]]

  > > Maybe we should gloss over the distinction in the manual text
  > > and include a separate history node?

  > I don't see why not.  The only problem I know of is that the manual is
  > already very long in printed form.

Keeping the manual shorter (and thus cheaper) is of practical importance.
We can publish articles about history and other interesting side points
in gnu.org or along with the distribution.

We need to keep the manual short.
-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-28 15:00                       ` Philip K.
                                           ` (2 preceding siblings ...)
       [not found]                         ` <p914ks0kpui.fsf@google.com-M8R14r9----2>
@ 2020-05-30  1:44                         ` Richard Stallman
  2020-05-30  2:02                           ` Jean-Christophe Helary
                                             ` (2 more replies)
  3 siblings, 3 replies; 281+ messages in thread
From: Richard Stallman @ 2020-05-30  1:44 UTC (permalink / raw)
  To: Philip K.; +Cc: kfogel, excalamus, andreas.roehler, drew.adams, 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. ]]]

  > > What does C-g mean? Why the sequence C-g specifically? I think the
  > > disconnect may be that C-g appears outwardly meaningless.

I will ask Greenblatt -- he might remember.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-30  1:44                         ` Richard Stallman
@ 2020-05-30  2:02                           ` Jean-Christophe Helary
  2020-05-30  9:13                             ` Arthur Miller
  2020-05-30 16:43                           ` Alfred M. Szmidt
  2020-07-10 12:13                           ` GNU Emacs raison d'etre Lars Brinkhoff
  2 siblings, 1 reply; 281+ messages in thread
From: Jean-Christophe Helary @ 2020-05-30  2:02 UTC (permalink / raw)
  To: Richard Stallman
  Cc: andreas.roehler, emacs-devel, kfogel, excalamus, Philip K.,
	drew.adams



> On May 30, 2020, at 10:44, Richard Stallman <rms@gnu.org> wrote:
> 
> [[[ 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. ]]]
> 
>>> What does C-g mean? Why the sequence C-g specifically? I think the
>>> disconnect may be that C-g appears outwardly meaningless.
> 
> I will ask Greenblatt -- he might remember.

I'm sure it's interesting for historical purposes but as far as such keybindings are concerned the good thing is that we can find our own stories to remember them, and that's what matters.

I can remember C-[g]et out of here, as I hinted, and now I can remember C-why did [G]reenblatt chose this one ? And C-life is certainly [g]reener on the other side of the window, etc.


-- 
Jean-Christophe Helary @brandelune
http://mac4translators.blogspot.com




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-30  2:02                           ` Jean-Christophe Helary
@ 2020-05-30  9:13                             ` Arthur Miller
  0 siblings, 0 replies; 281+ messages in thread
From: Arthur Miller @ 2020-05-30  9:13 UTC (permalink / raw)
  To: Jean-Christophe Helary
  Cc: Richard Stallman, andreas.roehler, emacs-devel, kfogel, excalamus,
	Philip K., drew.adams

Jean-Christophe Helary <jean.christophe.helary@traduction-libre.org>
writes:

>> On May 30, 2020, at 10:44, Richard Stallman <rms@gnu.org> wrote:
>> 
>> [[[ 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. ]]]
>> 
>>>> What does C-g mean? Why the sequence C-g specifically? I think the
>>>> disconnect may be that C-g appears outwardly meaningless.
>> 
>> I will ask Greenblatt -- he might remember.
>
> I'm sure it's interesting for historical purposes but as far as such keybindings
> are concerned the good thing is that we can find our own stories to remember
> them, and that's what matters.
>
> I can remember C-[g]et out of here, as I hinted, and now I can remember C-why
> did [G]reenblatt chose this one ? And C-life is certainly [g]reener on the other
> side of the window, etc.
Ctrl - [G]NU (Control with GNU! :-))



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-30  1:44                         ` Richard Stallman
  2020-05-30  2:02                           ` Jean-Christophe Helary
@ 2020-05-30 16:43                           ` Alfred M. Szmidt
  2020-05-31  7:07                             ` Richard Stallman
  2020-06-01  7:29                             ` Meaning behind Control-G Lars Brinkhoff
  2020-07-10 12:13                           ` GNU Emacs raison d'etre Lars Brinkhoff
  2 siblings, 2 replies; 281+ messages in thread
From: Alfred M. Szmidt @ 2020-05-30 16:43 UTC (permalink / raw)
  To: rms; +Cc: andreas.roehler, emacs-devel, kfogel, excalamus, philip,
	drew.adams

     > > What does C-g mean? Why the sequence C-g specifically? I think the
     > > disconnect may be that C-g appears outwardly meaningless.

   I will ask Greenblatt -- he might remember.

I suspect there is no deep meaning behind it, the BEL was common way
back then to mean abort, or alert.  TECO and DDT both used C-g for
abort, and since DDT commands where some sort of a C-<ch> sequence it
probobly just made sense..



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-30 16:43                           ` Alfred M. Szmidt
@ 2020-05-31  7:07                             ` Richard Stallman
  2020-06-08 17:37                               ` REmacs was " T.V Raman
  2020-06-01  7:29                             ` Meaning behind Control-G Lars Brinkhoff
  1 sibling, 1 reply; 281+ messages in thread
From: Richard Stallman @ 2020-05-31  7:07 UTC (permalink / raw)
  To: Alfred M. Szmidt
  Cc: andreas.roehler, emacs-devel, kfogel, excalamus, philip,
	drew.adams

[[[ 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 suspect there is no deep meaning behind it, the BEL was common way
  > back then to mean abort, or alert.  TECO and DDT both used C-g for
  > abort,

Are you confident of that?  I don't remember, but if your memory is
clear, that is probably the reason.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Meaning behind Control-G
  2020-05-30 16:43                           ` Alfred M. Szmidt
  2020-05-31  7:07                             ` Richard Stallman
@ 2020-06-01  7:29                             ` Lars Brinkhoff
  2020-06-01  7:56                               ` Lars Brinkhoff
  2020-06-01 13:44                               ` Stefan Monnier
  1 sibling, 2 replies; 281+ messages in thread
From: Lars Brinkhoff @ 2020-06-01  7:29 UTC (permalink / raw)
  To: emacs-devel

> > > > What does C-g mean? Why the sequence C-g specifically? I think
> > > > the disconnect may be that C-g appears outwardly meaningless.
> > > I will ask Greenblatt -- he might remember.
> > I suspect there is no deep meaning behind it, the BEL was common way
> > back then to mean abort, or alert.  TECO and DDT both used C-g for
> > abort,
> Are you confident of that?  I don't remember, but if your memory is
> clear, that is probably the reason.

I remember it clearly, because I use ITS DDT almost daily.  TECO, not so
much but it's easy enough to verify.

Now, why TECO uses Control-G for "quit", I don't know.  ASCII "BEL" as
an "alarm" is a plausible theory, but hard to verify.  In general
there's no strong link between control characteras as inputs and their
corresponding output behaviour.

I see no control character commands here, so maybe Control-G wasn't
in use with PDP-1 TECO:
http://www.bitsavers.org/pdf/mit/rle_pdp1/memos/Murphy_PDP-1_TECO.pdf

I don't see Control-G Here either, so maybe it was added after 1964:
https://github.com/larsbrinkhoff/its-archives/blob/master/ailab/pdp6-memo-2.pdf




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-01  7:29                             ` Meaning behind Control-G Lars Brinkhoff
@ 2020-06-01  7:56                               ` Lars Brinkhoff
  2020-06-01  9:06                                 ` Lars Brinkhoff
  2020-06-01 13:44                               ` Stefan Monnier
  1 sibling, 1 reply; 281+ messages in thread
From: Lars Brinkhoff @ 2020-06-01  7:56 UTC (permalink / raw)
  To: emacs-devel

Lars Brinkhoff wrote:
> I don't see Control-G Here either, so maybe it was added after 1964:
> https://github.com/larsbrinkhoff/its-archives/blob/master/ailab/pdp6-memo-2.pdf

I don't see Control-G in AI memo 81 "PDP-6 TECO" from 1965.
https://dspace.mit.edu/handle/1721.1/5917

I do see it as "quit" in the description of ITS DDT in AI memo 147 from
1968.  It seems likely that once DDT or TECO added Control-G, it would
have jumped to the other pretty quickly.
https://dspace.mit.edu/handle/1721.1/5862




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-01  7:56                               ` Lars Brinkhoff
@ 2020-06-01  9:06                                 ` Lars Brinkhoff
  0 siblings, 0 replies; 281+ messages in thread
From: Lars Brinkhoff @ 2020-06-01  9:06 UTC (permalink / raw)
  To: emacs-devel

AI memo 118 from January 1967 is interesting.  It says about TECO:

  "|G   Takes an optional string argument which, if give, is passed on
        to MACDMP [...]"

"|G" means Control-G.  To have TECO go to MACDMP is a form of abort.

https://dspace.mit.edu/handle/1721.1/5878




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-01  7:29                             ` Meaning behind Control-G Lars Brinkhoff
  2020-06-01  7:56                               ` Lars Brinkhoff
@ 2020-06-01 13:44                               ` Stefan Monnier
  2020-06-02  1:51                                 ` Paul Eggert
  1 sibling, 1 reply; 281+ messages in thread
From: Stefan Monnier @ 2020-06-01 13:44 UTC (permalink / raw)
  To: Lars Brinkhoff; +Cc: emacs-devel

> Now, why TECO uses Control-G for "quit", I don't know.  ASCII "BEL" as
> an "alarm" is a plausible theory, but hard to verify.  In general
> there's no strong link between control characteras as inputs and their
> corresponding output behaviour.

FWIW, the link between C-g and "BEL" is pretty clear: it must be
[G]raham [Bel]l


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-01 13:44                               ` Stefan Monnier
@ 2020-06-02  1:51                                 ` Paul Eggert
  2020-06-02  5:58                                   ` Lars Brinkhoff
  2020-06-02 11:46                                   ` John Yates
  0 siblings, 2 replies; 281+ messages in thread
From: Paul Eggert @ 2020-06-02  1:51 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Lars Brinkhoff, Gordon Bell, emacs-devel

On 6/1/20 6:44 AM, Stefan Monnier wrote:
> FWIW, the link between C-g and "BEL" is pretty clear: it must be
> [G]raham [Bel]l

Hah! As long as we're guessing, why not [G]ordon [Bel]l? His early work predates
ASCII and Wikipedia says he designed the first UART (this was for the PDP-1) so
he was very much in the thick of things when Control-G was invented. I'll cc him
in this email to see whether he knows whether Control-G and BEL are related
because of him.

It's unlikely, though. I looked it up, and BEL goes back to the Western Union
code (sometimes called the Baudot-Murray code, ITA2, or CCITT#2) invented in
1901. It was a 5-bit code with an escape, and BEL was an escaped J. The New
Zealand inventor Donald Murray invented BEL to ring the mechanical bells in his
telegraphic typewriters. (Murray eventually became rich from his teleprinter
patents and died a wealthy philosopher in Switzerland.)

When ASCII was developed in the early 1960s, BEL was one of the standardized
characters for compatibility with ITA2. The developers of ASCII looked at all
the control characters to be standardized, and attempted to maximize the Hamming
distance between the bit patterns of pairs of control characters where confusion
was likely to cause the most damage. (This little tidbit of information comes
from page 245 of Charles E Mackenzie's 1980 book "Coded Character Sets, History
and Development".)

The best person to ask exactly why C-g was assigned to BEL would be Bob Bemer,
co-developer of COBOL and sometimes called the "Father of ASCII" for his lead
role in ASCII standardization. Unfortunately for us he passed away in 2004.

That being said, Western Union and Bell were bitter commercial competitors (see
the Telephone Cases of the 1870s and 1880s), and I very much doubt that Western
Union would name one of its character codes after Alexander Graham Bell.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-02  1:51                                 ` Paul Eggert
@ 2020-06-02  5:58                                   ` Lars Brinkhoff
  2020-06-02 13:50                                     ` Stefan Monnier
  2020-06-02 15:38                                     ` Drew Adams
  2020-06-02 11:46                                   ` John Yates
  1 sibling, 2 replies; 281+ messages in thread
From: Lars Brinkhoff @ 2020-06-02  5:58 UTC (permalink / raw)
  To: emacs-devel

> Stefan Monnier wrote:
>> FWIW, the link between C-g and "BEL" is pretty clear: it must be
>> [G]raham [Bel]l

That's a good one!  Say, was he an early agent 007?

Paul Eggert wrote:
> The best person to ask exactly why C-g was assigned to BEL would be
> Bob Bemer

That's interesting too but the question was, why is Control-G "quit" in
Emacs?




^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-02  1:51                                 ` Paul Eggert
  2020-06-02  5:58                                   ` Lars Brinkhoff
@ 2020-06-02 11:46                                   ` John Yates
  1 sibling, 0 replies; 281+ messages in thread
From: John Yates @ 2020-06-02 11:46 UTC (permalink / raw)
  To: Paul Eggert; +Cc: Lars Brinkhoff, Emacs developers, Stefan Monnier, Gordon Bell

On Mon, Jun 1, 2020 at 9:52 PM Paul Eggert <eggert@cs.ucla.edu> wrote:
> (this was for the PDP-1)

Ah the PDP-1...  Before emacs, and before TECO I used ET
(Expensive Typewriter) on the PDP-1.  And played SpaceWar.
And listened to it play Mozart, Bach and Gilbert & Sullivan.

/john



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: Meaning behind Control-G
  2020-06-02  5:58                                   ` Lars Brinkhoff
@ 2020-06-02 13:50                                     ` Stefan Monnier
  2020-06-02 15:38                                     ` Drew Adams
  1 sibling, 0 replies; 281+ messages in thread
From: Stefan Monnier @ 2020-06-02 13:50 UTC (permalink / raw)
  To: Lars Brinkhoff; +Cc: emacs-devel

>>> FWIW, the link between C-g and "BEL" is pretty clear: it must be
>>> [G]raham [Bel]l
> That's a good one!  Say, was he an early agent 007?

I could answer that question but then I'd have to kill you,


        Stefan




^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: Meaning behind Control-G
  2020-06-02  5:58                                   ` Lars Brinkhoff
  2020-06-02 13:50                                     ` Stefan Monnier
@ 2020-06-02 15:38                                     ` Drew Adams
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-06-02 15:38 UTC (permalink / raw)
  To: Lars Brinkhoff, emacs-devel

> >> FWIW, the link between C-g and "BEL" is pretty clear: it must be
> >> [G]raham [Bel]l
> 
> That's a good one!  Say, was he an early agent 007?

Only hexincidentally.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* pop-up-mini-mode, was Re: GNU Emacs raison d'etre
  2020-05-26  8:06                                                                                             ` martin rudalics
@ 2020-06-05  2:40                                                                                               ` Dmitry Gutov
  0 siblings, 0 replies; 281+ messages in thread
From: Dmitry Gutov @ 2020-06-05  2:40 UTC (permalink / raw)
  To: martin rudalics, Robert Pluim
  Cc: Jean-Christophe Helary, Richard Stallman, Andreas Röhler,
	Emacs developers, Karl Fogel, homeros.misasa, tkk, Sergey Organov,
	Stefan Monnier, Arthur Miller, Eli Zaretskii, Drew Adams,
	Stefan Kangas

Hi Martin,

Sorry for the late response. A detailed reply below.

On 26.05.2020 11:06, martin rudalics wrote:
>  >> I forgot to ask what "startup" means here.  Invoking 'pop-up-mini-mode'
>  >> itself or starting a dialogue as with 'ido-mode'?
>  >
>  > Neither. Emacs startup, and the blink that comes with re-creating the 
> frame. I just meant that I was going to talk about this at some later 
> point, but now I didn't have to.
> ...
>  >
>  >>  >>  > but didn't know
>  >>  >>  > what to attribute it to. Would be great to be able to avoid it.
>  >>  >>
>  >>  >> Is this a blink that happens also when you do
>  >>  >>
>  >>  >> emacs -Q --eval "(setq default-frame-alist '((minibuffer . nil)))"
>  >>  >>
>  >>  >> or does it require the presence of a child frame?
>  >>  >
>  >>  > I couldn't manage to reproduce the bug there.
> 
> I'm confused.  When you do
> 
> emacs -Q --eval "(setq initial-frame-alist '((minibuffer . nil)))"
> 
> you do not see any "blink".  Right?  When instead you do
> 
> emacs -Q --eval "(setq initial-frame-alist '((minibuffer . child-frame)))"
> 
> do you see the blink?  Finally, when you do
> 
> emacs -Q --load ~/pop-up-mini.el
> 
> you see a blink.  Right?

The "blink" is present in all cases. They all delete the original frame 
to create one without minibuffer, right?

>  > One difference I noticed is that the child frame created by
>  > pop-up-mini-mode is constant width,
> 
> I don't understand.  Here it changes its width together with its parent
> frame.

Okay, it's "constant" width. I don't really change the width of the 
frame often. It's the with of the frame.

>  > but the mini-frame created by the
>  > above recipe updates its width dynamically as well
> 
> Why "as well" if the pop-up-mini-mode child frame is _constant_ width?

Updates its width "as well as" its height, sorry, that was probably unclear.

Either resize-mini-frames is nil, and neither dimension updates 
automatically (meaning the height always stays = 1), or both dimensions 
update automatically, and the width follows the width of the prompt + 
input, and that...

>  > . And always feels kinda cramped.
> 
> Which one is cramped?  The normal minibuffer-only frame?

...feels "cramped". Yes, the (minibuffer . nil) case.

Setting this variable to 't' also has the effect of the minibuffer frame 
starting to "drift" across the desktop. It's probable the same issue 
we've seen with moving frames in GNOME Shell.

>  > In any case, it really seems like the blink is due to how updating 
> the size of the popup works: first, the buffer is updated (and redrawn), 
> then the timer resizes the popup, and the buffer is redrawn again. Not 
> sure what the better implementation is going to do, though.
> 
> There is one problem you cannot avoid: You have to know the size of the
> minibuffer text before resizing its frame and only after that you can
> determine its position (within the display or its parent frame).

I have run with pop-up-mini-mode for a few days, and not I think I have 
a different conclusion: there must be at least one other bug in there, 
and that one could be contributing the most annoying part of the effect:

When the aforementioned "blink" happens, it looks like the mode-line 
itself "blinks" (the one that resides just below the child frame). It's 
too fast to see for sure, but it seems like it travels up and then back 
(meaning, the window dimensions change briefly, making the window 
shorter by the same several lines). Maybe it tries to "give way" to the 
phantom minibuffer which used to be below it?

When it doesn't, the resizing of the child frame happens fairly 
smoothly. So if the aforementioned effect is fixed, that would be a 
significant win.

>  > Well, why else? It's the only real way we have to implement "popup" 
> windows. Too bad they don't work in the terminal.
> 
> We could do that just as we pop up menus in a terminal.

Perhaps Someone (sorry) could start working on that? Then we could 
finally have a popup library that can be used both in terminal and 
graphical Emacs. That would be a significant win. I would certainly

> But such popup
> windows would be modal - you cannot really pop them down to see the text
> beneath them.

IME child frames are also always used to create modal popups.

>  > Not sure how it's relevant to the package under discussion. The 
> minibuffer frame I've tried with that default-frame-alist setup didn't 
> really provide a good UI, looks or behavior-wise.
> 
> The (minibuffer . nil) one or the (minibuffer . child-frame) one?

I meant the first one, but neither really works well as a minibuffer 
replacement. The latter is also not very usable without the tweaks in 
popup-up-mini.el.

>  > Via... a frame parameter? OK, I'm probably not going to be very 
> helpful here, at this level of discussion detail. If there are specific 
> hard problems with repro senarios, I could try to take a look later, but 
> I'm only interested in going in this direction if our goal is to make a 
> package for a broad audience.
> 
> Currently, every frame must have a corresponding minibuffer window.  If
> you have more than one minibuffer window at hand, you have to decide
> which one to choose.  For example, with (minibuffer . child-frame) the
> situation is clear - the minibuffer window of each frame is that of its
> minibuffer child frame.

I don't know the low level details, but as long as the child frames 
themselves don't get focus (hopefully all window managers we want to 
support have provisions to enable that), switching the focus between 
frames should be doable. At least in theory.

>  >> Agreed.  And that's why users have to put the necessary customizations
>  >> in their init files and not simply call 'pop-up-mini-mode' from a
>  >> running session.  Although the latter might be a seductive way to test
>  >> it.
>  >
>  > Are you sure this customization couldn't be applied by 
> pop-up-mini-mode? Alternatively, it could be a setup function.
> 
> In practice 'pop-up-mini-mode' is simply not something that comes up
> without customizations in your init file or by calling it from the
> command line.  The reason is the one explained before: You cannot
> convert a minibuffer-equipped frame into a minibuffer-less frame (or do
> the opposite).  The same holds for (minibuffer . child-frame) and
> (minibuffer . nil) setups.

Even if you can't get all the benefits of pop-up-mini-mode for old 
frames (ones that were created before it was enabled), it would be 
better to enable customizations inside the mode. They would apply 
transparently when the mode is enabled, but otherwise stay out of the 
user's custom file.

Also, I think I suggested the trick of re-creating existing frames with 
minibuffers disabled (following what Emacs already does when the 
minibuffer is customized to be in a dedicated frame)? That should work, 
and even the ensuing "blinking" shouldn't be much of annoyance, given it 
will happen in response to an explicit user command.

>  >> inhibits it currently.  The problem perceived here is that one cannot
>  >> derive the actual coordinates of a frame _before_ that frame was mapped
>  >> by the WM and mapping always means to make it visible.
>  >
>  > What about full transparency, then?
> 
> You mean we should come up with a fully transparent frame first, resize
> it and make it opaque then.  I never played around with that but note
> that this would require a compositing window manager and not all of them
> support transparency of child frames.

Something like that.

Given that this blinking happens only once per "real" frame, and it's a 
purely visual annoyance, I think it might be okay even if only a 
fraction of our users will benefit. I kinda managed to get used to this 
particular blinking after a few days.

>  >> OTOH the actual
>  >> coordinates of the minibuffer-equipped frame are needed to make the
>  >> minibuffer-only frame appear at the same position and with the
>  >> requested, properly modified size, taking the user customizations into
>  >> account.
>  >
>  > The minibuffer-only frame which is immediately hidden itself while 
> pop-up-mini-mode is active?
> 
> The "normal" frame.  Note that you have to delete the old
> minibuffer-equipped frame created initially and then replace it with an
> "as similar as possible" minibuffer-less frame.  Look at the code of
> 'frame-notice-user-settings'.

Makes sense, yes. The "full transparency" idea could help, I think.

>  >>  >> Also
>  >>  >> note that we have various strategies to assign the minibuffer 
> window
>  >>  >> ('set-minibuffer-window', the 'minibuffer' frame parameter) so 
> all this
>  >>  >> is more convoluted than it appears at first sight.
>  >>  >
>  >>  > These are implementation options, right? Just pick the most 
> appropriate.
>  >>
>  >> These are user options a user can change any time in a running session.
>  >
>  > Perhaps we can say that they shouldn't.
> 
> I think they do already.

The users that do, will read the fine print in the package's 
description. The majority doesn't touch these functions (I haven't, in 
the many years of using Emacs), and if the package is going to work for 
them out of the box, it's a win.

>  >> But you don't like such aborts ...
>  >
>  > I don't like abort which presume a lot of prior knowledge and/or 
> manual setup.
>  >
>  > "Sorry, pop-up-mini-mode is not supported in a terminal" sounds just 
> fine to me. There's nothing else to do anyway.
> 
> It means that when you customize the minibuffer behavior in your init
> file, you will have to take into account whether you are going to work
> on a terminal or a GUI or maybe both.

Again, I wish we could do it more automatically.

Otherwise the fraction of our users who can benefit from this is going 
to be severely limited.

>  > With Lucid, the blink is the same.
> 
> OK.  IIRC you had some old machine somewhere with a non-mutter WM ...

Okay, booted it up. The machine has Unity installed, which uses Compiz.

And a last year's build of Emacs 27.

The "mode-line traveling" blinking is there. Just barely perceptible, 
because apparently Compiz is faster at rendering (on an older machine) 
than GNOME Shell released last year.

It also happens less frequently there: I only managed to reproduce it 
like 5 times out of 30 tries (with my init script). And with 'emacs -Q', 
it's harder to catch, I manage to see this like 3 times out of 20 tries.

The scenario, to recap:

1. cd ~/vc/emacs-master (adjust your directory accordingly)
2. M-x ido-mode.
3. C-x C-f e (the minibuffer should grow in size to like 3 lines; if it 
doesn't, change the size of the window).
4. If you saw the mode-line blink, good, if not, C-g and repeat.

And hot on the heels of this scenario, another annoyance:

When I do press C-g on step 4, first the child frame resizes to 1 line 
height, then some text flashes on it (the previous contents of the 
minibuffer? the current ones?), and only then it finally settles on the 
empty line with the word "Quit". That happens every time. I wonder if 
that could be improved, too.

>  > I have just tried company-posframe, which renders its popup through 
> the posframe package, and could find such artifacts, even when the popup 
> overlapped the right scroll bar.
> 
> "could find" or "could not find"?

Sorry, could not find.

>  > The minibuffer child frame from pop-up-mini-mode seemed to show 
> glitches like that when it was resized, to accommodate multiple lines.
> 
> Glitches with the scroll bar?

Yes. They weren't there with posframe.

But I just tried to reproduce these scroll bar glitches with with 
x-gtk-resize-child-frames=resize-mode, and couldn't, in ant of the 
configurations. And posframe sets up this variable's value, so that's 
probably it.

>  >> I'd still like to see a list of what people really would like to see 
> wrt
>  >> positioning and resizing the minibuffer window first.
>  >
>  > Does the list at the bottom here look useful? 
> https://github.com/honmaple/emacs-maple-minibuffer/#maple-minibufferpostion-type 
> 
> You mean the list of positions?  We can add that to 'pop-up-mini-mode'
> if we make sure that the child frame always fits into its parent.
> Although we do not care much about the size of the minibuffer window of
> a minibuffer-equipped frame when that frame gets very small either.

I meant, does that list answer your question? The one about "what people 
really would like to see wrt positioning and resizing the minibuffer 
window".

>  > If we had something like that, as well as automatic resizing of the 
> minibuffer popup without blinking, that would be great. Especially if 
> the result worked fine with packages such as icomplete-vertical-mode.
> 
> Since I already don't use icomplete investigating the latter would be
> quite demanding for me.

What do you use? M-x icomplete-mode is a trivial command, and it should 
be unobtrusive even if you're used to the default completion.

> Does 'icomplete-vertical-mode' have problems
> with Emacs' default minibuffer layout?

It has problems with every child frame based minibuffer emulation 
package that I have tried. But no problems with Emacs' default minibuffer.



^ permalink raw reply	[flat|nested] 281+ messages in thread

* REmacs was  Re: GNU Emacs raison d'etre
  2020-05-31  7:07                             ` Richard Stallman
@ 2020-06-08 17:37                               ` T.V Raman
  0 siblings, 0 replies; 281+ messages in thread
From: T.V Raman @ 2020-06-08 17:37 UTC (permalink / raw)
  To: Richard Stallman
  Cc: Alfred M. Szmidt, andreas.roehler, emacs-devel, kfogel, excalamus,
	philip, drew.adams


The "Why emacs" section in the remacs project README  is one of the best
articulations I've read recently of the goodness that Emacs' embodies.

https://github.com/remacs/remacs
Richard Stallman <rms@gnu.org> writes:

s> [[[ 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 suspect there is no deep meaning behind it, the BEL was common way
>   > back then to mean abort, or alert.  TECO and DDT both used C-g for
>   > abort,
>
> Are you confident of that?  I don't remember, but if your memory is
> clear, that is probably the reason.

-- 



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-29 12:59                                           ` Arthur Miller
@ 2020-06-23  3:59                                             ` Richard Stallman
  0 siblings, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-06-23  3:59 UTC (permalink / raw)
  To: Arthur Miller; +Cc: xristos, tomas, joaotavora, 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. ]]]

Please forgive me for taking so long to respond.  I am  backlogged
900 messages I have not yet seen.  I just saw your message today.

I think the Text Invaders idea leads to a wide space
of possible interpretations -- if you write it, you will have
lots of room to see what is fun.

Now all we need is someone (or someones) to give it a try.
Interested?


-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-16 20:44                                       ` Bob Newell
@ 2020-06-24 15:37                                         ` Ricardo Wurmus
  0 siblings, 0 replies; 281+ messages in thread
From: Ricardo Wurmus @ 2020-06-24 15:37 UTC (permalink / raw)
  To: Bob Newell; +Cc: emacs-devel


Bob Newell <bobnewell@bobnewell.net> writes:

> Finally, as a sort of illustrative footnote: there is a
> terminal-based text editor called "Fe, the folding editor"
> written long ago by Michael Haart (moria.de). It isn't well
> know and isn't in any Gnu-Linux distros that I'm aware of.

It’s available in GNU Guix.

-- 
Ricardo



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-05-30  1:44                         ` Richard Stallman
  2020-05-30  2:02                           ` Jean-Christophe Helary
  2020-05-30 16:43                           ` Alfred M. Szmidt
@ 2020-07-10 12:13                           ` Lars Brinkhoff
  2020-07-10 14:28                             ` Drew Adams
  2020-07-11  2:16                             ` Richard Stallman
  2 siblings, 2 replies; 281+ messages in thread
From: Lars Brinkhoff @ 2020-07-10 12:13 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman wrote:
> > > What does C-g mean? Why the sequence C-g specifically? I think the
> > > disconnect may be that C-g appears outwardly meaningless.
>
> I will ask Greenblatt -- he might remember.

I'm curious if Greenblatt had an answer?




^ permalink raw reply	[flat|nested] 281+ messages in thread

* RE: GNU Emacs raison d'etre
  2020-07-10 12:13                           ` GNU Emacs raison d'etre Lars Brinkhoff
@ 2020-07-10 14:28                             ` Drew Adams
  2020-07-11  2:16                             ` Richard Stallman
  1 sibling, 0 replies; 281+ messages in thread
From: Drew Adams @ 2020-07-10 14:28 UTC (permalink / raw)
  To: Lars Brinkhoff, emacs-devel

> > > > What does C-g mean? Why the sequence C-g specifically? I think
> the
> > > > disconnect may be that C-g appears outwardly meaningless.
> >
> > I will ask Greenblatt -- he might remember.
> 
> I'm curious if Greenblatt had an answer?

Perhaps the answer was interrupted by a cosmic stray C-g. ;-)



^ permalink raw reply	[flat|nested] 281+ messages in thread

* Re: GNU Emacs raison d'etre
  2020-07-10 12:13                           ` GNU Emacs raison d'etre Lars Brinkhoff
  2020-07-10 14:28                             ` Drew Adams
@ 2020-07-11  2:16                             ` Richard Stallman
  1 sibling, 0 replies; 281+ messages in thread
From: Richard Stallman @ 2020-07-11  2:16 UTC (permalink / raw)
  To: Lars Brinkhoff; +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'm curious if Greenblatt had an answer?

He never replied.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





^ permalink raw reply	[flat|nested] 281+ messages in thread

end of thread, other threads:[~2020-07-11  2:16 UTC | newest]

Thread overview: 281+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-08  8:26 Making Emacs popular again with a video Nathan Colinet
2020-05-08 10:39 ` Arthur Miller
2020-05-10 20:48   ` Nathan Colinet
2020-05-08 10:41 ` Stefan Kangas
2020-05-10 16:18   ` Nathan Colinet
2020-05-08 11:33 ` Eli Zaretskii
2020-05-10 20:32   ` Nathan Colinet
2020-05-11 22:59     ` Stefan Kangas
2020-05-09  7:50 ` Andreas Röhler
2020-05-10 20:57   ` Nathan Colinet
2020-05-12  3:12     ` Richard Stallman
2020-05-12  7:04       ` Arthur Miller
2020-05-12 13:59         ` Dmitry Gutov
2020-05-12 14:47           ` Arthur Miller
2020-05-12 16:08           ` Drew Adams
2020-05-13  4:01         ` Richard Stallman
2020-05-13  8:49           ` Arthur Miller
2020-05-14  5:14             ` Richard Stallman
2020-05-14 10:22               ` Arthur Miller
2020-05-14 10:55               ` Robert Pluim
2020-05-15  3:25                 ` Richard Stallman
2020-05-15  7:55                   ` Arthur Miller
2020-05-15 10:11                     ` Eli Zaretskii
2020-05-15 10:43                       ` Arthur Miller
2020-05-15 11:23                         ` Eli Zaretskii
2020-05-15 19:15                     ` H. Dieter Wilhelm
2020-05-15 18:41                   ` H. Dieter Wilhelm
2020-05-22 19:09                   ` Ben McGinnes
     [not found]                     ` <E1jcLVP-0003SB-II@fencepost.gnu.org>
2020-05-24 19:16                       ` Ben McGinnes
2020-05-14 14:13               ` Eli Zaretskii
2020-05-14  7:38             ` Tim Cross
2020-05-14  7:51               ` Andreas Röhler
2020-05-14 14:18               ` Eli Zaretskii
2020-05-14 15:36                 ` Tim Cross
2020-05-13 10:43           ` Stefan Kangas
2020-05-12  8:23       ` Andreas Röhler
2020-05-13  3:55         ` Richard Stallman
2020-05-13  8:18           ` Andreas Röhler
2020-05-13 10:53           ` Stefan Kangas
2020-05-13 16:20             ` Drew Adams
2020-05-14  2:18             ` (emacs) Intro [was: Making Emacs popular again with a video] excalamus--- via Emacs development discussions.
2020-05-14 12:04               ` Dmitry Gutov
2020-05-14 21:31                 ` excalamus--- via Emacs development discussions.
2020-05-15  0:46                   ` Dmitry Gutov
     [not found]                   ` <d28fe30d-c192-8022-b758-d8b7019e49b5@yandex.ru-M7KnL6R----2>
2020-05-17 19:11                     ` excalamus--- via Emacs development discussions.
2020-05-19 14:14                       ` excalamus--- via Emacs development discussions.
     [not found]                         ` <d66793e5-07f9-4dd9-928d-e7e8c342b781@default>
     [not found]                           ` <M7iByNw--3-2@tutanota.com>
2020-05-21 18:18                             ` excalamus--- via Emacs development discussions.
     [not found]                             ` <M7sSK-m--3-2@tutanota.com-M7sSUVm--3-2>
2020-05-28  1:21                               ` excalamus--- via Emacs development discussions.
2020-05-28  7:08                                 ` Eli Zaretskii
2020-05-28  7:41                                   ` Andreas Röhler
2020-05-28 10:23                                 ` Stefan Kangas
2020-05-29  2:39                                   ` excalamus--- via Emacs development discussions.
2020-05-29  7:28                                     ` Eli Zaretskii
2020-05-29  7:40                                     ` Stefan Kangas
2020-05-29 15:14                                       ` Stefan Monnier
2020-05-30  1:39                                       ` Richard Stallman
2020-05-14 22:14                 ` Karl Fogel
2020-05-15  3:17               ` Richard Stallman
2020-05-15  6:36               ` Andreas Röhler
2020-05-12 12:57       ` GNU Emacs raison d'etre excalamus--- via Emacs development discussions.
2020-05-13 16:18         ` Karl Fogel
2020-05-13 16:28           ` Drew Adams
2020-05-13 19:39           ` Andreas Röhler
2020-05-13 20:05             ` Karl Fogel
2020-05-13 20:52               ` Dmitry Gutov
2020-05-13 22:04                 ` Karl Fogel
2020-05-13 22:55                   ` Dmitry Gutov
2020-05-14  4:56                     ` Karl Fogel
2020-05-14 16:37                       ` Drew Adams
2020-05-14 22:11                       ` excalamus--- via Emacs development discussions.
2020-05-15  3:16                       ` Richard Stallman
2020-05-15 21:42                         ` Karl Fogel
2020-05-15 22:14                           ` Arthur Miller
2020-05-16  0:03                             ` Dmitry Gutov
2020-05-15 22:41                           ` Drew Adams
2020-05-20 21:47                             ` Karl Fogel
2020-05-20 22:35                               ` Drew Adams
2020-05-21  0:35                                 ` Karl Fogel
2020-05-16  2:43                           ` Eduardo Ochs
2020-05-18  3:46                             ` Richard Stallman
2020-05-18 11:26                               ` Dmitry Gutov
2020-05-16  8:05                           ` Yuri Khan
2020-05-16 10:36                             ` Eli Zaretskii
2020-05-16 10:46                               ` Yuri Khan
2020-05-17  1:28                       ` Dmitry Gutov
2020-05-17  1:39                         ` Dmitry Gutov
2020-05-17  1:40                         ` Dmitry Gutov
2020-05-17  1:59                         ` Jean-Christophe Helary
2020-05-17  2:52                           ` Stefan Kangas
2020-05-17  9:32                             ` Joost Kremers
2020-05-17 11:07                             ` Arthur Miller
2020-05-18  3:43                           ` transient Richard Stallman
2020-05-18  6:58                             ` transient Joost Kremers
2020-05-18 11:29                               ` transient Dmitry Gutov
2020-05-18 18:41                               ` transient Howard Melman
2020-05-18 19:35                                 ` transient John Yates
2020-05-18 19:57                                   ` transient Howard Melman
2020-05-19  5:38                                 ` transient Drew Adams
2020-05-19 14:00                                   ` transient Arthur Miller
2020-05-20  3:14                                     ` transient Michael Heerdegen
2020-05-19 22:04                                   ` transient Stefan Kangas
2020-05-19 22:53                                     ` transient Drew Adams
2020-05-19  4:02                               ` which-key Richard Stallman
2020-05-17  7:09                         ` GNU Emacs raison d'etre Drew Adams
2020-05-20 21:36                           ` Karl Fogel
2020-05-20 21:57                             ` Drew Adams
2020-05-20 22:00                         ` Karl Fogel
2020-05-20 22:07                           ` Dmitry Gutov
2020-05-21  8:03                             ` tomas
2020-05-21  9:33                               ` Arthur Miller
2020-05-21 10:04                                 ` tomas
2020-05-24 14:05                                   ` Arthur Miller
2020-05-21 16:20                                 ` xristos
2020-05-24 13:45                                   ` Arthur Miller
2020-05-24 16:52                                     ` xristos
2020-05-24 17:00                                       ` Eli Zaretskii
2020-05-24 18:31                                     ` Philip K.
2020-05-25 17:34                                   ` João Távora
2020-05-26  4:14                                     ` Richard Stallman
2020-05-26 11:32                                       ` João Távora
2020-05-27  3:08                                         ` Richard Stallman
2020-05-27  5:01                                           ` Drew Adams
2020-05-29 12:59                                           ` Arthur Miller
2020-06-23  3:59                                             ` Richard Stallman
2020-05-21 17:07                               ` Karl Fogel
2020-05-23 20:36                                 ` Dmitry Gutov
2020-05-14  6:26                   ` tomas
2020-05-14  6:16               ` Andreas Röhler
2020-05-15  3:18               ` Richard Stallman
2020-05-16  0:56                 ` Tak Kunihiro
2020-05-16  6:50                   ` Eli Zaretskii
2020-05-16  9:10                     ` Sergey Organov
2020-05-16 10:38                       ` Eli Zaretskii
2020-05-16 12:24                         ` Sergey Organov
2020-05-16 12:29                           ` Eli Zaretskii
2020-05-16 12:34                             ` Sergey Organov
2020-05-16 12:46                               ` Dmitry Gutov
2020-05-16 13:57                                 ` Sergey Organov
2020-05-16 19:35                                   ` Dmitry Gutov
2020-05-16 20:05                                     ` Stefan Kangas
2020-05-16 20:34                                       ` Dmitry Gutov
2020-05-16 20:44                                       ` Bob Newell
2020-06-24 15:37                                         ` Ricardo Wurmus
2020-05-16 23:12                                       ` Drew Adams
2020-05-16 23:18                                         ` Drew Adams
2020-05-16 23:47                                         ` Stefan Kangas
2020-05-17  1:14                                           ` Drew Adams
2020-05-17  3:13                                             ` Stefan Kangas
2020-05-17  6:49                                               ` Drew Adams
2020-05-17  7:02                                                 ` Jean-Christophe Helary
2020-05-17  7:11                                                   ` Drew Adams
2020-05-17  9:07                                                     ` Jean-Christophe Helary
2020-05-17 10:20                                                       ` Marcin Borkowski
2020-05-17 11:07                                                         ` Jean-Christophe Helary
2020-05-17 15:25                                                       ` Eli Zaretskii
2020-05-17 15:48                                                         ` Jean-Christophe Helary
2020-05-17 17:06                                                           ` Stefan Monnier
2020-05-17 17:31                                                             ` Arthur Miller
2020-05-17 18:57                                                               ` Drew Adams
2020-05-17 20:03                                                                 ` Arthur Miller
2020-05-18  8:32                                                                 ` martin rudalics
2020-05-18 11:39                                                                   ` Dmitry Gutov
2020-05-18 13:02                                                                     ` martin rudalics
2020-05-18 13:38                                                                       ` Dmitry Gutov
2020-05-18 16:31                                                                         ` Robert Pluim
2020-05-18 23:14                                                                           ` Dmitry Gutov
2020-05-19  8:41                                                                             ` martin rudalics
2020-05-20  1:01                                                                               ` Dmitry Gutov
2020-05-20  9:06                                                                                 ` martin rudalics
2020-05-21  0:15                                                                                   ` Dmitry Gutov
2020-05-21  9:07                                                                                     ` martin rudalics
2020-05-21 23:16                                                                                       ` Dmitry Gutov
2020-05-22  9:31                                                                                         ` martin rudalics
2020-05-25  2:37                                                                                           ` Dmitry Gutov
2020-05-26  8:06                                                                                             ` martin rudalics
2020-06-05  2:40                                                                                               ` pop-up-mini-mode, was " Dmitry Gutov
2020-05-19  8:40                                                                     ` martin rudalics
2020-05-20  0:40                                                                       ` Dmitry Gutov
2020-05-20  9:04                                                                         ` martin rudalics
2020-05-20 13:28                                                                           ` Dmitry Gutov
2020-05-20 14:45                                                                           ` Eli Zaretskii
2020-05-20 14:56                                                                             ` Dmitry Gutov
2020-05-20 16:12                                                                               ` Eli Zaretskii
2020-05-20 17:45                                                                                 ` martin rudalics
2020-05-20 18:09                                                                                   ` Eli Zaretskii
2020-05-20 18:16                                                                                     ` Eli Zaretskii
2020-05-20 18:24                                                                                     ` Dmitry Gutov
2020-05-20 18:33                                                                                       ` Eli Zaretskii
2020-05-20 18:56                                                                                         ` Eli Zaretskii
2020-05-20 19:22                                                                                           ` Dmitry Gutov
2020-05-20 19:53                                                                                             ` tomas
2020-05-20 21:22                                                                                               ` Dmitry Gutov
2020-05-21  7:43                                                                                                 ` tomas
2020-05-21  2:28                                                                                             ` Eli Zaretskii
2020-05-21 22:19                                                                                               ` Dmitry Gutov
2020-05-22  7:28                                                                                                 ` Eli Zaretskii
2020-05-22 12:16                                                                                                   ` Dmitry Gutov
2020-05-20 23:07                                                                                           ` martin rudalics
2020-05-21 13:11                                                                                             ` Eli Zaretskii
2020-05-21 17:55                                                                                               ` martin rudalics
2020-05-18 15:57                                                                   ` Drew Adams
2020-05-19  8:41                                                                     ` martin rudalics
2020-05-21 18:19                                                                   ` Suppressing beginning/end-of-buffer error messages (WAS: GNU Emacs raison d'etre) Noam Postavsky
2020-05-22  9:30                                                                     ` martin rudalics
2020-05-22 12:46                                                                       ` Noam Postavsky
     [not found]                                                                         ` <11bfe86b-131c-4f55-5125-c269a73e360d@gmx.at>
2020-05-23 11:10                                                                           ` Noam Postavsky
2020-05-17 18:36                                                             ` GNU Emacs raison d'etre Drew Adams
2020-05-17 21:04                                                               ` Stefan Monnier
2020-05-17 21:48                                                                 ` Drew Adams
2020-05-17 18:38                                                             ` Dmitry Gutov
2020-05-17 21:17                                                               ` Stefan Monnier
2020-05-17 21:37                                                                 ` Dmitry Gutov
2020-05-18  8:33                                                                   ` martin rudalics
2020-05-18 11:37                                                                     ` Dmitry Gutov
2020-05-17 21:57                                                                 ` Drew Adams
2020-05-17 18:28                                                           ` Drew Adams
2020-05-17 17:59                                                       ` Drew Adams
2020-05-17 18:07                                                       ` Dmitry Gutov
2020-05-17  7:54                                                   ` Sergey Organov
2020-05-17 11:37                                             ` Dmitry Gutov
2020-05-17 18:11                                               ` Drew Adams
2020-05-16 23:01                                     ` Arthur Miller
2020-05-17  2:55                       ` Richard Stallman
2020-05-28  4:12                 ` Karl Fogel
2020-05-28  5:51                   ` Eduardo Ochs
2020-05-28  6:13                   ` Drew Adams
2020-05-28 14:12                     ` excalamus--- via Emacs development discussions.
2020-05-28 14:42                       ` Jean-Christophe Helary
2020-05-28 16:34                         ` Drew Adams
2020-05-29 14:44                           ` Jean-Christophe Helary
2020-05-28 15:00                       ` Philip K.
2020-05-28 15:13                         ` João Távora
2020-05-28 16:04                         ` T.V Raman
     [not found]                         ` <p914ks0kpui.fsf@google.com-M8R14r9----2>
2020-05-28 16:12                           ` excalamus--- via Emacs development discussions.
2020-05-28 16:46                             ` T.V Raman
2020-05-28 17:34                               ` Karl Fogel
2020-05-28 18:11                               ` andres.ramirez
     [not found]                               ` <877dwwezfr.fsf@red-bean.com-M8RLd3p--3-2>
2020-05-28 18:28                                 ` excalamus--- via Emacs development discussions.
2020-05-29  1:12                                   ` Karl Fogel
2020-05-30  1:44                         ` Richard Stallman
2020-05-30  2:02                           ` Jean-Christophe Helary
2020-05-30  9:13                             ` Arthur Miller
2020-05-30 16:43                           ` Alfred M. Szmidt
2020-05-31  7:07                             ` Richard Stallman
2020-06-08 17:37                               ` REmacs was " T.V Raman
2020-06-01  7:29                             ` Meaning behind Control-G Lars Brinkhoff
2020-06-01  7:56                               ` Lars Brinkhoff
2020-06-01  9:06                                 ` Lars Brinkhoff
2020-06-01 13:44                               ` Stefan Monnier
2020-06-02  1:51                                 ` Paul Eggert
2020-06-02  5:58                                   ` Lars Brinkhoff
2020-06-02 13:50                                     ` Stefan Monnier
2020-06-02 15:38                                     ` Drew Adams
2020-06-02 11:46                                   ` John Yates
2020-07-10 12:13                           ` GNU Emacs raison d'etre Lars Brinkhoff
2020-07-10 14:28                             ` Drew Adams
2020-07-11  2:16                             ` Richard Stallman
2020-05-28 16:41                       ` FW: " Drew Adams
2020-05-28 17:37                       ` Stefan Monnier
2020-05-28 20:33                         ` Perry E. Metzger
2020-05-28 23:44                           ` T.V Raman
2020-05-29  3:04                   ` Richard Stallman
2020-05-13 19:46           ` T.V Raman
2020-05-13 21:00           ` Dmitry Gutov
2020-05-13 21:02           ` excalamus--- via Emacs development discussions.
2020-05-13 22:22           ` H. Dieter Wilhelm
2020-05-14  4:20             ` Karl Fogel
2020-05-14  0:04           ` John Wiegley
2020-05-14  5:08           ` Richard Stallman
2020-05-14 20:29             ` Karl Fogel
  -- strict thread matches above, loose matches on Subject: below --
2020-05-08 10:58 Making Emacs popular again with a video ndame
2020-05-08 11:32 ` Stefan Kangas
2020-05-09 13:28   ` Alan Third
2020-05-09 15:12     ` Stefan Kangas
2020-05-09 19:53     ` Stefan Monnier
2020-05-14 17:11 ndame
2020-05-14 17:48 ` Stefan Monnier
2020-05-14 19:28   ` Drew Adams
2020-05-15  3:11   ` Tim Cross
2020-05-15  3:20   ` Richard Stallman
2020-05-14 22:05 ` T.V Raman

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).