* Emacs Survey: Toolbars @ 2020-12-15 5:30 Lars Ingebrigtsen 2020-12-15 5:57 ` Christopher Dimech ` (8 more replies) 0 siblings, 9 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-15 5:30 UTC (permalink / raw) To: emacs-devel In that mega thread about modernising Emacs, there was a lot of talk about getting more data about how people use Emacs, and then... do something accordingly. Behold: https://emacssurvey.org/2020/ So here's the first thread about actionable takeaways from the survey. (Consider all arguments about the survey not being representative as having been made already.) Of 7.3K respondents, 5K disable toolbars, which is more than two thirds. So perhaps toolbars should default to off? I know toolbars were all the rage in the 90s, but that's apparently not the case now. Opinions? -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen @ 2020-12-15 5:57 ` Christopher Dimech 2020-12-15 6:24 ` Lars Ingebrigtsen 2020-12-15 10:01 ` Jean Louis 2020-12-15 6:24 ` Clément Pit-Claudel ` (7 subsequent siblings) 8 siblings, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 5:57 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel It concludes that besides Emacs, writers are the next group of people who make extensive use of Emacs. One consideration is to improve and enhance tools for writers. Special functionality for writers are Org-Mode, Texinfo, Org-Capture, Calendar, Agenda, Diary. Whilst the last few are of minor interest to programmers, they have value for writers. Another area is Accessibility. --------------------- Christopher Dimech General Administrator - Naiad Informatics - GNU Project (Geocomputation) - Geophysical Simulation - Geological Subsurface Mapping - Disaster Preparedness and Mitigation - Natural Resource Exploration and Production - Free Software Advocacy > Sent: Tuesday, December 15, 2020 at 6:30 AM > From: "Lars Ingebrigtsen" <larsi@gnus.org> > To: emacs-devel@gnu.org > Subject: Emacs Survey: Toolbars > > In that mega thread about modernising Emacs, there was a lot of talk > about getting more data about how people use Emacs, and then... do > something accordingly. > > Behold: https://emacssurvey.org/2020/ > > So here's the first thread about actionable takeaways from the survey. > (Consider all arguments about the survey not being representative as > having been made already.) > > Of 7.3K respondents, 5K disable toolbars, which is more than two > thirds. So perhaps toolbars should default to off? I know toolbars > were all the rage in the 90s, but that's apparently not the case now. > > Opinions? > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:57 ` Christopher Dimech @ 2020-12-15 6:24 ` Lars Ingebrigtsen 2020-12-15 10:01 ` Jean Louis 1 sibling, 0 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-15 6:24 UTC (permalink / raw) To: Christopher Dimech; +Cc: emacs-devel Christopher Dimech <dimech@gmx.com> writes: > It concludes that besides Emacs, writers are the next group of people > who make extensive use of Emacs. I put the word "Toolbars" in the subject of this message because it's about toolbars. If you want to discuss other issues, I suggest you post about that elsewhere. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:57 ` Christopher Dimech 2020-12-15 6:24 ` Lars Ingebrigtsen @ 2020-12-15 10:01 ` Jean Louis 1 sibling, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-15 10:01 UTC (permalink / raw) To: Christopher Dimech, Lars Ingebrigtsen; +Cc: emacs-devel LaTeX and similar also for researchers, writers On December 15, 2020 5:57:55 AM UTC, Christopher Dimech <dimech@gmx.com> wrote: >It concludes that besides Emacs, writers are the next group of people >who make extensive >use of Emacs. One consideration is to improve and enhance tools for >writers. Special >functionality for writers are Org-Mode, Texinfo, Org-Capture, Calendar, >Agenda, Diary. > >Whilst the last few are of minor interest to programmers, they have >value for writers. >Another area is Accessibility. > >--------------------- >Christopher Dimech >General Administrator - Naiad Informatics - GNU Project >(Geocomputation) >- Geophysical Simulation >- Geological Subsurface Mapping >- Disaster Preparedness and Mitigation >- Natural Resource Exploration and Production >- Free Software Advocacy > > >> Sent: Tuesday, December 15, 2020 at 6:30 AM >> From: "Lars Ingebrigtsen" <larsi@gnus.org> >> To: emacs-devel@gnu.org >> Subject: Emacs Survey: Toolbars >> >> In that mega thread about modernising Emacs, there was a lot of talk >> about getting more data about how people use Emacs, and then... do >> something accordingly. Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen 2020-12-15 5:57 ` Christopher Dimech @ 2020-12-15 6:24 ` Clément Pit-Claudel 2020-12-15 9:04 ` Thibaut Verron 2020-12-15 19:06 ` Stephen Leake 2020-12-15 10:00 ` Jean Louis ` (6 subsequent siblings) 8 siblings, 2 replies; 384+ messages in thread From: Clément Pit-Claudel @ 2020-12-15 6:24 UTC (permalink / raw) To: emacs-devel On 12/15/20 12:30 AM, Lars Ingebrigtsen wrote: > Of 7.3K respondents, 5K disable toolbars, which is more than two > thirds. So perhaps toolbars should default to off? I know toolbars > were all the rage in the 90s, but that's apparently not the case now. > > Opinions? 2¢: keep them, though with prettier icons. It's trivial to disable them, but it's not trivial to discover that they exist if they are disabled by default. (FWIW, this is a general philosophy: I think Emacs should ship with a lot more stuff enabled by default, maybe with a spartan-mode to revert to the current defaults.) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 6:24 ` Clément Pit-Claudel @ 2020-12-15 9:04 ` Thibaut Verron 2020-12-15 19:06 ` Stephen Leake 1 sibling, 0 replies; 384+ messages in thread From: Thibaut Verron @ 2020-12-15 9:04 UTC (permalink / raw) To: Clément Pit-Claudel; +Cc: emacs-devel I agree with Clément, for a total of 4 cents. Also, I don't think that there is a clear majority of users disabling the toolbar: instead, it looks like a majority of the respondents (which do not necessarily form a representative sample) disable all three bars and the splash screen, with a few disabling only the toolbar. So if anything, the take-away is that it's not a one-size-fits-all situation. On the topic of enabling/disabling ui elements, I'm curious about the visible-bell answer. Could it be that the question asked if they disabled the visible bell, to which the logical answer for those setting 'visible-bell to t (in order to disable the audible bell) is no. In this case, the only yes would be users either disabling all bells, or keeping the default bell AND knowing about it. It would be interesting to know how many users would want to disable the bell altogether if they knew that it is possible. 2020-12-15 7:24 UTC+01:00, Clément Pit-Claudel <cpitclaudel@gmail.com>: > On 12/15/20 12:30 AM, Lars Ingebrigtsen wrote: >> Of 7.3K respondents, 5K disable toolbars, which is more than two >> thirds. So perhaps toolbars should default to off? I know toolbars >> were all the rage in the 90s, but that's apparently not the case now. >> >> Opinions? > > 2¢: keep them, though with prettier icons. It's trivial to disable them, > but it's not trivial to discover that they exist if they are disabled by > default. > (FWIW, this is a general philosophy: I think Emacs should ship with a lot > more stuff enabled by default, maybe with a spartan-mode to revert to the > current defaults.) > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 6:24 ` Clément Pit-Claudel 2020-12-15 9:04 ` Thibaut Verron @ 2020-12-15 19:06 ` Stephen Leake 2020-12-15 19:33 ` Christopher Dimech 2020-12-15 19:47 ` Christopher Dimech 1 sibling, 2 replies; 384+ messages in thread From: Stephen Leake @ 2020-12-15 19:06 UTC (permalink / raw) To: Clément Pit-Claudel; +Cc: emacs-devel Clément Pit-Claudel <cpitclaudel@gmail.com> writes: > On 12/15/20 12:30 AM, Lars Ingebrigtsen wrote: >> Of 7.3K respondents, 5K disable toolbars, which is more than two >> thirds. So perhaps toolbars should default to off? I know toolbars >> were all the rage in the 90s, but that's apparently not the case now. >> >> Opinions? > > 2¢: keep them, though with prettier icons. It's trivial to disable > them, but it's not trivial to discover that they exist if they are > disabled by default. +1 > (FWIW, this is a general philosophy: I think Emacs should ship with a > lot more stuff enabled by default, maybe with a spartan-mode to revert > to the current defaults.) That works for me as well. Lots of eye candy by default to seduce new users, followed by easy ways to configure the UI for higher productivity (which is why I turn off the toolbar; keystrokes are more efficient than mouse movements, and this gives more screen area for text). -- -- Stephe ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 19:06 ` Stephen Leake @ 2020-12-15 19:33 ` Christopher Dimech 2020-12-15 19:47 ` Christopher Dimech 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 19:33 UTC (permalink / raw) To: Stephen Leake; +Cc: Clément Pit-Claudel, emacs-devel > Sent: Tuesday, December 15, 2020 at 8:06 PM > From: "Stephen Leake" <stephen_leake@stephe-leake.org> > To: "Clément Pit-Claudel" <cpitclaudel@gmail.com> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Clément Pit-Claudel <cpitclaudel@gmail.com> writes: > > > On 12/15/20 12:30 AM, Lars Ingebrigtsen wrote: > >> Of 7.3K respondents, 5K disable toolbars, which is more than two > >> thirds. So perhaps toolbars should default to off? I know toolbars > >> were all the rage in the 90s, but that's apparently not the case now. > >> > >> Opinions? > > > > 2¢: keep them, though with prettier icons. It's trivial to disable > > them, but it's not trivial to discover that they exist if they are > > disabled by default. > > +1 > > > (FWIW, this is a general philosophy: I think Emacs should ship with a > > lot more stuff enabled by default, maybe with a spartan-mode to revert > > to the current defaults.) > > That works for me as well. > > Lots of eye candy by default to seduce new users, followed by easy ways > to configure the UI for higher productivity (which is why I turn off the > toolbar; keystrokes are more efficient than mouse movements, and this > gives more screen area for text). Spot on. We can then just use emacs modes to switch. New users will not need to do anything, whilst experienced users can change modes. The problem that most computer users do not use Gnu is because most computers don't come with a Gnu System Pre-Installed. Do people ordinarily change much on their phones, car, etc... No. What we offer is that if you want change and have the skills (or can get someone with the appropriate skills) you are in a position to do so. But do not give new users more problems by demanding they use the manual and learn elisp to customise the operation of emacs. Rather, the Emacs Mantra should be: ------- Emacs Mantra ------- Those with skills have the possibility to adapt emacs to their needs, once they read the manual and learn elisp programming. > -- > -- Stephe > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 19:06 ` Stephen Leake 2020-12-15 19:33 ` Christopher Dimech @ 2020-12-15 19:47 ` Christopher Dimech 2020-12-16 5:43 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 19:47 UTC (permalink / raw) To: Stephen Leake; +Cc: Clément Pit-Claudel, emacs-devel Accessibility Tools must function by default. Then one can make changes if they want to. How can a person with certain limitations use free software when Emacs Accessibility Tools gets disabled by default??? This is a general introspection not only focused on Emacs. But Emacs developers must remember these things if they want to be considered as serious people. --------------------- Christopher Dimech General Administrator - Naiad Informatics - GNU Project (Geocomputation) - Geophysical Simulation - Geological Subsurface Mapping - Disaster Preparedness and Mitigation - Natural Resource Exploration and Production - Free Software Advocacy > Sent: Tuesday, December 15, 2020 at 8:06 PM > From: "Stephen Leake" <stephen_leake@stephe-leake.org> > To: "Clément Pit-Claudel" <cpitclaudel@gmail.com> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Clément Pit-Claudel <cpitclaudel@gmail.com> writes: > > > On 12/15/20 12:30 AM, Lars Ingebrigtsen wrote: > >> Of 7.3K respondents, 5K disable toolbars, which is more than two > >> thirds. So perhaps toolbars should default to off? I know toolbars > >> were all the rage in the 90s, but that's apparently not the case now. > >> > >> Opinions? > > > > 2¢: keep them, though with prettier icons. It's trivial to disable > > them, but it's not trivial to discover that they exist if they are > > disabled by default. > > +1 > > > (FWIW, this is a general philosophy: I think Emacs should ship with a > > lot more stuff enabled by default, maybe with a spartan-mode to revert > > to the current defaults.) > > That works for me as well. > > Lots of eye candy by default to seduce new users, followed by easy ways > to configure the UI for higher productivity (which is why I turn off the > toolbar; keystrokes are more efficient than mouse movements, and this > gives more screen area for text). > > -- > -- Stephe > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 19:47 ` Christopher Dimech @ 2020-12-16 5:43 ` Richard Stallman 2020-12-16 6:08 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-16 5:43 UTC (permalink / raw) To: Christopher Dimech; +Cc: cpitclaudel, stephen_leake, 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. ]]] > Accessibility Tools must function by default. We were talking about the toolbar, so I am surprised to see reference to "accessibility tools". Can you make the connection relates? > if they want to be considered as serious people. We don't make decisions based on how people might "consider" what we decide to do. However, you might be thinking of some concrete advantage or disadvantage of deleting the toolbar. That could be important -- would you please spell it out? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 5:43 ` Richard Stallman @ 2020-12-16 6:08 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 6:08 UTC (permalink / raw) To: rms; +Cc: cpitclaudel, stephen_leake, emacs-devel > Sent: Wednesday, December 16, 2020 at 6:43 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: cpitclaudel@gmail.com, stephen_leake@stephe-leake.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > Accessibility Tools must function by default. > > We were talking about the toolbar, so I am surprised to see reference > to "accessibility tools". Can you make the connection relates? > > if they want to be considered as serious people. > > We don't make decisions based on how people might "consider" what > we decide to do. However, you might be thinking of some concrete > advantage or disadvantage of deleting the toolbar. That could be > important -- would you please spell it out? The toolbar can be made to be an accessibility tool for people experiencing pain when performing keypresses. If people can introduce a toolbar icon and associate a keybinding with it, they would be able to use that with KMouseTool to perform the icon press for them. And with a virtual keyboard, they can operate KMouseTool for typing. > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen 2020-12-15 5:57 ` Christopher Dimech 2020-12-15 6:24 ` Clément Pit-Claudel @ 2020-12-15 10:00 ` Jean Louis 2020-12-15 15:49 ` Christopher Dimech 2020-12-15 17:07 ` Philip K. 2020-12-15 14:17 ` Emacs Survey: Toolbars Eric S Fraga ` (5 subsequent siblings) 8 siblings, 2 replies; 384+ messages in thread From: Jean Louis @ 2020-12-15 10:00 UTC (permalink / raw) To: Lars Ingebrigtsen, emacs-devel Only small subset of users answered the survey. Emacs is used by much larger number of people. One can see that survey says that users who did answer the survey are on level higher. If you disable the toolbar you are doing it for those who answered the survey, not for those coming to Emacs, larger number of users. If I rememberv well survey also shows that large number of users use it since shorter time like one year meaning that larger number of users drop in the first year. Finding that cause and improving there would keep those users. On December 15, 2020 5:30:20 AM UTC, Lars Ingebrigtsen <larsi@gnus.org> wrote: >In that mega thread about modernising Emacs, there was a lot of talk >about getting more data about how people use Emacs, and then... do >something accordingly. > >Behold: https://emacssurvey.org/2020/ > >So here's the first thread about actionable takeaways from the survey. >(Consider all arguments about the survey not being representative as >having been made already.) > >Of 7.3K respondents, 5K disable toolbars, which is more than two >thirds. So perhaps toolbars should default to off? I know toolbars >were all the rage in the 90s, but that's apparently not the case now. > >Opinions? Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 10:00 ` Jean Louis @ 2020-12-15 15:49 ` Christopher Dimech 2020-12-16 5:44 ` Richard Stallman 2020-12-15 17:07 ` Philip K. 1 sibling, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 15:49 UTC (permalink / raw) To: Jean Louis; +Cc: Lars Ingebrigtsen, emacs-devel It occurs to me that rather than enhancing emacs, we are regressing it. What we need is better functionality for some users which is not about enabling or disabling a long known feature. As one can see, few users program in lisp. Consequently, assuming that people are knowledgeable about elisp programming is wrong. > Sent: Tuesday, December 15, 2020 at 11:00 AM > From: "Jean Louis" <bugs@gnu.support> > To: "Lars Ingebrigtsen" <larsi@gnus.org>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Only small subset of users answered the survey. Emacs is used by much larger number of people. One can see that survey says that users who did answer the survey are on level higher. > > If you disable the toolbar you are doing it for those who answered the survey, not for those coming to Emacs, larger number of users. > > If I rememberv well survey also shows that large number of users use it since shorter time like one year meaning that larger number of users drop in the first year. Finding that cause and improving there would keep those users. > > > > On December 15, 2020 5:30:20 AM UTC, Lars Ingebrigtsen <larsi@gnus.org> wrote: > >In that mega thread about modernising Emacs, there was a lot of talk > >about getting more data about how people use Emacs, and then... do > >something accordingly. > > > >Behold: https://emacssurvey.org/2020/ > > > >So here's the first thread about actionable takeaways from the survey. > >(Consider all arguments about the survey not being representative as > >having been made already.) > > > >Of 7.3K respondents, 5K disable toolbars, which is more than two > >thirds. So perhaps toolbars should default to off? I know toolbars > >were all the rage in the 90s, but that's apparently not the case now. > > > >Opinions? > > > Jean > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 15:49 ` Christopher Dimech @ 2020-12-16 5:44 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-16 5:44 UTC (permalink / raw) To: Christopher Dimech; +Cc: larsi, bugs, 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 one can see, few users program in lisp. Consequently, assuming > that people are knowledgeable about elisp programming is wrong. Indeed, we should not assume that Emacs users can write any Lisp code. Are we doing that? Where are we doing 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 10:00 ` Jean Louis 2020-12-15 15:49 ` Christopher Dimech @ 2020-12-15 17:07 ` Philip K. 2020-12-15 17:30 ` Christopher Dimech 1 sibling, 1 reply; 384+ messages in thread From: Philip K. @ 2020-12-15 17:07 UTC (permalink / raw) To: Jean Louis; +Cc: Lars Ingebrigtsen, emacs-devel Jean Louis <bugs@gnu.support> writes: > Only small subset of users answered the survey. Emacs is used by much larger number of people. One can see that survey says that users who did answer the survey are on level higher. > > If you disable the toolbar you are doing it for those who answered the survey, not for those coming to Emacs, larger number of users. > > If I rememberv well survey also shows that large number of users use > it since shorter time like one year meaning that larger number of > users drop in the first year. Finding that cause and improving there > would keep those users. I guess it would be interesting to also find out what the connection is between newer users and toolbar usage. I personally think that the menu-bar is more than enough (though also not necessary), and that the toolbar is inefficient, and even if it were, it's underutilized. People who use the TUI mode or "distributions" also usually don't have to disable it, so that might also be a factor that has to be considered. > On December 15, 2020 5:30:20 AM UTC, Lars Ingebrigtsen <larsi@gnus.org> wrote: >>In that mega thread about modernising Emacs, there was a lot of talk >>about getting more data about how people use Emacs, and then... do >>something accordingly. >> >>Behold: https://emacssurvey.org/2020/ >> >>So here's the first thread about actionable takeaways from the survey. >>(Consider all arguments about the survey not being representative as >>having been made already.) >> >>Of 7.3K respondents, 5K disable toolbars, which is more than two >>thirds. So perhaps toolbars should default to off? I know toolbars >>were all the rage in the 90s, but that's apparently not the case now. >> >>Opinions? > > > Jean > > -- Philip K. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 17:07 ` Philip K. @ 2020-12-15 17:30 ` Christopher Dimech 2020-12-15 17:40 ` Drew Adams 2020-12-15 18:02 ` dvorak users (was: Emacs Survey: Toolbars) andrés ramírez 0 siblings, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 17:30 UTC (permalink / raw) To: Philip K.; +Cc: Lars Ingebrigtsen, Jean Louis, emacs-devel > Sent: Tuesday, December 15, 2020 at 6:07 PM > From: "Philip K." <philipk@posteo.net> > To: "Jean Louis" <bugs@gnu.support> > Cc: "Lars Ingebrigtsen" <larsi@gnus.org>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Jean Louis <bugs@gnu.support> writes: > > > Only small subset of users answered the survey. Emacs is used by much larger number of people. One can see that survey says that users who did answer the survey are on level higher. > > > > If you disable the toolbar you are doing it for those who answered the survey, not for those coming to Emacs, larger number of users. > > > > If I rememberv well survey also shows that large number of users use > > it since shorter time like one year meaning that larger number of > > users drop in the first year. Finding that cause and improving there > > would keep those users. > > I guess it would be interesting to also find out what the connection is > between newer users and toolbar usage. I personally think that the > menu-bar is more than enough (though also not necessary), and that the > toolbar is inefficient, and even if it were, it's underutilized. The advantage of the menu-bar is that we can have the associated keybindings displayed. And that would be extremely useful for users. They can use the menu to find the associated key binding. Yet, the advantage of finding the keybinding from the menu-bar is not fully realised. This is one thing that could help new users. A serious improvement would involve updating the keybinding strings in the menu-bar according to what is specifically defined by the customisation of the user. Particularly for people not using a querty keyboard. For instance, adapting keybindings for use with the Dvorak Keyboard would be a significant improvement. > People who use the TUI mode or "distributions" also usually don't have > to disable it, so that might also be a factor that has to be considered. > > > On December 15, 2020 5:30:20 AM UTC, Lars Ingebrigtsen <larsi@gnus.org> wrote: > >>In that mega thread about modernising Emacs, there was a lot of talk > >>about getting more data about how people use Emacs, and then... do > >>something accordingly. > >> > >>Behold: https://emacssurvey.org/2020/ > >> > >>So here's the first thread about actionable takeaways from the survey. > >>(Consider all arguments about the survey not being representative as > >>having been made already.) > >> > >>Of 7.3K respondents, 5K disable toolbars, which is more than two > >>thirds. So perhaps toolbars should default to off? I know toolbars > >>were all the rage in the 90s, but that's apparently not the case now. > >> > >>Opinions? > > > > > > Jean > > > > > > -- > Philip K. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-15 17:30 ` Christopher Dimech @ 2020-12-15 17:40 ` Drew Adams 2020-12-15 18:06 ` Christopher Dimech 2020-12-16 9:07 ` Robert Pluim 2020-12-15 18:02 ` dvorak users (was: Emacs Survey: Toolbars) andrés ramírez 1 sibling, 2 replies; 384+ messages in thread From: Drew Adams @ 2020-12-15 17:40 UTC (permalink / raw) To: Christopher Dimech, Philip K.; +Cc: Lars Ingebrigtsen, Jean Louis, emacs-devel > The advantage of the menu-bar is that we can have the associated > keybindings displayed. And that would be extremely useful for users. > They can use the menu to find the associated key binding. Is there something stopping Emacs from including a key binding in the mouseover help text (tooltip or echo area, depending on `tooltip-mode')? That doesn't happen now, but it could, couldn't it? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: RE: Emacs Survey: Toolbars 2020-12-15 17:40 ` Drew Adams @ 2020-12-15 18:06 ` Christopher Dimech 2020-12-16 9:07 ` Robert Pluim 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 18:06 UTC (permalink / raw) To: Drew Adams; +Cc: Philip K., Lars Ingebrigtsen, Jean Louis, emacs-devel > Sent: Tuesday, December 15, 2020 at 6:40 PM > From: "Drew Adams" <drew.adams@oracle.com> > To: "Christopher Dimech" <dimech@gmx.com>, "Philip K." <philipk@posteo.net> > Cc: "Lars Ingebrigtsen" <larsi@gnus.org>, "Jean Louis" <bugs@gnu.support>, emacs-devel@gnu.org > Subject: RE: Emacs Survey: Toolbars > > > The advantage of the menu-bar is that we can have the associated > > keybindings displayed. And that would be extremely useful for users. > > They can use the menu to find the associated key binding. > > Is there something stopping Emacs from including > a key binding in the mouseover help text (tooltip > or echo area, depending on `tooltip-mode')? > > That doesn't happen now, but it could, couldn't it? That would appreciated by new users as they would have a convenient and intuitive way to know the key binding. This without having to use keybinding ("C-h b", "C-h k", "C-h f") to find out about frequently used keybindings. Immediately getting to use ("C-h b", "C-h k", "C-h f") can be overwhelming to new users, particularly for school aged kids (aged 7-14). ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 17:40 ` Drew Adams 2020-12-15 18:06 ` Christopher Dimech @ 2020-12-16 9:07 ` Robert Pluim 2020-12-16 17:03 ` Drew Adams 1 sibling, 1 reply; 384+ messages in thread From: Robert Pluim @ 2020-12-16 9:07 UTC (permalink / raw) To: Drew Adams Cc: Christopher Dimech, Philip K., Lars Ingebrigtsen, Jean Louis, emacs-devel Drew Adams <drew.adams@oracle.com> writes: >> The advantage of the menu-bar is that we can have the associated >> keybindings displayed. And that would be extremely useful for users. >> They can use the menu to find the associated key binding. > > Is there something stopping Emacs from including > a key binding in the mouseover help text (tooltip > or echo area, depending on `tooltip-mode')? > > That doesn't happen now, but it could, couldn't it? In the toolbar? I see keybindings in mouseover text here in both emacs-27 and master, on both GNU/Linux and macOS. Robert ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-16 9:07 ` Robert Pluim @ 2020-12-16 17:03 ` Drew Adams 0 siblings, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-16 17:03 UTC (permalink / raw) To: Robert Pluim Cc: Christopher Dimech, Philip K., Lars Ingebrigtsen, Jean Louis, emacs-devel > > Is there something stopping Emacs from including > > a key binding in the mouseover help text (tooltip > > or echo area, depending on `tooltip-mode')? > > > > That doesn't happen now, but it could, couldn't it? > > In the toolbar? I see keybindings in mouseover text here in both > emacs-27 and master, on both GNU/Linux and macOS. Great. Yes, that was apparently added in Emacs 27. [I'm still using Emacs 26.3 (can't use 27).] ^ permalink raw reply [flat|nested] 384+ messages in thread
* dvorak users (was: Emacs Survey: Toolbars) 2020-12-15 17:30 ` Christopher Dimech 2020-12-15 17:40 ` Drew Adams @ 2020-12-15 18:02 ` andrés ramírez 2020-12-15 18:40 ` Christopher Dimech 2020-12-17 22:23 ` Ricardo Wurmus 1 sibling, 2 replies; 384+ messages in thread From: andrés ramírez @ 2020-12-15 18:02 UTC (permalink / raw) To: Christopher Dimech; +Cc: Philip K., Lars Ingebrigtsen, Jean Louis, emacs-devel Hi Christopher. >>>>> "Christopher" == Christopher Dimech <dimech@gmx.com> writes: [...] Christopher> Particularly for people not using a querty keyboard. For instance, adapting Christopher> keybindings for use with the Dvorak Keyboard would be a significant improvement. I think for dvorak users a good tip is remapping C-t to C-x --8<---------------cut here---------------start------------->8--- (defmacro wiki/bind-dvorak-helper (key fn) `(global-set-key (kbd ,key) ,(if (listp fn) fn `',fn))) (wiki/bind-dvorak-helper "C-t" (lookup-key global-map (kbd "C-x"))) --8<---------------cut here---------------end--------------->8--- After doing above You would need to be careful when on dired. (C-t). Also map C-c C-m as execute-extended-command --8<---------------cut here---------------start------------->8--- (global-set-key (kbd "C-x C-m") 'execute-extended-command) (global-set-key (kbd "\C-c\C-m") 'execute-extended-command) ; {from effective emacs} --8<---------------cut here---------------end--------------->8--- [...] Best Regards ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: dvorak users (was: Emacs Survey: Toolbars) 2020-12-15 18:02 ` dvorak users (was: Emacs Survey: Toolbars) andrés ramírez @ 2020-12-15 18:40 ` Christopher Dimech 2020-12-17 22:23 ` Ricardo Wurmus 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 18:40 UTC (permalink / raw) To: andrés ramírez Cc: Philip K., Lars Ingebrigtsen, Jean Louis, emacs-devel > Sent: Tuesday, December 15, 2020 at 7:02 PM > From: "andrés ramírez" <rrandresf@gmail.com> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: "Philip K." <philipk@posteo.net>, "Lars Ingebrigtsen" <larsi@gnus.org>, "Jean Louis" <bugs@gnu.support>, emacs-devel@gnu.org > Subject: dvorak users (was: Emacs Survey: Toolbars) > > Hi Christopher. > > >>>>> "Christopher" == Christopher Dimech <dimech@gmx.com> writes: > > > [...] > > > Christopher> Particularly for people not using a querty keyboard. For instance, adapting > Christopher> keybindings for use with the Dvorak Keyboard would be a significant improvement. > > I think for dvorak users a good tip is remapping C-t to C-x > --8<---------------cut here---------------start------------->8--- > (defmacro wiki/bind-dvorak-helper (key fn) > `(global-set-key (kbd ,key) ,(if (listp fn) fn `',fn))) > (wiki/bind-dvorak-helper "C-t" (lookup-key global-map (kbd "C-x"))) > --8<---------------cut here---------------end--------------->8--- > > After doing above You would need to be careful when on dired. (C-t). > > Also map C-c C-m as execute-extended-command > --8<---------------cut here---------------start------------->8--- > (global-set-key (kbd "C-x C-m") 'execute-extended-command) > (global-set-key (kbd "\C-c\C-m") 'execute-extended-command) ; {from effective emacs} > --8<---------------cut here---------------end--------------->8--- Quite correct Mr. Ramírez. The important thing for Productivity and the eradication of Repetitive Strain Injury is not the keybinding, but the keyboard setup. > > [...] > > Best Regards > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: dvorak users (was: Emacs Survey: Toolbars) 2020-12-15 18:02 ` dvorak users (was: Emacs Survey: Toolbars) andrés ramírez 2020-12-15 18:40 ` Christopher Dimech @ 2020-12-17 22:23 ` Ricardo Wurmus 1 sibling, 0 replies; 384+ messages in thread From: Ricardo Wurmus @ 2020-12-17 22:23 UTC (permalink / raw) To: andrés ramírez Cc: Christopher Dimech, Philip K., Lars Ingebrigtsen, Jean Louis, emacs-devel andrés ramírez <rrandresf@gmail.com> writes: > Hi Christopher. > >>>>>> "Christopher" == Christopher Dimech <dimech@gmx.com> writes: > > > [...] > > > Christopher> Particularly for people not using a querty keyboard. For instance, adapting > Christopher> keybindings for use with the Dvorak Keyboard would be a significant improvement. > > I think for dvorak users a good tip is remapping C-t to C-x > --8<---------------cut here---------------start------------->8--- > (defmacro wiki/bind-dvorak-helper (key fn) > `(global-set-key (kbd ,key) ,(if (listp fn) fn `',fn))) > (wiki/bind-dvorak-helper "C-t" (lookup-key global-map (kbd "C-x"))) > --8<---------------cut here---------------end--------------->8--- Another global solution is this: (define-key key-translation-map [?\C-x] [?\C-t]) (define-key key-translation-map [?\C-t] [?\C-x]) I’ve been using this for many years. -- Ricardo ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen ` (2 preceding siblings ...) 2020-12-15 10:00 ` Jean Louis @ 2020-12-15 14:17 ` Eric S Fraga 2020-12-15 14:50 ` Lars Ingebrigtsen 2020-12-15 16:12 ` Christopher Dimech 2020-12-15 14:29 ` Stefan Monnier ` (4 subsequent siblings) 8 siblings, 2 replies; 384+ messages in thread From: Eric S Fraga @ 2020-12-15 14:17 UTC (permalink / raw) To: emacs-devel Although I disabled the toolbar when it first appeared (in the dim and distant past), I think it's a good idea to leave them on by default. They are easy enough to disable and provide help for the true neophyte. In fact, learning how to disable the toolbar is probably a good first exercise in customizing your Emacs! -- Eric S Fraga via Emacs 28.0.50 & org 9.4 on Debian bullseye/sid ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:17 ` Emacs Survey: Toolbars Eric S Fraga @ 2020-12-15 14:50 ` Lars Ingebrigtsen 2020-12-15 14:56 ` Eric S Fraga 2020-12-15 15:14 ` Óscar Fuentes 2020-12-15 16:12 ` Christopher Dimech 1 sibling, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-15 14:50 UTC (permalink / raw) To: Eric S Fraga; +Cc: emacs-devel Eric S Fraga <e.fraga@ucl.ac.uk> writes: > They are easy enough to disable and provide help for the true > neophyte. We have no data to support that. > In fact, learning how to disable the toolbar is probably a > good first exercise in customizing your Emacs! I don't think that's a good argument for having a GUI element that few people like, and which may well be discouraging people from using Emacs at all (because it looks useless and out of touch). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:50 ` Lars Ingebrigtsen @ 2020-12-15 14:56 ` Eric S Fraga 2020-12-15 15:14 ` Óscar Fuentes 1 sibling, 0 replies; 384+ messages in thread From: Eric S Fraga @ 2020-12-15 14:56 UTC (permalink / raw) To: emacs-devel Okay. I'm not really bothered either way! -- Eric S Fraga via Emacs 28.0.50 & org 9.4 on Debian bullseye/sid ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:50 ` Lars Ingebrigtsen 2020-12-15 14:56 ` Eric S Fraga @ 2020-12-15 15:14 ` Óscar Fuentes 2020-12-15 15:33 ` Lars Ingebrigtsen 1 sibling, 1 reply; 384+ messages in thread From: Óscar Fuentes @ 2020-12-15 15:14 UTC (permalink / raw) To: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Eric S Fraga <e.fraga@ucl.ac.uk> writes: > >> They are easy enough to disable and provide help for the true >> neophyte. > > We have no data to support that. > >> In fact, learning how to disable the toolbar is probably a >> good first exercise in customizing your Emacs! > > I don't think that's a good argument for having a GUI element that few > people like, We have no data to support that. > and which may well be discouraging people from using Emacs > at all (because it looks useless and out of touch). We have no data to support that. ;-) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 15:14 ` Óscar Fuentes @ 2020-12-15 15:33 ` Lars Ingebrigtsen 2020-12-15 17:47 ` Óscar Fuentes ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-15 15:33 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel Óscar Fuentes <ofv@wanadoo.es> writes: >> I don't think that's a good argument for having a GUI element that few >> people like, > > We have no data to support that. I know you're being funny, but: The only data we have does support that. >> and which may well be discouraging people from using Emacs >> at all (because it looks useless and out of touch). > > We have no data to support that. I did, very carefully, not claim that we do. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 15:33 ` Lars Ingebrigtsen @ 2020-12-15 17:47 ` Óscar Fuentes 2020-12-15 18:11 ` Christopher Dimech 2020-12-15 18:48 ` Philip K. 2020-12-15 18:51 ` Jean Louis 2020-12-15 20:58 ` Dmitry Gutov 2 siblings, 2 replies; 384+ messages in thread From: Óscar Fuentes @ 2020-12-15 17:47 UTC (permalink / raw) To: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Óscar Fuentes <ofv@wanadoo.es> writes: > >>> I don't think that's a good argument for having a GUI element that few >>> people like, >> >> We have no data to support that. > > I know you're being funny, but: The only data we have does support that. "Only data" != "data reliable enough to support decissions". >>> and which may well be discouraging people from using Emacs >>> at all (because it looks useless and out of touch). >> >> We have no data to support that. > > I did, very carefully, not claim that we do. At some point on the past it was decided that having a toolbar was a good thing. Switching it off just because a very poorly executed survey barely resembles a democratic vote on its utility, without revisiting the original motivation, is questionable. Really, this kind of decissions should be based on guidance by UI experts. Sadly, it seems that we have none onboard, same as every other Free or Open Source projects around (and even most propietary ones). They are very scarce. BTW, I disable the toolbar (and the menu) on my config. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 17:47 ` Óscar Fuentes @ 2020-12-15 18:11 ` Christopher Dimech 2020-12-15 18:48 ` Philip K. 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 18:11 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel > Sent: Tuesday, December 15, 2020 at 6:47 PM > From: "Óscar Fuentes" <ofv@wanadoo.es> > To: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Lars Ingebrigtsen <larsi@gnus.org> writes: > > > Óscar Fuentes <ofv@wanadoo.es> writes: > > > >>> I don't think that's a good argument for having a GUI element that few > >>> people like, > >> > >> We have no data to support that. > > > > I know you're being funny, but: The only data we have does support that. > > "Only data" != "data reliable enough to support decissions". > > >>> and which may well be discouraging people from using Emacs > >>> at all (because it looks useless and out of touch). > >> > >> We have no data to support that. > > > > I did, very carefully, not claim that we do. > > At some point on the past it was decided that having a toolbar was a > good thing. Switching it off just because a very poorly executed survey > barely resembles a democratic vote on its utility, without revisiting > the original motivation, is questionable. > > Really, this kind of decissions should be based on guidance by UI > experts. Sadly, it seems that we have none onboard, same as every other > Free or Open Source projects around (and even most propietary ones). > They are very scarce. I am! Having worked in remote sensing applications for natural resource management, and submarine surveillance (my current specialisation). > BTW, I disable the toolbar (and the menu) on my config. > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 17:47 ` Óscar Fuentes 2020-12-15 18:11 ` Christopher Dimech @ 2020-12-15 18:48 ` Philip K. 2020-12-15 19:02 ` Jean Louis ` (2 more replies) 1 sibling, 3 replies; 384+ messages in thread From: Philip K. @ 2020-12-15 18:48 UTC (permalink / raw) To: Óscar Fuentes; +Cc: emacs-devel Óscar Fuentes <ofv@wanadoo.es> writes: >>>> and which may well be discouraging people from using Emacs >>>> at all (because it looks useless and out of touch). >>> >>> We have no data to support that. >> >> I did, very carefully, not claim that we do. > > At some point on the past it was decided that having a toolbar was a > good thing. Switching it off just because a very poorly executed survey > barely resembles a democratic vote on its utility, without revisiting > the original motivation, is questionable. > > Really, this kind of decissions should be based on guidance by UI > experts. Sadly, it seems that we have none onboard, same as every other > Free or Open Source projects around (and even most propietary ones). > They are very scarce. Maybe I'm too cynical, but can a non-Emacs UI expert really help with something as other-worldly as Emacs? And I don't even mean this in an elitist way, just that it has so many conventions and usage-patterns from parallel UI traditions, that it might seem easier to just start all over (which I'm not advocating for). > BTW, I disable the toolbar (and the menu) on my config. -- Philip K. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 18:48 ` Philip K. @ 2020-12-15 19:02 ` Jean Louis 2020-12-15 19:21 ` Christopher Dimech 2020-12-15 19:17 ` Christopher Dimech 2020-12-16 5:43 ` Richard Stallman 2 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-15 19:02 UTC (permalink / raw) To: Philip K.; +Cc: Óscar Fuentes, emacs-devel * Philip K. <philipk@posteo.net> [2020-12-15 21:49]: > Óscar Fuentes <ofv@wanadoo.es> writes: > > Really, this kind of decissions should be based on guidance by UI > > experts. Sadly, it seems that we have none onboard, same as every other > > Free or Open Source projects around (and even most propietary ones). > > They are very scarce. > > Maybe I'm too cynical, but can a non-Emacs UI expert really help with > something as other-worldly as Emacs? And I don't even mean this in an > elitist way, just that it has so many conventions and usage-patterns > from parallel UI traditions, that it might seem easier to just start all > over (which I'm not advocating for). Usability advises by Nielsen can definitely help, see here the outline of a test: https://www.nngroup.com/articles/usability-testing-101/ If we have clear proposal on testing, I can provide the test with 5 people around me and give you results, then few other people can test other few people and provide results. Or one built-in usability survey can be delivered with Emacs or answered straight by people from Help menu. It does not cost more than effort, not money. That would accumulate data over time to know what people need and want and how to improve the interface. Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 19:02 ` Jean Louis @ 2020-12-15 19:21 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 19:21 UTC (permalink / raw) To: Jean Louis; +Cc: Óscar Fuentes, Philip K., emacs-devel Then make a specific emacs mailing list for the topic and take live statistics from there. > Sent: Tuesday, December 15, 2020 at 8:02 PM > From: "Jean Louis" <bugs@gnu.support> > To: "Philip K." <philipk@posteo.net> > Cc: "Óscar Fuentes" <ofv@wanadoo.es>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > * Philip K. <philipk@posteo.net> [2020-12-15 21:49]: > > Óscar Fuentes <ofv@wanadoo.es> writes: > > > Really, this kind of decissions should be based on guidance by UI > > > experts. Sadly, it seems that we have none onboard, same as every other > > > Free or Open Source projects around (and even most propietary ones). > > > They are very scarce. > > > > Maybe I'm too cynical, but can a non-Emacs UI expert really help with > > something as other-worldly as Emacs? And I don't even mean this in an > > elitist way, just that it has so many conventions and usage-patterns > > from parallel UI traditions, that it might seem easier to just start all > > over (which I'm not advocating for). > > Usability advises by Nielsen can definitely help, see here the outline > of a test: https://www.nngroup.com/articles/usability-testing-101/ > > If we have clear proposal on testing, I can provide the test with 5 > people around me and give you results, then few other people can test > other few people and provide results. Or one built-in usability survey > can be delivered with Emacs or answered straight by people from Help > menu. It does not cost more than effort, not money. > > That would accumulate data over time to know what people need and want > and how to improve the interface. > > Jean > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 18:48 ` Philip K. 2020-12-15 19:02 ` Jean Louis @ 2020-12-15 19:17 ` Christopher Dimech 2020-12-16 5:43 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 19:17 UTC (permalink / raw) To: Philip K.; +Cc: Óscar Fuentes, emacs-devel > Sent: Tuesday, December 15, 2020 at 7:48 PM > From: "Philip K." <philipk@posteo.net> > To: "Óscar Fuentes" <ofv@wanadoo.es> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Óscar Fuentes <ofv@wanadoo.es> writes: > > >>>> and which may well be discouraging people from using Emacs > >>>> at all (because it looks useless and out of touch). > >>> > >>> We have no data to support that. > >> > >> I did, very carefully, not claim that we do. > > > > At some point on the past it was decided that having a toolbar was a > > good thing. Switching it off just because a very poorly executed survey > > barely resembles a democratic vote on its utility, without revisiting > > the original motivation, is questionable. > > > > Really, this kind of decissions should be based on guidance by UI > > experts. Sadly, it seems that we have none onboard, same as every other > > Free or Open Source projects around (and even most propietary ones). > > They are very scarce. > > Maybe I'm too cynical, but can a non-Emacs UI expert really help with > something as other-worldly as Emacs? And I don't even mean this in an > elitist way, just that it has so many conventions and usage-patterns > from parallel UI traditions, that it might seem easier to just start all > over (which I'm not advocating for). Now start all over, but transition certain modes, or write new modes. We should not be afraid to throw away old functionality if things get better. Ultimately, Richard Stallman started his grudge because using the printer ended up not being convenient for him. I do not see many with the Stallman's Approach - I can do better, I have the skills, and I will write new code, from scratch if necessary. Only after about 8 years of Gnu did we start to see operational advantages. This reminds me of Tevye in the village of Anatevka in the opening number "Tradition" of the 1964 Broadway Musical. Emacs must be for worldly people today, as was being for done for worldly people in the 80's. > > BTW, I disable the toolbar (and the menu) on my config. > > -- > Philip K. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 18:48 ` Philip K. 2020-12-15 19:02 ` Jean Louis 2020-12-15 19:17 ` Christopher Dimech @ 2020-12-16 5:43 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-16 5:43 UTC (permalink / raw) To: Philip K.; +Cc: ofv, 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 I'm too cynical, but can a non-Emacs UI expert really help with > something as other-worldly as Emacs? They might perhaps have some good advice for us. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 15:33 ` Lars Ingebrigtsen 2020-12-15 17:47 ` Óscar Fuentes @ 2020-12-15 18:51 ` Jean Louis 2020-12-20 4:23 ` Adrien Brochard 2020-12-15 20:58 ` Dmitry Gutov 2 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-15 18:51 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Óscar Fuentes, emacs-devel * Lars Ingebrigtsen <larsi@gnus.org> [2020-12-15 18:44]: > Óscar Fuentes <ofv@wanadoo.es> writes: > > >> I don't think that's a good argument for having a GUI element that few > >> people like, > > > > We have no data to support that. > > I know you're being funny, but: The only data we have does support > that. Majority of users for the survey, if I remember well, came from Reddit. There was description where it was marketed mostly. Thus survey is not general Emacs survey, it is survey of mostly Reddit users who may be or probably are more skillful. If it would be general Emacs survey with general group of users mixed with beginners, intermediate and advanced users and they all say by majority they need no tool bar that would be valid information. It looks that it is just specific group of more than intermediate users of Emacs that disable toolbar. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 18:51 ` Jean Louis @ 2020-12-20 4:23 ` Adrien Brochard 2020-12-20 4:35 ` Christopher Dimech 2020-12-20 10:57 ` Jean Louis 0 siblings, 2 replies; 384+ messages in thread From: Adrien Brochard @ 2020-12-20 4:23 UTC (permalink / raw) To: Jean Louis, emacs-devel > Majority of users for the survey, if I remember well, came from > Reddit. There was description where it was marketed mostly. > > Thus survey is not general Emacs survey, it is survey of mostly Reddit > users who may be or probably are more skillful. What makes you think that people coming from the Reddit channel are more skillful? If someone googles an Emacs question, getting directed to r/emacs and finding the survey there is pretty likely. > If it would be general Emacs survey with general group of users mixed > with beginners, intermediate and advanced users and they all say by > majority they need no tool bar that would be valid information. > > It looks that it is just specific group of more than intermediate > users of Emacs that disable toolbar. You guys should look into weighting adjustment of the data if you think a population is over-represented. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 4:23 ` Adrien Brochard @ 2020-12-20 4:35 ` Christopher Dimech 2020-12-20 13:44 ` Dmitry Gutov 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. 2020-12-20 10:57 ` Jean Louis 1 sibling, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-20 4:35 UTC (permalink / raw) To: Adrien Brochard; +Cc: Jean Louis, emacs-devel > Sent: Sunday, December 20, 2020 at 9:53 AM > From: "Adrien Brochard" <abrochard@gmx.com> > To: "Jean Louis" <bugs@gnu.support>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > Majority of users for the survey, if I remember well, came from > > Reddit. There was description where it was marketed mostly. > > > > Thus survey is not general Emacs survey, it is survey of mostly Reddit > > users who may be or probably are more skillful. > > What makes you think that people coming from the Reddit channel are more > skillful? If someone googles an Emacs question, getting directed to > r/emacs and finding the survey there is pretty likely. > > > If it would be general Emacs survey with general group of users mixed > > with beginners, intermediate and advanced users and they all say by > > majority they need no tool bar that would be valid information. > > > > It looks that it is just specific group of more than intermediate > > users of Emacs that disable toolbar. > > You guys should look into weighting adjustment of the data if you think > a population is over-represented. Shitty data obtained without care, attention, and skill is useless data. Forget the weighting! ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 4:35 ` Christopher Dimech @ 2020-12-20 13:44 ` Dmitry Gutov 2020-12-20 20:36 ` Christopher Dimech 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. 1 sibling, 1 reply; 384+ messages in thread From: Dmitry Gutov @ 2020-12-20 13:44 UTC (permalink / raw) To: Christopher Dimech, Adrien Brochard; +Cc: Jean Louis, emacs-devel Hi Christopher, On 20.12.2020 06:35, Christopher Dimech wrote: > Shitty data obtained without care, attention, and skill is useless data. Forget the weighting! Please behave in a more civil matter here. Also check out https://www.gnu.org/philosophy/kind-communication.html ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 13:44 ` Dmitry Gutov @ 2020-12-20 20:36 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-20 20:36 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Adrien Brochard, Jean Louis, emacs-devel Statistics give people the starting point to delve into that evidence and see if the arguments hold together. Reality must come before public relations for nature cannot be fooled. I am one of those people discouraged from participating in Gnu development not because of certain patterns of communication, but of certain patterns of working. Fluttering Kind Communication Guidelines won't help. --------------------- Christopher Dimech General Administrator - Naiad Informatics - GNU Project (Geocomputation) - Geophysical Simulation - Geological Subsurface Mapping - Disaster Preparedness and Mitigation - Natural Resource Exploration and Production - Free Software Advocacy > Sent: Sunday, December 20, 2020 at 7:14 PM > From: "Dmitry Gutov" <dgutov@yandex.ru> > To: "Christopher Dimech" <dimech@gmx.com>, "Adrien Brochard" <abrochard@gmx.com> > Cc: "Jean Louis" <bugs@gnu.support>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Hi Christopher, > > On 20.12.2020 06:35, Christopher Dimech wrote: > > Shitty data obtained without care, attention, and skill is useless data. Forget the weighting! > > Please behave in a more civil matter here. > > Also check out https://www.gnu.org/philosophy/kind-communication.html > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 4:35 ` Christopher Dimech 2020-12-20 13:44 ` Dmitry Gutov @ 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. 2020-12-22 12:22 ` Christopher Dimech ` (2 more replies) 1 sibling, 3 replies; 384+ messages in thread From: Gregory Heytings via Emacs development discussions. @ 2020-12-22 10:58 UTC (permalink / raw) To: Christopher Dimech; +Cc: emacs-devel Christopher Dimech: > > Shitty data obtained without care, attention, and skill is useless data. > Forget the weighting! > As the saying goes: "Criticism is easy, and art is difficult." Could you please create and conduct a "good" survey, according to your criteria of "good"? Or at least enlighten us, poor mortals, and explain what should have been done, and how? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. @ 2020-12-22 12:22 ` Christopher Dimech 2020-12-22 14:05 ` Jean Louis 2020-12-22 14:02 ` Jean Louis 2020-12-23 4:26 ` Richard Stallman 2 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-22 12:22 UTC (permalink / raw) To: ghe; +Cc: emacs-devel That was a criticism on using weighting to account for missing data. Weighting is customarily used to reduce noise levels or as a sparsity constraint. One possibility would be a live survey (on the emacs website, a mailing list, ...). Apologies if the comment was too harsh. The basic criticism has been that it favoured experienced users. Another way is to have multiple surveys based on emacs use experience, and then normalise the results between the different experience levels. In that way things won't get skewed. I would think that if there are competing views, we must not favour one or the other, but consider them equally valid. It would then be simply a question of priority or perhaps measured on difficulty. There is use for toolbars and should not be discounted. Another way is to isolate functionality so those who want to use then can install a package. Ultimately, it is for the maintainers and contributors to decide. There are many books on statistical inference. A popular technique is to divide the data into groups followed by a data representation strategy based on the most significant clusters. One can also study correlations between groups as being statistically significant. > Sent: Tuesday, December 22, 2020 at 4:28 PM > From: "Gregory Heytings via Emacs development discussions." <emacs-devel@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > Christopher Dimech: > > > > Shitty data obtained without care, attention, and skill is useless data. > > Forget the weighting! > > > > As the saying goes: "Criticism is easy, and art is difficult." Could you > please create and conduct a "good" survey, according to your criteria of > "good"? Or at least enlighten us, poor mortals, and explain what should > have been done, and how? > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 12:22 ` Christopher Dimech @ 2020-12-22 14:05 ` Jean Louis 0 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-22 14:05 UTC (permalink / raw) To: Christopher Dimech; +Cc: ghe, emacs-devel * Christopher Dimech <dimech@gmx.com> [2020-12-22 15:23]: > That was a criticism on using weighting to account for missing data. Weighting is > customarily used to reduce noise levels or as a sparsity constraint. One possibility > would be a live survey (on the emacs website, a mailing list, ...). A built-in Emacs opinion poll sent by email in form of LISP data that may be automatically evaluated would create better data on what people wish and want, or what is more usable or not usable. But even more usable would be simple Nielssen usability test: https://www.nngroup.com/articles/usability-testing-101/ Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. 2020-12-22 12:22 ` Christopher Dimech @ 2020-12-22 14:02 ` Jean Louis 2020-12-23 4:26 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-22 14:02 UTC (permalink / raw) To: Gregory Heytings; +Cc: Christopher Dimech, emacs-devel * Gregory Heytings via "Emacs development discussions. <emacs-devel@gnu.org> [2020-12-22 13:59]: > > Christopher Dimech: > > > > Shitty data obtained without care, attention, and skill is useless data. > > Forget the weighting! > > > > As the saying goes: "Criticism is easy, and art is difficult." Could you > please create and conduct a "good" survey, according to your criteria of > "good"? Or at least enlighten us, poor mortals, and explain what should > have been done, and how? Data may be obtained with care, attention and skill and still be misleading. That there are good intentions with the survey, I have no doubts. On how results were presented and how survey has been conducted I have no doubt that author lacks the skill on the specific subject of making an opinion poll. I have no doubts that author of the survey did conduct the survey, connected websites together and made some marketing for people to place their polls. And I have no doubt on his other skills, programming, using mathematics, and I did not review the way of counting, but I would not doubt on the manner of counting statistics at this moment. Emacs survey has a lot of misleading information that was already mentioned here. Major misleading information is the difference between general survey and specific survey that relates to a subset of people from specific groups of people. Then we come here to discuss the toolbar that only a subset of people from specific groups of people said something about that. I do not agree that "any data is better than no data". The information may be useful but due to its presentation it may be even more misleading than useful. When one says it is "Emacs Survey" I do not see it and do not understand it by such general term. As one may see on this picture of the survey in question this survey represents 54.1% of people comming exclusively from Reddit and Hacker News, then comes 7.8% Twitter. Majority of people 61.9% answering the survey are groups coming from Reddit, Hacker news and Twitter users. https://emacssurvey.org/2020/how-did-you-hear-about-this-survey.svg Better would be to say that it is Emacs Survey that represents almost 62% of Emacs users coming from Reddit, Hacker News and Twitter. One may see here that 1.4% of users answered the survey by email: https://emacssurvey.org/2020/submissions-medium.svg There are 7344 total responses. 1.4% of 7344 is 102+ users (more than 102 due to floating point). Maybe those users did not want to submit the online form as they did not want to use non-free Javascript? But maybe those users did not want to submit as they wanted to express themselves better by using the Org file sent by email? We do not know why, but we can assume that 1.4% did not want to submit the form online. We may compare data, we could take the Debian popularity contest: https://qa.debian.org/popcon.php?package=popularity-contest where recent data says that 200504 people installed the package `popularity-contest' that counts which other packages are installed on the system. Then we may look into the subset of those 200504 Debian users who installed Emacs: https://qa.debian.org/popcon.php?package=emacs To me it looks like about 14,000 users installed Emacs on their Debian GNU/Linux system. That amounts to some 6.98% of 200504 users who use the Debian popularity contest package. As Ubuntu comes from Debian GNU/Linux some vague information says there are 20 million Ubuntu users. If we would follow the trend of 6.98% let us truncated it to 6% of people using Emacs on Debian derivative distribution, that would amount already to (* 20000000 0.06) 1,200,000 people using Emacs in Ubuntu. https://ubuntu.com/blog/ubuntu-is-everywhere maybe this number is larger or bigger, but it does give some traces on how to conclude how many people are using Emacs. This page says there must be 100+ millions of GNU/Linux users on Desktop (not counting Android): https://www.quora.com/How-many-Linux-users-are-there-in-the-world/answer/Juha-Kaskiharju but I cannot know where and how information has been obtained: https://www.netmarketshare.com/linux-market-share If we do assume there are 100+ millions GNU/Linux users who use their browser as that is how companies detect such users and that 6.98% trend as established from Debian popularity contest uses Emacs than that may amount to 6-7 millions of Emacs users. If we now come back to those 1.4% that did not want to answer the survey by using non-free Javascript, maybe the real amount of those people, who did not see the survey, but would not answer the WWW survey for some of not unknown reasons, is already (* 6980000 0.014) 97720 users. Emacs survey of 62% of Emacs users coming from Reddit, Hacker News and Twitter has shown that that subset of users being about 4340 users would gladly answer the survey over WWW form, with or without considering if they use free or non-free Javascript. I am personally, not by mathematical estimation, thinking that 90,000 of Emacs users and more than that, would not answer the survey only because of the non-free Javascript or because how survey was conducted. Now let us say we discuss of toolbars, we do not discuss of toolbars for Emacs users. We discuss of the fact that 85.1% of users using Reddit, Stackexchange and Twitter who answered the Emacs survey that relates to 62% to those groups are disabling the toolbar. MacOS users from the Emacs survey are 26.6% plus Windos 7.4%, total being 34% among all Emacs survey users or 34% from 7000 amounting to some 2380 users. When considering then if toolbar shall be disabled, shall we also consider are we disabling it for majority of GNU/Linux users, or for majority of proprietary system users, or for those Emacs users who never answered the survey due to not unknown reasons which may amount to almost 100,000 but which user habits we do not know. In general the survey results would be much more useful would we have intersections of people by various characteristics. We do not have intersections, though it could be possible to make such intersections with the data at hand. Then survey did not give the result if users would like by default the toolbar to be disabled. As when user disables the toolbar it does not mean user would like it by default to be disabled upon first installation. The Emacs survey we speak about is not general Emacs survey. That is in my opinion major misconception that people will get as it all sounds so much official with nice and shiny charts. It is Emacs survey that represents for 62% those users coming from Reddit, Stackexchange, Twitter and we do not know many of intersection results as such are not presented on the website. If one only looks at one chart, like on chart among Emacs Survey representing 62% users from Reddit, Stackexchange, Twitter, then one may draw conclusions which are counter useful to the real number of Emacs users. What would be useful to know for development could be interesections of: - users using Windows, using Emacs with daemon mode - users using MacOS, using Emacs with daemon mode - users using GNU/Linux, using Emacs with daemon mode - users using Windows, using Emacs as GUI or terminal - users using MacOS, using Emacs as GUI or terminal - users using GNU/Linux, using Emacs as GUI or terminal - users using Windows, disabling toolbar - users using MacOS, disabling toolbar - users using GNU/Linux, disabling toolbar then again intersections for menu bar, splash screen, etc. Taking just one chart and looking how 85.1% users disabled toolbar is incorrect interpretation that there is something to be handled as that data comes from specific groups of people. One cannot even ask experienced user if the tool bar should be disabled as that is misleading. One could only ask a very new user who has never seen Emacs, by placing that user on the chair and showing him Emacs interface and then asking him if the toolbar is useful or not useful. Make that a first question to 10 people who never used Emacs and then see the result and compare it. I guess that 10 people would be enough, Nielssen says 5 people are enough, and I understand his methodology. It is thus in my opinion more productive and more useful to take those 5 people or make 3 groups or 5 groups of 5 people and place them in front of Emacs to tell us if they find toolbar useful. It is counter productive to make assumptions to disable toolbar because users who already used Emacs probably for years disabled the toolbar. They are not new users. While they may tell that disabled toolbar for them is good, they cannot tell that for new users for which toolbar would be disabled by default, they are not qualified for that as they are not new users any more. Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. 2020-12-22 12:22 ` Christopher Dimech 2020-12-22 14:02 ` Jean Louis @ 2020-12-23 4:26 ` Richard Stallman 2020-12-23 5:22 ` Christopher Dimech 2020-12-23 5:30 ` Christopher Dimech 2 siblings, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-23 4:26 UTC (permalink / raw) To: Gregory Heytings; +Cc: dimech, 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. ]]] > > Shitty data obtained without care, attention, and skill is useless data. > > Forget the weighting! > > > As the saying goes: "Criticism is easy, and art is difficult." Could you > please create and conduct a "good" survey, according to your criteria of > "good"? Or at least enlighten us, poor mortals, and explain what should > have been done, and how? Please, everyone, let's discuss this without getting angry at each other. That is very important! We have to _work together_ to use the answers. The survey does not have a reprepresentative sample, but that doesn't mean it is useless. I wouldn't attach significance to its precise numbers, but even the rough quantities have something to teach us. For instance, we know that lots of users don't want the toolbars, but a substantial fraction do not turn them off. If we want more precise figures, I've suggested how to get them. But I contend that we can come up with approaches that will to a good job for the various kinds of users we know exist, without needing to know the precise size of each kind. We need to be clever and try lots of options. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 4:26 ` Richard Stallman @ 2020-12-23 5:22 ` Christopher Dimech 2020-12-23 5:30 ` Christopher Dimech 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-23 5:22 UTC (permalink / raw) To: rms; +Cc: Gregory Heytings, emacs-devel > Sent: Wednesday, December 23, 2020 at 9:56 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Gregory Heytings" <ghe@sdf.org> > Cc: dimech@gmx.com, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > > Shitty data obtained without care, attention, and skill is useless data. > > > Forget the weighting! > > > > > > As the saying goes: "Criticism is easy, and art is difficult." Could you > > please create and conduct a "good" survey, according to your criteria of > > "good"? Or at least enlighten us, poor mortals, and explain what should > > have been done, and how? > > Please, everyone, let's discuss this without getting angry at each other. > That is very important! We have to _work together_ to use the answers. > > The survey does not have a reprepresentative sample, but that doesn't > mean it is useless. I wouldn't attach significance to its precise > numbers, but even the rough quantities have something to teach us. People should not take offense on a description that defines how things are. When surveys are not representative of reality and we cannot attach to them significance, it is disconcerting when the severe effects of that are not being taken forward. I remember criticising geologists interpreting seismic characteristics when the geophysical image did not allow interpretations below a certain level of resolution. But they did that anyway. A useful reading is "Command and Control: Nuclear Weapons, the Damascus Accident, and the Illusion of Safety". I am an adult living within the constraints and responsibilities of society not a boy believing that everything is possible. > For instance, we know that lots of users don't want the toolbars, > but a substantial fraction do not turn them off. > > If we want more precise figures, I've suggested how to get them. > But I contend that we can come up with approaches that will > to a good job for the various kinds of users we know exist, > without needing to know the precise size of each kind. > We need to be clever and try lots of options. > > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 4:26 ` Richard Stallman 2020-12-23 5:22 ` Christopher Dimech @ 2020-12-23 5:30 ` Christopher Dimech 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-23 5:30 UTC (permalink / raw) To: rms; +Cc: Gregory Heytings, emacs-devel > Sent: Wednesday, December 23, 2020 at 9:56 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Gregory Heytings" <ghe@sdf.org> > Cc: dimech@gmx.com, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > > Shitty data obtained without care, attention, and skill is useless data. > > > Forget the weighting! > > > > > > As the saying goes: "Criticism is easy, and art is difficult." Could you > > please create and conduct a "good" survey, according to your criteria of > > "good"? Or at least enlighten us, poor mortals, and explain what should > > have been done, and how? > > Please, everyone, let's discuss this without getting angry at each other. > That is very important! We have to _work together_ to use the answers. > > The survey does not have a reprepresentative sample, but that doesn't > mean it is useless. I wouldn't attach significance to its precise > numbers, but even the rough quantities have something to teach us. > > For instance, we know that lots of users don't want the toolbars, > but a substantial fraction do not turn them off. > > If we want more precise figures, I've suggested how to get them. > But I contend that we can come up with approaches that will > to a good job for the various kinds of users we know exist, > without needing to know the precise size of each kind. > We need to be clever and try lots of options. Fully agree with that - doing a good job for the various kinds of users we know exist. > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 4:23 ` Adrien Brochard 2020-12-20 4:35 ` Christopher Dimech @ 2020-12-20 10:57 ` Jean Louis 2020-12-20 11:13 ` Christopher Dimech 1 sibling, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-20 10:57 UTC (permalink / raw) To: Adrien Brochard; +Cc: emacs-devel * Adrien Brochard <abrochard@gmx.com> [2020-12-20 07:24]: > > Majority of users for the survey, if I remember well, came from > > Reddit. There was description where it was marketed mostly. > > > > Thus survey is not general Emacs survey, it is survey of mostly Reddit > > users who may be or probably are more skillful. > > What makes you think that people coming from the Reddit channel are more > skillful? If someone googles an Emacs question, getting directed to > r/emacs and finding the survey there is pretty likely. "who may be or probably", see above to understand the intended meaning. It is a survey that targeted intentionally or not intentionally just a subset of Emacs users using Reddit and few other popular websites. Those who speak about Emacs on reddit in my opinion are minimally slightly advanced users, as they discuss about Emacs. I was using Emacs for years without discussing with anybody. Debian popularity contest says that there is much larger number of Emacs users. The true representative survey information could be obtained only within Emacs itself under condition that survey is presented straight to Emacs user. Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 10:57 ` Jean Louis @ 2020-12-20 11:13 ` Christopher Dimech 2020-12-21 5:47 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-20 11:13 UTC (permalink / raw) To: Jean Louis; +Cc: Adrien Brochard, emacs-devel > Sent: Sunday, December 20, 2020 at 4:27 PM > From: "Jean Louis" <bugs@gnu.support> > To: "Adrien Brochard" <abrochard@gmx.com> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > * Adrien Brochard <abrochard@gmx.com> [2020-12-20 07:24]: > > > Majority of users for the survey, if I remember well, came from > > > Reddit. There was description where it was marketed mostly. > > > > > > Thus survey is not general Emacs survey, it is survey of mostly Reddit > > > users who may be or probably are more skillful. > > > > What makes you think that people coming from the Reddit channel are more > > skillful? If someone googles an Emacs question, getting directed to > > r/emacs and finding the survey there is pretty likely. > > "who may be or probably", see above to understand the intended > meaning. > > It is a survey that targeted intentionally or not intentionally just a > subset of Emacs users using Reddit and few other popular websites. > > Those who speak about Emacs on reddit in my opinion are minimally > slightly advanced users, as they discuss about Emacs. > > I was using Emacs for years without discussing with anybody. Debian > popularity contest says that there is much larger number of Emacs > users. > > The true representative survey information could be obtained only > within Emacs itself under condition that survey is presented straight > to Emacs user. I wonder whether the survey stems from lack of vision of emacs admin and developers. For instance, Gcc has a Development Plan. Suggestions for changes to the plan are discussed on the Gcc mailing list and can be approved or rejected by the Gcc Steering Committee. How about Emacs? > Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 11:13 ` Christopher Dimech @ 2020-12-21 5:47 ` Richard Stallman 2020-12-21 6:57 ` Christopher Dimech ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-21 5:47 UTC (permalink / raw) To: Christopher Dimech; +Cc: abrochard, bugs, 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 wonder whether the survey stems from lack of vision of emacs > admin and developers. For instance, Gcc has a Development Plan. > Suggestions for changes to the plan are discussed on the Gcc > mailing list and can be approved or rejected by the Gcc Steering > Committee. How about Emacs? GCC has many developers who are paid by various companies. That makes it easier to make plans and actually carry them out. The Emacs contributors are all volunteers, so we can't tell anyone what to do. We can only exhort and apply naked emotional pressure, which works only sometimes. I've been trying for more than 10 years to urge people to work toward giving Emacs the document capabilities of a word processor, but I have not convinced people to do this work. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 5:47 ` Richard Stallman @ 2020-12-21 6:57 ` Christopher Dimech 2020-12-21 7:04 ` Jean Louis 2020-12-22 5:21 ` Richard Stallman 2020-12-21 16:53 ` Emacs Survey: Toolbars Eli Zaretskii 2020-12-22 11:03 ` Gregory Heytings via Emacs development discussions. 2 siblings, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-21 6:57 UTC (permalink / raw) To: rms; +Cc: abrochard, bugs, emacs-devel > Sent: Monday, December 21, 2020 at 11:17 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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 wonder whether the survey stems from lack of vision of emacs > > admin and developers. For instance, Gcc has a Development Plan. > > Suggestions for changes to the plan are discussed on the Gcc > > mailing list and can be approved or rejected by the Gcc Steering > > Committee. How about Emacs? > > GCC has many developers who are paid by various companies. > That makes it easier to make plans and actually carry them out. > > The Emacs contributors are all volunteers, so we can't tell anyone > what to do. We can only exhort and apply naked emotional pressure, > which works only sometimes. Perhaps not in all details, but at some level it would benefit to consider an actual plan. Else things move on quite haphazardly. For instance, certain changes are better done in a sequence. And if you are tackling a problem, you can consider tackling a related one. We could also motivate by offering small payments for solutions to unresolved problems. I am sure there are many whose professional job is in computing and could get young people to work on some challenging areas or get their interest in helping out if there was a plan. Most people I know don't know what to do or what problems are out there. > I've been trying for more than 10 years to urge people to work toward > giving Emacs the document capabilities of a word processor, but I have > not convinced people to do this work. > > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 6:57 ` Christopher Dimech @ 2020-12-21 7:04 ` Jean Louis 2020-12-21 16:16 ` Eli Zaretskii 2020-12-22 5:21 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-21 7:04 UTC (permalink / raw) To: Christopher Dimech; +Cc: abrochard, rms, bugs, emacs-devel * Christopher Dimech <dimech@gmx.com> [2020-12-21 09:57]: > > Sent: Monday, December 21, 2020 at 11:17 AM > > From: "Richard Stallman" <rms@gnu.org> > > To: "Christopher Dimech" <dimech@gmx.com> > > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > > Subject: Re: Emacs Survey: Toolbars > > > > [[[ 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 wonder whether the survey stems from lack of vision of emacs > > > admin and developers. For instance, Gcc has a Development Plan. > > > Suggestions for changes to the plan are discussed on the Gcc > > > mailing list and can be approved or rejected by the Gcc Steering > > > Committee. How about Emacs? > > > > GCC has many developers who are paid by various companies. > > That makes it easier to make plans and actually carry them out. > > > > The Emacs contributors are all volunteers, so we can't tell anyone > > what to do. We can only exhort and apply naked emotional pressure, > > which works only sometimes. > > Perhaps not in all details, but at some level it would benefit to > consider an actual plan. Else things move on quite haphazardly. > For instance, certain changes are better done in a sequence. > And if you are tackling a problem, you can consider tackling > a related one. There are many volunteer organizations where people make a plan of action. Volunteer or not, it is not related to planning. Especially if one wish to spare the time for developers it is better to have a development plan. It could be a simple list of most important issues to be handled for Emacs. When such list is published maybe more contributors could be drawn to it. And I see no reason why FSF donations could not be used to improve developer's life. Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 7:04 ` Jean Louis @ 2020-12-21 16:16 ` Eli Zaretskii 2020-12-21 16:51 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-21 16:16 UTC (permalink / raw) To: Jean Louis; +Cc: dimech, abrochard, rms, bugs, emacs-devel > Date: Mon, 21 Dec 2020 10:04:53 +0300 > From: Jean Louis <bugs@gnu.support> > Cc: abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org > > There are many volunteer organizations where people make a plan of > action. Volunteer or not, it is not related to planning. Especially if > one wish to spare the time for developers it is better to have a > development plan. > > It could be a simple list of most important issues to be handled for > Emacs. > > When such list is published maybe more contributors could be drawn to > it. We have that: etc/TODO. But that isn't a "plan" in any reasonable sense of the word, it's just a list of useful features that we would like to have at some point. Sometimes, not very frequently, someone comes and actually takes up one of those jobs. But much more frequently, someone comes up with an implemented feature and submits it for inclusion, and we usually accept it. Since there's no way to plan that in advance, almost all of Emacs development moves by such submissions which no one planned in advance. Frequent contributors to Emacs probably have their own personal plans, and work according to them as their time permits. But these personal plans are almost never coordinated with anyone else. I don't see how anything different from the above could ever work, as long as the project continues to be a loosely coupled group of people with very disparate interests. (I also see nothing wrong in how we do things, FWIW.) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 16:16 ` Eli Zaretskii @ 2020-12-21 16:51 ` Jean Louis 2020-12-21 17:20 ` Eli Zaretskii 2020-12-21 23:55 ` Christopher Dimech 0 siblings, 2 replies; 384+ messages in thread From: Jean Louis @ 2020-12-21 16:51 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, abrochard, rms, emacs-devel * Eli Zaretskii <eliz@gnu.org> [2020-12-21 19:17]: > > Date: Mon, 21 Dec 2020 10:04:53 +0300 > > From: Jean Louis <bugs@gnu.support> > > Cc: abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org > > > > There are many volunteer organizations where people make a plan of > > action. Volunteer or not, it is not related to planning. Especially if > > one wish to spare the time for developers it is better to have a > > development plan. > > > > It could be a simple list of most important issues to be handled for > > Emacs. > > > > When such list is published maybe more contributors could be drawn to > > it. > > We have that: etc/TODO. But that isn't a "plan" in any reasonable > sense of the word, it's just a list of useful features that we would > like to have at some point. Sometimes, not very frequently, someone > comes and actually takes up one of those jobs. > > But much more frequently, someone comes up with an implemented feature > and submits it for inclusion, and we usually accept it. Since there's > no way to plan that in advance, almost all of Emacs development moves > by such submissions which no one planned in advance. > > Frequent contributors to Emacs probably have their own personal plans, > and work according to them as their time permits. But these personal > plans are almost never coordinated with anyone else. It works amazingly by willingness and contribution. > I don't see how anything different from the above could ever work, as > long as the project continues to be a loosely coupled group of people > with very disparate interests. (I also see nothing wrong in how we do > things, FWIW.) What is in your opinion priority for Emacs? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 16:51 ` Jean Louis @ 2020-12-21 17:20 ` Eli Zaretskii 2020-12-21 17:58 ` Jean Louis ` (2 more replies) 2020-12-21 23:55 ` Christopher Dimech 1 sibling, 3 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-21 17:20 UTC (permalink / raw) To: Jean Louis; +Cc: dimech, abrochard, rms, emacs-devel > Date: Mon, 21 Dec 2020 19:51:43 +0300 > From: Jean Louis <bugs@gnu.support> > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, > emacs-devel@gnu.org > > What is in your opinion priority for Emacs? That question is too general to be useful, sorry. Emacs has a gazillion different facets, and at least a dozen of fundamental infrastructure features in very different domains. There isn't, and IMO cannot be, a single priority, and moreover, if we'd try to come up with a priority list, we'd argue till the Second Coming without reaching any agreement. I also don't see any sense in trying to define such priorities, as long as no one but myself will be following them. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 17:20 ` Eli Zaretskii @ 2020-12-21 17:58 ` Jean Louis 2020-12-21 23:29 ` Christopher Dimech 2020-12-21 18:03 ` Lars Ingebrigtsen 2020-12-21 23:37 ` Christopher Dimech 2 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-21 17:58 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, abrochard, rms, emacs-devel * Eli Zaretskii <eliz@gnu.org> [2020-12-21 20:21]: > > Date: Mon, 21 Dec 2020 19:51:43 +0300 > > From: Jean Louis <bugs@gnu.support> > > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, > > emacs-devel@gnu.org > > > > What is in your opinion priority for Emacs? > > That question is too general to be useful, sorry. Emacs has a > gazillion different facets, and at least a dozen of fundamental > infrastructure features in very different domains. There isn't, and > IMO cannot be, a single priority, and moreover, if we'd try to come up > with a priority list, we'd argue till the Second Coming without > reaching any agreement. Hahahahaa ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 17:58 ` Jean Louis @ 2020-12-21 23:29 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-21 23:29 UTC (permalink / raw) To: Jean Louis; +Cc: Eli Zaretskii, abrochard, rms, emacs-devel One may is to categorise according to separate emacs structures. Then have some from each make a plan with a list of five things to do, and about eight tickets to work on. And so on. A few people should come together, each person focused on a particular thing and the team led by Eli. Just don't make it in an argumentative way. Am quite sure that notwithstanding disagreements, some tasks could need to be handled better, and work could focus on that. Then introduce just one or two hot topics so that arguments can be managed better. I would say that it is most likely that areas of great controversy indicate that the various aspects of contention have got to be tackled, rather than focusing on one to the detriment of the other. 1. Major Modes 2. Minor Modes 3. Performance 4. Org-Mode 5. Completion 6. User Interface > Sent: Monday, December 21, 2020 at 11:28 PM > From: "Jean Louis" <bugs@gnu.support> > To: "Eli Zaretskii" <eliz@gnu.org> > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > * Eli Zaretskii <eliz@gnu.org> [2020-12-21 20:21]: > > > Date: Mon, 21 Dec 2020 19:51:43 +0300 > > > From: Jean Louis <bugs@gnu.support> > > > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, > > > emacs-devel@gnu.org > > > > > > What is in your opinion priority for Emacs? > > > > That question is too general to be useful, sorry. Emacs has a > > gazillion different facets, and at least a dozen of fundamental > > infrastructure features in very different domains. There isn't, and > > IMO cannot be, a single priority, and moreover, if we'd try to come up > > with a priority list, we'd argue till the Second Coming without > > reaching any agreement. > > Hahahahaa > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 17:20 ` Eli Zaretskii 2020-12-21 17:58 ` Jean Louis @ 2020-12-21 18:03 ` Lars Ingebrigtsen 2020-12-21 18:09 ` Arthur Miller 2020-12-21 18:14 ` Eli Zaretskii 2020-12-21 23:37 ` Christopher Dimech 2 siblings, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-21 18:03 UTC (permalink / raw) To: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > There isn't, and IMO cannot be, a single priority, and moreover, if > we'd try to come up with a priority list, we'd argue till the Second > Coming without reaching any agreement. I take that as an invitation, and I think that, without a doubt, our top priority should be finding a more modern default colour for the mode line. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 18:03 ` Lars Ingebrigtsen @ 2020-12-21 18:09 ` Arthur Miller 2020-12-21 18:14 ` Eli Zaretskii 1 sibling, 0 replies; 384+ messages in thread From: Arthur Miller @ 2020-12-21 18:09 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Eli Zaretskii <eliz@gnu.org> writes: > >> There isn't, and IMO cannot be, a single priority, and moreover, if >> we'd try to come up with a priority list, we'd argue till the Second >> Coming without reaching any agreement. > > I take that as an invitation, and I think that, without a doubt, our top > priority should be finding a more modern default colour for the mode line. I think it is more important to find more modern font fo the clock when it is displayed on the mode line. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 18:03 ` Lars Ingebrigtsen 2020-12-21 18:09 ` Arthur Miller @ 2020-12-21 18:14 ` Eli Zaretskii 1 sibling, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-21 18:14 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Mon, 21 Dec 2020 19:03:00 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > > There isn't, and IMO cannot be, a single priority, and moreover, if > > we'd try to come up with a priority list, we'd argue till the Second > > Coming without reaching any agreement. > > I take that as an invitation, and I think that, without a doubt, our top > priority should be finding a more modern default colour for the mode line. I disagree! Let's argue. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 17:20 ` Eli Zaretskii 2020-12-21 17:58 ` Jean Louis 2020-12-21 18:03 ` Lars Ingebrigtsen @ 2020-12-21 23:37 ` Christopher Dimech 2020-12-22 15:23 ` Eli Zaretskii 2 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-21 23:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: abrochard, rms, Jean Louis, emacs-devel > Sent: Monday, December 21, 2020 at 10:50 PM > From: "Eli Zaretskii" <eliz@gnu.org> > To: "Jean Louis" <bugs@gnu.support> > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > Date: Mon, 21 Dec 2020 19:51:43 +0300 > > From: Jean Louis <bugs@gnu.support> > > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, > > emacs-devel@gnu.org > > > > What is in your opinion priority for Emacs? > > That question is too general to be useful, sorry. Emacs has a > gazillion different facets, and at least a dozen of fundamental > infrastructure features in very different domains. There isn't, and > IMO cannot be, a single priority, and moreover, if we'd try to come up > with a priority list, we'd argue till the Second Coming without > reaching any agreement. > > I also don't see any sense in trying to define such priorities, as > long as no one but myself will be following them. Could you then come up with your plan as per your decisions so others can see what's happening with Emacs. Emacs could need two other people who are skilled enough. People have got to understand this. Although Eli is responsible and dedicated to Emacs Development, there cannot be just one person fully immersed in it. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 23:37 ` Christopher Dimech @ 2020-12-22 15:23 ` Eli Zaretskii 2020-12-23 1:32 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 15:23 UTC (permalink / raw) To: Christopher Dimech; +Cc: abrochard, rms, bugs, emacs-devel > From: Christopher Dimech <dimech@gmx.com> > Cc: Jean Louis <bugs@gnu.support>, abrochard@gmx.com, rms@gnu.org, > emacs-devel@gnu.org > Date: Tue, 22 Dec 2020 00:37:26 +0100 > > > > What is in your opinion priority for Emacs? > > > > That question is too general to be useful, sorry. Emacs has a > > gazillion different facets, and at least a dozen of fundamental > > infrastructure features in very different domains. There isn't, and > > IMO cannot be, a single priority, and moreover, if we'd try to come up > > with a priority list, we'd argue till the Second Coming without > > reaching any agreement. > > > > I also don't see any sense in trying to define such priorities, as > > long as no one but myself will be following them. > > Could you then come up with your plan as per your decisions so others can see > what's happening with Emacs. I don't think I understand what you mean here, sorry. > Emacs could need two other people who are skilled > enough. People have got to understand this. Although Eli is responsible > and dedicated to Emacs Development, there cannot be just one person fully immersed > in it. I'm far from the only one who determines what developments are or will be going on in Emacs. Just look at "git log" and you will see that. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 15:23 ` Eli Zaretskii @ 2020-12-23 1:32 ` Christopher Dimech 2020-12-23 15:14 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-23 1:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: abrochard, rms, bugs, emacs-devel > Sent: Tuesday, December 22, 2020 at 8:53 PM > From: "Eli Zaretskii" <eliz@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > From: Christopher Dimech <dimech@gmx.com> > > Cc: Jean Louis <bugs@gnu.support>, abrochard@gmx.com, rms@gnu.org, > > emacs-devel@gnu.org > > Date: Tue, 22 Dec 2020 00:37:26 +0100 > > > > > > What is in your opinion priority for Emacs? > > > > > > That question is too general to be useful, sorry. Emacs has a > > > gazillion different facets, and at least a dozen of fundamental > > > infrastructure features in very different domains. There isn't, and > > > IMO cannot be, a single priority, and moreover, if we'd try to come up > > > with a priority list, we'd argue till the Second Coming without > > > reaching any agreement. > > > > > > I also don't see any sense in trying to define such priorities, as > > > long as no one but myself will be following them. > > > > Could you then come up with your plan as per your decisions so others can see > > what's happening with Emacs. > > I don't think I understand what you mean here, sorry. > > > Emacs could need two other people who are skilled > > enough. People have got to understand this. Although Eli is responsible > > and dedicated to Emacs Development, there cannot be just one person fully immersed > > in it. > > I'm far from the only one who determines what developments are or will > be going on in Emacs. Just look at "git log" and you will see that. Do you like it how it is? Have heard you say that ultimately you have to do work, and when you ask for help nobody comes forward. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 1:32 ` Christopher Dimech @ 2020-12-23 15:14 ` Eli Zaretskii 0 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-23 15:14 UTC (permalink / raw) To: Christopher Dimech; +Cc: abrochard, rms, bugs, emacs-devel > From: Christopher Dimech <dimech@gmx.com> > Cc: abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org > Date: Wed, 23 Dec 2020 02:32:09 +0100 > > > > Emacs could need two other people who are skilled > > > enough. People have got to understand this. Although Eli is responsible > > > and dedicated to Emacs Development, there cannot be just one person fully immersed > > > in it. > > > > I'm far from the only one who determines what developments are or will > > be going on in Emacs. Just look at "git log" and you will see that. > > Do you like it how it is? It doesn't matter if I like it or not if I cannot change it. Whatever I thought I could change I already did, or at least tried. > Have heard you say that ultimately you have to do work, and when you > ask for help nobody comes forward. Not always and with any issue, but sometimes, yes. Still, Emacs development is determined by many more people, which is a Good Thing. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 16:51 ` Jean Louis 2020-12-21 17:20 ` Eli Zaretskii @ 2020-12-21 23:55 ` Christopher Dimech 2020-12-22 15:26 ` Eli Zaretskii 2020-12-23 4:16 ` Richard Stallman 1 sibling, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-21 23:55 UTC (permalink / raw) To: Jean Louis; +Cc: Eli Zaretskii, abrochard, rms, emacs-devel > Sent: Monday, December 21, 2020 at 10:21 PM > From: "Jean Louis" <bugs@gnu.support> > To: "Eli Zaretskii" <eliz@gnu.org> > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > * Eli Zaretskii <eliz@gnu.org> [2020-12-21 19:17]: > > > Date: Mon, 21 Dec 2020 10:04:53 +0300 > > > From: Jean Louis <bugs@gnu.support> > > > Cc: abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org > > > > > > There are many volunteer organizations where people make a plan of > > > action. Volunteer or not, it is not related to planning. Especially if > > > one wish to spare the time for developers it is better to have a > > > development plan. > > > > > > It could be a simple list of most important issues to be handled for > > > Emacs. > > > > > > When such list is published maybe more contributors could be drawn to > > > it. > > > > We have that: etc/TODO. But that isn't a "plan" in any reasonable > > sense of the word, it's just a list of useful features that we would > > like to have at some point. Sometimes, not very frequently, someone > > comes and actually takes up one of those jobs. > > > > But much more frequently, someone comes up with an implemented feature > > and submits it for inclusion, and we usually accept it. Since there's > > no way to plan that in advance, almost all of Emacs development moves > > by such submissions which no one planned in advance. > > > > Frequent contributors to Emacs probably have their own personal plans, > > and work according to them as their time permits. But these personal > > plans are almost never coordinated with anyone else. > > It works amazingly by willingness and contribution. > > I don't see how anything different from the above could ever work, as > > long as the project continues to be a loosely coupled group of people > > with very disparate interests. (I also see nothing wrong in how we do > > things, FWIW.) There lies the problem. The project cannot continue to be loosely coupled with very disparate interests. The major people involved should come together as a team. This means that they should spend some of their time looking at the other interests. There are several possibilities that can be used simultaneously 1. For every five aspects tackled, that same person helps another one on one of his tasks. 2. Have two tasks where everyone helps tackling them. Might not be a very exciting proposition but it would help eradicate some serious difficulties we are experiencing. > What is in your opinion priority for Emacs? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 23:55 ` Christopher Dimech @ 2020-12-22 15:26 ` Eli Zaretskii 2020-12-22 15:52 ` Stefan Monnier 2020-12-23 1:27 ` Christopher Dimech 2020-12-23 4:16 ` Richard Stallman 1 sibling, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 15:26 UTC (permalink / raw) To: Christopher Dimech; +Cc: abrochard, rms, bugs, emacs-devel > From: Christopher Dimech <dimech@gmx.com> > Cc: Eli Zaretskii <eliz@gnu.org>, abrochard@gmx.com, rms@gnu.org, > emacs-devel@gnu.org > Date: Tue, 22 Dec 2020 00:55:00 +0100 > > > > I don't see how anything different from the above could ever work, as > > > long as the project continues to be a loosely coupled group of people > > > with very disparate interests. (I also see nothing wrong in how we do > > > things, FWIW.) > > There lies the problem. The project cannot continue to be loosely coupled > with very disparate interests. OK, then let's close the project and all go home. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 15:26 ` Eli Zaretskii @ 2020-12-22 15:52 ` Stefan Monnier 2020-12-23 1:27 ` Christopher Dimech 1 sibling, 0 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-22 15:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Christopher Dimech, abrochard, rms, bugs, emacs-devel > OK, then let's close the project and all go home. Hmm... I'm home already, I don't have anywhere else to go. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 15:26 ` Eli Zaretskii 2020-12-22 15:52 ` Stefan Monnier @ 2020-12-23 1:27 ` Christopher Dimech 2020-12-24 5:47 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-23 1:27 UTC (permalink / raw) To: Eli Zaretskii; +Cc: abrochard, rms, bugs, emacs-devel > Sent: Tuesday, December 22, 2020 at 8:56 PM > From: "Eli Zaretskii" <eliz@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: bugs@gnu.support, abrochard@gmx.com, rms@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > From: Christopher Dimech <dimech@gmx.com> > > Cc: Eli Zaretskii <eliz@gnu.org>, abrochard@gmx.com, rms@gnu.org, > > emacs-devel@gnu.org > > Date: Tue, 22 Dec 2020 00:55:00 +0100 > > > > > > I don't see how anything different from the above could ever work, as > > > > long as the project continues to be a loosely coupled group of people > > > > with very disparate interests. (I also see nothing wrong in how we do > > > > things, FWIW.) > > > > There lies the problem. The project cannot continue to be loosely coupled > > with very disparate interests. > > OK, then let's close the project and all go home. The argument was to conrtol it better so things will stay within your reach. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 1:27 ` Christopher Dimech @ 2020-12-24 5:47 ` Richard Stallman 2020-12-24 6:31 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-24 5:47 UTC (permalink / raw) To: Christopher Dimech; +Cc: eliz, abrochard, bugs, 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 argument was to conrtol it better so things will stay within your reach. I think it would be really great if we could reshape our development community into something more like a team. But that is easier said than done. The first prerequisite is that the people in question want to become a team. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-24 5:47 ` Richard Stallman @ 2020-12-24 6:31 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-24 6:31 UTC (permalink / raw) To: rms; +Cc: eliz, abrochard, bugs, emacs-devel It is something we really lack and a transition that would elevate us to a new level. It is difficult because we would need to work in a more disciplined way. It's all about focusing on the process rather than the target. Most times, the best results are achieved by doing what's best for oneself and the group. The idea of mixed-strategy equilibria and its proof started by John Neumann in 1944. > Sent: Thursday, December 24, 2020 at 11:17 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: eliz@gnu.org, abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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 argument was to conrtol it better so things will stay within your reach. > > I think it would be really great if we could reshape our development > community into something more like a team. But that is easier said > than done. The first prerequisite is that the people in question > want to become a team. > > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 23:55 ` Christopher Dimech 2020-12-22 15:26 ` Eli Zaretskii @ 2020-12-23 4:16 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-23 4:16 UTC (permalink / raw) To: Christopher Dimech; +Cc: eliz, abrochard, bugs, 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. ]]] > There lies the problem. The project cannot continue to be loosely coupled > with very disparate interests. The major people involved should come together > as a team. This means that they should spend some of their time looking at > the other interests. This change might might be good in some ways, if the maintainers want to do it -- but I'm not going to try twisting anyone's arm to make it happen. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 6:57 ` Christopher Dimech 2020-12-21 7:04 ` Jean Louis @ 2020-12-22 5:21 ` Richard Stallman 2020-12-22 6:05 ` Christopher Dimech ` (3 more replies) 1 sibling, 4 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-22 5:21 UTC (permalink / raw) To: Christopher Dimech; +Cc: abrochard, bugs, 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 also motivate by offering small payments for solutions to > unresolved problems. Yes, we could do that. It could be a useful practice. And we would need to make a plan: a list of projects (not very many of them, I'd think) that are of a reasonable size and amounts to offer. Do you think people could be motivated by amounts under hundreds of dollars? I tend to doubt it. > Most people I know don't know what to do or what problems are out there. Is this because we have not posted it in a clear enough way or because we have not made people aware of what we do post? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 5:21 ` Richard Stallman @ 2020-12-22 6:05 ` Christopher Dimech 2020-12-22 6:06 ` Ihor Radchenko ` (2 subsequent siblings) 3 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-22 6:05 UTC (permalink / raw) To: rms; +Cc: abrochard, bugs, emacs-devel > Sent: Tuesday, December 22, 2020 at 10:51 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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 also motivate by offering small payments for solutions to > > unresolved problems. > > Yes, we could do that. It could be a useful practice. > And we would need to make a plan: a list of projects > (not very many of them, I'd think) that are of a reasonable size > and amounts to offer. > > Do you think people could be motivated by amounts under hundreds > of dollars? I tend to doubt it. I was thinking to say, ‘Here’s a nice problem, we thought about it for a while, and we don’t see how to solve it. Maybe it’s a $25 problem or possibly a $100 problem. Or offer things like membership, discounts, entry to LibrePlanet, or have certain conditions for eligibility for specific internships. I do not know how willing maintainers would be on offering a few weeks internships locally. The project community could contribute a few dollars to have something comparable to Google Summer of Code for specific tasks. To really move forward we got to focus on young people with plenty of enthusiasm and eager to prove themselves. Have had discussions with many people in the last few years, and figured out how difficult it is to work with older people who are most often set in their ways or routine. > > Most people I know don't know what to do or what problems are out there. > > Is this because we have not posted it in a clear enough way > or because we have not made people aware of what we do post? Mostly because many need guide and experience to really have their own ideas for implementation. Short manuals describing topical overview areas with plenty of complementary material on areas that require profound understanding. > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 5:21 ` Richard Stallman 2020-12-22 6:05 ` Christopher Dimech @ 2020-12-22 6:06 ` Ihor Radchenko 2020-12-24 5:49 ` Richard Stallman 2020-12-22 6:31 ` Jean Louis 2020-12-22 15:40 ` Eli Zaretskii 3 siblings, 1 reply; 384+ messages in thread From: Ihor Radchenko @ 2020-12-22 6:06 UTC (permalink / raw) To: rms, Christopher Dimech; +Cc: abrochard, bugs, emacs-devel Richard Stallman <rms@gnu.org> writes: > Do you think people could be motivated by amounts under hundreds > of dollars? I tend to doubt it. FYI, amounts in order of tens of dollars are not that less if you live in less developed countries. For example, a pay in non-capital cities in Ukraine can be in order of 10-20$/day. Best, Ihor ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 6:06 ` Ihor Radchenko @ 2020-12-24 5:49 ` Richard Stallman 2020-12-24 7:04 ` Ihor Radchenko 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-24 5:49 UTC (permalink / raw) To: Ihor Radchenko; +Cc: dimech, abrochard, bugs, 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. ]]] > FYI, amounts in order of tens of dollars are not that less if you live > in less developed countries. For example, a pay in non-capital cities in > Ukraine can be in order of 10-20$/day. I have the feeling that a task important enough to be worth offering a reward for are likely to take over 100 days. So that still means 1000 or 2000 dollars. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-24 5:49 ` Richard Stallman @ 2020-12-24 7:04 ` Ihor Radchenko 2020-12-24 11:21 ` Jean Louis 2020-12-26 10:20 ` Richard Stallman 0 siblings, 2 replies; 384+ messages in thread From: Ihor Radchenko @ 2020-12-24 7:04 UTC (permalink / raw) To: rms; +Cc: dimech, abrochard, bugs, emacs-devel Richard Stallman <rms@gnu.org> writes: > I have the feeling that a task important enough to be worth offering a > reward for are likely to take over 100 days. So that still means 1000 > or 2000 dollars. Then, we can allow people to donate/vote for specific tasks and important tasks should be able to get that much fund (I imagine). 2000USD is 200 people donating 10USD. I guess that really important tasks are the tasks that are wanted by several hundreds of people at least. Best, Ihor ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-24 7:04 ` Ihor Radchenko @ 2020-12-24 11:21 ` Jean Louis 2020-12-26 10:20 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-24 11:21 UTC (permalink / raw) To: emacs-devel * Ihor Radchenko <yantar92@gmail.com> [2020-12-24 10:01]: > Richard Stallman <rms@gnu.org> writes: > > > I have the feeling that a task important enough to be worth offering a > > reward for are likely to take over 100 days. So that still means 1000 > > or 2000 dollars. > > Then, we can allow people to donate/vote for specific tasks and > important tasks should be able to get that much fund (I imagine). > 2000USD is 200 people donating 10USD. I guess that really important > tasks are the tasks that are wanted by several hundreds of people at > least. Very good idea! ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-24 7:04 ` Ihor Radchenko 2020-12-24 11:21 ` Jean Louis @ 2020-12-26 10:20 ` Richard Stallman 2020-12-26 12:44 ` Ihor Radchenko 1 sibling, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-26 10:20 UTC (permalink / raw) To: Ihor Radchenko; +Cc: dimech, abrochard, bugs, 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. ]]] > Then, we can allow people to donate/vote for specific tasks and > important tasks should be able to get that much fund (I imagine). That is very terse, and I am not sure what it means in concrete terms. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-26 10:20 ` Richard Stallman @ 2020-12-26 12:44 ` Ihor Radchenko 2020-12-27 5:42 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Ihor Radchenko @ 2020-12-26 12:44 UTC (permalink / raw) To: rms; +Cc: dimech, abrochard, bugs, emacs-devel Richard Stallman <rms@gnu.org> writes: > > Then, we can allow people to donate/vote for specific tasks and > > important tasks should be able to get that much fund (I imagine). > > That is very terse, and I am not sure what it means in concrete terms. What I meant is something similar to kickstarter/indiegogo crowdfunding model. Instead of donating to generic Emacs development, the users may be given an option to give donation for a specific task. The accumulated donations will be used to reward the contributors who close the task. (There might be issues about splitting the reward if several people contribute to the same task, but I believe that it can be worked out by setting appropriate policies). I think the similar idea is used in https://bountify.co/, judging from their front page. Best, Ihor ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-26 12:44 ` Ihor Radchenko @ 2020-12-27 5:42 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-27 5:42 UTC (permalink / raw) To: Ihor Radchenko; +Cc: dimech, abrochard, bugs, 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. ]]] > Instead of donating to generic Emacs development, the users may > be given an option to give donation for a specific task. The accumulated > donations will be used to reward the contributors who close the task. That is much harder than it seems. But this list is not the place to discuss 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 5:21 ` Richard Stallman 2020-12-22 6:05 ` Christopher Dimech 2020-12-22 6:06 ` Ihor Radchenko @ 2020-12-22 6:31 ` Jean Louis 2020-12-22 15:46 ` Eli Zaretskii 2020-12-24 5:49 ` Richard Stallman 2020-12-22 15:40 ` Eli Zaretskii 3 siblings, 2 replies; 384+ messages in thread From: Jean Louis @ 2020-12-22 6:31 UTC (permalink / raw) To: Richard Stallman; +Cc: Christopher Dimech, abrochard, emacs-devel * Richard Stallman <rms@gnu.org> [2020-12-22 08:22]: > [[[ 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 also motivate by offering small payments for solutions to > > unresolved problems. > > Yes, we could do that. It could be a useful practice. > And we would need to make a plan: a list of projects > (not very many of them, I'd think) that are of a reasonable size > and amounts to offer. > > Do you think people could be motivated by amounts under hundreds > of dollars? I tend to doubt it. I think yes. Not everybody is too busy and programmers live in various economical zones that smaller amounts not affordable in US could be quite affordable for one month of living in some other country. For example a waitress in Uganda would get monthly US $55 for salary which would be short as one would need to pay the room, and food at least. Majority of people live for less than US $100 per month. > > Most people I know don't know what to do or what problems are out there. > > Is this because we have not posted it in a clear enough way > or because we have not made people aware of what we do post? In my opinion both. It has been posted on GNU website what is needed in terms of critical software where GNU need help, but website is huge and when there is complex information it may not be quite clear. In terms of Emacs I do not know if GNU posted it anywhere but in etc/TODO. It would be good to make a list of items where Emacs need some help including if there are some paid initiatives. The free OS DragonflyBSD offers "Code Bounties" https://www.dragonflybsd.org/docs/developer/Code_Bounties/ where some people may say which feature they would like to see in Emacs and some people program for the feature, so they could say US $100 within 6 months for the feature X to be programmed. We could use that as example and I have proposed it before few weeks. There is no guarantee offered that feature would be included even if programmed, developers decide it ultimately. We could then all "bid" on various features or program for bidders while improving free software. Jean ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 6:31 ` Jean Louis @ 2020-12-22 15:46 ` Eli Zaretskii 2020-12-24 5:49 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 15:46 UTC (permalink / raw) To: Jean Louis; +Cc: dimech, abrochard, rms, emacs-devel > Date: Tue, 22 Dec 2020 09:31:46 +0300 > From: Jean Louis <bugs@gnu.support> > Cc: Christopher Dimech <dimech@gmx.com>, abrochard@gmx.com, emacs-devel@gnu.org > > > Is this because we have not posted it in a clear enough way > > or because we have not made people aware of what we do post? > > In my opinion both. It has been posted on GNU website what is needed > in terms of critical software where GNU need help, but website is huge > and when there is complex information it may not be quite clear. In > terms of Emacs I do not know if GNU posted it anywhere but in > etc/TODO. It is customary for GNU projects to have a TODO file, and Emacs follows suit. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 6:31 ` Jean Louis 2020-12-22 15:46 ` Eli Zaretskii @ 2020-12-24 5:49 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-24 5:49 UTC (permalink / raw) To: Jean Louis; +Cc: dimech, abrochard, 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. ]]] > In my opinion both. It has been posted on GNU website what is needed > in terms of critical software where GNU need help, but website is huge > and when there is complex information it may not be quite clear. In > terms of Emacs I do not know if GNU posted it anywhere but in > etc/TODO. We could certainly post an Emcas task list page. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 5:21 ` Richard Stallman ` (2 preceding siblings ...) 2020-12-22 6:31 ` Jean Louis @ 2020-12-22 15:40 ` Eli Zaretskii 2020-12-22 16:28 ` Internationalize Emacs's messages (swahili) Jean Louis 3 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 15:40 UTC (permalink / raw) To: rms; +Cc: dimech, abrochard, bugs, emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Tue, 22 Dec 2020 00:21:50 -0500 > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > > > Most people I know don't know what to do or what problems are out there. > > Is this because we have not posted it in a clear enough way > or because we have not made people aware of what we do post? We display the list of features we'd like implemented in etc/TODO. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Internationalize Emacs's messages (swahili) 2020-12-22 15:40 ` Eli Zaretskii @ 2020-12-22 16:28 ` Jean Louis 2020-12-22 16:41 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-22 16:28 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, abrochard, rms, bugs, emacs-devel * Eli Zaretskii <eliz@gnu.org> [2020-12-22 18:41]: > > From: Richard Stallman <rms@gnu.org> > > Date: Tue, 22 Dec 2020 00:21:50 -0500 > > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > > > > > Most people I know don't know what to do or what problems are out there. > > > > Is this because we have not posted it in a clear enough way > > or because we have not made people aware of what we do post? > > We display the list of features we'd like implemented in etc/TODO. Could I then arrange translations to Swahili (Kenya, Tanzania, Uganda, Congo) and Luganda (Uganda) for Emacs? Is it possible to start, like using gettext stuff? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-22 16:28 ` Internationalize Emacs's messages (swahili) Jean Louis @ 2020-12-22 16:41 ` Eli Zaretskii 2020-12-23 14:04 ` Zhu Zihao 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 16:41 UTC (permalink / raw) To: Jean Louis; +Cc: dimech, abrochard, rms, bugs, emacs-devel > Date: Tue, 22 Dec 2020 19:28:42 +0300 > From: Jean Louis <bugs@gnu.support> > Cc: rms@gnu.org, dimech@gmx.com, abrochard@gmx.com, bugs@gnu.support, > emacs-devel@gnu.org > > Could I then arrange translations to Swahili (Kenya, Tanzania, Uganda, > Congo) and Luganda (Uganda) for Emacs? > > Is it possible to start, like using gettext stuff? See the ngettext function. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-22 16:41 ` Eli Zaretskii @ 2020-12-23 14:04 ` Zhu Zihao 2020-12-23 16:07 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Zhu Zihao @ 2020-12-23 14:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, abrochard, rms, bugs, emacs-devel [-- Attachment #1: Type: text/plain, Size: 748 bytes --] Eli Zaretskii writes: >> Date: Tue, 22 Dec 2020 19:28:42 +0300 >> From: Jean Louis <bugs@gnu.support> >> Cc: rms@gnu.org, dimech@gmx.com, abrochard@gmx.com, bugs@gnu.support, >> emacs-devel@gnu.org >> >> Could I then arrange translations to Swahili (Kenya, Tanzania, Uganda, >> Congo) and Luganda (Uganda) for Emacs? >> >> Is it possible to start, like using gettext stuff? > > See the ngettext function. I see the the C code of ngettext. /* Placeholder implementation until we get our act together. */ return EQ (n, make_fixnum (1)) ? msgid : msgid_plural; Looks that we're not ready for the i18n/l10n? -- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 255 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-23 14:04 ` Zhu Zihao @ 2020-12-23 16:07 ` Eli Zaretskii 2020-12-24 1:54 ` Zhu Zihao 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-23 16:07 UTC (permalink / raw) To: Zhu Zihao; +Cc: dimech, abrochard, rms, bugs, emacs-devel > From: Zhu Zihao <all_but_last@163.com> > Date: Wed, 23 Dec 2020 22:04:50 +0800 > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, > emacs-devel@gnu.org > > >> Is it possible to start, like using gettext stuff? > > > > See the ngettext function. > > I see the the C code of ngettext. > > /* Placeholder implementation until we get our act together. */ > return EQ (n, make_fixnum (1)) ? msgid : msgid_plural; > > Looks that we're not ready for the i18n/l10n? "Ready" in what sense? There were serious discussions of this stuff in the past, which revealed the parts of this (large) job, and in particular that just having a Lisp binding for gettext is not enough. We are "ready" in the sense that someone needs to implement at least some of those parts. (This is about l10n; i18n is in Emacs since v20.1.) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-23 16:07 ` Eli Zaretskii @ 2020-12-24 1:54 ` Zhu Zihao 2020-12-24 14:16 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Zhu Zihao @ 2020-12-24 1:54 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, abrochard, rms, bugs, emacs-devel [-- Attachment #1: Type: text/plain, Size: 1173 bytes --] Eli Zaretskii writes: > There were serious discussions of this stuff in the past, which > revealed the parts of this (large) job, and in particular that just > having a Lisp binding for gettext is not enough. We are "ready" in > the sense that someone needs to implement at least some of those > parts. Can you give me a link to the dicussion? So far as I can imagine, these problems should be solved before we introduce l10n to Emacs. 1. Emacs should be able to compile gettext *.po file, not just read *.mo file. It's not elegant to distribute package with *.mo files bundled. 2. More tightly integration to gettext tools. This may already be solved, we can merge the po-mode.el from gettext project to Emacs and improve it. 3. Namespace. In order to make all 3rd-party Emacs plugins to use gettext l10n, we should provide a proper way to let plugins declare their own text domain. And we may also need to resolve the conflict. Since all plugins run with Emacs in same process. text domain name confliction will be a big problem. -- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 255 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-24 1:54 ` Zhu Zihao @ 2020-12-24 14:16 ` Eli Zaretskii 2020-12-26 2:03 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-24 14:16 UTC (permalink / raw) To: Zhu Zihao; +Cc: dimech, abrochard, rms, bugs, emacs-devel > From: Zhu Zihao <all_but_last@163.com> > Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, > emacs-devel@gnu.org > Date: Thu, 24 Dec 2020 09:54:04 +0800 > > > There were serious discussions of this stuff in the past, which > > revealed the parts of this (large) job, and in particular that just > > having a Lisp binding for gettext is not enough. We are "ready" in > > the sense that someone needs to implement at least some of those > > parts. > > Can you give me a link to the dicussion? They are easy enough to find: search the list archives for "gettext" or "l10n", and you will find them. The last one starts here: https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00081.html A previous one starts here: https://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00750.html > 1. Emacs should be able to compile gettext *.po file, not just read *.mo > file. It's not elegant to distribute package with *.mo files bundled. > > 2. More tightly integration to gettext tools. This may already be > solved, we can merge the po-mode.el from gettext project to Emacs and > improve it. > > 3. Namespace. In order to make all 3rd-party Emacs plugins to use > gettext l10n, we should provide a proper way to let plugins declare > their own text domain. And we may also need to resolve the conflict. > Since all plugins run with Emacs in same process. text domain name > confliction will be a big problem. These are technical problems that can be solved relatively easily. The real issues are much harder, as discussed in those threads. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-24 14:16 ` Eli Zaretskii @ 2020-12-26 2:03 ` Daniel Brooks 2020-12-26 2:47 ` Stefan Monnier ` (3 more replies) 0 siblings, 4 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 2:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, rms Eli Zaretskii <eliz@gnu.org> writes: >> From: Zhu Zihao <all_but_last@163.com> >> Cc: dimech@gmx.com, abrochard@gmx.com, rms@gnu.org, bugs@gnu.support, >> emacs-devel@gnu.org >> Date: Thu, 24 Dec 2020 09:54:04 +0800 >> >> > There were serious discussions of this stuff in the past, which >> > revealed the parts of this (large) job, and in particular that just >> > having a Lisp binding for gettext is not enough. We are "ready" in >> > the sense that someone needs to implement at least some of those >> > parts. >> >> Can you give me a link to the dicussion? > > They are easy enough to find: search the list archives for "gettext" > or "l10n", and you will find them. The last one starts here: > > https://lists.gnu.org/archive/html/emacs-devel/2019-03/msg00081.html > > A previous one starts here: > > https://lists.gnu.org/archive/html/emacs-devel/2017-04/msg00750.html My personal opinion is that gettext is too limited. It works for simple things, but provides no help at all for complex things. I think that the most productive way to think about translation is that each coherent message that we present to a user (whether it's via the message function or not) should explicitly be the result of calling a function written by the translator. gettext only allows the translator to supply strings, so it falls down in complex situations. The classical example is the "You have 42 new messages." situation. With gettext, it is tempting to ask the translator to translate a string such as "You have %d new messages.", but this does not give them any flexibility to correctly handle languages with more plural categories than English. Russian, for example, has a plural category for all numbers that are one more than a multiple of ten except 11, which is a special case. It also has another category for all numbers ending in 2, 3, or 4 except for 12, 13, and 14. (I don't actually know Russian, but the rules are summarized in a page or two at <http://www.russianlessons.net/lessons/lesson11_main.php>.) There are over 7,700 distinct languages in the world, and we should assume that they are all at least that crazy. An ideal situation does not allow the craziness to leave the translation and make the implementation more complex. Nor should the craziness of Russian make writing a Spanish translation more difficult. Thus, each translation should provide a package full of functions rather than a file full of strings. It could literally be that simple, though I think that there are benefits to not making translators actually write an elisp package. For one thing, putting the wrong kind of function in a translation package could actually break Emacs (because there's no namespacing). I think that we could compile these functions from a different source representation, and that we could benefit from sharing code and tools with an existing translation project. I recommend taking a look at Project Fluent <https://www.projectfluent.org/>. It's a free-software implementation of exactly the system that I've described. Translators write functions in a syntax that is similar in some ways to both Javascript and an ini file, which could be easily compiled into Elisp. (It's the successor to the l20n project, which you might also have heard of.) The Project Fluent webpage has an set of interactive examples which are worth checking out. I'd be willing to spend some free time to help implement this. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 2:03 ` Daniel Brooks @ 2020-12-26 2:47 ` Stefan Monnier 2020-12-26 3:22 ` Daniel Brooks 2020-12-26 6:06 ` Daniel Brooks ` (2 subsequent siblings) 3 siblings, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2020-12-26 2:47 UTC (permalink / raw) To: Daniel Brooks Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, Eli Zaretskii, rms > My personal opinion is that gettext is too limited. It works for simple > things, but provides no help at all for complex things. My feeling is that Emacs is so far from those problems that considering such issues will do little more than delay any actual progress. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 2:47 ` Stefan Monnier @ 2020-12-26 3:22 ` Daniel Brooks 2020-12-26 3:48 ` Stefan Monnier 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 3:22 UTC (permalink / raw) To: Stefan Monnier Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, Eli Zaretskii, rms Stefan Monnier <monnier@iro.umontreal.ca> writes: >> My personal opinion is that gettext is too limited. It works for simple >> things, but provides no help at all for complex things. > > My feeling is that Emacs is so far from those problems that considering > such issues will do little more than delay any actual progress. Possibly, but I'm not so sure. Just looking at the message function for a moment (because it's easy to grep for), there are a nonzero number that do numeric substitions. Here are a few selected examples: ./lisp/sort.el:638: (message "Deleted %d %sduplicate line%s%s" ./lisp/calendar/cal-hebrew.el:188: (message "Hebrew date (until sunset): %s" ./lisp/ido.el:1670: (message "Ido mode %s" (if ido-mode "enabled" "disabled")))) ./lisp/calendar/appt.el:716: (message "Appointment reminders enabled%s" ./lisp/calendar/icalendar.el:2287: (message "Cannot handle COUNT attribute for `%s' events." ./lisp/calendar/calendar.el:2040: (message "Region has %d day%s (inclusive)" ./lisp/calendar/todo-mode.el:725: (message "There is no %s file for %s" ./lisp/calendar/todo-mode.el:5672: (when prompt (message "Press a key (so far `%s'): %s" keys-so-far prompt)) ./lisp/calendar/todo-mode.el:5772: (message (concat "File" (if pl "s" "") " %s ha" (if pl "ve" "s") ./lisp/registry.el:317: (message "reindexing: %d of %d (%.2f%%)" The one from todo-mode.el:5772 is quite interesting; you can see that it's complex because it's handling English plurals. That complexity would be moved into the English translation and out of todo-mode.el entirely. The ones with colons are a way to make the substitution more generic across languages by making plurals less necessary at the cost of being more stilted. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 3:22 ` Daniel Brooks @ 2020-12-26 3:48 ` Stefan Monnier 2020-12-26 4:01 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2020-12-26 3:48 UTC (permalink / raw) To: Daniel Brooks Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, Eli Zaretskii, rms >>> My personal opinion is that gettext is too limited. It works for simple >>> things, but provides no help at all for complex things. >> My feeling is that Emacs is so far from those problems that considering >> such issues will do little more than delay any actual progress. > Possibly, but I'm not so sure. Just looking at the message function for > a moment (because it's easy to grep for), there are a nonzero number > that do numeric substitions. Here are a few selected examples: You're missing my point: last I checked, we have 0 translations (well, beside the tutorials, that is). So, worrying about addressing the plurality of plurals better than most other programs doesn't seem right. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 3:48 ` Stefan Monnier @ 2020-12-26 4:01 ` Daniel Brooks 2020-12-27 5:34 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 4:01 UTC (permalink / raw) To: Stefan Monnier Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, Eli Zaretskii, rms Stefan Monnier <monnier@iro.umontreal.ca> writes: >>>> My personal opinion is that gettext is too limited. It works for simple >>>> things, but provides no help at all for complex things. >>> My feeling is that Emacs is so far from those problems that considering >>> such issues will do little more than delay any actual progress. >> Possibly, but I'm not so sure. Just looking at the message function for >> a moment (because it's easy to grep for), there are a nonzero number >> that do numeric substitions. Here are a few selected examples: > > You're missing my point: last I checked, we have 0 translations (well, > beside the tutorials, that is). So, worrying about addressing the > plurality of plurals better than most other programs doesn't seem right. Ah, ok. I suppose that's true. However, imagine the scenario in five years when we have to rip out gettext and 42 translations and replace them with something else because everyone is getting annoyed at how hard it is to pluralize things correctly. I don't think it will be all that difficult to do correctly, and if it costs us a few months up front then in the long run that will be time well-spent. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 4:01 ` Daniel Brooks @ 2020-12-27 5:34 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-27 5:34 UTC (permalink / raw) To: Daniel Brooks Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, monnier, 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. ]]] > Ah, ok. I suppose that's true. However, imagine the scenario in five > years when we have to rip out gettext and 42 translations and replace > them with something else because everyone is getting annoyed at how hard > it is to pluralize things correctly. It is a mistake to make such specific assumptions about what we will do, years from now. We could do other things, such as. * Not bother about it, because only a minority of users experience a problem and it is merely the same annoyance they see in other programs. * Fix it in gettext, for all GNU programs at once. -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 2:03 ` Daniel Brooks 2020-12-26 2:47 ` Stefan Monnier @ 2020-12-26 6:06 ` Daniel Brooks 2020-12-26 8:26 ` Eli Zaretskii ` (2 more replies) 2020-12-26 7:50 ` Eli Zaretskii 2020-12-26 10:28 ` Richard Stallman 3 siblings, 3 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 6:06 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rms, bugs, dimech, abrochard, emacs-devel, Zhu Zihao Daniel Brooks <db48x@db48x.net> writes: > Thus, each translation should provide a package full of functions rather > than a file full of strings. It could literally be that simple, though I As a concrete example of what I see in my head when I talk about this, here's some code that generates a moderately complex message, which I have taken from todo-mode.el: (let ((pl (> (length deleted) 1)) (names (mapconcat (lambda (f) (concat "\"" f "\"")) deleted ", "))) (message (concat "File" (if pl "s" "") " %s ha" (if pl "ve" "s") " been deleted and removed from\n" "the list of category completion files") names)) I think that the best way to factor this code is this: (message (todo-msg-delete-from-category-completion-files deleted)) Basically, todo-msg-delete-from-category-completion-files is a new function which bundles up all the work of creating the message to be displayed. We pass it the list of deleted files, and it inspects the user's preferences and does all the rest of the work. The naming scheme is just what I came up with on the fly; it seems to me that it would work, but it's a detail we should work out. An obvious implementation of this function is this: (defun todo-msg-delete-from-category-completion-files (names) (let ((name (intern (concat "todo-msg-delete-from-category-completion-files-" (current-language-preference))))) (if (fboundp name) (funcall name names) (todo-msg-delete-from-category-completion-files-eng names)))) It just dispatches based on the user's currently-chosen language. The function it dispatches to does the work of building or choosing a string to return. In those cases where we write code that should show a message that is _not_ in the user's preferred language, we would call the correct function ourselves. A good example of that would be the UI that allows the user to choose a preferred language. This could be included in todo-mode.el directly, but since todo-mode has many messages to display, we would obviously want some macro for declaring them in bulk. (That's another detail to be worked out.) (defun todo-msg-delete-from-category-completion-files-eng (names) (let ((category (plural-category-eng (length names))) (names (quoted-comma-sep names))) (format (cond ((eq :one category) "File %s has been deleted and removed from\n the list of category completion files") ((eq :other category) "Files %s have been deleted and removed from\n the list of category completion files")) names))) This is the one that does the real work. It chooses which string to use based on the plural category (there are obviously briefer ways to write this, but I wrote it this way for effect). It substitutes in the list of files the normal way because english doesn't make us do anything odd for that. (It would be nice if the formatted list had an "and" before the final item though.) This code could be written by hand with no trouble, and a translator who knows Elisp could come in and supply a new group of functions that implement the same interface but for their own language. If we did the additional work of writing a Fluent→Elisp compiler, we could write the same function something like this: delete-from-category-completion-files = { $names -> [one] File { quoted-comma-sep($names) } has been deleted and removed from\n the list of category completion files *[other] Files { quoted-comma-sep($names) } have been deleted and removed from\n the list of category completion files } This is rather more succinct, and possible to teach to translators without having to teach them all of elisp. We can compile this to Elisp at build time, but I'd like to be able to load them dynamically as well. The helper functions are all fairly obvious, and obviously incomplete: (defun plural-category-eng (count) (cond ((= count 1) :one) (t :other))) (defun current-language-preference () "eng") (defun quoted-comma-sep (list) (mapconcat (lambda (f) (concat "\"" f "\"")) list ", ")) The current language preference could be a cusomizable variable, or some other mechanism (a fallback to the LANG variable, for instance). Each translation would have something like the quoted-comma-sep function, though they might not all call it the same thing. This would allow each translator to choose the most appropriate type of quotation characters, list separators, conjunctions, and so on for the translation that they are writing. I think that all of this is doable in a reasonable amount of time, if two or three people are working on it together. The broader work of actually factoring messages out of the code and into translatable functions would need to be spread out more broadly, but it could happen over a longer period of time. It's a task of Herculean proportions, and there is no conveniently-located river that we can divert. It occurs to me that I haven't considered messages generated by C code at all; I hope that they are few and far between, and that we can just call back into lisp to generate those messages. There are bound to be some messages that we just never end up translating. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 6:06 ` Daniel Brooks @ 2020-12-26 8:26 ` Eli Zaretskii 2020-12-26 8:57 ` tomas 2020-12-26 9:06 ` Tomas Hlavaty 2 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 8:26 UTC (permalink / raw) To: Daniel Brooks; +Cc: rms, bugs, dimech, abrochard, emacs-devel, all_but_last > From: Daniel Brooks <db48x@db48x.net> > Cc: Zhu Zihao <all_but_last@163.com>, bugs@gnu.support, dimech@gmx.com, > abrochard@gmx.com, emacs-devel@gnu.org, rms@gnu.org > Date: Fri, 25 Dec 2020 22:06:15 -0800 > > As a concrete example of what I see in my head when I talk about this, > here's some code that generates a moderately complex message, which I > have taken from todo-mode.el: > > (let ((pl (> (length deleted) 1)) > (names (mapconcat (lambda (f) (concat "\"" f "\"")) deleted ", "))) > (message (concat "File" (if pl "s" "") " %s ha" (if pl "ve" "s") > " been deleted and removed from\n" > "the list of category completion files") > names)) Thanks for pointing this out. I've now fixed this and other similar places in todo-mode.el on the master branch by using 'ngettext'. The diffs are below. commit cf1d7034445e7896c34f88256e5d7f2674a4f7ee Author: Eli Zaretskii <eliz@gnu.org> AuthorDate: Sat Dec 26 10:23:04 2020 +0200 Commit: Eli Zaretskii <eliz@gnu.org> CommitDate: Sat Dec 26 10:23:04 2020 +0200 Fix messages with plural forms in todo-mode.el * lisp/calendar/todo-mode.el (todo-move-item, todo-item-undone) (todo-category-completions): Use 'ngettext' instead of hard-coding plural forms by hand. diff --git a/lisp/calendar/todo-mode.el b/lisp/calendar/todo-mode.el index 3975a9b..637df85 100644 --- a/lisp/calendar/todo-mode.el +++ b/lisp/calendar/todo-mode.el @@ -2745,9 +2745,10 @@ todo-move-item (setq ov (make-overlay (save-excursion (todo-item-start)) (save-excursion (todo-item-end)))) (overlay-put ov 'face 'todo-search)) - (let* ((pl (if (and marked (> (cdr marked) 1)) "s" "")) - (cat+file (todo-read-category (concat "Move item" pl - " to category: ") + (let* ((num (if (not marked) 1 (cdr marked))) + (cat+file (todo-read-category + (ngettext "Move item to category: " + "Move items to category: " num) nil file))) (while (and (equal (car cat+file) cat1) (equal (cdr cat+file) file1)) @@ -2974,7 +2975,7 @@ todo-item-undone (interactive) (let* ((cat (todo-current-category)) (marked (assoc cat todo-categories-with-marks)) - (pl (if (and marked (> (cdr marked) 1)) "s" ""))) + (num (if (not marked) 1 (cdr marked)))) (when (or marked (todo-done-item-p)) (let ((buffer-read-only) (opoint (point)) @@ -2982,6 +2983,9 @@ todo-item-undone (first 'first) (item-count 0) (diary-count 0) + (omit-prompt (ngettext "Omit comment from restored item? " + "Omit comments from restored items? " + num)) start end item ov npoint undone) (and marked (goto-char (point-min))) (catch 'done @@ -3013,10 +3017,7 @@ todo-item-undone (if (eq first 'first) (setq first (if (eq todo-undo-item-omit-comment 'ask) - (when (todo-y-or-n-p - (concat "Omit comment" pl - " from restored item" - pl "? ")) + (when (todo-y-or-n-p omit-prompt) 'omit) (when todo-undo-item-omit-comment 'omit))) t) @@ -5782,11 +5783,13 @@ todo-category-completions (delete f todo-category-completions-files)) (push f deleted))) (when deleted - (let ((pl (> (length deleted) 1)) + (let ((ndeleted (length deleted)) (names (mapconcat (lambda (f) (concat "\"" f "\"")) deleted ", "))) - (message (concat "File" (if pl "s" "") " %s ha" (if pl "ve" "s") - " been deleted and removed from\n" - "the list of category completion files") + (message (concat + (ngettext "File %s has been deleted and removed from\n" + "Files %s have been deleted and removed from\n" + ndeleted) + "the list of category completion files") names)) (put 'todo-category-completions-files 'custom-type `(set ,@(todo--files-type-list))) ^ permalink raw reply related [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 6:06 ` Daniel Brooks 2020-12-26 8:26 ` Eli Zaretskii @ 2020-12-26 8:57 ` tomas 2020-12-26 9:06 ` Tomas Hlavaty 2 siblings, 0 replies; 384+ messages in thread From: tomas @ 2020-12-26 8:57 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1402 bytes --] On Fri, Dec 25, 2020 at 10:06:15PM -0800, Daniel Brooks wrote: > Daniel Brooks <db48x@db48x.net> writes: > > > Thus, each translation should provide a package full of functions rather > > than a file full of strings. It could literally be that simple, though I > > As a concrete example of what I see in my head when I talk about this, > here's some code that generates a moderately complex message, which I > have taken from todo-mode.el: Before you set out to reinvent wheels, you should check what's out there. The ngettext interface [1], which _is_ part of the gettext package, addresses (even multiple!) plural forms, i.e. your Slavic example. Thing is, human languages are messy. You won't get everything covered. And the more elaborate you get, the more difficult it'll be to find translators having the time to grok all that complexity. One of the nice things about this simplistic string -> string approach is that it allows "lightweight" distributed translation approaches, often web-based: those allow people to contribute translations to a project who otherwise wouldn't even dream of contributing. There are even platforms out there where you can register your Free Software project and where people can contribute translations, via a Web interface. As always, it's a tradeoff. Cheers [1] https://en.wikipedia.org/wiki/Gettext#Plural_form - t [-- Attachment #2: Digital signature --] [-- Type: application/pgp-signature, Size: 198 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 6:06 ` Daniel Brooks 2020-12-26 8:26 ` Eli Zaretskii 2020-12-26 8:57 ` tomas @ 2020-12-26 9:06 ` Tomas Hlavaty 2020-12-26 9:24 ` Eli Zaretskii 2 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-26 9:06 UTC (permalink / raw) To: Daniel Brooks, Eli Zaretskii Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, rms On Fri 25 Dec 2020 at 22:06, Daniel Brooks <db48x@db48x.net> wrote: > (let ((pl (> (length deleted) 1)) On a different note, there are 725 matches for "> (length" in Emacs. Computing length first and then comparing the number of items is very inefficient. There is a room for speed up here. I wonder if there is a way to prevent programers to do such inefficient things? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:06 ` Tomas Hlavaty @ 2020-12-26 9:24 ` Eli Zaretskii 2020-12-26 9:28 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 9:24 UTC (permalink / raw) To: Tomas Hlavaty Cc: rms, bugs, dimech, abrochard, emacs-devel, db48x, all_but_last > From: Tomas Hlavaty <tom@logand.com> > Cc: rms@gnu.org, bugs@gnu.support, dimech@gmx.com, > abrochard@gmx.com, emacs-devel@gnu.org, > Zhu Zihao <all_but_last@163.com> > Date: Sat, 26 Dec 2020 10:06:03 +0100 > > On Fri 25 Dec 2020 at 22:06, Daniel Brooks <db48x@db48x.net> wrote: > > (let ((pl (> (length deleted) 1)) > > On a different note, there are 725 matches for "> (length" in Emacs. > Computing length first and then comparing the number of items is very > inefficient. What did you have in mind that would be more efficient? The above code sets 'pl' to a simple boolean based on whether 'deleted' has one member or more than one. What more efficient code would you suggest here? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:24 ` Eli Zaretskii @ 2020-12-26 9:28 ` Daniel Brooks 2020-12-26 9:34 ` Lars Ingebrigtsen 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 9:28 UTC (permalink / raw) To: Eli Zaretskii Cc: rms, bugs, dimech, abrochard, Tomas Hlavaty, emacs-devel, all_but_last Eli Zaretskii <eliz@gnu.org> writes: >> From: Tomas Hlavaty <tom@logand.com> >> Cc: rms@gnu.org, bugs@gnu.support, dimech@gmx.com, >> abrochard@gmx.com, emacs-devel@gnu.org, >> Zhu Zihao <all_but_last@163.com> >> Date: Sat, 26 Dec 2020 10:06:03 +0100 >> >> On Fri 25 Dec 2020 at 22:06, Daniel Brooks <db48x@db48x.net> wrote: >> > (let ((pl (> (length deleted) 1)) >> >> On a different note, there are 725 matches for "> (length" in Emacs. >> Computing length first and then comparing the number of items is very >> inefficient. > > What did you have in mind that would be more efficient? > > The above code sets 'pl' to a simple boolean based on whether > 'deleted' has one member or more than one. What more efficient code > would you suggest here? (not (null (cdr deleted))) would avoid traversing the entire list, but it wouldn't be easier to read. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:28 ` Daniel Brooks @ 2020-12-26 9:34 ` Lars Ingebrigtsen 2020-12-26 9:47 ` Daniel Brooks ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-26 9:34 UTC (permalink / raw) To: emacs-devel Daniel Brooks <db48x@db48x.net> writes: >> The above code sets 'pl' to a simple boolean based on whether >> 'deleted' has one member or more than one. What more efficient code >> would you suggest here? > > (not (null (cdr deleted))) would avoid traversing the entire list, but it > wouldn't be easier to read. Perhaps a `longer-than-p' function would be helpful? I.e., (longer-than-p deleted 1)? (Or some better name.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:34 ` Lars Ingebrigtsen @ 2020-12-26 9:47 ` Daniel Brooks 2020-12-26 9:54 ` Eli Zaretskii 2020-12-27 5:34 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 9:47 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Daniel Brooks <db48x@db48x.net> writes: > >>> The above code sets 'pl' to a simple boolean based on whether >>> 'deleted' has one member or more than one. What more efficient code >>> would you suggest here? >> >> (not (null (cdr deleted))) would avoid traversing the entire list, but it >> wouldn't be easier to read. > > Perhaps a `longer-than-p' function would be helpful? I.e., > (longer-than-p deleted 1)? (Or some better name.) Yes, that would be a good readable name for it. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:34 ` Lars Ingebrigtsen 2020-12-26 9:47 ` Daniel Brooks @ 2020-12-26 9:54 ` Eli Zaretskii 2020-12-26 10:02 ` Daniel Brooks ` (2 more replies) 2020-12-27 5:34 ` Richard Stallman 2 siblings, 3 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 9:54 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Sat, 26 Dec 2020 10:34:46 +0100 > > > (not (null (cdr deleted))) would avoid traversing the entire list, but it > > wouldn't be easier to read. > > Perhaps a `longer-than-p' function would be helpful? I.e., > (longer-than-p deleted 1)? (Or some better name.) Just add an optional arg LIMIT to 'length', since the implementation will be the same, and you just want to terminate the loop as early as possible. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:54 ` Eli Zaretskii @ 2020-12-26 10:02 ` Daniel Brooks 2020-12-26 11:12 ` Tomas Hlavaty 2020-12-26 21:19 ` Lars Ingebrigtsen 2 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 10:02 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Lars Ingebrigtsen <larsi@gnus.org> >> Date: Sat, 26 Dec 2020 10:34:46 +0100 >> >> > (not (null (cdr deleted))) would avoid traversing the entire list, but it >> > wouldn't be easier to read. >> >> Perhaps a `longer-than-p' function would be helpful? I.e., >> (longer-than-p deleted 1)? (Or some better name.) > > Just add an optional arg LIMIT to 'length', since the implementation > will be the same, and you just want to terminate the loop as early as > possible. I would still define functions with specific names like longer-than-p which have names that specify their exact meaning, even if they just call length with extra arguments. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:54 ` Eli Zaretskii 2020-12-26 10:02 ` Daniel Brooks @ 2020-12-26 11:12 ` Tomas Hlavaty 2020-12-26 11:16 ` Daniel Brooks ` (2 more replies) 2020-12-26 21:19 ` Lars Ingebrigtsen 2 siblings, 3 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-26 11:12 UTC (permalink / raw) To: Eli Zaretskii, Lars Ingebrigtsen; +Cc: emacs-devel On Sat 26 Dec 2020 at 11:54, Eli Zaretskii <eliz@gnu.org> wrote: >> From: Lars Ingebrigtsen <larsi@gnus.org> >> Date: Sat, 26 Dec 2020 10:34:46 +0100 >> >> > (not (null (cdr deleted))) would avoid traversing the entire list, but it >> > wouldn't be easier to read. >> >> Perhaps a `longer-than-p' function would be helpful? I.e., >> (longer-than-p deleted 1)? (Or some better name.) > > Just add an optional arg LIMIT to 'length', since the implementation > will be the same, and you just want to terminate the loop as early as > possible. What about length= length/= length< length<= length> length>= predicates? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 11:12 ` Tomas Hlavaty @ 2020-12-26 11:16 ` Daniel Brooks 2020-12-26 11:16 ` Eli Zaretskii 2020-12-27 5:38 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 11:16 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: Eli Zaretskii, Lars Ingebrigtsen, emacs-devel Tomas Hlavaty <tom@logand.com> writes: > On Sat 26 Dec 2020 at 11:54, Eli Zaretskii <eliz@gnu.org> wrote: >>> From: Lars Ingebrigtsen <larsi@gnus.org> >>> Date: Sat, 26 Dec 2020 10:34:46 +0100 >>> >>> > (not (null (cdr deleted))) would avoid traversing the entire list, but it >>> > wouldn't be easier to read. >>> >>> Perhaps a `longer-than-p' function would be helpful? I.e., >>> (longer-than-p deleted 1)? (Or some better name.) >> >> Just add an optional arg LIMIT to 'length', since the implementation >> will be the same, and you just want to terminate the loop as early as >> possible. > > What about length= length/= length< length<= length> length>= > predicates? Reasonable suggestions, but not in my opinion as readable as `longer-than-p', `shorter-than-p', and so on. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 11:12 ` Tomas Hlavaty 2020-12-26 11:16 ` Daniel Brooks @ 2020-12-26 11:16 ` Eli Zaretskii 2020-12-27 5:38 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 11:16 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel > From: Tomas Hlavaty <tom@logand.com> > Cc: emacs-devel@gnu.org > Date: Sat, 26 Dec 2020 12:12:46 +0100 > > >> Perhaps a `longer-than-p' function would be helpful? I.e., > >> (longer-than-p deleted 1)? (Or some better name.) > > > > Just add an optional arg LIMIT to 'length', since the implementation > > will be the same, and you just want to terminate the loop as early as > > possible. > > What about length= length/= length< length<= length> length>= > predicates? the first two don't need anything new, the rest can be handled with the single argument I proposed and a negation function (which we already have). Right? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 11:12 ` Tomas Hlavaty 2020-12-26 11:16 ` Daniel Brooks 2020-12-26 11:16 ` Eli Zaretskii @ 2020-12-27 5:38 ` Richard Stallman 2020-12-27 17:33 ` Tomas Hlavaty 2 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-27 5:38 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: eliz, larsi, 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 about length= length/= length< length<= length> length>= > predicates? One of the basic design guides of Emacs Lisp is rejection of the idea of adding more functions in the name of symmetry. If there is a use for longer-than-p, or length> we could call it, it may be worth adding that function, but let's skip the other 5 if they are not actually needed. -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 5:38 ` Richard Stallman @ 2020-12-27 17:33 ` Tomas Hlavaty 2020-12-28 5:25 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 17:33 UTC (permalink / raw) To: rms; +Cc: eliz, larsi, emacs-devel On Sun 27 Dec 2020 at 00:38, Richard Stallman <rms@gnu.org> wrote: > > What about length= length/= length< length<= length> length>= > > predicates? > > One of the basic design guides of Emacs Lisp is rejection of > the idea of adding more functions in the name of symmetry. Interesting. Where can I read about the "basic design guides of Emacs Lisp"? I looked at "(elisp) Programming Tips" but did not find anything. rgrep on the emacs repository shows some counter-examples, i.e. stuff added in the name of symmetry. It is not clear, what exactly "the idea of adding more functions in the name of symmetry" means. Elisp has = /= < > <= >= predicates. Does it mean that <= /= > >= are against that idea because they can be trivially expressed using = and < so programmers should write those "expansions" by hand all over the place? rgrep gives me the following hits: 216 "(not (=" 19 "(not (>" 12 "(not (<" 3 "(not (<=" 1 "(not (>=" 0 "(not (/=" Each usage of not makes the code harder to reason about. I personally prefer the following heuristic: - use < and <= rather than > and >= (read the predicate left to right from smaller to bigger values) - prefer when/unless/while/until and swap if branches to using /= or negation This way there is almost no need for /= > >=, except they are still needed for convenience when used in a different context, e.g. when passed as an arg to a function. > If there is a use for longer-than-p, or length> we could call it, > it may be worth adding that function, but let's skip the other 5 > if they are not actually needed. rgrep on the emacs repository gives me the following counts: 732 "(> (length" 703 "(= (length" 151 "(< (length" 71 "(>= (length" 66 "(<= (length" 46 "(/= (length" Using length in a predicate smells fischy. It is most likely a source of unnecessarily burned cpu cycles. It might be futile to train programmers to keep that in mind but it is relatively easy to find and fix. There are (+ 732 703 151 71 66 46) => 1769 potential cases in emacs. That's quite a lot of potential low hanging fruit for improvement. Defining all those predicates will allow to syntactically fix those places without touching anything else. Once those predicates are in place, we can be _sure_ that emacs is not uselessly counting length of lists in predicates. And those predicates could be further improved and optimized in the future without affecting the call sites. Now the questions is, how should such predicates look like. Ideally, they would look like = /= < > <= >= (accepting rest args) and numbers or lists where for lists lengths would be computed but short-circuited. But such generality might be overkill so I do not have an oppinion on that. Another issue already raised was: in C or elisp? If compiler-macros were an option, maybe that would give the most flexible and efficient implementation which would be easy to maintain. But I do not know much about such deep elisp details yet. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 17:33 ` Tomas Hlavaty @ 2020-12-28 5:25 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-28 5:25 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: eliz, larsi, 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. ]]] > Interesting. Where can I read about the "basic design guides of Emacs > Lisp"? I have never tried to write them down in one specific place. > It is not clear, what exactly "the idea of adding more functions in the > name of symmetry" means. Elisp has = /= < > <= >= predicates. Does it > mean that <= /= > >= are against that idea because they can be trivially > expressed using = and < so programmers should write those "expansions" > by hand all over the place? The idea here is only that we should not _automatically and rigidly_ complete every symmetric set of possible functions. (Because that way lies more bloat.) I describ this as a "design guide" because that is different from a rule. If we had a rigid rule against full symmetric sets of functions, these comparison functions would break the rule. To be rigid about it, we would be "obligated" to delete some of them. However, the idea of the design guide is to reject the rigid rule, which some systems seem to follow, that every function _must_ be part of a full symmetric set. -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:54 ` Eli Zaretskii 2020-12-26 10:02 ` Daniel Brooks 2020-12-26 11:12 ` Tomas Hlavaty @ 2020-12-26 21:19 ` Lars Ingebrigtsen 2020-12-26 21:26 ` Lars Ingebrigtsen 2 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-26 21:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> Perhaps a `longer-than-p' function would be helpful? I.e., >> (longer-than-p deleted 1)? (Or some better name.) > > Just add an optional arg LIMIT to 'length', since the implementation > will be the same, and you just want to terminate the loop as early as > possible. Sure, as a practical matter, adding an optional LIMIT to length is probably the way to implement this. But I think adding some predicates (like the length< etc predicated proposed by Tomas) as wrappers around calls to length with LIMIT makes sense for code readability. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 21:19 ` Lars Ingebrigtsen @ 2020-12-26 21:26 ` Lars Ingebrigtsen 2020-12-26 21:45 ` Stefan Monnier 0 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-26 21:26 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Sure, as a practical matter, adding an optional LIMIT to length is > probably the way to implement this. But I think adding some predicates > (like the length< etc predicated proposed by Tomas) as wrappers around > calls to length with LIMIT makes sense for code readability. Actually... looking a Flength, perhaps not adding an optional parameter would be better. I mean, the only type that's not constant in time is the length of lists, so I think perhaps it would just be confusing. Adding length=, length< and length> (as C functions) seems pretty trivial -- punt to Flength for anything that's not a list, and handle lists specially. Those would have clear semantics, be fast, not make Flength calls any slower, and not add more complicated semantics to Flength. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 21:26 ` Lars Ingebrigtsen @ 2020-12-26 21:45 ` Stefan Monnier 2020-12-26 21:55 ` Lars Ingebrigtsen 2020-12-27 3:33 ` Eli Zaretskii 0 siblings, 2 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-26 21:45 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel > Actually... looking a Flength, perhaps not adding an optional parameter > would be better. I mean, the only type that's not constant in time is > the length of lists, so I think perhaps it would just be confusing. > > Adding length=, length< and length> (as C functions) seems pretty > trivial -- punt to Flength for anything that's not a list, and handle > lists specially. Those would have clear semantics, be fast, not make > Flength calls any slower, and not add more complicated semantics to > Flength. I agree that adding an arg to `length` is probably not a good idea. But how serious is this need we're talking about? I mean we can already easily implement those things in ELisp: (defun length> (x n) "Non-nil if length of X is greater than N." (if (consp x) (nthcdr n x) (> (length x) n))) -- Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 21:45 ` Stefan Monnier @ 2020-12-26 21:55 ` Lars Ingebrigtsen 2020-12-26 22:08 ` Stefan Monnier 2020-12-27 3:33 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-26 21:55 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > But how serious is this need we're talking about? > I mean we can already easily implement those things in ELisp: Oh, sure. But since this is a pure speed optimisation we're talking about, the Lisp solution would be slower than the (< (length foo) bar) in a significant number of cases, and we don't want that, do we? (Most lists in Emacs are very short.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 21:55 ` Lars Ingebrigtsen @ 2020-12-26 22:08 ` Stefan Monnier 2020-12-26 22:10 ` Lars Ingebrigtsen ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-26 22:08 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel >> But how serious is this need we're talking about? >> I mean we can already easily implement those things in ELisp: > Oh, sure. But since this is a pure speed optimisation we're talking > about, the Lisp solution would be slower than the (< (length foo) bar) > in a significant number of cases, and we don't want that, do we? Actually, AFAICT this all started from: (not (null (cdr deleted))) would avoid traversing the entire list, but it wouldn't be easier to read. which doesn't actually demonstrate a need for "speed optimisation", but rather a need to avoid extra work (which could lead to real performance problems when the list is long), so the ELisp implementation seems to fit the bill ("avoid traversing the entire list" while being "easier to read"). Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 22:08 ` Stefan Monnier @ 2020-12-26 22:10 ` Lars Ingebrigtsen 2020-12-26 23:04 ` Lars Ingebrigtsen 2020-12-27 3:35 ` Eli Zaretskii 2 siblings, 0 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-26 22:10 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > Actually, AFAICT this all started from: > > (not (null (cdr deleted))) would avoid traversing the entire list, > but it wouldn't be easier to read. > > which doesn't actually demonstrate a need for "speed optimisation", but > rather a need to avoid extra work (which could lead to real performance > problems when the list is long), so the ELisp implementation seems to > fit the bill ("avoid traversing the entire list" while being "easier to > read"). Well, it started from (< (length list) ...), and the not-null-cdr was mooted as a faster, but less readable solution. A Lisp function would be slower (in many cases), but more readable. I'm proposing a solution that's faster, and more readable. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 22:08 ` Stefan Monnier 2020-12-26 22:10 ` Lars Ingebrigtsen @ 2020-12-26 23:04 ` Lars Ingebrigtsen 2020-12-27 0:34 ` Lars Ingebrigtsen 2020-12-27 3:35 ` Eli Zaretskii 2 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-26 23:04 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel I whipped one up quickly. The slightly interesting thing here is that we have an opportunity here to make this slightly faster -- since we have an upper length bound here, we can eschew the tortoise/hare FOR_EACH_TAIL bit and just follow CDRs, which would be faster. Of course, if you give it a circular list, then it'll always return Qnil, and if you give it (expt most-positive-fixnum most-positive-fixnum) on a circular list, it'll take a while... diff --git a/src/fns.c b/src/fns.c index 646c3ed083..2234818e8e 100644 --- a/src/fns.c +++ b/src/fns.c @@ -145,6 +145,29 @@ DEFUN ("safe-length", Fsafe_length, Ssafe_length, 1, 1, 0, return make_fixnum (len); } +DEFUN ("length<", Flength_less, Slength_less, 2, 2, 0, + doc: /* Return non-nil if SEQUENCE is shorter than LENGTH. +See `length' for allowed values of SEQUENCE. */) + (Lisp_Object sequence, Lisp_Object length) +{ + CHECK_INTEGER (length); + EMACS_INT len = XFIXNUM (length); + + if (CONSP (sequence)) + { + intptr_t i = 0; + FOR_EACH_TAIL (sequence) + { + i++; + if (i >= len) + return Qnil; + } + return Qt; + } + else + return XFIXNUM (Flength (sequence)) < len? Qt: Qnil; +} + DEFUN ("proper-list-p", Fproper_list_p, Sproper_list_p, 1, 1, 0, doc: /* Return OBJECT's length if it is a proper list, nil otherwise. A proper list is neither circular nor dotted (i.e., its last cdr is nil). */ @@ -5721,6 +5744,7 @@ syms_of_fns (void) defsubr (&Srandom); defsubr (&Slength); defsubr (&Ssafe_length); + defsubr (&Slength_less); defsubr (&Sproper_list_p); defsubr (&Sstring_bytes); defsubr (&Sstring_distance); -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply related [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 23:04 ` Lars Ingebrigtsen @ 2020-12-27 0:34 ` Lars Ingebrigtsen 2020-12-27 8:01 ` Lars Ingebrigtsen 2020-12-27 12:56 ` Andreas Schwab 0 siblings, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 0:34 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > I whipped one up quickly. With this totally realistic benchmark, this is what we have today: (let ((list (make-list 10000 nil))) (benchmark-run 1000000 (< (length list) 2))) => (10.826215101 0 0.0) The same, with length<: (let ((list (make-list 10000 nil))) (benchmark-run 1000000 (length< list 2))) => (0.05590014099999999 0 0.0) If we avoid tortoise/hare for small LENGTHs, then it's about 20% faster than that again (if we're doing (length< list 200)). diff --git a/src/fns.c b/src/fns.c index 646c3ed083..2557f41637 100644 --- a/src/fns.c +++ b/src/fns.c @@ -145,6 +145,37 @@ DEFUN ("safe-length", Fsafe_length, Ssafe_length, 1, 1, 0, return make_fixnum (len); } +DEFUN ("length<", Flength_less, Slength_less, 2, 2, 0, + doc: /* Return non-nil if SEQUENCE is shorter than LENGTH. +See `length' for allowed values of SEQUENCE. */) + (Lisp_Object sequence, Lisp_Object length) +{ + CHECK_FIXNUM (length); + EMACS_INT len = XFIXNUM (length); + + if (CONSP (sequence)) + { + EMACS_INT i = 0; + /* If LENGTH is short, use a fast loop that doesn't care about + whether SEQUENCE is circular or not. */ + if (len < 0xffff) + while (CONSP (sequence)) + { + if (++i >= len) + return Qnil; + sequence = XCDR (sequence); + } + /* Signal an error on circular lists. */ + else + FOR_EACH_TAIL (sequence) + if (++i >= len) + return Qnil; + return Qt; + } + else + return XFIXNUM (Flength (sequence)) < len? Qt: Qnil; +} + DEFUN ("proper-list-p", Fproper_list_p, Sproper_list_p, 1, 1, 0, doc: /* Return OBJECT's length if it is a proper list, nil otherwise. A proper list is neither circular nor dotted (i.e., its last cdr is nil). */ @@ -5721,6 +5752,7 @@ syms_of_fns (void) defsubr (&Srandom); defsubr (&Slength); defsubr (&Ssafe_length); + defsubr (&Slength_less); defsubr (&Sproper_list_p); defsubr (&Sstring_bytes); defsubr (&Sstring_distance); -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply related [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 0:34 ` Lars Ingebrigtsen @ 2020-12-27 8:01 ` Lars Ingebrigtsen 2020-12-27 18:15 ` Eli Zaretskii 2021-01-01 5:55 ` Drew Adams 2020-12-27 12:56 ` Andreas Schwab 1 sibling, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 8:01 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > +DEFUN ("length<", Flength_less, Slength_less, 2, 2, 0, I went ahead and pushed this (along with > and =, which seems like a natural set). -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 8:01 ` Lars Ingebrigtsen @ 2020-12-27 18:15 ` Eli Zaretskii 2020-12-27 22:03 ` Lars Ingebrigtsen 2021-01-01 5:55 ` Drew Adams 1 sibling, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-27 18:15 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: monnier, emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org > Date: Sun, 27 Dec 2020 09:01:48 +0100 > > Lars Ingebrigtsen <larsi@gnus.org> writes: > > > +DEFUN ("length<", Flength_less, Slength_less, 2, 2, 0, > > I went ahead and pushed this (along with > and =, which seems like a > natural set). Like Richard, I think that not all of the functions are needed, because some can be trivially expressed by others. I thought we always implemented only the minimum required set. For example, we have version<, but not version>=; we have string-collate-lessp, but not string-collate-greaterp. Why do we need to stray from that principle in this case? And if we must have all of those functions, why cannot they share most of their code? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 18:15 ` Eli Zaretskii @ 2020-12-27 22:03 ` Lars Ingebrigtsen 2020-12-27 22:30 ` Tomas Hlavaty 2020-12-27 23:41 ` Drew Adams 0 siblings, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 22:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: monnier, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> I went ahead and pushed this (along with > and =, which seems like a >> natural set). > > Like Richard, I think that not all of the functions are needed, > because some can be trivially expressed by others. Yes, I think <, = and > are the ones that are nice to have. The /=, <= and >= are trivial to express via the others, so I didn't go there. > I thought we always implemented only the minimum required set. For > example, we have version<, but not version>=; we have > string-collate-lessp, but not string-collate-greaterp. I'm generally in favour of >, but these two are almost only used for sorting, which makes the other forms superfluous. (I know that there are people who insist that < should be the only operator, and they write code like (if (< 50 tom's-age) ...), and in my experience that leads to people not being able to read the resulting code.) > Why do we need to stray from that principle in this case? And if we > must have all of those functions, why cannot they share most of their > code? People say (if (< (length ...))) and (if (> (length... ))) (and =) all over the place -- it's not used as a sorting predicate, so having the these three seemed like the minimal set. And I don't quite follow you -- they do share most of their code? I think you could push a few more lines into the shared function, but I think the resulting code would be pretty obscure. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:03 ` Lars Ingebrigtsen @ 2020-12-27 22:30 ` Tomas Hlavaty 2020-12-27 22:49 ` Alfred M. Szmidt 2020-12-27 23:41 ` Drew Adams 1 sibling, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 22:30 UTC (permalink / raw) To: Lars Ingebrigtsen, Eli Zaretskii; +Cc: monnier, emacs-devel On Sun 27 Dec 2020 at 23:03, Lars Ingebrigtsen <larsi@gnus.org> wrote: > Eli Zaretskii <eliz@gnu.org> writes: >> Like Richard, I think that not all of the functions are needed, >> because some can be trivially expressed by others. > Yes, I think <, = and > are the ones that are nice to have. The /=, > <= and >= are trivial to express via the others, so I didn't go there. >> Why do we need to stray from that principle in this case? And if we >> must have all of those functions > People say (if (< (length ...))) and (if (> (length... ))) (and =) all > over the place -- it's not used as a sorting predicate, so having the > these three seemed like the minimal set. It is unlikely that people stop counting all elements of lists. However, if somebody writes such code, it is almost trivial to fix it with search and replace: "(= (length" -> "(length=" "(< (length" -> "(length<" "(> (length" -> "(length>" "(/= (length" -> "(length/=" "(<= (length" -> "(length<=" "(>= (length" -> "(length>=" (plus extra closing paren) The "symmetry" (or exhaustiveness?) here is to assist with easily fixing bad code with minimum changes, i.e. one does not need to think how to express it using different code. Example: (<= (length ...) ...) -> (not (length> ...)) Visually different. (I hope I got it right:-) versus: (<= (length ...) ...) -> (length<= ...) Visually same. So once in a while, it will be possible to search and replace those bad cases without any mental overhead, just with visual review. In any case, thanks for taking initiative and improving this! ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:30 ` Tomas Hlavaty @ 2020-12-27 22:49 ` Alfred M. Szmidt 2020-12-27 22:57 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-27 22:49 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, eliz, monnier However, if somebody writes such code, it is almost trivial to fix it with search and replace: "(= (length" -> "(length=" "(< (length" -> "(length<" "(> (length" -> "(length>" "(/= (length" -> "(length/=" "(<= (length" -> "(length<=" "(>= (length" -> "(length>=" (plus extra closing paren) Users will assume that these length>= hacks will make their code magically better, when they just hide a problematic form -- doing a possibly complicated operation inside a predicate call. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:49 ` Alfred M. Szmidt @ 2020-12-27 22:57 ` Tomas Hlavaty 2020-12-27 23:05 ` lengths and other stuff Daniel Brooks 2020-12-27 23:34 ` Internationalize Emacs's messages (swahili) Alfred M. Szmidt 0 siblings, 2 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 22:57 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: larsi, emacs-devel, eliz, monnier On Sun 27 Dec 2020 at 17:49, "Alfred M. Szmidt" <ams@gnu.org> wrote: > However, if somebody writes such code, it is almost trivial to fix > it with search and replace: > > "(= (length" -> "(length=" > "(< (length" -> "(length<" > "(> (length" -> "(length>" > "(/= (length" -> "(length/=" > "(<= (length" -> "(length<=" > "(>= (length" -> "(length>=" > > (plus extra closing paren) > > Users will assume that these length>= hacks will make their code > magically better, when they just hide a problematic form -- doing a > possibly complicated operation inside a predicate call. It will make their code better. I do not see any magic there, it is pretty simple and logical. Do you have some other solution on mind? ^ permalink raw reply [flat|nested] 384+ messages in thread
* lengths and other stuff 2020-12-27 22:57 ` Tomas Hlavaty @ 2020-12-27 23:05 ` Daniel Brooks 2020-12-27 23:09 ` Lars Ingebrigtsen 2020-12-27 23:25 ` Tomas Hlavaty 2020-12-27 23:34 ` Internationalize Emacs's messages (swahili) Alfred M. Szmidt 1 sibling, 2 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 23:05 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: Alfred M. Szmidt, eliz, larsi, monnier, emacs-devel Tomas Hlavaty <tom@logand.com> writes: > On Sun 27 Dec 2020 at 17:49, "Alfred M. Szmidt" <ams@gnu.org> wrote: >> However, if somebody writes such code, it is almost trivial to fix >> it with search and replace: >> >> "(= (length" -> "(length=" >> "(< (length" -> "(length<" >> "(> (length" -> "(length>" >> "(/= (length" -> "(length/=" >> "(<= (length" -> "(length<=" >> "(>= (length" -> "(length>=" >> >> (plus extra closing paren) >> >> Users will assume that these length>= hacks will make their code >> magically better, when they just hide a problematic form -- doing a >> possibly complicated operation inside a predicate call. > > It will make their code better. I do not see any magic there, it is > pretty simple and logical. > > Do you have some other solution on mind? Some of them can no doubt be replaced by multiple-value-bind and other such things. This one from ido.el:1518, for example: (if (and (listp (car l)) (> (length (car l)) 2) (let ((dir (car (car l))) (time (car (cdr (car l)))) (files (cdr (cdr (car l))))) could be (multiple-value-bind (dir time files) (car l) …). But those kinds of improvements take a lot more thought about each occurrence. Incidentally, I find it hard to believe that someone typed all of that out without at least using cadar and cddar. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:05 ` lengths and other stuff Daniel Brooks @ 2020-12-27 23:09 ` Lars Ingebrigtsen 2020-12-27 23:16 ` Daniel Brooks 2020-12-27 23:25 ` Tomas Hlavaty 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 23:09 UTC (permalink / raw) To: Daniel Brooks; +Cc: Alfred M. Szmidt, monnier, eliz, Tomas Hlavaty, emacs-devel Daniel Brooks <db48x@db48x.net> writes: > Incidentally, I find it hard to believe that someone typed all of that > out without at least using cadar and cddar. It's very old code... didn't `cadar' and friends get added kinda late? (I.e., 90s?) I vaguely seem to remember them living in cl.el for a while until people were convinced to hoist them to Emacs proper. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:09 ` Lars Ingebrigtsen @ 2020-12-27 23:16 ` Daniel Brooks 2020-12-27 23:21 ` Lars Ingebrigtsen 2020-12-27 23:23 ` Stefan Monnier 0 siblings, 2 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 23:16 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Alfred M. Szmidt, eliz, monnier, Tomas Hlavaty, emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > Daniel Brooks <db48x@db48x.net> writes: > >> Incidentally, I find it hard to believe that someone typed all of that >> out without at least using cadar and cddar. > > It's very old code... didn't `cadar' and friends get added kinda late? > (I.e., 90s?) I vaguely seem to remember them living in cl.el for a > while until people were convinced to hoist them to Emacs proper. A quick check does show that they were moved to subr.el from cl-lib.el just three years ago. Nearly four now. Also that they were called cl-cadar and so on. Weird. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:16 ` Daniel Brooks @ 2020-12-27 23:21 ` Lars Ingebrigtsen 2020-12-27 23:23 ` Daniel Brooks 2020-12-27 23:24 ` Stefan Monnier 2020-12-27 23:23 ` Stefan Monnier 1 sibling, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 23:21 UTC (permalink / raw) To: Daniel Brooks; +Cc: Alfred M. Szmidt, eliz, monnier, Tomas Hlavaty, emacs-devel Daniel Brooks <db48x@db48x.net> writes: > A quick check does show that they were moved to subr.el from cl-lib.el > just three years ago. Nearly four now. Also that they were called > cl-cadar and so on. Weird. Oh, right. But before the cl->cl-lib makeover, we used to sprinkle all (FSVO) files with (eval-when-compile (require 'cl-macs)) and `cadar' and friends were ... macros? Hm. Well, I know I've used `cadar' before 2017 somehow. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:21 ` Lars Ingebrigtsen @ 2020-12-27 23:23 ` Daniel Brooks 2020-12-27 23:24 ` Stefan Monnier 1 sibling, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 23:23 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Alfred M. Szmidt, emacs-devel, eliz, Tomas Hlavaty, monnier Lars Ingebrigtsen <larsi@gnus.org> writes: > and `cadar' and friends were ... macros? Hm. Well, I know I've used > `cadar' before 2017 somehow. :-) That does seem likely! db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:21 ` Lars Ingebrigtsen 2020-12-27 23:23 ` Daniel Brooks @ 2020-12-27 23:24 ` Stefan Monnier 1 sibling, 0 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-27 23:24 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Daniel Brooks, Alfred M. Szmidt, eliz, Tomas Hlavaty, emacs-devel > (eval-when-compile (require 'cl-macs)) > and `cadar' and friends were ... macros? No, they were functions, but inlined at compile time (just as is the case now). Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:16 ` Daniel Brooks 2020-12-27 23:21 ` Lars Ingebrigtsen @ 2020-12-27 23:23 ` Stefan Monnier 2020-12-27 23:32 ` Daniel Brooks 1 sibling, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2020-12-27 23:23 UTC (permalink / raw) To: Daniel Brooks Cc: Lars Ingebrigtsen, eliz, Alfred M. Szmidt, Tomas Hlavaty, emacs-devel > A quick check does show that they were moved to subr.el from cl-lib.el > just three years ago. Nearly four now. Also that they were called > cl-cadar and so on. Weird. That's because they suck. They feel to me like programming in assembler. You're usually much better off using `nth` or `pcase` or `cl-destructuring-bind`, ... Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:23 ` Stefan Monnier @ 2020-12-27 23:32 ` Daniel Brooks 2020-12-27 23:46 ` Stefan Monnier 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 23:32 UTC (permalink / raw) To: Stefan Monnier Cc: Lars Ingebrigtsen, emacs-devel, eliz, Tomas Hlavaty, Alfred M. Szmidt Stefan Monnier <monnier@iro.umontreal.ca> writes: >> A quick check does show that they were moved to subr.el from cl-lib.el >> just three years ago. Nearly four now. Also that they were called >> cl-cadar and so on. Weird. > > That's because they suck. They feel to me like programming in > assembler. You're usually much better off using `nth` or `pcase` or > `cl-destructuring-bind`, ... Definitely. But a common enough pattern is to use list structure as if it were a struct, with constructors and accessor methods that hide the implementation details: (defun make-complex (x y) (cons 'complex (cons x y)) (defun complex-x (c) (and (eq 'complex (car c)) (cadr c))) (defun complex-y (c) (and (eq 'complex (car c)) (cddr c))) That is, the c*r methods are good and useful predefined accessors, but you give them appropriate names so that you're not using them directly. That way you don't make your users remember how to use these generic accessors with your custom data type. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:32 ` Daniel Brooks @ 2020-12-27 23:46 ` Stefan Monnier 0 siblings, 0 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-27 23:46 UTC (permalink / raw) To: Daniel Brooks Cc: Lars Ingebrigtsen, emacs-devel, eliz, Tomas Hlavaty, Alfred M. Szmidt > Definitely. But a common enough pattern is to use list structure as if > it were a struct, with constructors and accessor methods that hide the > implementation details: And these are advantageously replaced by `cl-defstruct`. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:05 ` lengths and other stuff Daniel Brooks 2020-12-27 23:09 ` Lars Ingebrigtsen @ 2020-12-27 23:25 ` Tomas Hlavaty 2020-12-27 23:35 ` Daniel Brooks 1 sibling, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 23:25 UTC (permalink / raw) To: Daniel Brooks; +Cc: Alfred M. Szmidt, eliz, larsi, monnier, emacs-devel On Sun 27 Dec 2020 at 15:05, Daniel Brooks <db48x@db48x.net> wrote: > Some of them can no doubt be replaced by multiple-value-bind and other > such things. This one from ido.el:1518, for example: > > (if (and (listp (car l)) > (> (length (car l)) 2) > (let ((dir (car (car l))) > (time (car (cdr (car l)))) > (files (cdr (cdr (car l))))) > > could be (multiple-value-bind (dir time files) (car l) …). > > But those kinds of improvements take a lot more thought about each > occurrence. Very good. Now the other ~1700 cases. I think you introduced two bugs: 1) missing &rest, it should be: (multiple-value-bind (dir time &rest files) (car l) …) 2) multiple-value-bind throws an error if it does not fit. The original code does not seem to throw an error. But all this excercise for single case took mental effort, got it wrong and the change would need to be carefully undertaken. The point of the predicates is to avoid such rewrites and improve the code simply by search, replace and visual substitution without thinking hard and introducing bugs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:25 ` Tomas Hlavaty @ 2020-12-27 23:35 ` Daniel Brooks 2020-12-27 23:47 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 23:35 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, Alfred M. Szmidt, emacs-devel, eliz, monnier Tomas Hlavaty <tom@logand.com> writes: > On Sun 27 Dec 2020 at 15:05, Daniel Brooks <db48x@db48x.net> wrote: >> Some of them can no doubt be replaced by multiple-value-bind and other >> such things. This one from ido.el:1518, for example: >> >> (if (and (listp (car l)) >> (> (length (car l)) 2) >> (let ((dir (car (car l))) >> (time (car (cdr (car l)))) >> (files (cdr (cdr (car l))))) >> >> could be (multiple-value-bind (dir time files) (car l) …). >> >> But those kinds of improvements take a lot more thought about each >> occurrence. > > Very good. Now the other ~1700 cases. > > I think you introduced two bugs: I'm surprised that it was more than one! db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:35 ` Daniel Brooks @ 2020-12-27 23:47 ` Tomas Hlavaty 2020-12-28 0:00 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 23:47 UTC (permalink / raw) To: Daniel Brooks; +Cc: larsi, Alfred M. Szmidt, emacs-devel, eliz, monnier On Sun 27 Dec 2020 at 15:35, Daniel Brooks <db48x@db48x.net> wrote: > Tomas Hlavaty <tom@logand.com> writes: >> I think you introduced two bugs: > > I'm surprised that it was more than one! Not sure what do you mean. The intention of the proposed predicates is to improve code easily and not introduce any bugs. You just showed that your proposal cannot work. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and other stuff 2020-12-27 23:47 ` Tomas Hlavaty @ 2020-12-28 0:00 ` Daniel Brooks 0 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-28 0:00 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, eliz, Alfred M. Szmidt, monnier, emacs-devel Tomas Hlavaty <tom@logand.com> writes: > On Sun 27 Dec 2020 at 15:35, Daniel Brooks <db48x@db48x.net> wrote: >> Tomas Hlavaty <tom@logand.com> writes: >>> I think you introduced two bugs: >> >> I'm surprised that it was more than one! > > Not sure what do you mean. The intention of the proposed predicates is > to improve code easily and not introduce any bugs. You just showed that > your proposal cannot work. I was agreeing with both you and Alfred. His point seemed to be that length> is a bad idea because there are better alternatives. There are often better alternatives but, as I pointed out, using them takes a lot more thought. I didn't expect my use of multiple-value-bind to be perfect, since I spent only a minute looking at the code and hadn't tested it. I didn't expect anyone to write back five minutes later to point out not one but two problems with it though! I think length> and family are a good idea (though I would have gone with the longer-than-p suggestion instead), but that it's also a good idea to use alternatives when possible. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:57 ` Tomas Hlavaty 2020-12-27 23:05 ` lengths and other stuff Daniel Brooks @ 2020-12-27 23:34 ` Alfred M. Szmidt 2020-12-28 0:00 ` Tomas Hlavaty 1 sibling, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-27 23:34 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, eliz, monnier > However, if somebody writes such code, it is almost trivial to fix > it with search and replace: > > "(= (length" -> "(length=" > "(< (length" -> "(length<" > "(> (length" -> "(length>" > "(/= (length" -> "(length/=" > "(<= (length" -> "(length<=" > "(>= (length" -> "(length>=" > > (plus extra closing paren) > > Users will assume that these length>= hacks will make their code > magically better, when they just hide a problematic form -- doing a > possibly complicated operation inside a predicate call. It will make their code better. I do not see any magic there, it is pretty simple and logical. I don't see how. The pretense here is optimization, the user has to be active no matter what even to discover these functions. The two functions are advertised as equal as well, so there is no possible way for the user to know which one to use when, and it might be suprising that the behaviour (in run time) is different. If the two forms are exactly equivalent, then the bytecompiler should be able to do the work instead of the user. And is it just me, but I'd expect that length>, etc takes two or more sequences and returns a boolean if one of sequence is larger/smaller/equal/... ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 23:34 ` Internationalize Emacs's messages (swahili) Alfred M. Szmidt @ 2020-12-28 0:00 ` Tomas Hlavaty 2020-12-28 0:16 ` Alfred M. Szmidt 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-28 0:00 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: larsi, emacs-devel, eliz, monnier On Sun 27 Dec 2020 at 18:34, "Alfred M. Szmidt" <ams@gnu.org> wrote: > > Users will assume that these length>= hacks will make their code > > magically better, when they just hide a problematic form -- doing > > a possibly complicated operation inside a predicate call. > > It will make their code better. I do not see any magic there, it > is pretty simple and logical. > > I don't see how. By not counting all the elements of the list. By counting only the minimum necessary. It is fascinating how many people with strong opinions do not understand the problem with (> (length x) 2) > The pretense here is optimization, the user has to be active no matter > what even to discover these functions. And? And if they fail at that, someone can once in a while fix that easily by search, replace and visual review without introducing bugs. > The two functions are advertised as equal as well, so there is no > possible way for the user to know which one to use when, and it might > be suprising that the behaviour (in run time) is different. Which two functions are advertised as equal? Where is confusion and surprise? > If the two forms are exactly equivalent, then the bytecompiler should > be able to do the work instead of the user. > > And is it just me, but I'd expect that length>, etc takes two or more > sequences and returns a boolean if one of sequence is > larger/smaller/equal/... Would not that be better called sequence>? What does "sequence is larger/smaller/equal" mean exactly? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 0:00 ` Tomas Hlavaty @ 2020-12-28 0:16 ` Alfred M. Szmidt 2020-12-28 0:33 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-28 0:16 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, eliz, monnier It is fascinating how many people with strong opinions do not understand the problem with (> (length x) 2) You are assuming that X is always a list, there are far more types than that in Emacs Lisp. Replacing every instance of (PREDIATE (length ...)) with (lengthPREDICATE ...) doesn't really do anything at all for the cases where we are not working with a list -- which you cannot possibly know just from a grep of the code. And if they fail at that, someone can once in a while fix that easily by search, replace and visual review without introducing bugs. But nothing is fixed by such a change, thats the whole point, if you are working with strings you are not fixing anything! You are introducing a gratious change that does absolutely nothing. > The two functions are advertised as equal as well, so there is no > possible way for the user to know which one to use when, and it might > be suprising that the behaviour (in run time) is different. Which two functions are advertised as equal? Should have written forms, length> and (> (length ...), and the other variants. > And is it just me, but I'd expect that length>, etc takes two or more > sequences and returns a boolean if one of sequence is > larger/smaller/equal/... Would not that be better called sequence>? What does "sequence is larger/smaller/equal" mean exactly? (> 6 5 4 3 2 1) --> t (length> '(1 2 3 4) '(1 2 3) '(1 2) '(1)) --> t ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 0:16 ` Alfred M. Szmidt @ 2020-12-28 0:33 ` Tomas Hlavaty 2020-12-28 0:48 ` Lars Ingebrigtsen 2020-12-28 0:52 ` Alfred M. Szmidt 0 siblings, 2 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-28 0:33 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: larsi, emacs-devel, eliz, monnier On Sun 27 Dec 2020 at 19:16, "Alfred M. Szmidt" <ams@gnu.org> wrote: > It is fascinating how many people with strong opinions do not > understand the problem with > > (> (length x) 2) > > You are assuming that X is always a list, I am not. > there are far more types than that in Emacs Lisp. Replacing every > instance of (PREDIATE (length ...)) with (lengthPREDICATE ...) doesn't > really do anything at all for the cases where we are not working with > a list -- which you cannot possibly know just from a grep of the code. I do not need to know. I know that after the change, the good cases will stay good and the bad cases will be improved. > And if they fail at that, someone can once in a while fix that > easily by search, replace and visual review without introducing > bugs. > > But nothing is fixed by such a change, thats the whole point, if you > are working with strings you are not fixing anything! You are > introducing a gratious change that does absolutely nothing. It is the first step towards improvement. > > The two functions are advertised as equal as well, so there is no > > possible way for the user to know which one to use when, and it > > might be suprising that the behaviour (in run time) is different. > > Which two functions are advertised as equal? > > Should have written forms, length> and (> (length ...), and the other > variants. They compute the same thing differently. Like these two forms compute the same thing differently: (progn 1) vs (progn (sleep 10) 1) > > And is it just me, but I'd expect that length>, etc takes two or > > more sequences and returns a boolean if one of sequence is > > larger/smaller/equal/... > > Would not that be better called sequence>? > > What does "sequence is larger/smaller/equal" mean exactly? > > (> 6 5 4 3 2 1) --> t > (length> '(1 2 3 4) '(1 2 3) '(1 2) '(1)) --> t or even (I already mentioned that earlier): (length> 5 '(1 2 3 4) '(1 2 3) 2.33 '(1 2) '(1) -42) --> t But this is not so important. A simple two arg function would help to fix most or all of the bad cases. Ultimately, the person who implements this will decide. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 0:33 ` Tomas Hlavaty @ 2020-12-28 0:48 ` Lars Ingebrigtsen 2020-12-28 5:54 ` Drew Adams 2020-12-28 0:52 ` Alfred M. Szmidt 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-28 0:48 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: Alfred M. Szmidt, emacs-devel, eliz, monnier Tomas Hlavaty <tom@logand.com> writes: > Ultimately, the person who implements this will decide. It's already implemented and on the trunk. :-) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2020-12-28 0:48 ` Lars Ingebrigtsen @ 2020-12-28 5:54 ` Drew Adams 0 siblings, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-28 5:54 UTC (permalink / raw) To: Lars Ingebrigtsen, Tomas Hlavaty Cc: Alfred M. Szmidt, eliz, monnier, emacs-devel > It's already implemented and on the trunk. :-) If it's like the C code posted here earlier then it won't work for dotted or circular lists. It'll do something, but not what one might hope. I addressed this (in Lisp) in my previous mail. If you insist on implementing this in C, at least please consider doing something similar, to handle these cases. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 0:33 ` Tomas Hlavaty 2020-12-28 0:48 ` Lars Ingebrigtsen @ 2020-12-28 0:52 ` Alfred M. Szmidt 1 sibling, 0 replies; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-28 0:52 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, eliz, monnier I know that after the change, the good cases will stay good and the bad cases will be improved. So you are suggesting that one should change code just to change code? ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2020-12-27 22:03 ` Lars Ingebrigtsen 2020-12-27 22:30 ` Tomas Hlavaty @ 2020-12-27 23:41 ` Drew Adams 1 sibling, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-27 23:41 UTC (permalink / raw) To: Lars Ingebrigtsen, Eli Zaretskii; +Cc: monnier, emacs-devel > Yes, I think <, = and > are the ones that are nice to have. The /=, <= > and >= are trivial to express via the others, so I didn't go there. I agree with Stefan. If you insist on defining such predicates, please just do it in Lisp. (defun length> (xs n) "Return non-nil if length of sequence XS is greater than N." (if (consp xs) (nthcdr n xs) (> (length xs) n))) (defun length< (xs n) " Return non-nil if length of sequence XS is less than N." (if (consp xs) (null (nthcdr (1- n) xs)) (< (length xs) n))) (defun length= (xs n) " Return non-nil if length of sequence XS is N." (if (consp xs) (let ((ys (nthcdr (1- n) xs))) (and ys (null (cdr ys)))) (= (length xs) n))) or similar... ___ Of course, those can give values for some inputs where the list is dotted, and raise errors for others. But so can the C implementation you showed for `length<', IIUC. And testing for a `proper-list-p' anyway means traversing the full list. This is another reason I'm not crazy about Emacs adding and promoting such predicates. Better for users to try to DTRT in any particular case. Promoting these is likely to encourage blind use. At a minimum, the doc should say that if you want to be sure a returned value makes sense then be sure the list arg is a proper list. ___ An alternative (better, IMO), is to have such predicates always return a nil or non-nil value. The following definitions do that. For these definitions a dotted list acts just like the same list without the dot, i.e., an atomic last cdr Z is treated like (Z). So the dotted list (a b . c) behaves for these predicates just like (a b c). And they apparently work fine for circular lists also. (defun length> (xs n) "Return non-nil if length of sequence XS is greater than N." (if (atom xs) (> (length xs) n) (condition-case nil (nthcdr n xs) (error nil)))) (defun length< (xs n) "Return non-nil if length of sequence XS is less than N." (if (atom xs) (< (length xs) n) (condition-case nil (null (nthcdr (1- n) xs)) (error t)))) (defun length= (xs n) "Return non-nil if length of sequence XS is N." (if (atom xs) (= (length xs) n) (condition-case nil (let ((ys (condition-case nil (nthcdr (1- n) xs) (error nil)))) (and ys (null (cdr ys)))) (error t)))) ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2020-12-27 8:01 ` Lars Ingebrigtsen 2020-12-27 18:15 ` Eli Zaretskii @ 2021-01-01 5:55 ` Drew Adams 2021-01-01 15:03 ` Tomas Hlavaty 1 sibling, 1 reply; 384+ messages in thread From: Drew Adams @ 2021-01-01 5:55 UTC (permalink / raw) To: Lars Ingebrigtsen, Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel > > +DEFUN ("length<", Flength_less, Slength_less, 2, 2, 0, > > I went ahead and pushed this (along with > and =, which seems like a > natural set). Is this the set of C-code definitions you implemented? https://repo.or.cz/emacs.git/blobdiff/714ca849ba658405ddde698cdc5836c4c9b289ca..0f790464d547dd57a857d88dab309b286067ac45:/src/fns.c Let me say at the outset that I'm no expert in C code. But it looks to me like this might have the problems I spoke of wrt Lisp implementations that don't handle dotted or circular lists correctly. Is that the case? For circular lists, it looks like you just raise an error systematically. To me, that's not as good as it should be. The Lisp definitions I provided work fine for circular lists - their length is greater than any numeric value, through ` most-positive-fixnum'. (The function `nthcdr' is well-defined and performant for a circular-list argument.) For dotted lists, I cited the fact that simple Lisp definitions of the `length(<|=|>)' predicates can raise an error for some inputs and for other inputs return the same length as if the last cdr were wrapped in `list'. IOW, the behavior is inconsistent: no consistent notification (e.g. error) that the list is dotted; silent answers as if the list were not dotted, in ~half the cases. Does your C code have these problems also? The Lisp definitions I posted don't have these problems. They handle circular and dotted lists fine. For dotted lists, the length returned is always the same as what it would be for a proper list equal to the dotted list but with the last cdr wrapped in `list'. I imagine that the same approach I used in Lisp could be used in C, with no loss in performance wrt the code you have. But again, I'm no expert, especially in C. In case you missed the Lisp definitions I'm talking about, they're at the end of this message: https://lists.gnu.org/archive/html/emacs-devel/2020-12/msg01850.html ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2021-01-01 5:55 ` Drew Adams @ 2021-01-01 15:03 ` Tomas Hlavaty 2021-01-01 19:09 ` Drew Adams 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2021-01-01 15:03 UTC (permalink / raw) To: Drew Adams, Lars Ingebrigtsen, Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel On Thu 31 Dec 2020 at 21:55, Drew Adams <drew.adams@oracle.com> wrote: > The Lisp definitions I posted don't have these problems. They handle > circular and dotted lists fine. For dotted lists, the length returned > is always the same as what it would be for a proper list equal to the > dotted list but with the last cdr wrapped in `list'. The predicates are trying to fix cases where people use length. (length '(1 2 . 3)) => Debugger entered--Lisp error: (wrong-type-argument listp 3) ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2021-01-01 15:03 ` Tomas Hlavaty @ 2021-01-01 19:09 ` Drew Adams 2021-01-01 22:08 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2021-01-01 19:09 UTC (permalink / raw) To: Tomas Hlavaty, Lars Ingebrigtsen, Stefan Monnier Cc: Eli Zaretskii, emacs-devel > > The Lisp definitions I posted don't have these problems. They handle > > circular and dotted lists fine. For dotted lists, the length returned > > is always the same as what it would be for a proper list equal to the > > dotted list but with the last cdr wrapped in `list'. > > The predicates are trying to fix cases where people use length. > > (length '(1 2 . 3)) > => > Debugger entered--Lisp error: (wrong-type-argument listp 3) Yes. And? If we're defining predicates to check whether the length of a list is <, =, or > some value, those predicates should do something useful, or at least something one might expect, for non-proper lists as well, no? If you check `length<' for a dotted list, whether on purpose or not (e.g., knowing, not knowing or not caring whether the list is proper), would you really expect that a true/false value would be returned and sometimes an error would be raised? I think it's more useful for a reasonable value to always be returned for that. Or one could argue that an error should always be raised for that. But sometimes true/false and sometimes raise an error? Why would we choose a design like that? ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2021-01-01 19:09 ` Drew Adams @ 2021-01-01 22:08 ` Tomas Hlavaty 2021-01-01 22:55 ` Drew Adams 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2021-01-01 22:08 UTC (permalink / raw) To: Drew Adams, Lars Ingebrigtsen, Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel On Fri 01 Jan 2021 at 11:09, Drew Adams <drew.adams@oracle.com> wrote: > If we're defining predicates to check whether the length of a list is > <, =, or > some value, those predicates should do something useful, or > at least something one might expect, for non-proper lists as well, no? What exactly means "something one might expect"? I expect the predicates to work on proper list and it should count the number of cons cells in the list. I do not expect the predicates to count the last cdr differently depending on its value. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2021-01-01 22:08 ` Tomas Hlavaty @ 2021-01-01 22:55 ` Drew Adams 2021-01-01 23:32 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2021-01-01 22:55 UTC (permalink / raw) To: Tomas Hlavaty, Lars Ingebrigtsen, Stefan Monnier Cc: Eli Zaretskii, emacs-devel > > If we're defining predicates to check whether the length of a list is > > <, =, or > some value, those predicates should do something useful, or > > at least something one might expect, for non-proper lists as well, no? > > What exactly means "something one might expect"? > > I expect the predicates to work on proper list and > it should count the number of cons cells in the list. > > I do not expect the predicates to count the last cdr differently > depending on its value. The question iss not what the behavior should be for proper lists. The question is what it should be for dotted lists (and circular lists). What is your reasonable expectation for dotted lists? I'd suggest these are two reasonable expectations for a dotted-list length comparison against a number: 1. Always raise an error. 2. Never raise an error. For #2, one reasonable expectation is, I think, that the value returned always be true or false, and exactly mirror the case for a proper list whose last element is the last cdr of the dotted list. That has a good deal of consistency. Non-nil cdrs are simply counted (irrespective of their non-nil values). Nothing more happens. (And the same can be said for a proper list: the non-nil cdrs are counted - nothing more.) "List" includes both proper and dotted lists. Because a list can have a non-nil last cdr, it's non-nil cdrs that I'd expect should be counted, not cons cells. But that's me. To me, that behavior for dotted lists would at least be of some _use_. Always raising an error for a dotted list is less useful. But even if for some reason (what reason?) you think #2 is _more_ useful, we don't even have #2. The question really is, What behavior do you want for a dotted list? So far, the behavior is to sometimes (1) raise an error and sometimes (2) return a true or false value. And there's little rhyme or reason for when it does one or the other. These use my Lisp definitions, which I guess do what the current C code does for dotted lists: (length> '(1 . 2) -1) ; true (length> '(1 . 2) 0) ; true (length> '(1 . 2) 1) ; true (length> '(1 . 2) 2) ; ---ERROR--- (length> '(1 . 2) 42) ; ---ERROR--- (length< '(1 . 2) -1) ; false (length< '(1 . 2) 0) ; false (length< '(1 . 2) 1) ; false (length< '(1 . 2) 2) ; false (length< '(1 . 2) 24) ; ---ERROR--- (length= '(1 . 2) -1) ; false (length= '(1 . 2) 0) ; false (length= '(1 . 2) 1) ; false (length= '(1 . 2) 2) ; ---ERROR--- (length= '(1 . 2) 42) ; ---ERROR--- Is that really what you expect/want? Not I. I prefer that those ERROR cases return false for >, and true for = and <. Which is what I implemented. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2021-01-01 22:55 ` Drew Adams @ 2021-01-01 23:32 ` Tomas Hlavaty 2021-01-02 0:25 ` Drew Adams 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2021-01-01 23:32 UTC (permalink / raw) To: Drew Adams, Lars Ingebrigtsen, Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel On Fri 01 Jan 2021 at 14:55, Drew Adams <drew.adams@oracle.com> wrote: > The question is what it should be for dotted lists (and circular > lists). What is your reasonable expectation for dotted lists? I do not have an expectation for dotted lists except it should not traverse the whole list in order to find out, if it is dotted or not. That would defeat the whole idea. It should do the minimum work necessary to determine the predicate value and not bother with determining if the list is dotted or circular. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Internationalize Emacs's messages (swahili) 2021-01-01 23:32 ` Tomas Hlavaty @ 2021-01-02 0:25 ` Drew Adams 0 siblings, 0 replies; 384+ messages in thread From: Drew Adams @ 2021-01-02 0:25 UTC (permalink / raw) To: Tomas Hlavaty, Lars Ingebrigtsen, Stefan Monnier Cc: Eli Zaretskii, emacs-devel > > The question is what it should be for dotted > > lists (and circular lists). What is your > > reasonable expectation for dotted lists? > > I do not have an expectation for dotted lists except it should not > traverse the whole list in order to find out, if it is dotted or not. > That would defeat the whole idea. It should do the minimum work > necessary to determine the predicate value and not bother with > determining if the list is dotted or circular. Nothing in what I've written just traverses the whole list. The point of this thread is to have predicates that check whether the length of a list (or sequence) is < = or > some number WITHOUT always having to traverse it entirely to get the answer. [Of course, if the answer to (length= foo 42) is YES then `foo' will be visited to its end, in some way (e.g. `nthcdr') or other.] All I've suggested is that instead of throwing an error we return the obvious answer for each case. That's no more work than actually throwing the error, AFAIK. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 0:34 ` Lars Ingebrigtsen 2020-12-27 8:01 ` Lars Ingebrigtsen @ 2020-12-27 12:56 ` Andreas Schwab 2020-12-27 22:05 ` Lars Ingebrigtsen 1 sibling, 1 reply; 384+ messages in thread From: Andreas Schwab @ 2020-12-27 12:56 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Dez 27 2020, Lars Ingebrigtsen wrote: > Lars Ingebrigtsen <larsi@gnus.org> writes: > >> I whipped one up quickly. > > With this totally realistic benchmark, this is what we have today: > > (let ((list (make-list 10000 nil))) > (benchmark-run 1000000 (< (length list) 2))) > => (10.826215101 0 0.0) > > The same, with length<: > > (let ((list (make-list 10000 nil))) > (benchmark-run 1000000 (length< list 2))) > => (0.05590014099999999 0 0.0) > > If we avoid tortoise/hare for small LENGTHs, then it's about 20% faster > than that again (if we're doing (length< list 200)). Why do you need to reimplement nthcdr, badly? Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 12:56 ` Andreas Schwab @ 2020-12-27 22:05 ` Lars Ingebrigtsen 2020-12-27 22:16 ` Andreas Schwab ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 22:05 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: > Why do you need to reimplement nthcdr, badly? Because people say (if (= (length foo) 0)) all over the place, without caring whether foo is a list, a string, or whatever, and I want them to be able to say (if (length= foo 0)) with the same confidence and convenience. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:05 ` Lars Ingebrigtsen @ 2020-12-27 22:16 ` Andreas Schwab 2020-12-27 22:17 ` Lars Ingebrigtsen 2020-12-27 22:32 ` Alfred M. Szmidt 2020-12-28 7:32 ` Jean Louis 2 siblings, 1 reply; 384+ messages in thread From: Andreas Schwab @ 2020-12-27 22:16 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Dez 27 2020, Lars Ingebrigtsen wrote: > Because people say (if (= (length foo) 0)) all over the place, without > caring whether foo is a list, a string, or whatever, and I want them to > be able to say (if (length= foo 0)) with the same confidence and > convenience. So why do you need to reimplement nthcdr then, badly? Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:16 ` Andreas Schwab @ 2020-12-27 22:17 ` Lars Ingebrigtsen 2020-12-27 22:23 ` Andreas Schwab 0 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 22:17 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: > So why do you need to reimplement nthcdr then, badly? I don't know -- you tell me. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:17 ` Lars Ingebrigtsen @ 2020-12-27 22:23 ` Andreas Schwab 2020-12-27 22:29 ` Lars Ingebrigtsen 0 siblings, 1 reply; 384+ messages in thread From: Andreas Schwab @ 2020-12-27 22:23 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Dez 27 2020, Lars Ingebrigtsen wrote: > Andreas Schwab <schwab@linux-m68k.org> writes: > >> So why do you need to reimplement nthcdr then, badly? > > I don't know -- you tell me. How do I know what you were thinking? Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:23 ` Andreas Schwab @ 2020-12-27 22:29 ` Lars Ingebrigtsen 2020-12-27 22:30 ` Andreas Schwab 0 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 22:29 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: >>> So why do you need to reimplement nthcdr then, badly? >> >> I don't know -- you tell me. > > How do I know what you were thinking? I certainly don't know what you're thinking, but you enjoy being cryptic, so that's pretty usual. Or did you mean implement these functions by using Fnthcdr? Sure, that'd work. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:29 ` Lars Ingebrigtsen @ 2020-12-27 22:30 ` Andreas Schwab 2020-12-27 22:42 ` Lars Ingebrigtsen 2020-12-27 22:45 ` Tomas Hlavaty 0 siblings, 2 replies; 384+ messages in thread From: Andreas Schwab @ 2020-12-27 22:30 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Dez 27 2020, Lars Ingebrigtsen wrote: > Or did you mean implement these functions by using Fnthcdr? Sure, > that'd work. Of course, it will work. There is absolutely no need to reimplement it, badly. Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:30 ` Andreas Schwab @ 2020-12-27 22:42 ` Lars Ingebrigtsen 2020-12-27 23:00 ` Andreas Schwab 2020-12-27 22:45 ` Tomas Hlavaty 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 22:42 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: >> Or did you mean implement these functions by using Fnthcdr? Sure, >> that'd work. > > Of course, it will work. There is absolutely no need to reimplement it, > badly. If you'd said that in the first place, we could have saved ourselves three back-and-fourths. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:42 ` Lars Ingebrigtsen @ 2020-12-27 23:00 ` Andreas Schwab 2020-12-27 23:05 ` Lars Ingebrigtsen 0 siblings, 1 reply; 384+ messages in thread From: Andreas Schwab @ 2020-12-27 23:00 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Dez 27 2020, Lars Ingebrigtsen wrote: > If you'd said that in the first place, we could have saved ourselves > three back-and-fourths. <jwvft3smepa.fsf-monnier+emacs@gnu.org> Andreas. -- Andreas Schwab, schwab@linux-m68k.org GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510 2552 DF73 E780 A9DA AEC1 "And now for something completely different." ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 23:00 ` Andreas Schwab @ 2020-12-27 23:05 ` Lars Ingebrigtsen 0 siblings, 0 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 23:05 UTC (permalink / raw) To: Andreas Schwab; +Cc: Eli Zaretskii, Stefan Monnier, emacs-devel Andreas Schwab <schwab@linux-m68k.org> writes: > On Dez 27 2020, Lars Ingebrigtsen wrote: > >> If you'd said that in the first place, we could have saved ourselves >> three back-and-fourths. > > <jwvft3smepa.fsf-monnier+emacs@gnu.org> Oops; I guess I forgot about that. Mea culpa. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:30 ` Andreas Schwab 2020-12-27 22:42 ` Lars Ingebrigtsen @ 2020-12-27 22:45 ` Tomas Hlavaty 2020-12-27 22:49 ` Lars Ingebrigtsen 1 sibling, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 22:45 UTC (permalink / raw) To: Andreas Schwab, Lars Ingebrigtsen Cc: Eli Zaretskii, Stefan Monnier, emacs-devel On Sun 27 Dec 2020 at 23:30, Andreas Schwab <schwab@linux-m68k.org> wrote: > On Dez 27 2020, Lars Ingebrigtsen wrote: > >> Or did you mean implement these functions by using Fnthcdr? Sure, >> that'd work. > > Of course, it will work. There is absolutely no need to reimplement > it, badly. There are probably many ways to implement it. I can even imagine not adding any of those predicates and make the compiler more clever, maybe using some kind of compiler macro on the = < > /= <= => predicates. That way the existing code would not need to be changed at all. But this is not Common Lisp so it is probably not an option here. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:45 ` Tomas Hlavaty @ 2020-12-27 22:49 ` Lars Ingebrigtsen 0 siblings, 0 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-27 22:49 UTC (permalink / raw) To: emacs-devel In terms of nthcdr, length< would look like this, and would work for bignum values of LENGTH. And it's 15% slower for the benchmark I'm using: (let ((list (make-list 10000 nil))) (benchmark-run 100000000 (length< list 200))) DEFUN ("length<", Flength_less, Slength_less, 2, 2, 0, doc: /* Return non-nil if SEQUENCE is shorter than LENGTH. See `length' for allowed values of SEQUENCE and how elements are counted. */) (Lisp_Object sequence, Lisp_Object length) { if (CONSP (sequence)) return Fnull (Fnthcdr (Fsub1 (length), sequence)); else return CALLN(Flss, Flength (sequence), length); } -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:05 ` Lars Ingebrigtsen 2020-12-27 22:16 ` Andreas Schwab @ 2020-12-27 22:32 ` Alfred M. Szmidt 2020-12-27 22:52 ` Tomas Hlavaty 2020-12-28 7:32 ` Jean Louis 2 siblings, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-27 22:32 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: eliz, schwab, monnier, emacs-devel > Why do you need to reimplement nthcdr, badly? Because people say (if (= (length foo) 0)) all over the place, without caring whether foo is a list, a string, or whatever, and I want them to be able to say (if (length= foo 0)) with the same confidence and convenience. If the goal is to avoid writing bad code, then one should definitly not be introducing something like length= as a means to evade it, since both those forms are to be avoided. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:32 ` Alfred M. Szmidt @ 2020-12-27 22:52 ` Tomas Hlavaty 2020-12-27 23:17 ` Alfred M. Szmidt 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 22:52 UTC (permalink / raw) To: Alfred M. Szmidt, Lars Ingebrigtsen; +Cc: eliz, schwab, monnier, emacs-devel On Sun 27 Dec 2020 at 17:32, "Alfred M. Szmidt" <ams@gnu.org> wrote: > Because people say (if (= (length foo) 0)) all over the place, > without caring whether foo is a list, a string, or whatever, and I > want them to be able to say (if (length= foo 0)) with the same > confidence and convenience. > > If the goal is to avoid writing bad code, The goal is to avoid writing bad code and also to easily fix existing bad code. > then one should definitly not be introducing something like length= as > a means to evade it, since both those forms are to be avoided. Why? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:52 ` Tomas Hlavaty @ 2020-12-27 23:17 ` Alfred M. Szmidt 2020-12-27 23:40 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-27 23:17 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, schwab, eliz, monnier On Sun 27 Dec 2020 at 17:32, "Alfred M. Szmidt" <ams@gnu.org> wrote: > Because people say (if (= (length foo) 0)) all over the place, > without caring whether foo is a list, a string, or whatever, and I > want them to be able to say (if (length= foo 0)) with the same > confidence and convenience. > > If the goal is to avoid writing bad code, The goal is to avoid writing bad code and also to easily fix existing bad code. If (> (length foo) 10) is bad or not depends entierly on its context. > then one should definitly not be introducing something like length= as > a means to evade it, since both those forms are to be avoided. Why? If foo is a list, then you should use null. If foo is a string, you should use string-empty-p. If foo is some other, you should use that. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 23:17 ` Alfred M. Szmidt @ 2020-12-27 23:40 ` Tomas Hlavaty 2020-12-27 23:55 ` Alfred M. Szmidt 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 23:40 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: larsi, emacs-devel, schwab, eliz, monnier On Sun 27 Dec 2020 at 18:17, "Alfred M. Szmidt" <ams@gnu.org> wrote: > If (> (length foo) 10) is bad or not depends entierly on its context. (> (length foo) 10) uselessly counts (max 0 (- (length foo) 10)) items (+/- off by one error?) (length> foo 10) uselessly counts 0 items > > then one should definitly not be introducing something like > > length= as a means to evade it, since both those forms are to be > > avoided. > > Why? > > If foo is a list, then you should use null. If foo is a string, you > should use string-empty-p. If foo is some other, you should use that. I do not use anything. The bad code _is already_ in Emacs. For new code, suggestions are nice, but will likely not bear much fruits. Also (if (null foo) ...) is ugly, (if foo ...) is much nicer. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 23:40 ` Tomas Hlavaty @ 2020-12-27 23:55 ` Alfred M. Szmidt 2020-12-28 0:19 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-27 23:55 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, schwab, eliz, monnier > If (> (length foo) 10) is bad or not depends entierly on its context. (> (length foo) 10) uselessly counts (max 0 (- (length foo) 10)) items (+/- off by one error?) There are more things in life than lists ... length on a char-table or a string is constant. What is trying to be optimized here is not (PREDICATE (length ...)) but rather the implicit list-length, i.e. (PREDICATE (list-length ...)). The bad code _is already_ in Emacs. Then that code should be fixed, it will be needed to be fixed anyway -- a new function won't fix it magically. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 23:55 ` Alfred M. Szmidt @ 2020-12-28 0:19 ` Tomas Hlavaty 2020-12-28 0:52 ` Alfred M. Szmidt 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-28 0:19 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: larsi, emacs-devel, schwab, eliz, monnier On Sun 27 Dec 2020 at 18:55, "Alfred M. Szmidt" <ams@gnu.org> wrote: > (> (length foo) 10) > > uselessly counts (max 0 (- (length foo) 10)) items (+/- off by one > error?) > > There are more things in life than lists (elisp) Programming Tips • Use lists rather than vectors, except when there is a particular reason to use a vector. Lisp has more facilities for manipulating lists than for vectors, and working with lists is usually more convenient. Vectors are advantageous for tables that are substantial in size and are accessed in random order (not searched front to back), provided there is no need to insert or delete elements (only lists allow that). > ... length on a char-table or a string is constant. We are not trying to solve non-issue here. > The bad code _is already_ in Emacs. > > Then that code should be fixed, it will be needed to be fixed anyway > -- a new function won't fix it magically. Yes. But that code will not fix itself magically on its own. Somebody will have to do it. The new predicates address this need and will help the person to do it easily and without introducing bugs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 0:19 ` Tomas Hlavaty @ 2020-12-28 0:52 ` Alfred M. Szmidt 0 siblings, 0 replies; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-28 0:52 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: larsi, emacs-devel, schwab, eliz, monnier > (> (length foo) 10) > > uselessly counts (max 0 (- (length foo) 10)) items (+/- off by one > error?) > > There are more things in life than lists (elisp) Programming Tips So we agree that Emacs has more types than lists. > ... length on a char-table or a string is constant. We are not trying to solve non-issue here. Did you check each case where length was used that it was actually on a list? If not, how can you possibly know that it is a non-issue? > The bad code _is already_ in Emacs. > > Then that code should be fixed, it will be needed to be fixed anyway > -- a new function won't fix it magically. Yes. But that code will not fix itself magically on its own. Somebody will have to do it. The new predicates address this need and will help the person to do it easily and without introducing bugs. And broken code that does something stupid, will not get fixed by length> or its equivalents. If one wishes to actually fix code, one cannot do so blindly.. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 22:05 ` Lars Ingebrigtsen 2020-12-27 22:16 ` Andreas Schwab 2020-12-27 22:32 ` Alfred M. Szmidt @ 2020-12-28 7:32 ` Jean Louis 2 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-28 7:32 UTC (permalink / raw) To: Lars Ingebrigtsen Cc: Eli Zaretskii, Andreas Schwab, Stefan Monnier, emacs-devel * Lars Ingebrigtsen <larsi@gnus.org> [2020-12-28 01:06]: > Andreas Schwab <schwab@linux-m68k.org> writes: > > > Why do you need to reimplement nthcdr, badly? > > Because people say (if (= (length foo) 0)) all over the place, without > caring whether foo is a list, a string, or whatever, and I want them to > be able to say (if (length= foo 0)) with the same confidence and > convenience. That function could also test for second parameter if it is something else but number to help in testing (length= list list) as well or strings. I will start using it. (defun length= (seq arg) (if (numberp arg) (= (length seq) arg) (= (length seq) (length arg)))) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 22:08 ` Stefan Monnier 2020-12-26 22:10 ` Lars Ingebrigtsen 2020-12-26 23:04 ` Lars Ingebrigtsen @ 2020-12-27 3:35 ` Eli Zaretskii 2 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-27 3:35 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org > Date: Sat, 26 Dec 2020 17:08:23 -0500 > > > Oh, sure. But since this is a pure speed optimisation we're talking > > about, the Lisp solution would be slower than the (< (length foo) bar) > > in a significant number of cases, and we don't want that, do we? > > Actually, AFAICT this all started from: > > (not (null (cdr deleted))) would avoid traversing the entire list, > but it wouldn't be easier to read. No, it started from (> (length LIST) 1) being a waste of cycles. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 21:45 ` Stefan Monnier 2020-12-26 21:55 ` Lars Ingebrigtsen @ 2020-12-27 3:33 ` Eli Zaretskii 1 sibling, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-27 3:33 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Date: Sat, 26 Dec 2020 16:45:52 -0500 > Cc: Eli Zaretskii <eliz@gnu.org>, emacs-devel@gnu.org > > I mean we can already easily implement those things in ELisp: The argument for adding this functionality was performance. So implementing that in Lisp would mean we don't need to implement it at all. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:34 ` Lars Ingebrigtsen 2020-12-26 9:47 ` Daniel Brooks 2020-12-26 9:54 ` Eli Zaretskii @ 2020-12-27 5:34 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-27 5:34 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Perhaps a `longer-than-p' function would be helpful? I.e., > (longer-than-p deleted 1)? (Or some better name.) That is a reasonable way to speed it up. But if this is mainly to be used in connection with user output, the speedup would be insignificant, and thus not worth the cost of documenting it and maintaining 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 2:03 ` Daniel Brooks 2020-12-26 2:47 ` Stefan Monnier 2020-12-26 6:06 ` Daniel Brooks @ 2020-12-26 7:50 ` Eli Zaretskii 2020-12-26 9:07 ` Daniel Brooks 2020-12-27 16:23 ` Juri Linkov 2020-12-26 10:28 ` Richard Stallman 3 siblings, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 7:50 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, rms > From: Daniel Brooks <db48x@db48x.net> > Cc: Zhu Zihao <all_but_last@163.com>, dimech@gmx.com, abrochard@gmx.com, > rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org > Date: Fri, 25 Dec 2020 18:03:21 -0800 > > My personal opinion is that gettext is too limited. It works for simple > things, but provides no help at all for complex things. That is in no way specific to Emacs, is it? > I think that the most productive way to think about translation is that > each coherent message that we present to a user (whether it's via the > message function or not) should explicitly be the result of calling a > function written by the translator. gettext only allows the translator > to supply strings, so it falls down in complex situations. The advantage of the translation infrastructure based on gettext is that the translators don't have to be programmers, they only need to be experts in correct use of technical terminology in their languages. Even with that significant advantage, it is hard to find translators for many languages. Your suggestion would make that job much harder, with the net result that more messages for more programs will remain untranslated: a classic example where the best is a sworn enemy of the good. (Disclosure: I'm the team leader for translators to the Hebrew language, as part of the GNU Translation Project. I'm talking from personal experience here.) > The classical example is the "You have 42 new messages." situation. With > gettext, it is tempting to ask the translator to translate a string such > as "You have %d new messages.", but this does not give them any > flexibility to correctly handle languages with more plural categories > than English. Russian, for example, has a plural category for all > numbers that are one more than a multiple of ten except 11, which is a > special case. It also has another category for all numbers ending in 2, > 3, or 4 except for 12, 13, and 14. (I don't actually know Russian, but > the rules are summarized in a page or two at > <http://www.russianlessons.net/lessons/lesson11_main.php>.) There are > over 7,700 distinct languages in the world, and we should assume that > they are all at least that crazy. An ideal situation does not allow the > craziness to leave the translation and make the implementation more > complex. Nor should the craziness of Russian make writing a Spanish > translation more difficult. This problem was solved in gettext long ago, and is being widely used in existing translations. See the node "Plural Forms" in the GNU gettext manual. Emacs has the ngettext function in preparation for the day when we will be able to have translatable message strings. > I recommend taking a look at Project Fluent > <https://www.projectfluent.org/>. It's a free-software implementation of > exactly the system that I've described. Translators write functions in a > syntax that is similar in some ways to both Javascript and an ini file, > which could be easily compiled into Elisp. (It's the successor to the > l20n project, which you might also have heard of.) How many translated languages for how many programs does this project have? Anyway, the hard problems in translating some of the Emacs UI are elsewhere, as can be seen from the discussions to which I pointed. We need to solve those first, and only after that worry about the issues you mention (if they are real). ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 7:50 ` Eli Zaretskii @ 2020-12-26 9:07 ` Daniel Brooks 2020-12-26 9:31 ` Eli Zaretskii 2020-12-27 16:23 ` Juri Linkov 1 sibling, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 9:07 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rms, bugs, dimech, abrochard, emacs-devel, all_but_last Eli Zaretskii <eliz@gnu.org> writes: >> From: Daniel Brooks <db48x@db48x.net> >> Cc: Zhu Zihao <all_but_last@163.com>, dimech@gmx.com, abrochard@gmx.com, >> rms@gnu.org, bugs@gnu.support, emacs-devel@gnu.org >> Date: Fri, 25 Dec 2020 18:03:21 -0800 >> >> My personal opinion is that gettext is too limited. It works for simple >> things, but provides no help at all for complex things. > > That is in no way specific to Emacs, is it? Absolutely. >> I think that the most productive way to think about translation is that >> each coherent message that we present to a user (whether it's via the >> message function or not) should explicitly be the result of calling a >> function written by the translator. gettext only allows the translator >> to supply strings, so it falls down in complex situations. > > The advantage of the translation infrastructure based on gettext is > that the translators don't have to be programmers, they only need to > be experts in correct use of technical terminology in their > languages. Even with that significant advantage, it is hard to find > translators for many languages. Your suggestion would make that job > much harder, with the net result that more messages for more programs > will remain untranslated: a classic example where the best is a sworn > enemy of the good. Yes, the simplicity of gettext is a big point in its favor. In the common case, Fluent is not much more complicated. Here's a file from the en-US locale from Firefox: https://searchfox.org/mozilla-central/source/browser/locales/en-US/browser/aboutDialog.ftl Most of the complications here come from the html that is embedded inside the localized text: update-failed-main = Update failed. <a data-l10n-name="failed-link-main">Download the latest version</a> Another language might put different text before or after the link, so the anchor tag has to be part of the localized text. However, the Javascript that displays this text will add the href to the anchor first. > (Disclosure: I'm the team leader for translators to the Hebrew > language, as part of the GNU Translation Project. I'm talking from > personal experience here.) > > This problem was solved in gettext long ago, and is being widely used > in existing translations. See the node "Plural Forms" in the GNU > gettext manual. Emacs has the ngettext function in preparation for > the day when we will be able to have translatable message strings. Yes, I am aware of ngettext, and I could have picked a different example. Consider the example from projectfluent.org, where the output should change based on the user's gender: shared-photos = {$userName} {$photoCount -> [one] added a new photo *[other] added {$photoCount} new photos } to {$userGender -> [male] his stream [female] her stream *[other] their stream }. This one produces messages like "Anne added 3 new photos to her stream.", which vary based on the three inputs passed in. ngettext handles plurals, but it doesn't generalize to any other type of variation we might want. I can't think of any reason why Emacs would care about gender, but maybe BBDB could. Another example from fluentproject.org illustrates that individual translations can add variations that are purely for their own use. The English translation has "-sync-brand-name = Firefox Account", which is just assigning static text to a variable which will use used frequently. The Italian translation changes it to this: -sync-brand-name = {$first -> *[uppercase] Account Firefox [lowercase] account Firefox } which serves the same purpose but lets the translator put this text at both the beginning and end of a sentence. Meanwhile, the Polish translator has changed it to this: -sync-brand-name = {$case -> *[nominative] Konto Firefox [genitive] Konta Firefox [accusative] Kontem Firefox } which lets them choose the correct declension when needed: sync-signedout-title = Zaloguj do {-sync-brand-name(case: "genitive")} All three translations can do their own thing, without needing to ask the UI implementer to change anything and without coordinating with each other first. They can also add these features gradually, as they refine the translation. For example, they can start with a form that partly dodges the grammar like "New emails: 42" at first, then later refine it to "Found 42 new emails" once they get better coverage. >> I recommend taking a look at Project Fluent >> <https://www.projectfluent.org/>. It's a free-software implementation of >> exactly the system that I've described. Translators write functions in a >> syntax that is similar in some ways to both Javascript and an ini file, >> which could be easily compiled into Elisp. (It's the successor to the >> l20n project, which you might also have heard of.) > > How many translated languages for how many programs does this project > have? The main one that I know of is Firefox, which by my count has 96 translations. (See <https://www.mozilla.org/en-US/firefox/all/#product-desktop-release>.) > Anyway, the hard problems in translating some of the Emacs UI are > elsewhere, as can be seen from the discussions to which I pointed. We > need to solve those first, and only after that worry about the issues > you mention (if they are real). I think that a system like Fluent moves most of the problems into the translations, where they are more tractable (because each translation only has to solve it's own problems). Note that most of Firefox's translations are maintained by voluteers. They don't even have to send patches or commit files to version control; they use a web page to view and edit the translation, as well as to preview the results live. The same tools can be used for Emacs. I will continue to peruse these previous threads that you've pointed out, but I'm not aware of anything that would be harder than just going through the code factoring out the text. There aren't any clever macros that can help with that, just hard work. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:07 ` Daniel Brooks @ 2020-12-26 9:31 ` Eli Zaretskii 2020-12-26 9:37 ` Daniel Brooks 2020-12-26 9:59 ` Jean Louis 0 siblings, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 9:31 UTC (permalink / raw) To: Daniel Brooks; +Cc: rms, bugs, dimech, abrochard, emacs-devel, all_but_last > From: Daniel Brooks <db48x@db48x.net> > Cc: all_but_last@163.com, bugs@gnu.support, dimech@gmx.com, > abrochard@gmx.com, emacs-devel@gnu.org, rms@gnu.org > Date: Sat, 26 Dec 2020 01:07:50 -0800 > > Yes, I am aware of ngettext, and I could have picked a different > example. Consider the example from projectfluent.org, where the output > should change based on the user's gender: I think this issue is largely irrelevant to Emacs (and to translating program messages in general), since it customary nowadays to avoid gender-specific language. We certainly do that in Emacs. > > How many translated languages for how many programs does this project > > have? > > The main one that I know of is Firefox, which by my count has 96 > translations. I didn't mean one program, I meant the total count. It should be indicative to how easy it is to find people who are both programmers and can succinctly express themselves on technical issues in their native languages. IME, it is very hard to find such people. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:31 ` Eli Zaretskii @ 2020-12-26 9:37 ` Daniel Brooks 2020-12-26 9:51 ` Eli Zaretskii 2020-12-26 9:52 ` Werner LEMBERG 2020-12-26 9:59 ` Jean Louis 1 sibling, 2 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 9:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, rms Eli Zaretskii <eliz@gnu.org> writes: >> From: Daniel Brooks <db48x@db48x.net> >> Cc: all_but_last@163.com, bugs@gnu.support, dimech@gmx.com, >> abrochard@gmx.com, emacs-devel@gnu.org, rms@gnu.org >> Date: Sat, 26 Dec 2020 01:07:50 -0800 >> >> Yes, I am aware of ngettext, and I could have picked a different >> example. Consider the example from projectfluent.org, where the output >> should change based on the user's gender: > > I think this issue is largely irrelevant to Emacs (and to translating > program messages in general), since it customary nowadays to avoid > gender-specific language. We certainly do that in Emacs. Agreed, which is why I went on with the other example. The main point is that it is generalizable to other kinds of variation besides just plurals. Gettext does plurals, but nothing else. >> > How many translated languages for how many programs does this project >> > have? >> >> The main one that I know of is Firefox, which by my count has 96 >> translations. > > I didn't mean one program, I meant the total count. It should be > indicative to how easy it is to find people who are both programmers > and can succinctly express themselves on technical issues in their > native languages. IME, it is very hard to find such people. I don't know the full count, I only know that Mozilla uses it for Firefox as well as all of their web pages, and that most of those translations are maintained by volunteers. Those volunteers are clearly capable of doing the job, since there are 96 actively-maintained translations for Firefox, which is a complex application which is hard to translate. I think we can find similarly-capable volunteers to help translate Emacs once the infrastructure is in place. I don't think most of those people will already know either gettext or fluent syntax. They'll learn as they go, just like the rest of us do. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:37 ` Daniel Brooks @ 2020-12-26 9:51 ` Eli Zaretskii 2020-12-26 10:00 ` Daniel Brooks 2020-12-26 9:52 ` Werner LEMBERG 1 sibling, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 9:51 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, rms > From: Daniel Brooks <db48x@db48x.net> > Cc: rms@gnu.org, bugs@gnu.support, dimech@gmx.com, abrochard@gmx.com, > emacs-devel@gnu.org, all_but_last@163.com > Date: Sat, 26 Dec 2020 01:37:43 -0800 > > >> The main one that I know of is Firefox, which by my count has 96 > >> translations. > > > > I didn't mean one program, I meant the total count. It should be > > indicative to how easy it is to find people who are both programmers > > and can succinctly express themselves on technical issues in their > > native languages. IME, it is very hard to find such people. > > I don't know the full count, I only know that Mozilla uses it for > Firefox as well as all of their web pages, and that most of those > translations are maintained by volunteers. Those volunteers are clearly > capable of doing the job, since there are 96 actively-maintained > translations for Firefox, which is a complex application which is hard > to translate. Being able to program for one project in that project's programming language doesn't mean the same people can do that for another project written in a different PL. That's the main disadvantage of your proposal: you require the translators to be proficient as programmers in the project's PL, not just in their language. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:51 ` Eli Zaretskii @ 2020-12-26 10:00 ` Daniel Brooks 0 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 10:00 UTC (permalink / raw) To: Eli Zaretskii; +Cc: rms, bugs, dimech, abrochard, emacs-devel, all_but_last Eli Zaretskii <eliz@gnu.org> writes: > Being able to program for one project in that project's programming > language doesn't mean the same people can do that for another project > written in a different PL. That's the main disadvantage of your > proposal: you require the translators to be proficient as programmers > in the project's PL, not just in their language. No, it would require no knowledge of Elisp at all. Learning Fluent isn't going to be any more difficult than learning gettext; the simple cases are actually simpler in Fluent, and the complex cases (handling variations) is much simpler in Fluent than in gettext. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:37 ` Daniel Brooks 2020-12-26 9:51 ` Eli Zaretskii @ 2020-12-26 9:52 ` Werner LEMBERG 2020-12-26 10:10 ` Daniel Brooks 1 sibling, 1 reply; 384+ messages in thread From: Werner LEMBERG @ 2020-12-26 9:52 UTC (permalink / raw) To: db48x; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, eliz, rms >> I didn't mean one program, I meant the total count. It should be >> indicative to how easy it is to find people who are both >> programmers and can succinctly express themselves on technical >> issues in their native languages. IME, it is very hard to find >> such people. > > I don't know the full count, I only know that Mozilla uses it for > Firefox as well as all of their web pages, and that most of those > translations are maintained by volunteers. [...] Just curious: Does 'fluent' support (E)lisp and/or Scheme? Werner ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:52 ` Werner LEMBERG @ 2020-12-26 10:10 ` Daniel Brooks 0 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 10:10 UTC (permalink / raw) To: Werner LEMBERG Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, eliz, rms Werner LEMBERG <wl@gnu.org> writes: > Just curious: Does 'fluent' support (E)lisp and/or Scheme? Not specifically. I envision having a simple compiler written in elisp that turns fluent into elisp functions, or some other form that can be loaded when needed. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:31 ` Eli Zaretskii 2020-12-26 9:37 ` Daniel Brooks @ 2020-12-26 9:59 ` Jean Louis 2020-12-26 10:14 ` Daniel Brooks 2020-12-26 10:40 ` Eli Zaretskii 1 sibling, 2 replies; 384+ messages in thread From: Jean Louis @ 2020-12-26 9:59 UTC (permalink / raw) To: emacs-devel * Eli Zaretskii <eliz@gnu.org> [2020-12-26 12:32]: > I think this issue is largely irrelevant to Emacs (and to translating > program messages in general), since it customary nowadays to avoid > gender-specific language. We certainly do that in Emacs. In many languages nouns have its gender classes, and I hope you do not mean that. Example is that flower in German is refered as female while in some other languages as male. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:59 ` Jean Louis @ 2020-12-26 10:14 ` Daniel Brooks 2020-12-26 10:54 ` Jean Louis 2020-12-26 10:40 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 10:14 UTC (permalink / raw) To: emacs-devel Jean Louis <bugs@gnu.support> writes: > * Eli Zaretskii <eliz@gnu.org> [2020-12-26 12:32]: >> I think this issue is largely irrelevant to Emacs (and to translating >> program messages in general), since it customary nowadays to avoid >> gender-specific language. We certainly do that in Emacs. > > In many languages nouns have its gender classes, and I hope you do not > mean that. Example is that flower in German is refered as female while > in some other languages as male. The example I used was dealing with the gender of a user, rather than of a random noun. Emacs itself doesn't talk about the user very much, though in principle I could see someone using BBDB to keep track of the gender of their contacts. Regardless, Fluent can handle either type of linguistic gender with equal ease, as well as all other types of variation. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 10:14 ` Daniel Brooks @ 2020-12-26 10:54 ` Jean Louis 2020-12-26 11:13 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-26 10:54 UTC (permalink / raw) To: emacs-devel * Daniel Brooks <db48x@db48x.net> [2020-12-26 13:15]: > Jean Louis <bugs@gnu.support> writes: > > > * Eli Zaretskii <eliz@gnu.org> [2020-12-26 12:32]: > >> I think this issue is largely irrelevant to Emacs (and to translating > >> program messages in general), since it customary nowadays to avoid > >> gender-specific language. We certainly do that in Emacs. > > > > In many languages nouns have its gender classes, and I hope you do not > > mean that. Example is that flower in German is refered as female while > > in some other languages as male. > > The example I used was dealing with the gender of a user, rather than of > a random noun. Emacs itself doesn't talk about the user very much, > though in principle I could see someone using BBDB to keep track of the > gender of their contacts. Regardless, Fluent can handle either type of > linguistic gender with equal ease, as well as all other types of variation. Do you mean to teach computer to recognize gender of the user by the user's name? That would not be a good guess. What is possible is to let the user specify the gender and then computer may construct gender relevant sentences. Those titles such as Mrs. Mr. Ms. are more social titles, I use them to recognie the social titles of people, but I do not consider them equal to gender. The only reasonable recognition of gender would be in a medical database where people need to know something about that, or in dating terms when one wish to mate with specific gender. Otherwise is more or less useless. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 10:54 ` Jean Louis @ 2020-12-26 11:13 ` Daniel Brooks 0 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 11:13 UTC (permalink / raw) To: emacs-devel Jean Louis <bugs@gnu.support> writes: > * Daniel Brooks <db48x@db48x.net> [2020-12-26 13:15]: >> Jean Louis <bugs@gnu.support> writes: >> >> > * Eli Zaretskii <eliz@gnu.org> [2020-12-26 12:32]: >> >> I think this issue is largely irrelevant to Emacs (and to translating >> >> program messages in general), since it customary nowadays to avoid >> >> gender-specific language. We certainly do that in Emacs. >> > >> > In many languages nouns have its gender classes, and I hope you do not >> > mean that. Example is that flower in German is refered as female while >> > in some other languages as male. >> >> The example I used was dealing with the gender of a user, rather than of >> a random noun. Emacs itself doesn't talk about the user very much, >> though in principle I could see someone using BBDB to keep track of the >> gender of their contacts. Regardless, Fluent can handle either type of >> linguistic gender with equal ease, as well as all other types of variation. > > Do you mean to teach computer to recognize gender of the user by the > user's name? That would not be a good guess. No, no. Go back and look at the example I used; the user's gender was an input. The user in that example has chosen their own gender, and the translation can use that to output the grammatically correct sentence. As I said, it's not super relevant to Emacs. I only included it to show that Fluent handles all variations the same way, whether it's plurals or gender or declension. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 9:59 ` Jean Louis 2020-12-26 10:14 ` Daniel Brooks @ 2020-12-26 10:40 ` Eli Zaretskii 1 sibling, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-26 10:40 UTC (permalink / raw) To: Jean Louis; +Cc: emacs-devel > Date: Sat, 26 Dec 2020 12:59:51 +0300 > From: Jean Louis <bugs@gnu.support> > > * Eli Zaretskii <eliz@gnu.org> [2020-12-26 12:32]: > > I think this issue is largely irrelevant to Emacs (and to translating > > program messages in general), since it customary nowadays to avoid > > gender-specific language. We certainly do that in Emacs. > > In many languages nouns have its gender classes I don't see how this is relevant to the issue at hand. If I'm missing something, please tell what that is. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 7:50 ` Eli Zaretskii 2020-12-26 9:07 ` Daniel Brooks @ 2020-12-27 16:23 ` Juri Linkov 1 sibling, 0 replies; 384+ messages in thread From: Juri Linkov @ 2020-12-27 16:23 UTC (permalink / raw) To: Eli Zaretskii Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, Daniel Brooks, rms > Emacs has the ngettext function in preparation for the day > when we will be able to have translatable message strings. We are still waiting for someone knowable of gettext to install the gettext framework for translation of texts in C. Adapting gettext bindings to Lisp messages and UI would be more trivial to do. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 2:03 ` Daniel Brooks ` (2 preceding siblings ...) 2020-12-26 7:50 ` Eli Zaretskii @ 2020-12-26 10:28 ` Richard Stallman 2020-12-26 10:48 ` Daniel Brooks 3 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-26 10:28 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, 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. ]]] > My personal opinion is that gettext is too limited. It works for simple > things, but provides no help at all for complex things. That is true. > I think that the most productive way to think about translation is that > each coherent message that we present to a user (whether it's via the > message function or not) should explicitly be the result of calling a > function written by the translator. That could be acceptable if it is designed such that the functions are so limited that there are no insecurities. For GNU to use it, we would want it to fit into the framework of gettext. We could have a new function that programs should call, which would look for a function encoded in the translation string. Would you please email me the most important parts of the description of Project Fluent? So I don't have to hunt for them? -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 10:28 ` Richard Stallman @ 2020-12-26 10:48 ` Daniel Brooks 2020-12-27 5:39 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-26 10:48 UTC (permalink / raw) To: Richard Stallman; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, eliz Richard Stallman <rms@gnu.org> writes: > > My personal opinion is that gettext is too limited. It works for simple > > things, but provides no help at all for complex things. > > That is true. > > > I think that the most productive way to think about translation is that > > each coherent message that we present to a user (whether it's via the > > message function or not) should explicitly be the result of calling a > > function written by the translator. > > That could be acceptable if it is designed such that the functions > are so limited that there are no insecurities. That's a good point. The Fluent "language" does only string substitution, switch statements that choose amongst a set of strings, and calling functions pre-defined by the program being translated. That makes it easy to compile into safe code, or to produce a database that can interpreted quickly. > For GNU to use it, we would want it to fit into the framework > of gettext. We could have a new function that programs should call, > which would look for a function encoded in the translation string. I haven't considered that possibility, but my first impression is that mashing them together might not be a good idea. > Would you please email me the most important parts of the description > of Project Fluent? So I don't have to hunt for them? Sure. The blurb on the FLuent website says this: * Asymmetric Localization Natural-sounding translations with genders[1] and grammatical cases only when necessary. Expressiveness is not limited by the grammar of the source language. * Progressive Enhancement Translations are isolated; locale-specific logic doesn't leak to other locales. Authors can iteratively improve translations without impact on other languages. * Fully-Featured Date, time, and number formatting. Plural categories. Bidirectionality support. Custom formatters. Easy-to-read syntax. Runtime translation and re-translation. Robust error handling. * Open Source Fluent Syntax 1.0 was released in April 2019. Client- and server-side implementations in JS, Python, and Rust. React bindings. Licensed under the Apache 2.0 License[2]. [1]: This includes both the genders of people and the genders of random nouns in the translation. It also handles other sources of variation such as plurals, declensions, inflections, and so on. [2]: Aka, it's Free Software too. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-26 10:48 ` Daniel Brooks @ 2020-12-27 5:39 ` Richard Stallman 2020-12-27 8:48 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-27 5:39 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, 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 think the idea of integrating Fluent with gettext is interesting. Would you like to study that possibility? It seems that Fluent is not self-contained but rather depends on the presence of an interpreter for JS, Python, or Rust. Is that correct? That would be very undesirable in C programs that don't contain any interpreter (and don't need one). Is it feasible to write a small Fluent interpreter in C for this purpose? -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 5:39 ` Richard Stallman @ 2020-12-27 8:48 ` Daniel Brooks 2020-12-28 5:28 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 8:48 UTC (permalink / raw) To: Richard Stallman; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, eliz Richard Stallman <rms@gnu.org> writes: > I think the idea of integrating Fluent with gettext is interesting. > Would you like to study that possibility? Yes, I have been considering it. The biggest disconnect between Fluent and gettext is that Fluent allows recursive substitutions and multiple substitutions per message. Even just the fact that fluent handles the substitutions itself instead of making the caller delegate to printf is a big difference. Each message needs to give names to the values that will be substituted into it (basically argument names), and the PO files would have to specify how to use those arguments, whether it's subtituting them into the message directly, or switching on their values. The message catalog files (MO files) just have flat strings with no notion of substitutions or function calls. This is why my first inclination was to generate elisp code from a Fluent file. The easiest way to mush gettext and fluent together is to put some syntax into the messages that is post-processed before being returned to the caller, turning it into an interpreter. Something like this in a PO file: msgid "-sync-brand-name" msgstr "Firefox Account" msgid "sync-signedout-title" msgstr "Connect with your {-sync-brand-name}" A hypothetical igettext function could look for the curly braces, recurse to find the value of the -sync-brand-name message, perform the substitution (which allocates a new string), and then return the result. Or the value of sync-signedout-title could be precomputed before it was stored in the MO file. For this simple example, either would work. But consider a more complicated scenario: msgid "tabs-close-tooltip" msgstr "{$tabCount -> [one] Zamknij kartę [few] Zamknij {$tabCount} karty *[many] Zamknij { $tabCount } kart }" Again igettext can process this after retrieving it from the MO file, but again it's just turning it into an interpreter for a slightly lispy language. It could be partially unrolled into the MO file by using up multiple strings in the MO file, but it would still need to be an interpreter to substitute in the tabCount value. Good translations frequently have more complexity. I'd rather it were compiled to elisp that can be byte-compiled and hopefully jit-compiled before too long. Also, note that the original language wants to have the same substitution capabilities as the translations. To my mind it would be really weird to embed those in the source of the program that uses igettext. Consider the following hypothetical example: (message (igettext "{$tabCount -> [one] Zamknij kartę [few] Zamknij {$tabCount} karty *[many] Zamknij { $tabCount } kart }" 42)) The PO file would look something like this: msgid "{$tabCount -> [one] Zamknij kartę [few] Zamknij {$tabCount} karty *[many] Zamknij { $tabCount } kart }" msgstr "{$tabCount -> [one] Close { $tabCount } tab *[many] Close { $tabCount } tabs }" This may be really weird for the translator, because it seems to imply that the degree and type of abstractions used in the translation is supposed to match that of the original text, which is not necessary at all. Thus I have kept the Fluent convention of using simple textual identifiers in the source code, which is a departure from the way gettext is normally used. My thoughts have gotten more organized as I wrote this up, so I apologize if I've skipped any important deductive steps or otherwise left anything unclear. > It seems that Fluent is not self-contained but rather depends > on the presence of an interpreter for JS, Python, or Rust. > Is that correct? That would be very undesirable in C programs > that don't contain any interpreter (and don't need one). Not quite. It's intended that various programs would either integrate with an existing implementation, or implement the Fluent spec in their own language where that's not convenient. For example, a C program can link against the fluent-rs static library, and thus avoid writing that code themselves. Of course depending on two compilers (one for C and another for Rust, since fluent-rs is written in Rust) is sometimes a deal-breaker. I think we would ignore these existing implementations, except possibly as a source of inspiration, and write our own. > Is it feasible to write a small Fluent interpreter in C for this > purpose? Absolutely, but my personal preference is to write it in Elisp. My second choice is actually to link against fluent-rs; Rust is a great language and certainly better than C for implementing such things. Of course that is it's own can of worms. My third choice is to write an implementation in C. This we could reasonably make a separate library we could share with anyone else wanting to use Fluent in their C program. But then we would have to write a lot of C. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-27 8:48 ` Daniel Brooks @ 2020-12-28 5:28 ` Richard Stallman 2020-12-28 6:30 ` making gettext more like fluent Daniel Brooks 2020-12-28 8:05 ` Internationalize Emacs's messages (swahili) Zhu Zihao 0 siblings, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-28 5:28 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, 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. ]]] > > Is it feasible to write a small Fluent interpreter in C for this > > purpose? > Absolutely, but my personal preference is to write it in Elisp. An implementation in Elisp could be ok for Emacs, but Emacs is just one of hundreds of GNU packages, and one of thousands of packages in the GNU system. To fully adopt Fluent along with gettext as the GNU method of handling this, we need to make it work in C programs. The only simple, clean and general way is to implement it in C. Maintainers will never adopt this if their programs need to link with Emacs or with Rust. > The message catalog files (MO files) just have flat strings with no > notion of substitutions or function calls. This is why my first > inclination was to generate elisp code from a Fluent file. I don't follow how the beginning leads to the conclusion. > The easiest way to mush gettext and fluent together is to put some > syntax into the messages that is post-processed before being returned to > the caller, turning it into an interpreter. That is too terse for me -- I am totally list. Something like this in a PO > file: > msgid "-sync-brand-name" > msgstr "Firefox Account" > msgid "sync-signedout-title" > msgstr "Connect with your {-sync-brand-name}" I see what it says, but can you explain how that relates to "syntax that is post-processed before being returned to the caller"? Terse references such as "the caller" leave me lost because I can't tell what they refer to. The leap is too long for me to follow. > Also, note that the original language wants to have the same > substitution capabilities as the translations. What does "the original language" mean 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] 384+ messages in thread
* Re: making gettext more like fluent 2020-12-28 5:28 ` Richard Stallman @ 2020-12-28 6:30 ` Daniel Brooks 2020-12-29 5:57 ` Richard Stallman 2020-12-28 8:05 ` Internationalize Emacs's messages (swahili) Zhu Zihao 1 sibling, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-28 6:30 UTC (permalink / raw) To: Richard Stallman; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, eliz Richard Stallman <rms@gnu.org> writes: > > > Is it feasible to write a small Fluent interpreter in C for this > > > purpose? > > > Absolutely, but my personal preference is to write it in Elisp. > > An implementation in Elisp could be ok for Emacs, but Emacs is just > one of hundreds of GNU packages, and one of thousands of packages in > the GNU system. > > To fully adopt Fluent along with gettext as the GNU method of handling > this, we need to make it work in C programs. The only simple, clean > and general way is to implement it in C. > > Maintainers will never adopt this if their programs need to link > with Emacs or with Rust. Certainly most programs cannot link to Emacs; Emacs isn't even designed for that. Rust _is_ designed to be linked with C programs, and it is an excellent language to write things in. It is only my opinion, but Rust is a significant long-term threat to the ubiquity of GCC. Another similar threat is the low quality of the C language itself. To counter this, GCC should grow a Rust front-end. I hope that the work has already begun. But that is a topic for a different day. I would not volunteer to write any large amount of C. I know C, and am good enough with it, but suffering the aggravations of the language is not my idea of a good time. Again it's just my opinion, but Emacs could link against Rust code such as fluent-rs if we wanted it to. The Rust compiler is free software, and has become readily available in most Linux distributions. There are no technical roadblocks either. I have no idea what it would take for people to want it, but I'd volunteer to help if they did. > > The message catalog files (MO files) just have flat strings with no > > notion of substitutions or function calls. This is why my first > > inclination was to generate elisp code from a Fluent file. > > I don't follow how the beginning leads to the conclusion. My apologies. It seems that I stated some of my conclusions and then followed them up with supporting examples. > > The easiest way to mush gettext and fluent together is to put some > > syntax into the messages that is post-processed before being returned to > > the caller, turning it into an interpreter. > > That is too terse for me -- I am totally list. > > > Something like this in a PO file: > > > msgid "-sync-brand-name" > > msgstr "Firefox Account" > > > msgid "sync-signedout-title" > > msgstr "Connect with your {-sync-brand-name}" > > I see what it says, but can you explain how that relates to "syntax > that is post-processed before being returned to the caller"? Terse > references such as "the caller" leave me lost because I can't tell > what they refer to. The leap is too long for me to follow. The caller is some part of Emacs, let's say. Emacs calls the hypthetical igettext("sync-signedout-title"), and the translator wants Emacs to get the string "Connect with your Firefox Account" (I've just copied this example from projectfluent.org, which got it from the Firefox source code). With this simple proposed syntax, igettext must inspect each string that it retrieves from the message catalog to see if it contains any substitutions. Those substitutions can be almost as recursive as a real lisp program, and they can have conditional statements like lisp programs. Thus I would prefer to just compile the Fluent syntax into Lisp functions rather than to write a new interpreter. One build step for Emacs would be to read in the Fluent files for all available translations, and output ordinary .el files. Those .el files would then be loaded during the bootstrap process, just like all the existing lisp source files. It occurs to me that one way to refine this a little bit would be to directly output a elisp bytecode to a .elc file after reading in a Fluent file. This skips a step, and makes distributing packages containing translations easier. Making `load' recognize Fluent files seems like it would tie everything up nicely. > > Also, note that the original language wants to have the same > > substitution capabilities as the translations. > > What does "the original language" mean here? Whatever language the user interface was originally written in. In the case of Emacs, this is English. The English "translation" of Emacs will want to use the same Fluent capabilities that any translation would have access to. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: making gettext more like fluent 2020-12-28 6:30 ` making gettext more like fluent Daniel Brooks @ 2020-12-29 5:57 ` Richard Stallman 2020-12-29 6:49 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-29 5:57 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, 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. ]]] > Thus I would prefer to just compile the Fluent syntax into Lisp > functions rather than to write a new interpreter. Fluent offers a possible way of improving translation handling for the whole GNU system. That's what's really exciting. It would make no sese to do as much effort, or perhaps even more, to get support for Emacs only and no other programs. Rust is not an option for the GNU system. It has to be C. I will bring this up in gnu-prog-discuss when I dig up the link about Fluent from the previous messages. Is Fluent a trademark? Is there a trademark license in Fluent? If so, could you please send me the full text of that, as well as its URL? -- 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] 384+ messages in thread
* Re: making gettext more like fluent 2020-12-29 5:57 ` Richard Stallman @ 2020-12-29 6:49 ` Daniel Brooks 2020-12-30 5:30 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-29 6:49 UTC (permalink / raw) To: Richard Stallman; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, eliz Richard Stallman <rms@gnu.org> writes: > > Thus I would prefer to just compile the Fluent syntax into Lisp > > functions rather than to write a new interpreter. > > Fluent offers a possible way of improving translation handling for the > whole GNU system. That's what's really exciting. It would make no > sese to do as much effort, or perhaps even more, to get support for > Emacs only and no other programs. In principle I agree. > Rust is not an option for the GNU system. It has to be C. In practice, I find it sad that you would tie the success of GNU to the fashion for a single programming language. C has been successful so far, and has lent that success to GNU, but it seems unusual to decide that the GNU project could never embrace another language and allow it to become coequal with C. But of course it's not my decision. > I will bring this up in gnu-prog-discuss when I dig up the > link about Fluent from the previous messages. https://www.projectfluent.org/ > Is Fluent a trademark? Is there a trademark license in Fluent? > If so, could you please send me the full text of that, as well as its URL? Good question; I'm not really sure. It's a Mozilla project, so I assume it's like Firefox. I'll check. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: making gettext more like fluent 2020-12-29 6:49 ` Daniel Brooks @ 2020-12-30 5:30 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-30 5:30 UTC (permalink / raw) To: Daniel Brooks; +Cc: all_but_last, bugs, dimech, abrochard, emacs-devel, 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. ]]] > In practice, I find it sad that you would tie the success of GNU to the > fashion for a single programming language. In general, I don't. However, most GNU packages are written in C, or C++, and that includes the gettext support that this ought to be included in. To use a different language there would risk complications, and it is better to avoid them by writing that program in C. The program must ne small enough that rewriting it is not a big hassle. -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 5:28 ` Richard Stallman 2020-12-28 6:30 ` making gettext more like fluent Daniel Brooks @ 2020-12-28 8:05 ` Zhu Zihao 2020-12-29 6:01 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Zhu Zihao @ 2020-12-28 8:05 UTC (permalink / raw) To: rms; +Cc: bugs, dimech, abrochard, emacs-devel, Daniel Brooks, eliz [-- Attachment #1: Type: text/plain, Size: 987 bytes --] Richard Stallman writes: > To fully adopt Fluent along with gettext as the GNU method of handling > this, we need to make it work in C programs. The only simple, clean > and general way is to implement it in C. > > Maintainers will never adopt this if their programs need to link > with Emacs or with Rust. Rust is able to generate C dynamic library, so we can link with it. The dynamic library generated by Rust often statically link with its Rust dependencies(unless that dependency is a C lib wrapper). So it's not difficult for user to get it. I can ask upstream whether they have interest in maintain a stable C inteface, if they can help, we don't need to reinvent wheels. You can take a look at librsvg[1] (from project GNOME). A SVG renderer powered by Rust(and it's also used by Emacs currently) [1]: https://gitlab.gnome.org/GNOME/librsvg -- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 255 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-28 8:05 ` Internationalize Emacs's messages (swahili) Zhu Zihao @ 2020-12-29 6:01 ` Richard Stallman 2020-12-29 7:01 ` Daniel Brooks ` (3 more replies) 0 siblings, 4 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-29 6:01 UTC (permalink / raw) To: Zhu Zihao; +Cc: bugs, dimech, abrochard, emacs-devel, db48x, 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. ]]] > Rust is able to generate C dynamic library, so we can link with it. I am interested in understanding what that means. Could you describe in 10-20 lines what it means? What is the input, what is the output, and what software does the conversion? > You can take a look at librsvg[1] (from project GNOME). A SVG renderer > powered by Rust(and it's also used by Emacs currently) That is not something I can feasibly do -- it would take an hour if not several hours for me to learn the basic points. So I hope you will describe what I need to know in a brief summary. But I think it would be a nuisance to make this a separate library. It should be packaged with the support for getopt, and written in C so we (the GNU Project) can easily maintain it. From what I hear, Rust has a fundamental practical flaw: it is not intended to be stable. The developers want to keep changing it. That's fine, in principle, but until they decided to make it stable, we should write important code in some other language. -- 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] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-29 6:01 ` Richard Stallman @ 2020-12-29 7:01 ` Daniel Brooks 2020-12-29 11:48 ` Zhu Zihao ` (2 subsequent siblings) 3 siblings, 0 replies; 384+ messages in thread From: Daniel Brooks @ 2020-12-29 7:01 UTC (permalink / raw) To: Richard Stallman; +Cc: Zhu Zihao, bugs, dimech, abrochard, emacs-devel, eliz Richard Stallman <rms@gnu.org> writes: > > Rust is able to generate C dynamic library, so we can link with it. > > I am interested in understanding what that means. Could you describe > in 10-20 lines what it means? What is the input, what is the output, > and what software does the conversion? It's just like compiling C into a library, but it's the Rust compiler that creates the library. Other programs can then link with the library as if it had been written in C. > From what I hear, Rust has a fundamental practical flaw: it is not > intended to be stable. The developers want to keep changing it. > That's fine, in principle, but until they decided to make it stable, > we should write important code in some other language. Ah, a concrete objection. This isn't quite true. The language is indeed evolving more quickly than C (which has at least four or five versions now). Mozilla has committed to keeping the Rust compiler backwards-compatible with all past Rust Editions, of which there are currently two. Code written to the 2015 or 2018 editions of Rust will remain compilable by all future versions of the Rust compiler. You can also mix and match them; a program written in Rust 2018 can have dependencies written in Rust 2015 and visa versa. In practice it's not really different from choosing between c99, c11, and the rest. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-29 6:01 ` Richard Stallman 2020-12-29 7:01 ` Daniel Brooks @ 2020-12-29 11:48 ` Zhu Zihao 2020-12-30 5:46 ` The posibility to use Rust libraries with GNU Project softwares(e.g. link with Rust library) Zhu Zihao 2020-12-30 14:00 ` Internationalize Emacs's messages (swahili) Andy Moreton 3 siblings, 0 replies; 384+ messages in thread From: Zhu Zihao @ 2020-12-29 11:48 UTC (permalink / raw) To: rms; +Cc: bugs, dimech, abrochard, emacs-devel, db48x, eliz [-- Attachment #1: Type: text/plain, Size: 400 bytes --] Richard Stallman writes: > I am interested in understanding what that means. Could you describe > in 10-20 lines what it means? What is the input, what is the output, > and what software does the conversion? I think I can write a simple demo to help you understand. ;) Please wait. -- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 255 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* The posibility to use Rust libraries with GNU Project softwares(e.g. link with Rust library) 2020-12-29 6:01 ` Richard Stallman 2020-12-29 7:01 ` Daniel Brooks 2020-12-29 11:48 ` Zhu Zihao @ 2020-12-30 5:46 ` Zhu Zihao 2020-12-30 14:00 ` Internationalize Emacs's messages (swahili) Andy Moreton 3 siblings, 0 replies; 384+ messages in thread From: Zhu Zihao @ 2020-12-30 5:46 UTC (permalink / raw) To: rms; +Cc: db48x, dimech, abrochard, bugs, emacs-devel [-- Attachment #1: Type: text/plain, Size: 3293 bytes --] Richard Stallman writes: > I am interested in understanding what that means. Could you describe > in 10-20 lines what it means? What is the input, what is the output, > and what software does the conversion? Just create a small example to help you understand how Rust interact with C. link here: https://github.com/cireu/jieba-cbinding-example jieba-rs is a Chinese segmentation crate(crate means library). CJK languages usually don't use space to separate words so somebody create a library to do it. Please see jieba_rustlib/Cargo.toml, we have `crate-type = ["cdylib"]` in lib section, so cargo(the builder of Rust code, like make) will ask (rustc)rust compiler to generate C dynamic libraries. I write a simple interface in jieba_rustlib/src/lib.rs. See the function with `unsafe extern "C"` and `#[no_magle]` mark, it's marked for FFI to C. There're several ways to expose Rust API to C. Some simple types(int, uint) will have corresponding mappings. For complex type like struct, we can use #[repr(C)], make the struct layout compatible with C, so C can access struct directly. Or just use pointer, let C treat Rust struct as opaque object and use exported function to use it. I use both in this example, for Jieba struct(introduced by jieba-rs crate), I use pointer, for hand-craft compat layer of Rust dynamic array and C arrays, I use C-compatiable struct to expose extra information(length and capacity) of array to C. And we use cbindgen(https://github.com/eqrion/cbindgen) to generate C header, and result in jieba_rustlib/jieba_rustlib.h. Finally we have dynamic library and header, we just include header in c source(see main.c) and link with library to craft our application. I use Makefile to automate these steps. ``` chino@asus-laptop:/archive/gitrepos/jieba-rs-c-binding-example$ LANG=en_US.utf8 make make -C jieba_rustlib libjieba_rustlib.so make[1]: Entering directory '/archive/gitrepos/jieba-rs-c-binding-example/jieba_rustlib' cargo build --release Finished release [optimized] target(s) in 0.01s cp target/release/libjieba_rustlib.so ./ make[1]: Leaving directory '/archive/gitrepos/jieba-rs-c-binding-example/jieba_rustlib' gcc main.c -Ijieba_rustlib -Ljieba_rustlib -Wl,-rpath=jieba_rustlib -ljieba_rustlib -o main chino@asus-laptop:/archive/gitrepos/jieba-rs-c-binding-example$ ./main 我 可以 吞下 玻璃 而 不伤 身体 ``` > From what I hear, Rust has a fundamental practical flaw: it is not > intended to be stable. The developers want to keep changing it. I think Rust will keep evolving. But not aggressively. The latest Rust stable version is 1.48. When a software/library released it's 1.0 version, usually means it's production ready. Cargo(package manager and build system for Rust) have lock. Users can lock their crates to ensure a reproducible build. And Rust also introduce "Edition" for breaking changes(https://doc.rust-lang.org/edition-guide/editions/index.html). It's stable if user stick to a specific edition. Any updates in same edition should not break your code failed to compile/failed to run(if so, it's probably a compiler bug). -- Retrieve my PGP public key: gpg --recv-keys D47A9C8B2AE3905B563D9135BE42B352A9F6821F Zihao [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 255 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Internationalize Emacs's messages (swahili) 2020-12-29 6:01 ` Richard Stallman ` (2 preceding siblings ...) 2020-12-30 5:46 ` The posibility to use Rust libraries with GNU Project softwares(e.g. link with Rust library) Zhu Zihao @ 2020-12-30 14:00 ` Andy Moreton 2020-12-30 19:18 ` Rust trademark problems - " Jean Louis 3 siblings, 1 reply; 384+ messages in thread From: Andy Moreton @ 2020-12-30 14:00 UTC (permalink / raw) To: emacs-devel On Tue 29 Dec 2020, 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. ]]] > > > Rust is able to generate C dynamic library, so we can link with it. > > I am interested in understanding what that means. Could you describe > in 10-20 lines what it means? What is the input, what is the output, > and what software does the conversion? The suggestion above is to build a shared library (.so, .dll, etc), but written in Rust instead of C. That requires a Rust toochain to compile the code. > > You can take a look at librsvg[1] (from project GNOME). A SVG renderer > > powered by Rust(and it's also used by Emacs currently) > > That is not something I can feasibly do -- it would take an hour if > not several hours for me to learn the basic points. So I hope > you will describe what I need to know in a brief summary. Rust is a language that fits the same space as C does: a systems language with minimal runtime support needed (so ok for embedded targets). It has good interop with C, so Rust code and C code can call each other directly without any complicated FFI or marshalling. For the example SVG library, that allowed the authors to rewrite parts of the C code in Rust for better type safety (to reduce the number of security critical bugs) without changing the library ABI. > But I think it would be a nuisance to make this a separate library. > It should be packaged with the support for getopt, and written in C so > we (the GNU Project) can easily maintain it. > > From what I hear, Rust has a fundamental practical flaw: it is not > intended to be stable. The developers want to keep changing it. > That's fine, in principle, but until they decided to make it stable, > we should write important code in some other language. The language core is stable now, and current work is mostly on stabilising libraries. Rust is a promising language, and while not yet completely stable the pace of change is slowing as it matures. Many projects are using Rust in production code. Adding another toolchain to the dependencies for a project is a large change. In addition, the Rust toolchains do not (yet) support many of the targets that are supported by C toolchains. AndyM ^ permalink raw reply [flat|nested] 384+ messages in thread
* Rust trademark problems - Re: Internationalize Emacs's messages (swahili) 2020-12-30 14:00 ` Internationalize Emacs's messages (swahili) Andy Moreton @ 2020-12-30 19:18 ` Jean Louis 0 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-30 19:18 UTC (permalink / raw) To: emacs-devel * Andy Moreton <andrewjmoreton@gmail.com> [2020-12-30 17:01]: > On Tue 29 Dec 2020, 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. ]]] > > > > > Rust is able to generate C dynamic library, so we can link with it. > > > > I am interested in understanding what that means. Could you describe > > in 10-20 lines what it means? What is the input, what is the output, > > and what software does the conversion? > > The suggestion above is to build a shared library (.so, .dll, etc), but > written in Rust instead of C. That requires a Rust toochain to compile > the code. It is also to note the freedom issues with Rust trademark as those are similar to Firefox trademark issues. From Hyperbola GNU/Linux-libre: https://issues.hyperbola.info/index.php?do=details&task_id=736 Quote: Uses that require explicit approval Distributing a modified version of the Rust programming language or the Cargo package manager and calling it Rust or Cargo requires explicit, written permission from the Rust core team. We will usually allow these uses as long as the modifications are (1) relatively small and (2) very clearly communicated to end-users. Selling t-shirts, hats, and other artwork or merchandise requires explicit, written permission from the Rust core team. We will usually allow these uses as long as (1) it is clearly communicated that the merchandise is not in any way an official part of the Rust project and (2) it is clearly communicated whether profits benefit the Rust project. Using the Rust trademarks within another trademark requires written permission from the Rust core team except as described above. Reference links: https://www.rust-lang.org/en-US/legal.html https://www.mozilla.org/en-US/foundation/trademarks/policy/ https://www.mozilla.org/en-US/foundation/trademarks/list/ ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 5:47 ` Richard Stallman 2020-12-21 6:57 ` Christopher Dimech @ 2020-12-21 16:53 ` Eli Zaretskii 2020-12-21 23:43 ` Christopher Dimech 2021-02-25 22:53 ` Jeremy Bryant 2020-12-22 11:03 ` Gregory Heytings via Emacs development discussions. 2 siblings, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-21 16:53 UTC (permalink / raw) To: rms; +Cc: dimech, abrochard, bugs, emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Mon, 21 Dec 2020 00:47:18 -0500 > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > > > I wonder whether the survey stems from lack of vision of emacs > > admin and developers. For instance, Gcc has a Development Plan. > > Suggestions for changes to the plan are discussed on the Gcc > > mailing list and can be approved or rejected by the Gcc Steering > > Committee. How about Emacs? > > GCC has many developers who are paid by various companies. > That makes it easier to make plans and actually carry them out. There's another important difference. GCC implements programming languages defined by evolving standards that are developed by other bodies. The evolution of those language standards largely defines the GCC development plans. Other project, like GDB, Binutils, etc. have similar traits: they support hardware and software standards developed elsewhere. But Emacs is its own standard, defined by what we put into it, it depends very little on outside developments, and is only tangentially affected by those external developments. So those developments cannot determine our plans anywhere near to how the next C++ Standard affects GCC development, or the next DWARF2 version and various debugging-related features in the next generation of CPUs affect GDB development. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 16:53 ` Emacs Survey: Toolbars Eli Zaretskii @ 2020-12-21 23:43 ` Christopher Dimech 2021-02-25 22:53 ` Jeremy Bryant 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-21 23:43 UTC (permalink / raw) To: Eli Zaretskii; +Cc: abrochard, rms, bugs, emacs-devel > Sent: Monday, December 21, 2020 at 10:23 PM > From: "Eli Zaretskii" <eliz@gnu.org> > To: rms@gnu.org > Cc: dimech@gmx.com, abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > From: Richard Stallman <rms@gnu.org> > > Date: Mon, 21 Dec 2020 00:47:18 -0500 > > Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org > > > > > I wonder whether the survey stems from lack of vision of emacs > > > admin and developers. For instance, Gcc has a Development Plan. > > > Suggestions for changes to the plan are discussed on the Gcc > > > mailing list and can be approved or rejected by the Gcc Steering > > > Committee. How about Emacs? > > > > GCC has many developers who are paid by various companies. > > That makes it easier to make plans and actually carry them out. > > There's another important difference. GCC implements programming > languages defined by evolving standards that are developed by other > bodies. The evolution of those language standards largely defines the > GCC development plans. Other project, like GDB, Binutils, etc. have > similar traits: they support hardware and software standards developed > elsewhere. > > But Emacs is its own standard, defined by what we put into it, it > depends very little on outside developments, and is only tangentially > affected by those external developments. So those developments cannot > determine our plans anywhere near to how the next C++ Standard affects > GCC development, or the next DWARF2 version and various > debugging-related features in the next generation of CPUs affect GDB > development. You may be correct, but we all have got an indication of what works better. Emacs could word on setting some standard for the next three years and get a bit closer to development plans that have proved to be much more sustainable. But this is just my position. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 16:53 ` Emacs Survey: Toolbars Eli Zaretskii 2020-12-21 23:43 ` Christopher Dimech @ 2021-02-25 22:53 ` Jeremy Bryant 1 sibling, 0 replies; 384+ messages in thread From: Jeremy Bryant @ 2021-02-25 22:53 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, abrochard, rms, bugs, emacs-devel In the spirit of this discussion on the merits and possibility of planning (or not), there is an interesting quote below. I found it useful for thinking about the special characteristics of Emacs, and perhaps others on this list will find it interesting to consider. attributed (in the Free as in Freedom book)to RMS from a 1979 AI Lab memo EMACS could not have been reached by a process of careful design, because such processes arrive only at goals which are visible at the outset, and whose desirability is established on the bottom line at the outset. Neither I nor anyone else visualized an extensible editor until I had made one, nor appreciated its value until he had experienced it. EMACS exists because I felt free to make individually useful small improvements on a path whose end was not in sight. Although I couldn't locate the original source of exact quote, there is a longer piece from the 1979 memo from RMS on the same subject. Implications for the Process of System Design It is generally accepted that when a program is to be written, specifications should be designed in advance. If this is not done, the result will be inferior. Some people know better than this, but none dare to speak up. The writing of EMACS was as far from along these lines as can be imagined. It is best thought of as a continuous deformation of TECO into something which, for users, has no resemblance to TECO. And indeed, there are ways in which EMACS shows the results of not having been completely thought out in advance, if only in being based on TECO rather than Lisp. (Nevertheless, EMACS has shown itself to be reliable and suitable for widespread use). If EMACS hadTbeen specified in advance, it would resemble the post-EMACS editors described above. However, the post-EMACS editors were specified in advance by EMACS itself, and could not have been written if not preceded by EMACS (this is not to say that they have copied slavishly; they have continued the process of gradual development). And EMACS could never have' been arrived at except in the way it actually was. The chain of necessary steps leading to EMACS, starting with the display processor, was simply too long for anyone to have imagined the final result before the first step had been taken. If we had insisted on moving only toward destinations visible at the beginning, we would never have got here from there! This is true of all the details of the individual commands as well as of the structure of the system. Each command in EMACS behaves as it does as a result of experimentation by many different users customizing their editors in £ MACS June 22, 1979 21 MIT Al Lab different ways, in the years when the display processor existed but EMACS had not yet been begun. This experimentation was possible only because a programmable display editor existed. It would not have been possible to design the EMACS standard command set without it. Nor can one maintain the position that it was right to create EMACS this way because it was research, but ordinary system development is a different matter. This is because the difference between the two is also a matter of hindsight. EMACS was not the result of an intentional "editor research project" (nor would such a project have arrived at EMACS, because research projects aim only at goals which are visible at the start). The display processor and command dispatcher were seen only as an improvement to TECO; no one could have known, when any step was taken, how much farther the path would lead. One cannot even identify a "first" step, because the development, until the writing of EMACS per se, blends smoothly back into the development' of TECO. But why isn't such program of exploration doomed to be sidetracked by a blind alley, which nobody will realize due to the lack of a planned goal? 'it is the extensibility, and a flexibility of mind, which solves this problem: many alleys will be tried at once, and blind alleys can be backed out of with minimal real loss. Eli Zaretskii <eliz@gnu.org> writes: >> From: Richard Stallman <rms@gnu.org> >> Date: Mon, 21 Dec 2020 00:47:18 -0500 >> Cc: abrochard@gmx.com, bugs@gnu.support, emacs-devel@gnu.org >> >> > I wonder whether the survey stems from lack of vision of emacs >> > admin and developers. For instance, Gcc has a Development Plan. >> > Suggestions for changes to the plan are discussed on the Gcc >> > mailing list and can be approved or rejected by the Gcc Steering >> > Committee. How about Emacs? >> >> GCC has many developers who are paid by various companies. >> That makes it easier to make plans and actually carry them out. > > There's another important difference. GCC implements programming > languages defined by evolving standards that are developed by other > bodies. The evolution of those language standards largely defines the > GCC development plans. Other project, like GDB, Binutils, etc. have > similar traits: they support hardware and software standards developed > elsewhere. > > But Emacs is its own standard, defined by what we put into it, it > depends very little on outside developments, and is only tangentially > affected by those external developments. So those developments cannot > determine our plans anywhere near to how the next C++ Standard affects > GCC development, or the next DWARF2 version and various > debugging-related features in the next generation of CPUs affect GDB > development. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 5:47 ` Richard Stallman 2020-12-21 6:57 ` Christopher Dimech 2020-12-21 16:53 ` Emacs Survey: Toolbars Eli Zaretskii @ 2020-12-22 11:03 ` Gregory Heytings via Emacs development discussions. 2020-12-22 13:22 ` Daniel Martín via "Emacs development discussions. 2020-12-22 16:06 ` Eli Zaretskii 2 siblings, 2 replies; 384+ messages in thread From: Gregory Heytings via Emacs development discussions. @ 2020-12-22 11:03 UTC (permalink / raw) To: Richard Stallman; +Cc: emacs-devel > > I've been trying for more than 10 years to urge people to work toward > giving Emacs the document capabilities of a word processor, but I have > not convinced people to do this work. > What do you mean by this? I'm probably biased, but I don't see what important "capability of a word processor" is lacking in Emacs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 11:03 ` Gregory Heytings via Emacs development discussions. @ 2020-12-22 13:22 ` Daniel Martín via "Emacs development discussions. 2020-12-23 15:04 ` Tomas Hlavaty 2020-12-22 16:06 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: Daniel MartÃn via "Emacs development discussions. @ 2020-12-22 13:22 UTC (permalink / raw) To: Gregory Heytings via Emacs development discussions. Cc: Gregory Heytings, Richard Stallman Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org> writes: >> >> I've been trying for more than 10 years to urge people to work >> toward giving Emacs the document capabilities of a word processor, >> but I have not convinced people to do this work. >> > > What do you mean by this? I'm probably biased, but I don't see what > important "capability of a word processor" is lacking in Emacs. Something that works like LibreOffice, where you can write a document, select parts of it, mark them in bold, justify them, etc. All of that while you see the results in a WYSIWYG fashion. The closest thing there is now is enriched-mode, but that mode does not offer the same level of features as LibreOffice. There is more context about this potential new feature in /etc/TODO under the section "Emacs as a word processor". ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 13:22 ` Daniel Martín via "Emacs development discussions. @ 2020-12-23 15:04 ` Tomas Hlavaty 2020-12-23 15:07 ` Gregory Heytings via Emacs development discussions. ` (3 more replies) 0 siblings, 4 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-23 15:04 UTC (permalink / raw) To: emacs-devel On Tue 22 Dec 2020 at 14:22, Daniel Martín via "Emacs development discussions." <emacs-devel@gnu.org> wrote: > Gregory Heytings via "Emacs development discussions." > <emacs-devel@gnu.org> writes: > >>> >>> I've been trying for more than 10 years to urge people to work >>> toward giving Emacs the document capabilities of a word processor, >>> but I have not convinced people to do this work. >>> >> >> What do you mean by this? I'm probably biased, but I don't see what >> important "capability of a word processor" is lacking in Emacs. > > Something that works like LibreOffice, where you can write a document, > select parts of it, mark them in bold, justify them, etc. All of that > while you see the results in a WYSIWYG fashion. The closest thing > there is now is enriched-mode, but that mode does not offer the same > level of features as LibreOffice. I hit a problem with WYSIWYG when trying to implement the WYG part for emacs-pdf: My console emacs has black background but my paper is white. Any ideas how to handle this use-case in WYSIWYG editor? > There is more context about this potential new feature in /etc/TODO > under the section "Emacs as a word processor". I do not have /etc/TODO file. Is there an M-x command to open that TODO file? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 15:04 ` Tomas Hlavaty @ 2020-12-23 15:07 ` Gregory Heytings via Emacs development discussions. 2020-12-23 17:49 ` Tomas Hlavaty 2020-12-23 16:11 ` Eli Zaretskii ` (2 subsequent siblings) 3 siblings, 1 reply; 384+ messages in thread From: Gregory Heytings via Emacs development discussions. @ 2020-12-23 15:07 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: emacs-devel >> There is more context about this potential new feature in /etc/TODO >> under the section "Emacs as a word processor". > > I do not have /etc/TODO file. Is there an M-x command to open that TODO > file? > C-h C-t ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 15:07 ` Gregory Heytings via Emacs development discussions. @ 2020-12-23 17:49 ` Tomas Hlavaty 0 siblings, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-23 17:49 UTC (permalink / raw) To: emacs-devel On Wed 23 Dec 2020 at 15:07, Gregory Heytings <ghe@sdf.org> wrote: >>> There is more context about this potential new feature in /etc/TODO >>> under the section "Emacs as a word processor". >> >> I do not have /etc/TODO file. Is there an M-x command to open that TODO >> file? >> > > C-h C-t great, thanks! ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 15:04 ` Tomas Hlavaty 2020-12-23 15:07 ` Gregory Heytings via Emacs development discussions. @ 2020-12-23 16:11 ` Eli Zaretskii 2020-12-23 16:39 ` Stefan Monnier 2020-12-23 19:10 ` Daniel Martín 3 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-23 16:11 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: emacs-devel > From: Tomas Hlavaty <tom@logand.com> > Date: Wed, 23 Dec 2020 16:04:01 +0100 > > > There is more context about this potential new feature in /etc/TODO > > under the section "Emacs as a word processor". > > I do not have /etc/TODO file. A typo, sorry: it should be etc/TODO in the Emacs source tree. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 15:04 ` Tomas Hlavaty 2020-12-23 15:07 ` Gregory Heytings via Emacs development discussions. 2020-12-23 16:11 ` Eli Zaretskii @ 2020-12-23 16:39 ` Stefan Monnier 2020-12-23 17:55 ` Tomas Hlavaty 2020-12-23 19:10 ` Daniel Martín 3 siblings, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2020-12-23 16:39 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: emacs-devel > I hit a problem with WYSIWYG when trying to implement the WYG part for > emacs-pdf: My console emacs has black background but my paper is white. > Any ideas how to handle this use-case in WYSIWYG editor? Easy: use black paper! Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 16:39 ` Stefan Monnier @ 2020-12-23 17:55 ` Tomas Hlavaty 0 siblings, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-23 17:55 UTC (permalink / raw) To: emacs-devel On Wed 23 Dec 2020 at 11:39, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> I hit a problem with WYSIWYG when trying to implement the WYG part for >> emacs-pdf: My console emacs has black background but my paper is white. >> Any ideas how to handle this use-case in WYSIWYG editor? > > Easy: use black paper! Clever, I haven't thought about that. Now I only need to find white toner! ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 15:04 ` Tomas Hlavaty ` (2 preceding siblings ...) 2020-12-23 16:39 ` Stefan Monnier @ 2020-12-23 19:10 ` Daniel Martín 2020-12-23 20:55 ` Tomas Hlavaty 2020-12-25 4:29 ` Richard Stallman 3 siblings, 2 replies; 384+ messages in thread From: Daniel Martín @ 2020-12-23 19:10 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: emacs-devel Tomas Hlavaty <tom@logand.com> writes: > > I hit a problem with WYSIWYG when trying to implement the WYG part for > emacs-pdf: My console emacs has black background but my paper is white. > Any ideas how to handle this use-case in WYSIWYG editor? > I'd say that when you render for printing you should always generate a document with black text over a white background. Unless the user explicitly changes the face of parts of the text, in which case you respect them. That's not truly WYSIWYG, but seems like a sensible approach to iterate on. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 19:10 ` Daniel Martín @ 2020-12-23 20:55 ` Tomas Hlavaty 2020-12-25 4:29 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-23 20:55 UTC (permalink / raw) To: emacs-devel On Wed 23 Dec 2020 at 20:10, Daniel Martín <mardani29@yahoo.es> wrote: > Tomas Hlavaty <tom@logand.com> writes: >> I hit a problem with WYSIWYG when trying to implement the WYG part >> for emacs-pdf: My console emacs has black background but my paper is >> white. Any ideas how to handle this use-case in WYSIWYG editor? > > I'd say that when you render for printing you should always generate a > document with black text over a white background. Unless the user > explicitly changes the face of parts of the text, in which case you > respect them. That's not truly WYSIWYG, but seems like a sensible > approach to iterate on. Yes, that's what I do at the moment and it works fine for monochrome output. But if the buffer has colored text and I do not want monochrome output, how should those colors be chosen? I do not think that swaping black and white and keeping all other colors intact would give good results. And I do not think there is a formula to reverse video colors, or is there? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 19:10 ` Daniel Martín 2020-12-23 20:55 ` Tomas Hlavaty @ 2020-12-25 4:29 ` Richard Stallman 2020-12-25 9:48 ` Tomas Hlavaty 1 sibling, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-25 4:29 UTC (permalink / raw) To: Daniel MartÃn; +Cc: tom, 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'd say that when you render for printing you should always generate a > document with black text over a white background. Unless the user > explicitly changes the face of parts of the text, in which case you > respect them. That's not truly WYSIWYG, but seems like a sensible > approach to iterate on. This is equivalent to deciding to consider white-on-black to be a mode of display rather than a property of the document. I think it makes sense. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 4:29 ` Richard Stallman @ 2020-12-25 9:48 ` Tomas Hlavaty 2020-12-25 17:20 ` Stefan Monnier 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-25 9:48 UTC (permalink / raw) To: emacs-devel On Thu 24 Dec 2020 at 23:29, Richard Stallman <rms@gnu.org> wrote: > This is equivalent to deciding to consider white-on-black to be a mode > of display rather than a property of the document. I think it makes > sense. It is trivial for monochromatic documents. The question is: What should happen if there was another third color in the document? Should that third color stay the same on black display and white paper? Emacs kind of solves this for display by manually defining faces for each use-case (black or white background). But is there a better, automatic way suitable for printing? Or maybe the buffer should simply use the same background as paper? Is it possible to reverse reverse-video per buffer? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 9:48 ` Tomas Hlavaty @ 2020-12-25 17:20 ` Stefan Monnier 2020-12-25 18:06 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2020-12-25 17:20 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: emacs-devel > It is trivial for monochromatic documents. Actually, not even: if you've ever looked at the "negatives" used for analog black&white photos you'll surely understand that inverse-video doesn't work so well for images (mostly because it inverses lights and shadows, thus confusing the semantics). For a "pure" text or other such circumstances where the colors don't carry much meaning, it's not too hard to do something like "inverse video" with an acceptable result, but for photos or comparable kinds of images, I suspect that it's somewhere between very hard and impossible. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 17:20 ` Stefan Monnier @ 2020-12-25 18:06 ` Tomas Hlavaty 2020-12-25 18:14 ` Stefan Monnier 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-25 18:06 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel On Fri 25 Dec 2020 at 12:20, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> It is trivial for monochromatic documents. > > Actually, not even: if you've ever looked at the "negatives" used for > analog black&white photos you'll surely understand that inverse-video > doesn't work so well for images (mostly because it inverses lights and > shadows, thus confusing the semantics). Ok, I did not mean gray-scale. I meant text in black ink on white paper WYSIWYG edited in Emacs with reverse video colors. I cannot recall the proper name for it at the moment but you get the idea. Now add third color, e.g. to highlight a word in the document. Simply swapping background and foreground color can make the highlighted word badly readable, if the color stays the same. > For a "pure" text or other such circumstances where the colors don't > carry much meaning, it's not too hard to do something like "inverse > video" with an acceptable result, but for photos or comparable kinds > of images, I suspect that it's somewhere between very hard and > impossible. We can leave photos and images out of the question and simply preserve their colors. Do you have suggestion for automatically computing "it's not too hard" color mapping for "inverse video" "pure" text? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 18:06 ` Tomas Hlavaty @ 2020-12-25 18:14 ` Stefan Monnier 2020-12-25 18:24 ` Yuri Khan 2020-12-25 18:28 ` Tomas Hlavaty 0 siblings, 2 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-25 18:14 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: emacs-devel > Do you have suggestion for automatically computing "it's not too hard" > color mapping for "inverse video" "pure" text? Convert the color's YUV and invert the Y. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 18:14 ` Stefan Monnier @ 2020-12-25 18:24 ` Yuri Khan 2020-12-25 18:29 ` Tomas Hlavaty 2020-12-25 20:25 ` Drew Adams 2020-12-25 18:28 ` Tomas Hlavaty 1 sibling, 2 replies; 384+ messages in thread From: Yuri Khan @ 2020-12-25 18:24 UTC (permalink / raw) To: Stefan Monnier; +Cc: Tomas Hlavaty, Emacs developers On Sat, 26 Dec 2020 at 01:15, Stefan Monnier <monnier@iro.umontreal.ca> wrote: > > Do you have suggestion for automatically computing "it's not too hard" > > color mapping for "inverse video" "pure" text? > > Convert the color's YUV and invert the Y. Possibly better: keep the hue and saturation and recalculate luminance to preserve the relative contrast to background color. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 18:24 ` Yuri Khan @ 2020-12-25 18:29 ` Tomas Hlavaty 2020-12-25 20:32 ` Yuri Khan 2020-12-25 20:25 ` Drew Adams 1 sibling, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-25 18:29 UTC (permalink / raw) To: Yuri Khan, Stefan Monnier; +Cc: Emacs developers On Sat 26 Dec 2020 at 01:24, Yuri Khan <yuri.v.khan@gmail.com> wrote: > On Sat, 26 Dec 2020 at 01:15, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> > Do you have suggestion for automatically computing "it's not too hard" >> > color mapping for "inverse video" "pure" text? >> >> Convert the color's YUV and invert the Y. > > Possibly better: keep the hue and saturation and recalculate luminance > to preserve the relative contrast to background color. Is there a name for that or more detailed description I could follow? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 18:29 ` Tomas Hlavaty @ 2020-12-25 20:32 ` Yuri Khan 2020-12-25 21:57 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Yuri Khan @ 2020-12-25 20:32 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: Stefan Monnier, Emacs developers On Sat, 26 Dec 2020 at 01:29, Tomas Hlavaty <tom@logand.com> wrote: > >> Convert the color's YUV and invert the Y. > > > > Possibly better: keep the hue and saturation and recalculate luminance > > to preserve the relative contrast to background color. > > Is there a name for that or more detailed description I could follow? Same old: https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 20:32 ` Yuri Khan @ 2020-12-25 21:57 ` Tomas Hlavaty 0 siblings, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-25 21:57 UTC (permalink / raw) To: Yuri Khan; +Cc: Stefan Monnier, Emacs developers On Sat 26 Dec 2020 at 03:32, Yuri Khan <yuri.v.khan@gmail.com> wrote: > On Sat, 26 Dec 2020 at 01:29, Tomas Hlavaty <tom@logand.com> wrote: > >> >> Convert the color's YUV and invert the Y. >> > >> > Possibly better: keep the hue and saturation and recalculate luminance >> > to preserve the relative contrast to background color. >> >> Is there a name for that or more detailed description I could follow? > > Same old: https://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef Thanks! I'll have a look. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-25 18:24 ` Yuri Khan 2020-12-25 18:29 ` Tomas Hlavaty @ 2020-12-25 20:25 ` Drew Adams 2020-12-25 21:59 ` Tomas Hlavaty 1 sibling, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-25 20:25 UTC (permalink / raw) To: Yuri Khan, Stefan Monnier; +Cc: Tomas Hlavaty, Emacs developers > > > Do you have suggestion for automatically computing "it's not too hard" > > > color mapping for "inverse video" "pure" text? > > > > Convert the color's YUV and invert the Y. > > Possibly better: keep the hue and saturation and recalculate luminance > to preserve the relative contrast to background color. There are lots of ways to "invert" or complement a color. I just use RGB complementing - good enough for most purposes for Emacs foregrounds and backgrounds. Function `color-complement' in color.el does that. So does `hexrgb-complement' in hexrgb.el. Or I use `hexrgb-hue-complement', `hexrgb-saturation-complement', or `hexrgb-value-complement' If I just want to complement one of those components. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-25 20:25 ` Drew Adams @ 2020-12-25 21:59 ` Tomas Hlavaty 0 siblings, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-25 21:59 UTC (permalink / raw) To: Emacs developers On Fri 25 Dec 2020 at 12:25, Drew Adams <drew.adams@oracle.com> wrote: >> > > Do you have suggestion for automatically computing "it's not too hard" >> > > color mapping for "inverse video" "pure" text? >> > >> > Convert the color's YUV and invert the Y. >> >> Possibly better: keep the hue and saturation and recalculate luminance >> to preserve the relative contrast to background color. > > There are lots of ways to "invert" or complement a color. > > I just use RGB complementing - good enough for most > purposes for Emacs foregrounds and backgrounds. Function > `color-complement' in color.el does that. So does > `hexrgb-complement' in hexrgb.el. > > Or I use `hexrgb-hue-complement', > `hexrgb-saturation-complement', or `hexrgb-value-complement' > If I just want to complement one of those components. Brilliant, it's already in Emacs, thank you! ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-25 18:14 ` Stefan Monnier 2020-12-25 18:24 ` Yuri Khan @ 2020-12-25 18:28 ` Tomas Hlavaty 1 sibling, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-25 18:28 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel On Fri 25 Dec 2020 at 13:14, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> Do you have suggestion for automatically computing "it's not too >> hard" color mapping for "inverse video" "pure" text? > > Convert the color's YUV and invert the Y. Thanks for the suggestion! I'll have a look at that. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 11:03 ` Gregory Heytings via Emacs development discussions. 2020-12-22 13:22 ` Daniel Martín via "Emacs development discussions. @ 2020-12-22 16:06 ` Eli Zaretskii 2020-12-22 17:52 ` Arthur Miller 1 sibling, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 16:06 UTC (permalink / raw) To: Gregory Heytings; +Cc: rms, emacs-devel > Date: Tue, 22 Dec 2020 11:03:04 +0000 > Cc: emacs-devel@gnu.org > From: Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org> > > > I've been trying for more than 10 years to urge people to work toward > > giving Emacs the document capabilities of a word processor, but I have > > not convinced people to do this work. > > What do you mean by this? I'm probably biased, but I don't see what > important "capability of a word processor" is lacking in Emacs. The WYSIWYG part is missing. See the etc/TODO entry about that for a pointer to a discussion about this. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 16:06 ` Eli Zaretskii @ 2020-12-22 17:52 ` Arthur Miller 2020-12-22 18:07 ` Eli Zaretskii ` (3 more replies) 0 siblings, 4 replies; 384+ messages in thread From: Arthur Miller @ 2020-12-22 17:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Gregory Heytings, rms, emacs-devel [-- Attachment #1: Type: text/plain, Size: 3616 bytes --] Eli Zaretskii <eliz@gnu.org> writes: >> Date: Tue, 22 Dec 2020 11:03:04 +0000 >> Cc: emacs-devel@gnu.org >> From: Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org> >> >> > I've been trying for more than 10 years to urge people to work toward >> > giving Emacs the document capabilities of a word processor, but I have >> > not convinced people to do this work. >> What do you mean by this? I'm probably biased, but I don't see what >> important "capability of a word processor" is lacking in Emacs. Personally I think Emacs is half-wysiwyg, or more then half by now. I think there are almost all tools needed to implement a word processor a lá Word already in Emacs; I think there is just some minor details needed; like renderer that can draw efficient representation of a page below a buffer text (a rectangle) and to tie the text editing stuff to pixels rather then columns. I was experimenting with modelling a page in Emacs in context of some other discussion, and that was what I found a tad bit awkward. But I am bad at Elisp, and what Emacs already has, so hopefully Eli will step in and say: "we already have this." To explain myself: A word processor usually has some representation of page in paper format. We can modell a page easily as a region; but it would take work to implement text processing functions to work with "pages" (insert, delete etc). It is not hard part, it is just labourous. Problem is when presenting an empty page to the user to work with in Emacs windows. There is need to draw some kind of rectangle representing page and user would type in text above it. Emacs renderer has svg which can render rectangles fast, but can it render below the buffer text? If it can then you have everythign needed. I don't know how to do it though. It is also a bit awkward to work with window-text-pixel-size and window-lines-pixel-dimensions because they need a text to being able to calculate something. When buffer is empty, there is nothing to calculate. There is need to tell Emacs: "I wish a buffer of this pixel width and height". In some way. That is what I have seen as a problem, but it is maybe possible, I am just not aware of funcionality I can use. I have made a small demo, just roughly modelling a page. To overcome the need for content in buffer in order to display something, the idea was to insert "filler-spaces" so I could have something for renderer to display. I ment to see if I can implement same behaviour as Emacs does for invisible text: to restrict cursor motion into filler-spaces. But I never come to that part. The idea was also to model columns, headers, footers etc just regions in a buffer and to adjust insertion/deletion routines for "page-mode" so cursor movement, and all the other editing would look like in a word processor. For example deleteion would delete a character but insert a filler-character, insertion would insert a character but delete a filler-character and so on. I think it is possible, it is just lots of labour I don't have time for tht myself. For illustration purpose I have attached the demo I worked on if anyone would like to look at it, maybe continue or maybe just get an idea how to implement it more efficiently. Paper size database has to be evaluated forst, then page.el. It was just a small test I never got back to, so take it just as a small illustration. Demo is font dependent so with of the rendered page will depend on what font Emacs uses to calculate (whatever is default). On my machine it is Anonymous Pro. [-- Attachment #2: page.el --] [-- Type: text/plain, Size: 6605 bytes --] ;;; page.el --- -*- lexical-binding: t; -*- ;; Copyright (C) 2020 Arthur Miller ;; Author: Arthur Miller <arthur.miller@live.com> ;; Keywords: ;; This program 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 of the License, or ;; (at your option) any later version. ;; This program 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 <https://www.gnu.org/licenses/>. ;;; Commentary: ;; ;; documnet is just a plain buffer with bunch of local variables ;; ;; page, footer, header and clientarea are ranges between points in the ;; buffer ;; (bopp) (eopp) (bohp) (eohp) (bocp) (eocp) <- similar as (bobp) (eobp) ;; ;; currently footer and header are global for all pages; it would be easy to ;; make them page-unique; just not done currently ;; ;;; Code: (require 'svg) (require 'paper-size-iso) (defface fill-face '((t :foreground "white" :background "white" :box "white" :height 100)) "Default face for document background" :group 'doc) (defface page-break-face '((t :foreground "grey" :background "grey" :box "grey")) "Default face for page breaks" :group 'doc) (defun doc-page-break (doc) (let ((svg) (w) (h)) (with-current-buffer (get-buffer doc) (unless pagebreak-svg (setq w page-pixel-width h (window-font-height nil 'fill-face)) (message "W: %s H: %s" w h) (setq svg (svg-create w h)) (svg-rectangle svg 0 0 w h :fill "grey") (setq pagebreak-svg (svg-image svg :ascent 'center))) pagebreak-svg))) (defun doc-new (&optional title) (interactive) (unless title (setq title "New Document")) (let ((doc (generate-new-buffer title))) (with-current-buffer (get-buffer-create doc) (setq screen-res 96 print-res 300 format 'A4 orientation 'portrait pages 1 current-page 0 page-rows 0 page-cols 0 header nil footer nil document (current-buffer) pagebreak-svg nil real-pixel-width 0 page-pixel-width 0 page-pixel-height 0) (make-local-variable 'document) (make-local-variable 'title) (make-local-variable 'screen-res) (make-local-variable 'print-res) (make-local-variable 'format) (make-local-variable 'orientation) (make-local-variable 'pages) (make-local-variable 'current-page) (make-local-variable 'page-pixel-width) (make-local-variable 'page-pixel-height) (make-local-variable 'page-rows) (make-local-variable 'page-cols) (make-local-variable 'real-pixel-width) (make-local-variable 'header) (make-local-variable 'footer) (make-local-variable 'pagebreak-svg) (let ((dims (paper-size-iso-in-to-pixels format screen-res))) (setq page-pixel-width (car dims)) (setq page-pixel-height (cdr dims)))) (switch-to-buffer doc) (doc-insert-page doc (point-min)) document)) (defun doc-append-page () "Append a new page at the end" (interactive) (with-current-buffer (buffer-name) (doc-insert-page (buffer-name) (point-max)))) (defun doc-insert-pagebreak (buffer point) (with-current-buffer buffer (goto-char point) (setq real-pixel-width (car (window-text-pixel-size nil (beginning-of-line) (end-of-line)))) (insert ?\n) ;; (insert ?\^L) ;; (set-text-properties (line-beginning-position) (line-end-position) ;; `(face nil display ,(doc-page-break buffer))) ;; (newline) )) (defun doc-insert-footer (buffer point) (save-excursion (with-current-buffer buffer (goto-char point) (insert (buffer-substring (car footer) (cdr footer)))))) (defun doc-insert-header (buffer point) (save-excursion (with-current-buffer buffer (goto-char point) (insert (buffer-substring (car header) (cdr header)))))) (defun doc-insert-page (buffer point) "Insert page at point." (with-current-buffer buffer (hl-line-mode -1) (auto-fill-mode -1) (goto-char point) ;; Emacs needs a live window to calculate pixel sizes ;; so we have to calculate stuff when first page is shown (if (= 0 current-page) (let* ((w 0) (h 0) (space-width) (space-height) (d) (font-width (window-font-width nil 'fill-face)) (font-height (window-font-height nil 'fill-face))) (insert ?\s) (set-text-properties point (point-max) '(face fill-face)) (setq space-width (car (window-text-pixel-size nil (beginning-of-line) (end-of-line)))) (setq space-height (cdr (window-text-pixel-size nil (beginning-of-line) (end-of-line)))) (setq cols (truncate (fround (/ page-pixel-width font-width)))) (setq rows (truncate (fround (/ page-pixel-height font-height)))) (setq cols (+ cols (truncate (/ 158 font-width)))) ;; some nasty magick here (delete-backward-char 1) (setq page-cols cols page-rows rows) (while (< h rows) (self-insert-command cols ?\s) (setq h (+ h 1)) (newline))) (progn ;; we already have page dimensions (doc-insert-pagebreak buffer (point)) (setq point (point)) (dotimes (i page-rows) (self-insert-command page-cols ?\s) (newline)))) (set-text-properties point (point-max) '(face fill-face)) (setq current-page (+ current-page 1)) ;;(setq pages (append pages (list point (- (point-max) 1)))) )) (defun buffer-document (&optional buffer) (unless buffer (setq buffer (buffer-name))) (with-current-buffer (get-buffer buffer) document)) (defun doc-set-footer (begin end) "Set current region as footer." (interactive "r") (with-current-buffer (buffer-document) (setq footer (cons begin end)))) (defun doc-set-header (begin end) "Set current region as header." (interactive "r") (with-current-buffer (buffer-document) (setq header (cons begin end)))) (provide 'page) ;;; page.el ends here [-- Attachment #3: paper-size-iso.el --] [-- Type: text/plain, Size: 7136 bytes --] ;;; paper-size-iso-us.el --- -*- lexical-binding: t; -*- ;; This program 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 of the License, or ;; (at your option) any later version. ;; This program 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 <https://www.gnu.org/licenses/>. ;;; Commentary: ;; ;;; References: ;; http://www.printernational.org/iso-paper-sizes.php ;; https://papersizes.io/a/ ;; https://en.wikipedia.org/wiki/Pixel_density ;; https://blog.gimm.io/difference-between-pixel-px-and-point-pt-font-sizes-in-email-signatures/ ;; https://honeywellaidc.force.com/supportppr/s/article/How-to-convert-inches-in-dots ;; https://www.shutterstock.com/blog/inches-to-pixels-resize-image-quality ;; https://www.shutterstock.com/blog/ppi-vs-dpi-resolution-guidex ;; https://www.pixelsconverter.com/ (defvar paper-size-iso '(;; Size Width x Height(mm) Width x Height(in) (4A0 . [1682 2378 66.2 93.6 ]) (2A0 . [1189 1682 46.8 66.2 ]) (A0 . [841 1189 33.1 46.8 ]) (A1 . [594 841 23.4 33.1 ]) (A2 . [420 594 16.5 23.4 ]) (A3 . [297 420 11.7 16.5 ]) (A4 . [210 297 8.3 11.7 ]) (A5 . [148 210 5.8 8.3 ]) (A6 . [105 148 4.1 5.8 ]) (A7 . [74 105 2.9 4.1 ]) (A8 . [52 74 2.0 2.9 ]) (A9 . [37 52 1.5 2.0 ]) (A10 . [26 37 1.0 1.5 ]) (A11 . [18 26 0.7 1 ]) (A12 . [13 18 0.5 0.7 ]) (A13 . [9 13 0.4 0.5 ]) (2A0 . [1189 1682 46.8 66.2 ]) (4A0 . [1682 2378 66.2 93.6 ]) (A0+ . [914 1292 36 50.9 ]) (A1+ . [609 914 24 36 ]) (A3+ . [329 483 13 19 ]) (A2-extra . [445 619 17.51 24.3 ]) (A3-extra . [322 445 12.67 17.51]) (A3-Super . [305 508 12 20 ]) (Super-A3 . [305 487 12 19.17]) (A4-extra . [235 322 9.25 12.67]) (A4-Super . [229 322 9.25 12.67]) (Super-A4 . [227 356 8.93 14.01]) (A4-Long . [210 348 8.26 13.7 ]) (A5-extra . [173 235 8.26 9.25 ]) (SO-B5-extra . [202 276 7.95 10.86]) (B0 . [1000 1414 33.37 55.67]) (B1 . [707 1000 27.84 39.37]) (B2 . [500 707 19.69 27.84]) (B3 . [353 500 13.9 19.69]) (B4 . [250 352 9.84 13.9 ]) (B5 . [176 250 6.93 9.84 ]) (B6 . [125 176 4.92 6.93 ]) (B7 . [88 125 3.47 4.92 ]) (B8 . [62 88 2.44 3.47 ]) (B9 . [44 62 1.73 2.44 ]) (B10 . [31 44 1.22 1.73 ]) (B11 . [22 31 0.9 1.2 ]) (B12 . [15 22 0.6 0.9 ]) (B13 . [11 15 0.4 0.6 ]) (B0+ . [1118 1580 44 62.2 ]) (B1+ . [720 1020 28.3 40.2 ]) (B2+ . [520 720 20.5 28.3 ]) (C0 . [917 1297 36.12 51.6 ]) (C1 . [648 917 25.50 36.12]) (C2 . [458 648 18 25.50]) (C3 . [324 458 12.75 18 ]) (C4 . [229 324 9 12.75]) (C5 . [162 229 6.38 9 ]) (C6 . [114 162 4.5 6.38 ]) (C7 . [81 114 3.19 4.5 ]) (C8 . [57 81 2.2 3.2 ]) (C9 . [40 57 1.6 2.2 ]) (C10 . [28 40 1.1 1.6 ]) (C6/C5 . [229 114 9 4.5 ]) (C7/C6 . [81 162 3.19 6.38 ]) (DL . [110 220 4.32 8.69 ]) (E4 . [400 280 15.7 11 ]) )) (defun paper-size-dimensions (format) "Return dimensions in inch for given FORMAT as specified in ISO standard for paper sizes." (cdr (assoc format paper-size-iso))) (defun paper-size-iso-mm-to-pixels (format resolution) (let* ((dims (paper-size-dimensions format)) (width (aref dims 0)) (height (aref dims 1))) (paper-size-pixels width height 'mm resolution))) (defun paper-size-iso-in-to-pixels (format resolution) (let* ((dims (paper-size-dimensions format)) (width (aref dims 2)) (height (aref dims 3))) (paper-size-pixels width height 'in resolution))) (defun paper-size-pixels (width height unit resolution) "Return size in pixels from width and height. UNIT is unit of dimension measurement, either millimmeter or inches. For millimeter pass 'mm, for inches pass 'in. Resolution is number of either pixels per inches for the screen, or dots per inches for printers. Resolution-unit is either 'ppi for the screen or 'dpi for printers" (when (equal unit 'mm) (setq width (/ width 25.4)) (setq height (/ height 25.4))) (setq width (fround (* width resolution))) (setq height (fround (* height resolution))) (cons (ftruncate width) (ftruncate height))) (provide 'paper-size-iso) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 17:52 ` Arthur Miller @ 2020-12-22 18:07 ` Eli Zaretskii 2020-12-22 18:32 ` Arthur Miller 2020-12-22 19:04 ` Jean Louis ` (2 subsequent siblings) 3 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 18:07 UTC (permalink / raw) To: Arthur Miller; +Cc: ghe, rms, emacs-devel > From: Arthur Miller <arthur.miller@live.com> > Cc: Gregory Heytings <ghe@sdf.org>, rms@gnu.org, emacs-devel@gnu.org > Date: Tue, 22 Dec 2020 18:52:48 +0100 > > Personally I think Emacs is half-wysiwyg, or more then half by now. I > think there are almost all tools needed to implement a word processor a > lá Word already in Emacs; I think there is just some minor details > needed; like renderer that can draw efficient representation of a page > below a buffer text (a rectangle) and to tie the text editing stuff to > pixels rather then columns. I was experimenting with modelling a page in > Emacs in context of some other discussion, and that was what I found a > tad bit awkward. > > But I am bad at Elisp, and what Emacs already has, so hopefully Eli will > step in and say: "we already have this." I think most of the necessary infrastructure exists indeed. However, building a WYSIWYG word processor on top of that is not a trivial job, although probably not rocket science, either. I'd start from enriched.el and took it from there. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 18:07 ` Eli Zaretskii @ 2020-12-22 18:32 ` Arthur Miller 0 siblings, 0 replies; 384+ messages in thread From: Arthur Miller @ 2020-12-22 18:32 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ghe, rms, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Arthur Miller <arthur.miller@live.com> >> Cc: Gregory Heytings <ghe@sdf.org>, rms@gnu.org, emacs-devel@gnu.org >> Date: Tue, 22 Dec 2020 18:52:48 +0100 >> >> Personally I think Emacs is half-wysiwyg, or more then half by now. I >> think there are almost all tools needed to implement a word processor a >> lá Word already in Emacs; I think there is just some minor details >> needed; like renderer that can draw efficient representation of a page >> below a buffer text (a rectangle) and to tie the text editing stuff to >> pixels rather then columns. I was experimenting with modelling a page in >> Emacs in context of some other discussion, and that was what I found a >> tad bit awkward. >> >> But I am bad at Elisp, and what Emacs already has, so hopefully Eli will >> step in and say: "we already have this." > > I think most of the necessary infrastructure exists indeed. However, > building a WYSIWYG word processor on top of that is not a trivial job, > although probably not rocket science, either. I'd start from > enriched.el and took it from there. Yeah, I know; that is why I said it is not hard, but labourous. Yes I was thinking of enriched mode, and some parts of org. Rougier has made a very nice demo with svg-toolbars; those things could be put together to create a kind of wysyvig where people can mark text, set it to italics/bold etc. Justifying text could be done too. But without being able to render a page representation in a buffer, it wouldn't be feel of a word processor. Maybe the feel is not that important; maybe it is enough to just render two lines where page width and page height are, so user can adjust text manually when he/she sees it go out of the "page range". Printed preview could be achieved with svg renderer just rendering buffer into an image of given page width and height. Would need to take printer characteristics into account, but some basic print preview, not pixel perfect could be achieved relatively easy. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 17:52 ` Arthur Miller 2020-12-22 18:07 ` Eli Zaretskii @ 2020-12-22 19:04 ` Jean Louis 2020-12-22 19:24 ` Arthur Miller 2020-12-23 4:21 ` Richard Stallman 2020-12-23 12:45 ` Jean Louis 3 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-22 19:04 UTC (permalink / raw) To: Arthur Miller; +Cc: Gregory Heytings, Eli Zaretskii, rms, emacs-devel Maybe you wanted this: as white-white does not show anything. (defface fill-face '((t :foreground "black" :background "white" :box "white" :height 100)) "Default face for document background" :group 'doc) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 19:04 ` Jean Louis @ 2020-12-22 19:24 ` Arthur Miller 0 siblings, 0 replies; 384+ messages in thread From: Arthur Miller @ 2020-12-22 19:24 UTC (permalink / raw) To: Jean Louis; +Cc: Gregory Heytings, Eli Zaretskii, rms, emacs-devel Jean Louis <bugs@gnu.support> writes: > Maybe you wanted this: > > as white-white does not show anything. ? It was just a test to modell a page .... it's not something you can use. You can just create a document and insert a page. Nothing else is implemented. But if you are interested to work on it, enjoy it :-). ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 17:52 ` Arthur Miller 2020-12-22 18:07 ` Eli Zaretskii 2020-12-22 19:04 ` Jean Louis @ 2020-12-23 4:21 ` Richard Stallman 2020-12-23 11:21 ` Arthur Miller 2020-12-23 15:42 ` Tomas Hlavaty 2020-12-23 12:45 ` Jean Louis 3 siblings, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-23 4:21 UTC (permalink / raw) To: Arthur Miller; +Cc: ghe, eliz, 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. ]]] > There is need to tell Emacs: "I wish a buffer of this pixel > width and height". LibreOffice doesn't ask that question, and it lets you start editing text and knows what size to use by default for the page. I suggest looking at what it does. One interesting question is how to make text flow between pages. In Emacs, a page boundary is a ^L character (formfeed). To make text flow between pages would require deleting and inserting ^L characters as needed. Is that workable? (I remember when ^L made the line printer skip to the next page.) > For example deleteion would delete > a character but insert a filler-character, insertion would insert a > character but delete a filler-character and so on. I don't follow that. Could you give a concrete example and say what these fillers would do, what benefit would result. I think they would be a pain in the neck for all the editing commands. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 4:21 ` Richard Stallman @ 2020-12-23 11:21 ` Arthur Miller 2020-12-23 12:36 ` Christopher Dimech ` (2 more replies) 2020-12-23 15:42 ` Tomas Hlavaty 1 sibling, 3 replies; 384+ messages in thread From: Arthur Miller @ 2020-12-23 11:21 UTC (permalink / raw) To: Richard Stallman; +Cc: ghe, eliz, 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. ]]] > > > There is need to tell Emacs: "I wish a buffer of this pixel > > width and height". > > LibreOffice doesn't ask that question, and it lets you start editing > text and knows what size to use by default for the page. Somewhere under the hood in it's source code it does. :-) I don't think you have understood what I ment there. Maybe I was too flumsy when writing. What I ment is that somewhere in the application code there have to be a database of papersizes, so that application can draw that representation of a page on the screen such as they do in Writer for example and how wide lines will be so it can break lines properly, where user text would start on those line, on the page, when to break to next page etc. One annoyance is also renderer which in Emacs can't draw an "empty buffer". Libre Office draws a white rectangle and some lines around. Emacs can't do that since we can't draw things in layers, at least what I am aware of (Mr. Eli? ). Maybe that itself is not that desirable, and could be a "nice ot have " feature but which can easily be lived without. As a poor man version, one can just draw lines with unicode chars '|' where say width of page ends for visual representation and simply insert ^L styled vid svg image where page ends. > One interesting question is how to make text flow between pages. In > Emacs, a page boundary is a ^L character (formfeed). To make text > flow between pages would require deleting and inserting ^L characters > as needed. Is that workable? I think that would be conceptually trivial, but labourous as now, that is what I tried to say in mail with demo I sent. I had idea the idea to do in that demo, but I never got back to work more on it. Insertion routine would need to know where pages starts and ends. I think a page can be modelled just as a range between two points (a region). There are more details of course; printer margins have to be taken account, headers, footers, client area and what not. But roughly insertion, deletion and other text routines whichever they are, would need to check if text in a page has reached to certain point and if it is to insert ^L and reflow the page(s) as needed. > (I remember when ^L made the line printer skip to the next page.) > > > For example deleteion would delete > > a character but insert a filler-character, insertion would insert a > > character but delete a filler-character and so on. > > I don't follow that. Could you give a concrete example and say > what these fillers would do, what benefit would result. > I think they would be a pain in the neck > for all the editing commands. Yes, they would be pain, but all editing commands would have to be changed anyway. There would be some document mode or wysiwyg mode or whatever which would have to either overwrite or advise insertion, deletion, etc. Those filler spaces was my compensation for how Emacs buffer and renderer works. I had an idea to emulate visually a page as in a wyswyg editor. Emacs can't render an empty buffer of certain size, not what I know. Maybe it is possible to do something with child frames, or fringes or some other trick, I don't know. But it was a compensation, I calculated a number of columns with default font to fill a certain width in pixels. It is a flawed approach, but it was just an experiment. So I insert just white space characters which I call "filler space". The idea was also to use them conceptually like spacers so I can tell the insertion routine to really start from column X and not from first char in line, and to break at column Y and not the last column. I see page as consising of header, client and footer areas which are all just ranges, so it really is just checking some integers; not very hard. I also see those areas start at some margins (printer margins), since printers can't print directly from the edge of the paper. Also insertion deletion would have to take into account they work in a page, header etc, so when character is inserted somewhere in a page, one would have to delete a character at the end of page or rather client area. But that would all be just a hierarchical delegation when it comes to implementation. Also since we are inserting in a buffer, inserting a char in first page could potentially move all chars in a 100 pages long book. That is probably now what we want. We just want to move text on that page. Filler space was ment to be used there as spacer too. Insertion would delete a space at the end of line or client area to make room for user character so not entire Emacs buffer is moved around. I also wanted to see if I can give them similar property as invisible text in Emacs has; I wanted to restrict cursor to move into filler space, but I never got to that part, so I don't know if it is possible. It was just an experiment. If I remember, in demo I posted, one can break page at arbitrary point and insert new ones. But what I noticed is that it was very slow after few pages were added. Also there are other problems, for example most important is how to calculate width of columns to start with? Take a space character and see how many fit into given pixel width? Or some average size? I took space for the experiment, but it is not acceptable approach in general. Maybe it is more effective to not visually model a page, but to just render a line where line ends so user can see text has got out of page width and can reflow things themselves. It could be cheap start at least and probably not so hard to implement. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 11:21 ` Arthur Miller @ 2020-12-23 12:36 ` Christopher Dimech 2020-12-23 15:45 ` Tomas Hlavaty 2020-12-23 15:56 ` Eli Zaretskii 2 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-23 12:36 UTC (permalink / raw) To: Arthur Miller; +Cc: ghe, eliz, Richard Stallman, emacs-devel > Sent: Wednesday, December 23, 2020 at 4:51 PM > From: "Arthur Miller" <arthur.miller@live.com> > To: "Richard Stallman" <rms@gnu.org> > Cc: ghe@sdf.org, eliz@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > 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. ]]] > > > > > There is need to tell Emacs: "I wish a buffer of this pixel > > > width and height". > > > > LibreOffice doesn't ask that question, and it lets you start editing > > text and knows what size to use by default for the page. > Somewhere under the hood in it's source code it does. :-) > > I don't think you have understood what I ment there. Maybe I was too > flumsy when writing. > > What I ment is that somewhere in the application code there have to be a > database of papersizes, so that application can draw that representation > of a page on the screen such as they do in Writer for example and how > wide lines will be so it can break lines properly, where user text would > start on those line, on the page, when to break to next page etc. Texinfo does things that way. > One annoyance is also renderer which in Emacs can't draw an "empty > buffer". Libre Office draws a white rectangle and some lines > around. Emacs can't do that since we can't draw things in layers, at > least what I am aware of (Mr. Eli? ). > > Maybe that itself is not that desirable, and could be a "nice ot have " > feature but which can easily be lived without. As a poor man version, > one can just draw lines with unicode chars '|' where say width of page > ends for visual representation and simply insert ^L styled vid svg image > where page ends. > > > One interesting question is how to make text flow between pages. In > > Emacs, a page boundary is a ^L character (formfeed). To make text > > flow between pages would require deleting and inserting ^L characters > > as needed. Is that workable? > I think that would be conceptually trivial, but labourous as now, that > is what I tried to say in mail with demo I sent. I had idea the idea to > do in that demo, but I never got back to work more on it. > > Insertion routine would need to know where pages starts and ends. I > think a page can be modelled just as a range between two points (a > region). There are more details of course; printer margins have to be > taken account, headers, footers, client area and what not. > > But roughly insertion, deletion and other text routines whichever they > are, would need to check if text in a page has reached to certain point > and if it is to insert ^L and reflow the page(s) as needed. > > > > (I remember when ^L made the line printer skip to the next page.) > > > > > For example deleteion would delete > > > a character but insert a filler-character, insertion would insert a > > > character but delete a filler-character and so on. > > > > I don't follow that. Could you give a concrete example and say > > what these fillers would do, what benefit would result. > > I think they would be a pain in the neck > > for all the editing commands. > Yes, they would be pain, but all editing commands would have to be > changed anyway. There would be some document mode or wysiwyg mode or > whatever which would have to either overwrite or advise insertion, > deletion, etc. > > Those filler spaces was my compensation for how Emacs buffer and renderer > works. > > I had an idea to emulate visually a page as in a wyswyg editor. Emacs > can't render an empty buffer of certain size, not what I know. Maybe it > is possible to do something with child frames, or fringes or some other > trick, I don't know. But it was a compensation, I calculated a number of > columns with default font to fill a certain width in pixels. It is a > flawed approach, but it was just an experiment. So I insert just white > space characters which I call "filler space". > > The idea was also to use them conceptually like spacers so I can tell > the insertion routine to really start from column X and not from first > char in line, and to break at column Y and not the last column. > > I see page as consising of header, client and footer areas which are all > just ranges, so it really is just checking some integers; not very > hard. I also see those areas start at some margins (printer margins), > since printers can't print directly from the edge of the paper. > > Also insertion deletion would have to take into account they work in a > page, header etc, so when character is inserted somewhere in a page, one > would have to delete a character at the end of page or rather client > area. But that would all be just a hierarchical delegation when it comes > to implementation. > > Also since we are inserting in a buffer, inserting a char in first page > could potentially move all chars in a 100 pages long book. That is > probably now what we want. We just want to move text on that page. Filler > space was ment to be used there as spacer too. Insertion would delete a > space at the end of line or client area to make room for user character > so not entire Emacs buffer is moved around. > > I also wanted to see if I can give them similar property as invisible > text in Emacs has; I wanted to restrict cursor to move into filler > space, but I never got to that part, so I don't know if it is possible. > > It was just an experiment. If I remember, in demo I posted, one can > break page at arbitrary point and insert new ones. But what I noticed is > that it was very slow after few pages were added. Also there are other > problems, for example most important is how to calculate width of > columns to start with? Take a space character and see how many fit into > given pixel width? Or some average size? I took space for the > experiment, but it is not acceptable approach in general. > > Maybe it is more effective to not visually model a page, but to just > render a line where line ends so user can see text has got out of page > width and can reflow things themselves. It could be cheap start at least > and probably not so hard to implement. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 11:21 ` Arthur Miller 2020-12-23 12:36 ` Christopher Dimech @ 2020-12-23 15:45 ` Tomas Hlavaty 2020-12-23 15:56 ` Eli Zaretskii 2 siblings, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-23 15:45 UTC (permalink / raw) To: emacs-devel On Wed 23 Dec 2020 at 12:21, Arthur Miller <arthur.miller@live.com> wrote: > database of papersizes Emacs already has that. This is what I use in emacs-pdf: (defun pdf-page-dimensions () "Return values of page width and height depending on ps-paper-type and ps-landscape-mode." (let ((x (cdr (assq ps-paper-type ps-page-dimensions-database)))) (if ps-landscape-mode (values (cadr x) (car x)) (values (car x) (cadr x))))) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 11:21 ` Arthur Miller 2020-12-23 12:36 ` Christopher Dimech 2020-12-23 15:45 ` Tomas Hlavaty @ 2020-12-23 15:56 ` Eli Zaretskii 2020-12-23 16:05 ` Jean Louis 2020-12-24 4:40 ` Sv: " arthur miller 2 siblings, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-23 15:56 UTC (permalink / raw) To: Arthur Miller; +Cc: ghe, rms, emacs-devel > From: Arthur Miller <arthur.miller@live.com> > Cc: eliz@gnu.org, ghe@sdf.org, emacs-devel@gnu.org > Date: Wed, 23 Dec 2020 12:21:12 +0100 > > One annoyance is also renderer which in Emacs can't draw an "empty > buffer". Libre Office draws a white rectangle and some lines > around. Emacs can't do that since we can't draw things in layers, at > least what I am aware of (Mr. Eli? ). I don't think I understand what you are saying, because you didn't elaborate about the "white rectangle and some lines around" drawn by LibreOffice. Emacs _is_ capable of displaying an empty buffer, you can easily see that for you self if you do "C-x b foobar RET". And we also have some decorations around the window and the frame, regardless of whether or not there's text displayed there. So I think the important question here is: what would we like/need to display "around" an empty text area? Armed with that knowledge, we could discuss how to do that in Emacs (if we decide it's important enough). I also think that it is not wise to talk about page decorations before we actually have a WYSIWYG editor that can display formatted text. The decorations are secondary features, IMO, the perceived difficulty in providing them shouldn't stop us from implementing "the meat" of any word processor. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 15:56 ` Eli Zaretskii @ 2020-12-23 16:05 ` Jean Louis 2020-12-24 4:40 ` Sv: " arthur miller 1 sibling, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-23 16:05 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ghe, rms, Arthur Miller, emacs-devel * Eli Zaretskii <eliz@gnu.org> [2020-12-23 18:57]: > I also think that it is not wise to talk about page decorations before > we actually have a WYSIWYG editor that can display formatted text. > The decorations are secondary features, IMO, the perceived difficulty > in providing them shouldn't stop us from implementing "the meat" of > any word processor. Exactly, the next 2021 year is good one to get some WYSIWYG features and word processing in Emacs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Sv: Emacs Survey: Toolbars 2020-12-23 15:56 ` Eli Zaretskii 2020-12-23 16:05 ` Jean Louis @ 2020-12-24 4:40 ` arthur miller 2020-12-24 14:23 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: arthur miller @ 2020-12-24 4:40 UTC (permalink / raw) To: Eli Zaretskii; +Cc: ghe@sdf.org, rms@gnu.org, emacs-devel@gnu.org [-- Attachment #1: Type: text/plain, Size: 4723 bytes --] You probably don't, because I certainly wasn't talking about decorations 🙂. Why would I do talk about decorations? > Emacs _is_ capable of displaying an empty buffer, you > can easily see that for you self if you do "C-x b foobar RET". Yes, an Emacs buffers of course. I have seen it, 20 years now 🙂. I don't know if I expressed myself badly, I don't remember what I said and I am often too fast to type; but I was talking about visual feedback to user: so called what-you-see part in wysiwyg. When I say white rectangle, or at least some lines or some notification to user when he/she is typing outside buffer, it is not about "decorations" it is about visual feedback what is going on. Otherwise it is not much of a wysiwyg, isn't it? > So I think the important question here is: what would we like/need to > display "around" an empty text area? Armed with that knowledge, we > could discuss how to do that in Emacs (if we decide it's important > enough). Yes, I agree; and sure that feedback can be minimal, for example, Emacs could simply prevent user from typing after certain width, and insert just ^L after certain height, but some feedback is needed. Emacs could just draw a line on the right edge with pipe characters as I mentioned before; but having a nice background representation of a page in form of a rectangle and some support lines to show where margins are would be much nicer and give more of a wysiwyg feel. > And we also have some decorations around the window and the frame, regardless > of whether or not there's text displayed there. Yes I know of course, but these are around frames and windows. Imagine an A4 page. It would be nice if user have some visual cue where edges of the page start and end and so on. Windows and frames can be resized, and they are buffer specific. A document can have many pages. Users might also wish to resize window to show just part of the page maybe? I am not sure how would you tie a window to page, but I am not so introduced to Emacs internals either. I had thoughts to use a child frame to display a page and show just a part of a buffer in it, or to use a buffer per page, but I don't think it is good idea. Maybe you see some other possibility. > I also think that it is not wise to talk about page decorations before > we actually have a WYSIWYG editor that can display formatted text. You can already display formatted text. You have implemented it! Emacs draws italics, and bold, and superscripts, different fonts and what not. It just has to be connected to a button! N. Rougier made awesome little svg library for toolbars and now he posted little svg-icon library to download icons. It is justto create some nice svg buttons and toolbars and connect it to those functions for text formatting. Of course decorations are secondary, but visual feedback in a wysiwyg tool shouldn't be secondary; it is not about decorations, it is about giving user feel and visual help to manipulate objects on the screen. At least that was my thought 🙂. Merry Christmass to all! <3 ________________________________ Från: Eli Zaretskii <eliz@gnu.org> Skickat: den 23 december 2020 16:56 Till: Arthur Miller <arthur.miller@live.com> Kopia: rms@gnu.org <rms@gnu.org>; ghe@sdf.org <ghe@sdf.org>; emacs-devel@gnu.org <emacs-devel@gnu.org> Ämne: Re: Emacs Survey: Toolbars > From: Arthur Miller <arthur.miller@live.com> > Cc: eliz@gnu.org, ghe@sdf.org, emacs-devel@gnu.org > Date: Wed, 23 Dec 2020 12:21:12 +0100 > > One annoyance is also renderer which in Emacs can't draw an "empty > buffer". Libre Office draws a white rectangle and some lines > around. Emacs can't do that since we can't draw things in layers, at > least what I am aware of (Mr. Eli? ). I don't think I understand what you are saying, because you didn't elaborate about the "white rectangle and some lines around" drawn by LibreOffice. Emacs _is_ capable of displaying an empty buffer, you can easily see that for you self if you do "C-x b foobar RET". And we also have some decorations around the window and the frame, regardless of whether or not there's text displayed there. So I think the important question here is: what would we like/need to display "around" an empty text area? Armed with that knowledge, we could discuss how to do that in Emacs (if we decide it's important enough). I also think that it is not wise to talk about page decorations before we actually have a WYSIWYG editor that can display formatted text. The decorations are secondary features, IMO, the perceived difficulty in providing them shouldn't stop us from implementing "the meat" of any word processor. [-- Attachment #2: Type: text/html, Size: 13185 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Sv: Emacs Survey: Toolbars 2020-12-24 4:40 ` Sv: " arthur miller @ 2020-12-24 14:23 ` Eli Zaretskii 0 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-24 14:23 UTC (permalink / raw) To: arthur miller; +Cc: ghe, rms, emacs-devel > From: arthur miller <arthur.miller@live.com> > CC: "rms@gnu.org" <rms@gnu.org>, "ghe@sdf.org" <ghe@sdf.org>, > "emacs-devel@gnu.org" <emacs-devel@gnu.org> > Date: Thu, 24 Dec 2020 04:40:23 +0000 > > > I also think that it is not wise to talk about page decorations before > > we actually have a WYSIWYG editor that can display formatted text. > > You can already display formatted text. You have implemented it! Emacs draws italics, and bold, and > superscripts, > different fonts and what not. It just has to be connected to a button! N. Rougier made awesome little svg > library for > toolbars and now he posted little svg-icon library to download icons. It is justto create some nice svg buttons > and toolbars and connect it to those functions for text formatting. Those things we "just" have to do, must be done, otherwise we cannot claim to be anywhere near a word processor, because it is unimaginable in a word processor to apply faces via Edit->Text Properties, let alone via lower-level commands. And the next thing to do is the ability to save all that face information to a disk file, so that the next time you visit the file you see the same faces. Enriched mode does that, but it needs more love. Next after that is pixel-level indentation and filling/justification, so that we could use variable-pitch fonts. Next are the printing facilities, where I hope we will once and for all solve the problem of printing non-ASCII, non-Latin-1 characters. When we have done all that, we will have a significant portion of a word processor, IMO. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 4:21 ` Richard Stallman 2020-12-23 11:21 ` Arthur Miller @ 2020-12-23 15:42 ` Tomas Hlavaty 1 sibling, 0 replies; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-23 15:42 UTC (permalink / raw) To: emacs-devel On Tue 22 Dec 2020 at 23:21, Richard Stallman <rms@gnu.org> wrote: > One interesting question is how to make text flow between pages. In > Emacs, a page boundary is a ^L character (formfeed). To make text > flow between pages would require deleting and inserting ^L characters > as needed. Is that workable? > > (I remember when ^L made the line printer skip to the next page.) In emacs-pdf, I respect ^L and start a new page. Additionally, a new pdf page is automatically started when the page gets full (but this is not indicated in the original text buffer). It could probably be feasible to indicate the additional computed page break in the original text buffer but then there should be a concept of user-entered page break (e.g. ^L) and computed page break (how to indicated that?). Another problem with pages is that it requires user configuration (like emacs has for postcript printing which could be reused) and whole complexity of fonts and layout. So far emacs-pdf handles ascii monospace monochrome buffers only thus in a sense it is already WYSIWYG. I get the same thing on the paper as on the screen (minus headers and footers). Should headers and footers be also displayed in the original text buffer? Should they be editable? How should it be handled at the low level, e.g. as a text property? Another problem is inserting computed values, e.g. current page number or total number of pages, which is often used in headers and footers. This means that the whole rendering becomes a fixed-point computation. In emacs-pdf, I simply process the whole document twice and assume that the layout would not change further anymore but that is not a general solution. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 17:52 ` Arthur Miller ` (2 preceding siblings ...) 2020-12-23 4:21 ` Richard Stallman @ 2020-12-23 12:45 ` Jean Louis 2020-12-23 13:09 ` Christopher Dimech 3 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-23 12:45 UTC (permalink / raw) To: Arthur Miller; +Cc: emacs-devel * Arthur Miller <arthur.miller@live.com> [2020-12-22 20:53]: > Eli Zaretskii <eliz@gnu.org> writes: > > >> Date: Tue, 22 Dec 2020 11:03:04 +0000 > >> Cc: emacs-devel@gnu.org > >> From: Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org> > >> > >> > I've been trying for more than 10 years to urge people to work toward > >> > giving Emacs the document capabilities of a word processor, but I have > >> > not convinced people to do this work. > >> What do you mean by this? I'm probably biased, but I don't see what > >> important "capability of a word processor" is lacking in Emacs. > > Personally I think Emacs is half-wysiwyg, or more then half by now. I can print into PDF or Postscript and will get a different font then on the screen. Good for me as I am fine with my printing, yet it does not reach What You See Is What You Get paradigm. If I would record screenshot, that would be only case to get what I see. In the Org mode there is Title and Author keywords, so that is far far from getting what you are seeing. If we reach what LyX document processor has reached, the paradigm of WYSIWYM or What You See Is What You Mean that would be already enough. That could be reached already now if basic fonts such as Courier, Roman, Sans Serif, can be mixed and they can be. See: https://en.wikipedia.org/wiki/WYSIWYM ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 12:45 ` Jean Louis @ 2020-12-23 13:09 ` Christopher Dimech 2020-12-23 13:44 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-23 13:09 UTC (permalink / raw) To: Jean Louis; +Cc: Arthur Miller, emacs-devel I have used Lyx , but turned to Emacs as it was better to configure. The WYSIWYG is good though. > Sent: Wednesday, December 23, 2020 at 6:15 PM > From: "Jean Louis" <bugs@gnu.support> > To: "Arthur Miller" <arthur.miller@live.com> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > * Arthur Miller <arthur.miller@live.com> [2020-12-22 20:53]: > > Eli Zaretskii <eliz@gnu.org> writes: > > > > >> Date: Tue, 22 Dec 2020 11:03:04 +0000 > > >> Cc: emacs-devel@gnu.org > > >> From: Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org> > > >> > > >> > I've been trying for more than 10 years to urge people to work toward > > >> > giving Emacs the document capabilities of a word processor, but I have > > >> > not convinced people to do this work. > > >> What do you mean by this? I'm probably biased, but I don't see what > > >> important "capability of a word processor" is lacking in Emacs. > > > > Personally I think Emacs is half-wysiwyg, or more then half by now. > > I can print into PDF or Postscript and will get a different font then > on the screen. Good for me as I am fine with my printing, yet it does > not reach What You See Is What You Get paradigm. If I would record > screenshot, that would be only case to get what I see. > > In the Org mode there is Title and Author keywords, so that is far far > from getting what you are seeing. > > If we reach what LyX document processor has reached, the paradigm of > WYSIWYM or What You See Is What You Mean that would be already > enough. That could be reached already now if basic fonts such as > Courier, Roman, Sans Serif, can be mixed and they can > be. > > See: > https://en.wikipedia.org/wiki/WYSIWYM > > > > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 13:09 ` Christopher Dimech @ 2020-12-23 13:44 ` Jean Louis 2020-12-24 5:50 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-23 13:44 UTC (permalink / raw) To: emacs-devel * Christopher Dimech <dimech@gmx.com> [2020-12-23 16:10]: > I have used Lyx , but turned to Emacs as it was better to configure. > The WYSIWYG is good though. Actually LyX is using WYSIWYM paradigm, like What You See Is What You Mean. If I don't want to think much about formatting within Emacs, I will use LyX, it offers me quicker LaTeX and other similar TeX based templates. After a while of work, after months or years, then I have those LaTeX templates anyway on computer, so what I do is just open one LaTeX template, rename it for new purpose, modify the text and insert new text and voilà. My largest problem with LyX is that I have to use X org based keyboard bindings to switch between languages as I often use 2-3 languages. Switching the input method in Emacs is so much more easier with C-\ and setting it up with C-RET-\ I may use Arabic keyboard with some weird hard to find English layout, Emacs helps there. German input method on US layout, Emacs helps, and so on. I just wish other systems would have input methods that well defined. I like vim and vi editors as well, but input methods are missing or I do not know how to set it, so I have to use xmodmap. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-23 13:44 ` Jean Louis @ 2020-12-24 5:50 ` Richard Stallman 2020-12-24 5:57 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-24 5:50 UTC (permalink / raw) To: Jean Louis; +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. ]]] > Actually LyX is using WYSIWYM paradigm, like What You See Is What You > Mean. That is fine for some jobs, but not adequate for writing text to fit in one or two sides of a sheet of paper. For that I have to use LibreOffice -- and I always wish it had the Emacs editing facilities. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-24 5:50 ` Richard Stallman @ 2020-12-24 5:57 ` Christopher Dimech 2020-12-24 6:31 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-24 5:57 UTC (permalink / raw) To: rms; +Cc: Jean Louis, emacs-devel I understand what you mean. Whan I want to print something quick, I also have to turn to LibreOffice. I wrangled that a new major mode could suffice, but I am not an knowledgeable enough to be sure. > Sent: Thursday, December 24, 2020 at 11:20 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Jean Louis" <bugs@gnu.support> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > Actually LyX is using WYSIWYM paradigm, like What You See Is What You > > Mean. > > That is fine for some jobs, but not adequate for writing text to fit > in one or two sides of a sheet of paper. For that I have to use > LibreOffice -- and I always wish it had the Emacs editing facilities. > > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-24 5:57 ` Christopher Dimech @ 2020-12-24 6:31 ` Jean Louis 0 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-24 6:31 UTC (permalink / raw) To: emacs-devel [-- Attachment #1: Type: text/plain, Size: 1498 bytes --] * Christopher Dimech <dimech@gmx.com> [2020-12-24 08:58]: > I understand what you mean. Whan I want to print something quick, > I also have to turn to LibreOffice. I wrangled that a new major mode > could suffice, but I am not an knowledgeable enough to be sure. Really? I left it long ago, I wish I would have some use of Libreoffice, but don't. Everything I do in Emacs. For simple printing of text I use Emacs with these commands below to create PDF files. Then I get those outputs as in attachment. I could make some function and enlarge or make letters smaller or change output fonts and so on. (setq ps-bottom-margin 40) (setq ps-header-offset 20) (setq ps-lpr-command "ps-print.sh") (setq ps-print-footer t) (setq ps-top-margin 100) (setq lpr-command "paps_print.sh") ps-print.sh: #!/bin/bash tmpdir=/home/data1/protected/tmp/muttprint/ mkdir -p $tmpdir cd $tmpdir file=$tmpdir/$(date +'%F-%T-%A') #highlight --syntax=lisp --page-color -O pango | paps --markup --font="Monospace 11" > $file.ps cat > $file.ps #gv $file.ps # paps --font="DejaVu Sans Mono 11" > $file.ps ps2pdf14 $file.ps exec zathura $file.pdf 2> /dev/null & paps_print.sh: #!/bin/bash tmpdir=/home/data1/protected/tmp/muttprint/ mkdir -p $tmpdir cd $tmpdir file=$tmpdir/$(date +'%F-%T-%A') #highlight --syntax=lisp --page-color -O pango | paps --markup --font="Monospace 11" > $file.ps paps > $file.ps #gv $file.ps # paps --font="DejaVu Sans Mono 11" > $file.ps ps2pdf14 $file.ps zathura $file.pdf 2> /dev/null & [-- Attachment #2: 2020-12-24-09:28:16-Thursday.pdf --] [-- Type: application/pdf, Size: 239995 bytes --] [-- Attachment #3: 2020-12-24-09:28:44-Thursday.pdf --] [-- Type: application/pdf, Size: 10747 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 15:33 ` Lars Ingebrigtsen 2020-12-15 17:47 ` Óscar Fuentes 2020-12-15 18:51 ` Jean Louis @ 2020-12-15 20:58 ` Dmitry Gutov 2020-12-15 21:22 ` Christopher Dimech 2 siblings, 1 reply; 384+ messages in thread From: Dmitry Gutov @ 2020-12-15 20:58 UTC (permalink / raw) To: Lars Ingebrigtsen, Óscar Fuentes; +Cc: emacs-devel On 15.12.2020 17:33, Lars Ingebrigtsen wrote: > Óscar Fuentes<ofv@wanadoo.es> writes: > >>> I don't think that's a good argument for having a GUI element that few >>> people like, >> We have no data to support that. > I know you're being funny, but: The only data we have does support that. > I think everyone here can agree that we need both more and better data. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 20:58 ` Dmitry Gutov @ 2020-12-15 21:22 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 21:22 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Óscar Fuentes, Lars Ingebrigtsen, emacs-devel > Sent: Tuesday, December 15, 2020 at 9:58 PM > From: "Dmitry Gutov" <dgutov@yandex.ru> > To: "Lars Ingebrigtsen" <larsi@gnus.org>, "Óscar Fuentes" <ofv@wanadoo.es> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > On 15.12.2020 17:33, Lars Ingebrigtsen wrote: > > Óscar Fuentes<ofv@wanadoo.es> writes: > > > >>> I don't think that's a good argument for having a GUI element that few > >>> people like, > >> We have no data to support that. > > I know you're being funny, but: The only data we have does support that. > > > > I think everyone here can agree that we need both more and better data. Wrong Rationalism. We would be simply be provisioning to a subset of people based on the trends in society. It would not be primarily about software freedom. The focus must on the work we should do, rather that disregarding minority shareholders as done in the corporate world. For instance, catering for users with limitations has almost always been about the few - so almost nobody cares about that. For instance, there is only one face theme that adequately passes International Accessibility Standards - Modus-Themes. Should Modus-Themes be the default face for Emacs? - Absolutely! Christopher ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:17 ` Emacs Survey: Toolbars Eric S Fraga 2020-12-15 14:50 ` Lars Ingebrigtsen @ 2020-12-15 16:12 ` Christopher Dimech 2020-12-16 5:44 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 16:12 UTC (permalink / raw) To: Eric S Fraga; +Cc: emacs-devel > Sent: Tuesday, December 15, 2020 at 3:17 PM > From: "Eric S Fraga" <e.fraga@ucl.ac.uk> > To: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Although I disabled the toolbar when it first appeared (in the dim and > distant past), I think it's a good idea to leave them on by > default. They are easy enough to disable and provide help for the true > neophyte. In fact, learning how to disable the toolbar is probably a > good first exercise in customizing your Emacs! Quite correct. If we really want to modernise emacs, we got to become serious. There is a section of people who do not want graphical elements, and the question was there mainly to appease programmers who want old style customisation (no menu, no scrollbars, etc). Toolbars are there so people who use the mouse can enable frequently used commands using the mouse. If the plan is enhancement, then. 1. Let Emacs enable people to add things to the toolbar for commands, without having to use elisp programming. The survey suggests that those focused on elisp are a minority. > Eric S Fraga via Emacs 28.0.50 & org 9.4 on Debian bullseye/sid > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 16:12 ` Christopher Dimech @ 2020-12-16 5:44 ` Richard Stallman 2020-12-16 15:49 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-16 5:44 UTC (permalink / raw) To: Christopher Dimech; +Cc: emacs-devel, e.fraga [[[ 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. ]]] > 1. Let Emacs enable people to add things to the toolbar for commands, > without having to use elisp programming. The survey suggests that > those focused on elisp are a minority. We have non-Lisp ways of making key bindings -- M-x global-set-key, for instance. If that is inconvenient or unobvious to use with the toolbar, can we make it convenient and obvious? Eli said: > If we want to appear by default more like other GUI apps out there, > then we should bite the bullet and show some widget that allows to > toggle on/off those parts of the UI (tool bar, menu bar, scroll bars, > etc.), like they do. I agree. Can we arrange a way to program such dialogs from Lisp? That would be an elegant way to solve all these UI problems. We tried to do this with Customize, but it doesn't equal the smoothness and elegance of the customization GUIs of other programs. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 5:44 ` Richard Stallman @ 2020-12-16 15:49 ` Eli Zaretskii 2020-12-18 5:39 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-16 15:49 UTC (permalink / raw) To: rms; +Cc: dimech, e.fraga, emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Wed, 16 Dec 2020 00:44:08 -0500 > Cc: emacs-devel@gnu.org, e.fraga@ucl.ac.uk > > > If we want to appear by default more like other GUI apps out there, > > then we should bite the bullet and show some widget that allows to > > toggle on/off those parts of the UI (tool bar, menu bar, scroll bars, > > etc.), like they do. > > I agree. > > Can we arrange a way to program such dialogs from Lisp? > That would be an elegant way to solve all these UI problems. I'd expect modern toolkits to have such a widget ready for use, given the attitude of the GUI applications nowadays. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 15:49 ` Eli Zaretskii @ 2020-12-18 5:39 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-18 5:39 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dimech, e.fraga, 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'd expect modern toolkits to have such a widget ready for use, given > the attitude of the GUI applications nowadays. I do, too. Is there a GTK expert 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen ` (3 preceding siblings ...) 2020-12-15 14:17 ` Emacs Survey: Toolbars Eric S Fraga @ 2020-12-15 14:29 ` Stefan Monnier 2020-12-15 14:48 ` Lars Ingebrigtsen ` (3 more replies) 2020-12-15 16:26 ` Eli Zaretskii ` (3 subsequent siblings) 8 siblings, 4 replies; 384+ messages in thread From: Stefan Monnier @ 2020-12-15 14:29 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > Of 7.3K respondents, 5K disable toolbars, which is more than two > thirds. So perhaps toolbars should default to off? I know toolbars > were all the rage in the 90s, but that's apparently not the case now. FWIw, I believe the toolbar should behave a bit more like the header-line: it should not "default to off" but instead it should only exist in those buffers where it is useful. IMO a toolbar should contain things that are used often, and by "often" I don't mean "in most sessions" but rather often enough that the time taken to pick it from the menu-bar would be excessive. Contrary to the menu-bar, the toolbar is not a good way to advertise Emacs's functionality because there just isn't enough room to put that info, so to justify its existence it should be *useful*. For most major modes, it's hard to find a justification for a toolbar, and for some major modes, OTOH, it's a no-brainer (e.g. mpc.el). But I don't think we've done a good job of making use of the toolbar for the middle ground. IOW, the current tool-bar is a mechanism that we haven't really tried hard to make use of it. Maybe instead of "actions" it should mostly contain "toggle buttons" for minor modes (and maybe these would need to be new minor modes, since most of our minor modes are designed under the principle that they're not toggle at a high frequency)? Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:29 ` Stefan Monnier @ 2020-12-15 14:48 ` Lars Ingebrigtsen 2021-02-25 15:50 ` Stefan Kangas 2020-12-15 16:32 ` Clément Pit-Claudel ` (2 subsequent siblings) 3 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-15 14:48 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > For most major modes, it's hard to find a justification for a toolbar, > and for some major modes, OTOH, it's a no-brainer (e.g. mpc.el). > But I don't think we've done a good job of making use of the toolbar for > the middle ground. True, there are modes where the toolbar may be useful, and a media player might be one of them. And prev/next/reload in a browser may be something people might use. But there aren't a lot of these modes, and you may as well put the buttons in the mode line, which is already there, and which nobody much disables. If you compare the Emacs mode line with a modern "tool bar" (for instance, the Crome line at the top), they're not that different. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:48 ` Lars Ingebrigtsen @ 2021-02-25 15:50 ` Stefan Kangas 2021-02-25 18:17 ` Eli Zaretskii 2021-02-25 19:44 ` Emacs Survey: Toolbars martin rudalics 0 siblings, 2 replies; 384+ messages in thread From: Stefan Kangas @ 2021-02-25 15:50 UTC (permalink / raw) To: Lars Ingebrigtsen, Stefan Monnier; +Cc: emacs-devel (I had a look at this recent megathread, as nothing actionable seems to have come out of it.) Lars Ingebrigtsen <larsi@gnus.org> writes: > Stefan Monnier <monnier@iro.umontreal.ca> writes: > >> For most major modes, it's hard to find a justification for a toolbar, >> and for some major modes, OTOH, it's a no-brainer (e.g. mpc.el). >> But I don't think we've done a good job of making use of the toolbar for >> the middle ground. > > True, there are modes where the toolbar may be useful, and a media > player might be one of them. And prev/next/reload in a browser may be > something people might use. How about introducing a new variable with the tentative name `this-mode-wants-toolbars' that defaults to nil? If it is nil, there are no toolbars. This variable can then be set to t when someone has made a toolbar that they know will be useful. That way, there is less need for users to disable the toolbar globally (unless you really want to), and they can benefit from this feature where it is actually in a useful state. One obvious drawback of this proposal is that it's slightly jarring when the toolbar appears and disappears when switching between windows. Perhaps we could show it if it is enabled in any buffer in a window on the current frame? > But there aren't a lot of these modes, and > you may as well put the buttons in the mode line, which is already > there, and which nobody much disables. I tend to agree. The above proposal would leave this to the mode author to decide. (Well, in reality, the overwhelming majority run with no toolbars anyway. So if you want your controls seen you should probably still put them in the mode line.) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 15:50 ` Stefan Kangas @ 2021-02-25 18:17 ` Eli Zaretskii 2021-02-25 19:03 ` Stefan Monnier 2021-02-25 19:44 ` Emacs Survey: Toolbars martin rudalics 1 sibling, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2021-02-25 18:17 UTC (permalink / raw) To: Stefan Kangas; +Cc: larsi, monnier, emacs-devel > From: Stefan Kangas <stefankangas@gmail.com> > Date: Thu, 25 Feb 2021 09:50:29 -0600 > Cc: emacs-devel@gnu.org > > How about introducing a new variable with the tentative name > `this-mode-wants-toolbars' that defaults to nil? If it is nil, there > are no toolbars. This variable can then be set to t when someone has > made a toolbar that they know will be useful. That makes little sense to me. Other applications that show tool bars don't make them appear and disappear, only change as appropriate for the context. > One obvious drawback of this proposal is that it's slightly jarring when > the toolbar appears and disappears when switching between windows. Exactly. > Perhaps we could show it if it is enabled in any buffer in a window on > the current frame? So you basically want NOT to make it disappear? Then why make it disappear? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 18:17 ` Eli Zaretskii @ 2021-02-25 19:03 ` Stefan Monnier 2021-02-25 19:16 ` Eli Zaretskii 2021-02-26 8:44 ` Lars Ingebrigtsen 0 siblings, 2 replies; 384+ messages in thread From: Stefan Monnier @ 2021-02-25 19:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, Stefan Kangas, emacs-devel > That makes little sense to me. Other applications that show tool bars > don't make them appear and disappear, only change as appropriate for > the context. Which applications are you thinking of here, that would be comparable to Emacs (i.e. are part music-player, part text editor, part hex editor, part IRC client, ...)? >> One obvious drawback of this proposal is that it's slightly jarring when >> the toolbar appears and disappears when switching between windows. > Exactly. I think the solution is to have toolbars inside the window's text, rather than attached to the frame. For mpc.el I played with the idea of building up a "toolbar" that gets inserted into the buffer, but I didn't the time needed to get something good enough. Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 19:03 ` Stefan Monnier @ 2021-02-25 19:16 ` Eli Zaretskii 2021-02-25 19:27 ` [External] : " Drew Adams 2021-02-25 22:24 ` Stefan Monnier 2021-02-26 8:44 ` Lars Ingebrigtsen 1 sibling, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2021-02-25 19:16 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, stefankangas, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Stefan Kangas <stefankangas@gmail.com>, larsi@gnus.org, > emacs-devel@gnu.org > Date: Thu, 25 Feb 2021 14:03:26 -0500 > > > That makes little sense to me. Other applications that show tool bars > > don't make them appear and disappear, only change as appropriate for > > the context. > > Which applications are you thinking of here, that would be comparable to > Emacs (i.e. are part music-player, part text editor, part hex editor, part > IRC client, ...)? I don't see how this is relevant. The tool bar is part of the GUI, which functions are shown there is immaterial. > >> One obvious drawback of this proposal is that it's slightly jarring when > >> the toolbar appears and disappears when switching between windows. > > Exactly. > > I think the solution is to have toolbars inside the window's text, > rather than attached to the frame. Is this practical? Windows can be very narrow, and change dimensions much more frequently in Emacs than frames. Tool bars don't live well with frequent changes in dimensions. If someone wants to turn tool bar off, let them do that. We don't need to turn the Emacs appearance upside down just because of some fashion: we already support that fashion. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: [External] : Re: Emacs Survey: Toolbars 2021-02-25 19:16 ` Eli Zaretskii @ 2021-02-25 19:27 ` Drew Adams 2021-02-25 22:24 ` Stefan Monnier 1 sibling, 0 replies; 384+ messages in thread From: Drew Adams @ 2021-02-25 19:27 UTC (permalink / raw) To: Eli Zaretskii, Stefan Monnier Cc: larsi@gnus.org, stefankangas@gmail.com, emacs-devel@gnu.org > If someone wants to turn tool bar off, let them do that. We don't > need to turn the Emacs appearance upside down just because of some > fashion: we already support that fashion. (This is not what you're discussing now, I guess, but it can affect whether a user's choice of whether to use tool bars.) I'll just mention again that users can have a popup tool bar. IOW, show it only on demand, for a single action. Also, ability to show the tool-bar only for the current frame. https://www.emacswiki.org/emacs/ToolBar#ToolBarPlus This or a similar feature could be added to vanilla Emacs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 19:16 ` Eli Zaretskii 2021-02-25 19:27 ` [External] : " Drew Adams @ 2021-02-25 22:24 ` Stefan Monnier 2021-02-26 6:52 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2021-02-25 22:24 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, stefankangas, emacs-devel >> > That makes little sense to me. Other applications that show tool bars >> > don't make them appear and disappear, only change as appropriate for >> > the context. >> Which applications are you thinking of here, that would be comparable to >> Emacs (i.e. are part music-player, part text editor, part hex editor, part >> IRC client, ...)? > I don't see how this is relevant. The tool bar is part of the GUI, > which functions are shown there is immaterial. It's relevant in the fact that some of those applications may come with a toolbar while others don't, so a single application that provides access too all those facilities (like Emacs) may want to sometimes show a toolbar and sometimes not. >> I think the solution is to have toolbars inside the window's text, >> rather than attached to the frame. > Is this practical? Windows can be very narrow, and change dimensions > much more frequently in Emacs than frames. Tool bars don't live well > with frequent changes in dimensions. > > If someone wants to turn tool bar off, let them do that. We don't > need to turn the Emacs appearance upside down just because of some > fashion: we already support that fashion. I'm suggesting to *add* "in-buffer" toolbars (hopefully as a pure-ELisp feature). Stefan ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 22:24 ` Stefan Monnier @ 2021-02-26 6:52 ` Eli Zaretskii 0 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2021-02-26 6:52 UTC (permalink / raw) To: Stefan Monnier; +Cc: larsi, stefankangas, emacs-devel > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: stefankangas@gmail.com, larsi@gnus.org, emacs-devel@gnu.org > Date: Thu, 25 Feb 2021 17:24:59 -0500 > > >> Which applications are you thinking of here, that would be comparable to > >> Emacs (i.e. are part music-player, part text editor, part hex editor, part > >> IRC client, ...)? > > I don't see how this is relevant. The tool bar is part of the GUI, > > which functions are shown there is immaterial. > > It's relevant in the fact that some of those applications may come with > a toolbar while others don't Which significant applications don't have a tool bar at all, i.e. don't even have an option to display a tool bar? > so a single application that provides access too all those > facilities (like Emacs) may want to sometimes show a toolbar and > sometimes not. By what logic? The tool bar in Emacs is very like the menu bar: it provides quick and easy access to some frequently-used functions. Which application doesn't have any such function to justify the lack of a tool bar? > > If someone wants to turn tool bar off, let them do that. We don't > > need to turn the Emacs appearance upside down just because of some > > fashion: we already support that fashion. > > I'm suggesting to *add* "in-buffer" toolbars (hopefully as a pure-ELisp > feature). So your suggestion is to have _both_ the frame-global tool bar and another tool bar displayed in some windows? That'd be fine with me (we already have some modes display a header-line, which is a kind-of tool bar, and we now have the tab-line as well, so we have similar functionality already). ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 19:03 ` Stefan Monnier 2021-02-25 19:16 ` Eli Zaretskii @ 2021-02-26 8:44 ` Lars Ingebrigtsen 2021-02-26 15:51 ` [External] : " Drew Adams 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2021-02-26 8:44 UTC (permalink / raw) To: Stefan Monnier; +Cc: Eli Zaretskii, Stefan Kangas, emacs-devel Stefan Monnier <monnier@iro.umontreal.ca> writes: > I think the solution is to have toolbars inside the window's text, > rather than attached to the frame. Yeah, I think that's the way forward. Having the toolbar in the window will allow much greater flexibility, and allow users to switch the toolbar on in modes where it makes sense. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: [External] : Re: Emacs Survey: Toolbars 2021-02-26 8:44 ` Lars Ingebrigtsen @ 2021-02-26 15:51 ` Drew Adams 2021-02-26 16:27 ` Stefan Monnier 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2021-02-26 15:51 UTC (permalink / raw) To: Lars Ingebrigtsen, Stefan Monnier Cc: Eli Zaretskii, Stefan Kangas, emacs-devel@gnu.org > > I think the solution is to have toolbars inside the window's text, > > rather than attached to the frame. > > Yeah, I think that's the way forward. Having the toolbar in the window > will allow much greater flexibility, and allow users to switch the > toolbar on in modes where it makes sense. By "inside the window's text" do you mean anywhere within it, so for example a user could move it around within that space? Or do you mean something more like what Eli suggested - perhaps handled like a header-line is handled? In what you imagine, would more than one such tool bar be possible within the window's text area? I guess my overall request here is whether you can perhaps flesh out more of what you (plural) have in mind. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: [External] : Re: Emacs Survey: Toolbars 2021-02-26 15:51 ` [External] : " Drew Adams @ 2021-02-26 16:27 ` Stefan Monnier 2021-02-27 0:28 ` *Menu* buffer Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Stefan Monnier @ 2021-02-26 16:27 UTC (permalink / raw) To: Drew Adams Cc: Lars Ingebrigtsen, emacs-devel@gnu.org, Eli Zaretskii, Stefan Kangas > By "inside the window's text" do you mean anywhere > within it, so for example a user could move it I don't know what other people mean, but what I'm thinking of is reflected in the chunk of code below I started writing some years ago. You can `insert` the result into the buffer to put a toolbar wherever you want (don't expect miracles: it has loads of shortcomings). Stefan (defun tool-bar-to-string (&optional map) (let ((res "")) (map-keymap (lambda (k v) (when (eq (car v) 'menu-item) (let* ((name (nth 1 v)) ;Unused, AFAICT. (cmd (nth 2 v)) (plist (nthcdr (if (consp (nth 3 v)) 4 3) v)) (help-echo (plist-get plist :help)) (image (plist-get plist :image)) (button (propertize " " 'help-echo help-echo 'keymap (let ((map (make-sparse-keymap))) (define-key map [mouse-1] cmd) map) 'face 'tool-bar ;; 'custom-button 'mouse-face 'custom-button-mouse 'rear-nonsticky '(display keymap help-echo) 'display image))) (setq res (concat res (propertize " " 'display '(space :width 1) 'face 'custom-button ) button))))) (or map (key-binding [tool-bar]))) res)) ^ permalink raw reply [flat|nested] 384+ messages in thread
* *Menu* buffer 2021-02-26 16:27 ` Stefan Monnier @ 2021-02-27 0:28 ` Tomas Hlavaty 2021-02-27 7:11 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2021-02-27 0:28 UTC (permalink / raw) To: Stefan Monnier; +Cc: emacs-devel@gnu.org On Fri 26 Feb 2021 at 11:27, Stefan Monnier <monnier@iro.umontreal.ca> wrote: > (defun tool-bar-to-string (&optional map) interesting Is there something like this for menu? I would like to have a *Menu* buffer instead of menu bar. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: *Menu* buffer 2021-02-27 0:28 ` *Menu* buffer Tomas Hlavaty @ 2021-02-27 7:11 ` Eli Zaretskii 2021-03-01 5:56 ` David Masterson 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2021-02-27 7:11 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: monnier, emacs-devel > From: Tomas Hlavaty <tom@logand.com> > Date: Sat, 27 Feb 2021 01:28:40 +0100 > Cc: "emacs-devel@gnu.org" <emacs-devel@gnu.org> > > On Fri 26 Feb 2021 at 11:27, Stefan Monnier <monnier@iro.umontreal.ca> wrote: > > (defun tool-bar-to-string (&optional map) > > interesting > > Is there something like this for menu? I would like to have a *Menu* > buffer instead of menu bar. You should be able to do something like that with header-line. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: *Menu* buffer 2021-02-27 7:11 ` Eli Zaretskii @ 2021-03-01 5:56 ` David Masterson 0 siblings, 0 replies; 384+ messages in thread From: David Masterson @ 2021-03-01 5:56 UTC (permalink / raw) To: Eli Zaretskii; +Cc: monnier, Tomas Hlavaty, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Tomas Hlavaty <tom@logand.com> >> Date: Sat, 27 Feb 2021 01:28:40 +0100 >> Cc: "emacs-devel@gnu.org" <emacs-devel@gnu.org> >> >> On Fri 26 Feb 2021 at 11:27, Stefan Monnier <monnier@iro.umontreal.ca> wrote: >> > (defun tool-bar-to-string (&optional map) >> >> interesting >> >> Is there something like this for menu? I would like to have a *Menu* >> buffer instead of menu bar. > > You should be able to do something like that with header-line. I was thinking about this myself and wondering if you could do it with a multi-layer hydra where you have a top-level hydra that you add/remove lower-level hydras specific to the major/minor modes you're in. Just a thought at the moment... -- David Masterson ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2021-02-25 15:50 ` Stefan Kangas 2021-02-25 18:17 ` Eli Zaretskii @ 2021-02-25 19:44 ` martin rudalics 1 sibling, 0 replies; 384+ messages in thread From: martin rudalics @ 2021-02-25 19:44 UTC (permalink / raw) To: Stefan Kangas, Lars Ingebrigtsen, Stefan Monnier; +Cc: emacs-devel > One obvious drawback of this proposal is that it's slightly jarring when > the toolbar appears and disappears when switching between windows. Note that with GTK the outer frame shrinks/expands when the toolbar is removed/added. Not talking about the GTK3 warnings when the toolbar doesn't fit ... martin ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:29 ` Stefan Monnier 2020-12-15 14:48 ` Lars Ingebrigtsen @ 2020-12-15 16:32 ` Clément Pit-Claudel 2020-12-15 16:34 ` Drew Adams 2020-12-15 18:44 ` Jean Louis 3 siblings, 0 replies; 384+ messages in thread From: Clément Pit-Claudel @ 2020-12-15 16:32 UTC (permalink / raw) To: emacs-devel On 12/15/20 9:29 AM, Stefan Monnier wrote: >> Of 7.3K respondents, 5K disable toolbars, which is more than two >> thirds. So perhaps toolbars should default to off? I know toolbars >> were all the rage in the 90s, but that's apparently not the case now. > > FWIw, I believe the toolbar should behave a bit more like the > header-line: it should not "default to off" but instead it should only > exist in those buffers where it is useful. I like that take. I tried to do this in fstar-mode: by default, opening an F* file will also re-enable the toolbar in F* buffers even if it was previously hidden by the user, and most users don't seem to re-disable it. In fact, many users seem to use them even for features that are bound to convenient keys. I have seen the same thing for beginner users of Proof General (PG also includes specialized toolbars). ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-15 14:29 ` Stefan Monnier 2020-12-15 14:48 ` Lars Ingebrigtsen 2020-12-15 16:32 ` Clément Pit-Claudel @ 2020-12-15 16:34 ` Drew Adams 2020-12-15 18:44 ` Jean Louis 3 siblings, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-15 16:34 UTC (permalink / raw) To: Stefan Monnier, Lars Ingebrigtsen; +Cc: emacs-devel > FWIw, I believe the toolbar should behave a bit more like the > header-line: it should not "default to off" but instead it should only > exist in those buffers where it is useful. > > IMO a toolbar should contain things that are used often, and by "often" > I don't mean "in most sessions" but rather often enough that the time > taken to pick it from the menu-bar would be excessive. > Contrary to the menu-bar, the toolbar is not a good way to advertise > Emacs's functionality because there just isn't enough room to put that > info, so to justify its existence it should be *useful*. > > For most major modes, it's hard to find a justification for a toolbar, > and for some major modes, OTOH, it's a no-brainer (e.g. mpc.el). > But I don't think we've done a good job of making use of the toolbar for > the middle ground. > > IOW, the current tool-bar is a mechanism that we haven't really tried > hard to make use of it. Maybe instead of "actions" it should mostly > contain "toggle buttons" for minor modes (and maybe these would need to > be new minor modes, since most of our minor modes are designed under > the principle that they're not toggle at a high frequency)? FWIW: 1. I agree with what Stefan said. Buffer-specific if possible. Most modes don't justify it on by default. (But I don't think it matters whether we decide that tool-bar buttons should only or mainly be for toggling something.) 2. I think that the default "on" state should be that provided by `tool-bar-pop-up-mode' from my library `tool-bar+.el' (or similar). https://www.emacswiki.org/emacs/ToolBar#tool-bar-pop-up-mode tl;dr: Save space without sacrificing discoverability or availability of the tool-bar. Advantage relative to showing the tool-bar: Instead of sacrificing an entire line of tool-bars (vertical space), you sacrifice the horizontal space of an additional menu-bar menu. Not a real menu, but a menu name that's really a button that opens the tool-bar for a one-off action. Advantage relative to not showing the tool-bar: Discoverability. The tool-bar+.el code (any or all of it) could be added to Emacs. Or the design can be used as inspiration for something similar. ___ The same library also provides another minor mode for the tool-bar: `tool-bar-here-mode'. This is the same as 'tool-bar-mode', except that it affects only the current frame. This saves real estate on frames other than those where you've chosen to have a tool-bar. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 14:29 ` Stefan Monnier ` (2 preceding siblings ...) 2020-12-15 16:34 ` Drew Adams @ 2020-12-15 18:44 ` Jean Louis 2020-12-15 19:03 ` Christopher Dimech 3 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-15 18:44 UTC (permalink / raw) To: Stefan Monnier; +Cc: Lars Ingebrigtsen, emacs-devel * Stefan Monnier <monnier@iro.umontreal.ca> [2020-12-15 17:42]: > For most major modes, it's hard to find a justification for a toolbar, > and for some major modes, OTOH, it's a no-brainer (e.g. mpc.el). > But I don't think we've done a good job of making use of the toolbar for > the middle ground. For your insights and considerations1, personally toolbar is definitely great when working with the mouse and interacting with other applications. Especially when trying to work with one hand it is great. For staff members who need to save files or open new notes quickly it is great. Even more icons would be great to have, there is so much more space. Tool bars make Emacs user friendly for majority of new users as people are used to using mouse. It should even get its customize or defcustom possibility. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Emacs Survey: Toolbars 2020-12-15 18:44 ` Jean Louis @ 2020-12-15 19:03 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 19:03 UTC (permalink / raw) To: Jean Louis; +Cc: Lars Ingebrigtsen, Stefan Monnier, emacs-devel > Sent: Tuesday, December 15, 2020 at 7:44 PM > From: "Jean Louis" <bugs@gnu.support> > To: "Stefan Monnier" <monnier@iro.umontreal.ca> > Cc: "Lars Ingebrigtsen" <larsi@gnus.org>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > * Stefan Monnier <monnier@iro.umontreal.ca> [2020-12-15 17:42]: > > For most major modes, it's hard to find a justification for a toolbar, > > and for some major modes, OTOH, it's a no-brainer (e.g. mpc.el). > > But I don't think we've done a good job of making use of the toolbar for > > the middle ground. > > For your insights and considerations1, personally toolbar is definitely > great when working with the mouse and interacting with other > applications. Especially when trying to work with one hand it is > great. For staff members who need to save files or open new notes > quickly it is great. Even more icons would be great to have, there is > so much more space. Tool bars make Emacs user friendly for majority of > new users as people are used to using mouse. Absolutely. The argument is not about using the keyboard or using the mouse. In regards to strain injury, there are two important aspects: 1. Not stretch fingers 2. Not move wrist In addition, if the user normally uses keyboard, it makes sense that he continues using the keyboard, rather than having to switch to the mouse. This is largely agreed among programmers. The problem started when programmers starting demanding for Emacs to focus only on the keyboard. For those who primarily use the mouse, they should continue to use the mouse for most things where the user could use the mouse. As regards development, Emacs could have minor-modes for the following categarisations: 1. Mainly using the Keyboard 2. Mainly using the Mouse 3. Mainly using Querty 4. Mainly using Dvorak Furthermore, most people disregard Accessibility. For instance, KMouseTool clicks the mouse whenever the mouse cursor pauses briefly. It was designed to help those with repetitive strain injuries, for whom pressing buttons hurts. KMouseTool also eliminates the pain caused by clicking the mouse, helping many people to use the computer without pain. And to work with the mouse makes menu-bar a definite requirement - no arguments there. > It should even get its customize or defcustom possibility. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen ` (4 preceding siblings ...) 2020-12-15 14:29 ` Stefan Monnier @ 2020-12-15 16:26 ` Eli Zaretskii 2020-12-15 16:51 ` Christopher Dimech 2020-12-16 9:14 ` Lars Ingebrigtsen 2020-12-15 21:07 ` Dmitry Gutov ` (2 subsequent siblings) 8 siblings, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-15 16:26 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Tue, 15 Dec 2020 06:30:20 +0100 > > Of 7.3K respondents, 5K disable toolbars, which is more than two > thirds. So perhaps toolbars should default to off? I know toolbars > were all the rage in the 90s, but that's apparently not the case now. > > Opinions? If we want to appear by default more like other GUI apps out there, then we should bite the bullet and show some widget that allows to toggle on/off those parts of the UI (tool bar, menu bar, scroll bars, etc.), like they do. IOW, turning off the tool bar by default and leaving the users with "M-x tool-bar-mode" to turn it on is IMO a step back in usability which will leave us with a poorer UI. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 16:26 ` Eli Zaretskii @ 2020-12-15 16:51 ` Christopher Dimech 2020-12-16 9:14 ` Lars Ingebrigtsen 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 16:51 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, emacs-devel > Sent: Tuesday, December 15, 2020 at 5:26 PM > From: "Eli Zaretskii" <eliz@gnu.org> > To: "Lars Ingebrigtsen" <larsi@gnus.org> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > > From: Lars Ingebrigtsen <larsi@gnus.org> > > Date: Tue, 15 Dec 2020 06:30:20 +0100 > > > > Of 7.3K respondents, 5K disable toolbars, which is more than two > > thirds. So perhaps toolbars should default to off? I know toolbars > > were all the rage in the 90s, but that's apparently not the case now. > > > > Opinions? > > If we want to appear by default more like other GUI apps out there, > then we should bite the bullet and show some widget that allows to > toggle on/off those parts of the UI (tool bar, menu bar, scroll bars, > etc.), like they do. > > IOW, turning off the tool bar by default and leaving the users with > "M-x tool-bar-mode" to turn it on is IMO a step back in usability > which will leave us with a poorer UI. I fully agree with Eli Zaretskii. We have really started on very bad ideas. Debating about disabling or enabling a toolbar (in general, the question was about disabling graphical tools, completely antithetical to modernisation) is of no real value. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 16:26 ` Eli Zaretskii 2020-12-15 16:51 ` Christopher Dimech @ 2020-12-16 9:14 ` Lars Ingebrigtsen 2020-12-16 16:01 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-16 9:14 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > If we want to appear by default more like other GUI apps out there, > then we should bite the bullet and show some widget that allows to > toggle on/off those parts of the UI (tool bar, menu bar, scroll bars, > etc.), like they do. Yeah, the natural thing would be to put that on a pop-up menu on mouse-3 -- I think that's a pretty common UI pattern? And I see that mouse-3 isn't bound on any of those elements now. And perhaps there should be some menu to toggle the tool bar/scroll bars on/off? That might be there already somewhere, but not in the menu where it would make sense -- the Options menu... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:14 ` Lars Ingebrigtsen @ 2020-12-16 16:01 ` Eli Zaretskii 2020-12-16 16:18 ` Robert Pluim 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-16 16:01 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: emacs-devel@gnu.org > Date: Wed, 16 Dec 2020 10:14:45 +0100 > > And perhaps there should be some menu to toggle the tool bar/scroll bars > on/off? That might be there already somewhere, but not in the menu > where it would make sense -- the Options menu... It's under Options->Show/Hide. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 16:01 ` Eli Zaretskii @ 2020-12-16 16:18 ` Robert Pluim 2020-12-16 17:12 ` Eli Zaretskii 2020-12-17 11:01 ` Lars Ingebrigtsen 0 siblings, 2 replies; 384+ messages in thread From: Robert Pluim @ 2020-12-16 16:18 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Lars Ingebrigtsen <larsi@gnus.org> >> Cc: emacs-devel@gnu.org >> Date: Wed, 16 Dec 2020 10:14:45 +0100 >> >> And perhaps there should be some menu to toggle the tool bar/scroll bars >> on/off? That might be there already somewhere, but not in the menu >> where it would make sense -- the Options menu... > > It's under Options->Show/Hide. Should we take this opportunity to either auto-save config changes made via the menus, or put a big red button somewhere saying 'click here to save settings', or prompt the user to save them when exiting? Robert (Iʼve never really liked the toolbar enable/disable menu. How many gui applications these days let you put the toolbar anywhere other than at the top?) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 16:18 ` Robert Pluim @ 2020-12-16 17:12 ` Eli Zaretskii 2020-12-17 8:20 ` Robert Pluim 2020-12-17 11:01 ` Lars Ingebrigtsen 1 sibling, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-16 17:12 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: Lars Ingebrigtsen <larsi@gnus.org>, emacs-devel@gnu.org > Date: Wed, 16 Dec 2020 17:18:33 +0100 > > Should we take this opportunity to either auto-save config changes > made via the menus, or put a big red button somewhere saying 'click > here to save settings', or prompt the user to save them when exiting? What's wrong with Options->Save Options? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 17:12 ` Eli Zaretskii @ 2020-12-17 8:20 ` Robert Pluim 2020-12-17 14:25 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Robert Pluim @ 2020-12-17 8:20 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: Lars Ingebrigtsen <larsi@gnus.org>, emacs-devel@gnu.org >> Date: Wed, 16 Dec 2020 17:18:33 +0100 >> >> Should we take this opportunity to either auto-save config changes >> made via the menus, or put a big red button somewhere saying 'click >> here to save settings', or prompt the user to save them when exiting? > > What's wrong with Options->Save Options? Nothing, except that people have been conditioned to expect that changes in options get saved automatically, so we could do that for them if they make the changes via the menus. On a related note, perhaps 'save options' should be the last entry in the Options menu, to make it stand out more. Robert ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 8:20 ` Robert Pluim @ 2020-12-17 14:25 ` Eli Zaretskii 2020-12-17 15:44 ` Robert Pluim 2020-12-18 0:23 ` Gregory Heytings via Emacs development discussions. 2020-12-17 17:06 ` Drew Adams 2020-12-18 5:42 ` Richard Stallman 2 siblings, 2 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-17 14:25 UTC (permalink / raw) To: Robert Pluim; +Cc: emacs-devel > From: Robert Pluim <rpluim@gmail.com> > Cc: emacs-devel@gnu.org > Date: Thu, 17 Dec 2020 09:20:32 +0100 > > > What's wrong with Options->Save Options? > > Nothing, except that people have been conditioned to expect that > changes in options get saved automatically, so we could do that for > them if they make the changes via the menus. Not sure I'd like it: it would make it harder to try an option without committing to using it. > On a related note, perhaps 'save options' should be the last entry > in the Options menu, to make it stand out more. Its current place is what it is because the items below it don't belong to "Options" saved by "Save Options". We could add some delimiter to make that more evident, but it isn't like the place is random or not well thought of. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 14:25 ` Eli Zaretskii @ 2020-12-17 15:44 ` Robert Pluim 2020-12-17 15:48 ` Robert Pluim 2020-12-18 0:23 ` Gregory Heytings via Emacs development discussions. 1 sibling, 1 reply; 384+ messages in thread From: Robert Pluim @ 2020-12-17 15:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> From: Robert Pluim <rpluim@gmail.com> >> Cc: emacs-devel@gnu.org >> Date: Thu, 17 Dec 2020 09:20:32 +0100 >> >> > What's wrong with Options->Save Options? >> >> Nothing, except that people have been conditioned to expect that >> changes in options get saved automatically, so we could do that for >> them if they make the changes via the menus. > > Not sure I'd like it: it would make it harder to try an option without > committing to using it. > Yes, but as I said: itʼs what people have been conditioned to expect. Or we could limit it to only visual things like toolbars,scrollbars etc. >> On a related note, perhaps 'save options' should be the last entry >> in the Options menu, to make it stand out more. > > Its current place is what it is because the items below it don't > belong to "Options" saved by "Save Options". We could add some > delimiter to make that more evident, but it isn't like the place is > random or not well thought of. I guess we could add another separator above it. Robert ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 15:44 ` Robert Pluim @ 2020-12-17 15:48 ` Robert Pluim 0 siblings, 0 replies; 384+ messages in thread From: Robert Pluim @ 2020-12-17 15:48 UTC (permalink / raw) To: emacs-devel Robert Pluim <rpluim@gmail.com> writes: >> Its current place is what it is because the items below it don't >> belong to "Options" saved by "Save Options". We could add some >> delimiter to make that more evident, but it isn't like the place is >> random or not well thought of. > > I guess we could add another separator above it. > *below* it. Menu definitions are done in reverse order. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 14:25 ` Eli Zaretskii 2020-12-17 15:44 ` Robert Pluim @ 2020-12-18 0:23 ` Gregory Heytings via Emacs development discussions. 2020-12-18 9:10 ` Robert Pluim 1 sibling, 1 reply; 384+ messages in thread From: Gregory Heytings via Emacs development discussions. @ 2020-12-18 0:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Robert Pluim, emacs-devel >> On a related note, perhaps 'save options' should be the last entry in >> the Options menu, to make it stand out more. > > Its current place is what it is because the items below it don't belong > to "Options" saved by "Save Options". We could add some delimiter to > make that more evident, but it isn't like the place is random or not > well thought of. > I'd suggest to give that menu entry a more explicit name, "Save Options Above" or "Save Above Options", with a separator above (apparently that one is already present) and below. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 0:23 ` Gregory Heytings via Emacs development discussions. @ 2020-12-18 9:10 ` Robert Pluim 0 siblings, 0 replies; 384+ messages in thread From: Robert Pluim @ 2020-12-18 9:10 UTC (permalink / raw) To: Gregory Heytings via Emacs development discussions. Cc: Gregory Heytings, Eli Zaretskii Gregory Heytings via "Emacs development discussions." <emacs-devel@gnu.org> writes: >>> On a related note, perhaps 'save options' should be the last entry >>> in the Options menu, to make it stand out more. >> >> Its current place is what it is because the items below it don't >> belong to "Options" saved by "Save Options". We could add some >> delimiter to make that more evident, but it isn't like the place is >> random or not well thought of. >> > > I'd suggest to give that menu entry a more explicit name, "Save > Options Above" or "Save Above Options", with a separator above > (apparently that one is already present) and below. "Save Changed Options"? I feel like I may have unwisely wandered too close to the bike shed here. :-) Robert ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-17 8:20 ` Robert Pluim 2020-12-17 14:25 ` Eli Zaretskii @ 2020-12-17 17:06 ` Drew Adams 2020-12-17 18:10 ` Alfred M. Szmidt 2020-12-18 5:42 ` Richard Stallman 2020-12-18 5:42 ` Richard Stallman 2 siblings, 2 replies; 384+ messages in thread From: Drew Adams @ 2020-12-17 17:06 UTC (permalink / raw) To: Robert Pluim, Eli Zaretskii; +Cc: emacs-devel > >> Should we take this opportunity to either auto-save config changes > >> made via the menus, or put a big red button somewhere saying 'click > >> here to save settings', or prompt the user to save them when exiting? > > > > What's wrong with Options->Save Options? > > Nothing, except that people have been conditioned to expect that > changes in options get saved automatically, I assume you mean _some_ people. > so we could do that for > them if they make the changes via the menus. On a related note, perhaps > 'save options' should be the last entry in the Options menu, to make > it stand out more. If some more than a few people really do expect setting (option) changes to be saved automatically, then we could add an option (!) (or a minor mode) that does that. Turn on that option, and thereafter all changes you make to options, faces, themes, etc. get saved automatically. Note that that behavior can get in the way of user experimentation. Not that it's necessarily limiting - it's just a different approach. In sum, if we want to support automatic saving of every setting change then we should do so optionally (and opt-in), not just switch to that for everyone. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 17:06 ` Drew Adams @ 2020-12-17 18:10 ` Alfred M. Szmidt 2020-12-17 19:20 ` Christopher Dimech 2020-12-18 5:42 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-17 18:10 UTC (permalink / raw) To: Drew Adams; +Cc: rpluim, eliz, emacs-devel If some more than a few people really do expect setting (option) changes to be saved automatically, then we could add an option (!) (or a minor mode) that does that. Turn on that option, and thereafter all changes you make to options, faces, themes, etc. get saved automatically. FWIW (tiny data point) I know many users that are suprised about the fact that toggling an option in the menu-bar doesn't save it permanently. Note that that behavior can get in the way of user experimentation. Not that it's necessarily limiting - it's just a different approach. It would be nice if one could see what options one set (via the toolbar); then one could see what one is experimenting with. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 18:10 ` Alfred M. Szmidt @ 2020-12-17 19:20 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-17 19:20 UTC (permalink / raw) To: Alfred M. Szmidt; +Cc: rpluim, eliz, Drew Adams, emacs-devel > Sent: Thursday, December 17, 2020 at 7:10 PM > From: "Alfred M. Szmidt" <ams@gnu.org> > To: "Drew Adams" <drew.adams@oracle.com> > Cc: rpluim@gmail.com, eliz@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > If some more than a few people really do expect > setting (option) changes to be saved automatically, > then we could add an option (!) (or a minor mode) > that does that. Turn on that option, and thereafter > all changes you make to options, faces, themes, etc. > get saved automatically. > > FWIW (tiny data point) I know many users that are suprised about the > fact that toggling an option in the menu-bar doesn't save it > permanently. > > Note that that behavior can get in the way of user > experimentation. Not that it's necessarily limiting > - it's just a different approach. The behaviour is akin to cycling color themes without actually changing the theme permanently. It is not invariably evident that the contrasts between emacs and the behaviour of other applications is bad. Emacs gives users much more control of what happens. Thusly, it is quite easy to end up messing your system with things that ultimately you could not want. Experimentation, either through User Hacking or through Emacs Packages is quite a regular thing. > It would be nice if one could see what options one set (via the > toolbar); then one could see what one is experimenting with. I like the idea. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 17:06 ` Drew Adams 2020-12-17 18:10 ` Alfred M. Szmidt @ 2020-12-18 5:42 ` Richard Stallman 2020-12-18 6:36 ` Drew Adams 1 sibling, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-18 5:42 UTC (permalink / raw) To: Drew Adams; +Cc: rpluim, eliz, 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. ]]] > > Nothing, except that people have been conditioned to expect that > > changes in options get saved automatically, > I assume you mean _some_ people. Would each you please take a deep breath, and respond more kindly from now on? -- 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] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-18 5:42 ` Richard Stallman @ 2020-12-18 6:36 ` Drew Adams 2020-12-18 6:42 ` Christopher Dimech ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Drew Adams @ 2020-12-18 6:36 UTC (permalink / raw) To: rms; +Cc: rpluim, eliz, emacs-devel > > > Nothing, except that people have been conditioned to expect that > > > changes in options get saved automatically, > > I assume you mean _some_ people. > > Would each you please take a deep breath, and respond > more kindly from now on? Would you please take a deep breath? I don't think there was anything unkind in either what Robert said or in my reply to him. Did you actually read what each of us said? The point of my emphasis on "some" was elaborated in the rest of what I said, the point of which was that we can easily accommodate _both_ expectations of saving automatically and saving only on demand. I don't even see any disagreement in what we were each saying. Some people _are_ used to automatic saving, and we can accommodate that while also giving others what they expect (which is what we have now). ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: RE: Emacs Survey: Toolbars 2020-12-18 6:36 ` Drew Adams @ 2020-12-18 6:42 ` Christopher Dimech 2020-12-18 8:42 ` Robert Pluim 2020-12-20 6:36 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 6:42 UTC (permalink / raw) To: Drew Adams; +Cc: rpluim, eliz, rms, emacs-devel > Sent: Friday, December 18, 2020 at 7:36 AM > From: "Drew Adams" <drew.adams@oracle.com> > To: rms@gnu.org > Cc: rpluim@gmail.com, eliz@gnu.org, emacs-devel@gnu.org > Subject: RE: Emacs Survey: Toolbars > > > > > Nothing, except that people have been conditioned to expect that > > > > changes in options get saved automatically, > > > I assume you mean _some_ people. > > > > Would each you please take a deep breath, and respond > > more kindly from now on? > > Would you please take a deep breath? I don't think > there was anything unkind in either what Robert said > or in my reply to him. > > Did you actually read what each of us said? The point > of my emphasis on "some" was elaborated in the rest of > what I said, the point of which was that we can easily > accommodate _both_ expectations of saving automatically > and saving only on demand. That is also my point on toolbar, it is not useless and can support both. The current problem is that the toolbar is attached to the Emacs frame, rather than using another frame. There is also the possibility of dynamically adding a new MenuItem. > I don't even see any disagreement in what we were each > saying. Some people _are_ used to automatic saving, > and we can accommodate that while also giving others > what they expect (which is what we have now). > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 6:36 ` Drew Adams 2020-12-18 6:42 ` Christopher Dimech @ 2020-12-18 8:42 ` Robert Pluim 2020-12-18 8:51 ` Christopher Dimech 2020-12-18 17:43 ` Drew Adams 2020-12-20 6:36 ` Richard Stallman 2 siblings, 2 replies; 384+ messages in thread From: Robert Pluim @ 2020-12-18 8:42 UTC (permalink / raw) To: Drew Adams; +Cc: eliz, rms, emacs-devel Drew Adams <drew.adams@oracle.com> writes: >> > > Nothing, except that people have been conditioned to expect that >> > > changes in options get saved automatically, >> > I assume you mean _some_ people. >> >> Would each you please take a deep breath, and respond >> more kindly from now on? > > Would you please take a deep breath? I don't think > there was anything unkind in either what Robert said > or in my reply to him. > I agree > Did you actually read what each of us said? The point > of my emphasis on "some" was elaborated in the rest of > what I said, the point of which was that we can easily > accommodate _both_ expectations of saving automatically > and saving only on demand. > True, although adding an option that says 'save all changes automatically' will help those who already know how to make configuration changes permanent. I was aiming more for the subset of people who donʼt know that yet. > I don't even see any disagreement in what we were each > saying. Some people _are_ used to automatic saving, > and we can accommodate that while also giving others > what they expect (which is what we have now). The only disagreement is whether such an option should be enabled by default for changes made via the menus, I think. Robert ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 8:42 ` Robert Pluim @ 2020-12-18 8:51 ` Christopher Dimech 2020-12-18 9:29 ` Robert Pluim 2020-12-18 17:48 ` Drew Adams 2020-12-18 17:43 ` Drew Adams 1 sibling, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 8:51 UTC (permalink / raw) To: Robert Pluim; +Cc: eliz, rms, Drew Adams, emacs-devel > Sent: Friday, December 18, 2020 at 9:42 AM > From: "Robert Pluim" <rpluim@gmail.com> > To: "Drew Adams" <drew.adams@oracle.com> > Cc: eliz@gnu.org, rms@gnu.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Drew Adams <drew.adams@oracle.com> writes: > > >> > > Nothing, except that people have been conditioned to expect that > >> > > changes in options get saved automatically, > >> > I assume you mean _some_ people. > >> > >> Would each you please take a deep breath, and respond > >> more kindly from now on? > > > > Would you please take a deep breath? I don't think > > there was anything unkind in either what Robert said > > or in my reply to him. > > > > I agree > > > Did you actually read what each of us said? The point > > of my emphasis on "some" was elaborated in the rest of > > what I said, the point of which was that we can easily > > accommodate _both_ expectations of saving automatically > > and saving only on demand. > > > > True, although adding an option that says 'save all changes > automatically' will help those who already know how to make > configuration changes permanent. I was aiming more for the subset of > people who donʼt know that yet. > > > I don't even see any disagreement in what we were each > > saying. Some people _are_ used to automatic saving, > > and we can accommodate that while also giving others > > what they expect (which is what we have now). > > The only disagreement is whether such an option should be enabled by > default for changes made via the menus, I think. That depends on whether we would people to experiment without messing up their setup. For those who experiment with many problems. they run the risk of forgetting how to revert to their previous configuration. Perhaps writing the details in a file, and using that if they want to revert back? > Robert > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 8:51 ` Christopher Dimech @ 2020-12-18 9:29 ` Robert Pluim 2020-12-18 17:48 ` Drew Adams 1 sibling, 0 replies; 384+ messages in thread From: Robert Pluim @ 2020-12-18 9:29 UTC (permalink / raw) To: Christopher Dimech; +Cc: eliz, rms, Drew Adams, emacs-devel Christopher Dimech <dimech@gmx.com> writes: > > That depends on whether we would people to experiment without messing > up their setup. For those who experiment with many problems. they > run the risk of forgetting how to revert to their previous configuration. > Perhaps writing the details in a file, and using that if they want to > revert back? You mean creating a ~/.emacs.d/saved-changes.el file with a menu command to undo them? I can't judge how useful that would be. Robert ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-18 8:51 ` Christopher Dimech 2020-12-18 9:29 ` Robert Pluim @ 2020-12-18 17:48 ` Drew Adams 2020-12-18 21:14 ` Christopher Dimech 1 sibling, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-18 17:48 UTC (permalink / raw) To: Christopher Dimech, Robert Pluim; +Cc: eliz, rms, emacs-devel > > The only disagreement is whether such an option should be enabled by > > default for changes made via the menus, I think. > > That depends on whether we would people to experiment without messing > up their setup. For those who experiment with many problems. they > run the risk of forgetting how to revert to their previous configuration. > Perhaps writing the details in a file, and using that if they want to > revert back? Yes, that was a point I made. There are good arguments to be made both for and against auto-saving of option changes. My message of a few minutes ago elaborates on this. Providing for the possibility (choice) of auto-saving could be a good thing. Providing flexibility in such a user choice would be even better. IOW, even just a choice always/never save all options could be a step forward, but it's not the best possible solution. Options are not all the same, and users don't all use the same option the same way. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: RE: Emacs Survey: Toolbars 2020-12-18 17:48 ` Drew Adams @ 2020-12-18 21:14 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 21:14 UTC (permalink / raw) To: Drew Adams; +Cc: Robert Pluim, emacs-devel, eliz, rms --------------------- Christopher Dimech General Administrator - Naiad Informatics - GNU Project (Geocomputation) - Geophysical Simulation - Geological Subsurface Mapping - Disaster Preparedness and Mitigation - Natural Resource Exploration and Production - Free Software Advocacy > Sent: Friday, December 18, 2020 at 6:48 PM > From: "Drew Adams" <drew.adams@oracle.com> > To: "Christopher Dimech" <dimech@gmx.com>, "Robert Pluim" <rpluim@gmail.com> > Cc: eliz@gnu.org, rms@gnu.org, emacs-devel@gnu.org > Subject: RE: Emacs Survey: Toolbars > > > > The only disagreement is whether such an option should be enabled by > > > default for changes made via the menus, I think. > > > > That depends on whether we would people to experiment without messing > > up their setup. For those who experiment with many problems. they > > run the risk of forgetting how to revert to their previous configuration. > > Perhaps writing the details in a file, and using that if they want to > > revert back? > > Yes, that was a point I made. > > There are good arguments to be made both for and > against auto-saving of option changes. My message > of a few minutes ago elaborates on this. > > Providing for the possibility (choice) of auto-saving > could be a good thing. Providing flexibility in such > a user choice would be even better. Then we provide the flexibility. > IOW, even just a choice always/never save all options > could be a step forward, but it's not the best possible > solution. Options are not all the same, and users > don't all use the same option the same way. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-18 8:42 ` Robert Pluim 2020-12-18 8:51 ` Christopher Dimech @ 2020-12-18 17:43 ` Drew Adams 1 sibling, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-18 17:43 UTC (permalink / raw) To: Robert Pluim; +Cc: eliz, rms, emacs-devel > The only disagreement is whether such an option should be > enabled by default for changes made via the menus, I think. There's not even any real disagreement there, I think. My reflex is to not change default behavior willy nilly, but case-by-case is the right approach to take when considering such changes. ___ My opinion about this general question is that both behaviors can be useful. And each is typically more useful for some kinds of option changing/setting. A behavior that I'm likely to toggle often within a given Emacs session is one whose last state I typically do not want to save for the next Emacs session. A behavior that I'm not likely to change often is one whose last state I might well want to save for the next browser session. (Or I might not.) For the latter, think of web browser settings. When I change such a setting I don't need to explicitly "save" settings - and that's "natural" behavior. That's the kind of thing I think you were thinking of when saying that users are used to such behavior and expect it. [You can see that not only do I think this applies to _some_ users. I think it can apply to the _same_ user _some_ of the time.] For the former, think of, say, toggling option `case-fold-search'. I might do that many times in the same Emacs session. I generally want its saved value to reflect my preference for the _default_ behavior (which in my case is case-sensitive search). I don't want it to reflect the last case-fold state of my last search in my last session. Note that vanilla Emacs goes out of its way to have most of its commands that toggle behavior such as case folding NOT change the option value. To toggle the option value you use a specific command for that. E.g., when you toggle case folding during Isearch that doesn't change the option value. ___ Personally, I think that for some commands it can make sense to let users toggle _either_ the option value or a temporary state. (Note: toggling an option value is different from doing that and also saving the value. That too can be a user preference for this or that option.) For example, in Isearch+ there's even an option, `isearchp-toggle-option-flag', that controls this: Non-nil means Isearch toggling commands can affect option values. If nil, the option value remains unchanged - the effect is temporary. Applies to toggle commands for behavior that has an associated user option. Currently this means `M-s i' (`isearch-toggle-invisible') and `M-c' (`isearch-toggle-case-fold'). If that option is nil then toggling case folding is temporary, i.e., for the current Isearch invocation only. If non-nil then the change persists for future invocations in the same session. Similarly, `isearchp-auto-keep-filter-predicate-flag': Non-nil means automatically apply `C-z s'. Changes to `isearch-filter-predicate' are automatically kept for subsequent searches in this Emacs session when you exit Isearch'. You can toggle this option using `C-z S during Isearch. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 6:36 ` Drew Adams 2020-12-18 6:42 ` Christopher Dimech 2020-12-18 8:42 ` Robert Pluim @ 2020-12-20 6:36 ` Richard Stallman 2020-12-21 1:11 ` Drew Adams 2 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-20 6:36 UTC (permalink / raw) To: Drew Adams; +Cc: rpluim, eliz, 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 read these words > Nothing, except that people have been conditioned to expect that > changes in options get saved automatically, I assume you mean _some_ people. and saw that things were getting snarky. "I assume you mean" is a snarky way of disagreeing if it isn't reporting a typing error. So I said, Would each you please take a deep breath, and respond more kindly from now on? I guess you took that as an attack, rather than as an exhortation, because you responded by throwing that perceived attack back at me: Would you please take a deep breath? I did as you suggested, and on second reading I agree that Robert Pluim's words were not unkind. They seemed that way when I first read them. Sorry, Robert. You continued with I don't think there was anything unkind in either what Robert said or in my reply to him. Did you actually read what each of us said? Of course. But only the parts that I cited. I didn't read the whole messages, or any of the whole messages in that subthread, because I'm not participating in discussing that particular question. If I wanted to participate, I'd have to read the points made about it. I decided it was easier just to say nothing about it. > The point > of my emphasis on "some" was elaborated in the rest of > what I said, I'm sure it was. But I'm talking about the attack (against Robert) that I perceived in the first line. Not about the substantive point it was the start of. -- 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] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-20 6:36 ` Richard Stallman @ 2020-12-21 1:11 ` Drew Adams 2020-12-21 10:23 ` Alfred M. Szmidt 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-21 1:11 UTC (permalink / raw) To: rms; +Cc: rpluim, eliz, emacs-devel > I read these words > > > Nothing, except that people have been conditioned to expect that > > changes in options get saved automatically, > I assume you mean _some_ people. > > and saw that things were getting snarky. "I assume you mean" is a > snarky way of disagreeing if it isn't reporting a typing error. No, it's not. It's not inherently any such thing. It, and pretty much anything, _can_ be used to be snarky. And pretty much anything can be interpreted to be snarky, if that's what one looks for or tends to hear. You may have "seen" things getting snarky, but things were not snarky or getting snarky. The discussion was only technical, not personal, until your intervention. Would you have preferred that I write "I guess" instead of "I assume"? Or "Yes, some people have been so conditioned, and ..."? Or "Did you mean to write '_some_ people'"? If so, please consider hearing some such phraseology. My guess is that you may have been looking for trouble, and so found it. You may not think so. And I may be wrong, of course - just a guess. But maybe think about it. I think/hope that if you reread all that was written you'll see that nothing snarky was intended, and there was no dispute - not even a technical disagreement, AFAIK. Qualifying the statement to only some people in that context was no different from qualifying a statement about integers to only natnums. The goal was clarification. My point was that Emacs can cater to more than one expected or preferred alternative behavior. Different strokes for different folks. Emacs shines at that. > So I said, > > Would each you please take a deep breath, and respond > more kindly from now on? > > I guess you took that as an attack, rather than as an exhortation, > because you responded by throwing that perceived attack back at me: An attack was perceived by you (3rd? 4th?). It wasn't an attack. It was suggesting the same thing you suggested, as a reply to what I sensed was an overreaction to, and misinterpretation of, the conversation and intentions, which were entirely cooperative. You advised us to take a deep breath, to step back from a perceived dispute or snarkiness. I asked that you take a deep breath, to step back from an overreaction. > Would you please take a deep breath? > > I did as you suggested, and on second reading I agree > that Robert Pluim's words were not unkind. They seemed > that way when I first read them. Sorry, Robert. I was hoping that a deep breath and rereading would help you see there was no fight to break up, and no malevolence. Are you now hinting that only my words were unkind? I might say I'm guessing that, but I prefer to give you the benefit of the doubt. And I'm glad you've absolved Robert, at least. > You continued with > > I don't think there was anything unkind in > either what Robert said or in my reply to him. > Did you actually read what each of us said? > > Of course. But only the parts that I cited. > > I didn't read the whole messages, or any of the whole messages in that > subthread, because I'm not participating in discussing that particular > question. We were interested in the question, even if you were not. It kind of feels like you weighed in as a referee of sorts in what you thought was a personal dispute. A referee really owes it to all to follow the action before judging. Not doing so isn't fair. > If I wanted to participate, I'd have to read the > points made about it. I decided it was easier > just to say nothing about it. That was what I guessed might have been the case. It can be easy (for anyone) to misinterpret something out of context. And then reacting to that can easily be unfair. Context is important. > > The point of my emphasis on "some" was elaborated > > in the rest of what I said, > > I'm sure it was. But I'm talking about the attack (against Robert) > that I perceived in the first line. Not about the substantive point > it was the start of. I hope I've made it clear now, and that by rereading you'll understand there was no attack anywhere. Along with deep breaths, please allow me to suggest / prescribe (all) giving each other the _benefit of the doubt_. That can often go a long way toward avoiding negative misunderstanding. ___ Half of the people can be part right all of the time, Some of the people can be all right part of the time. But all the people can't be all right all the time I think Abraham Lincoln said that. "I'll let you be in my dreams if I can be in yours," I said that. - R. Zimmerman ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 1:11 ` Drew Adams @ 2020-12-21 10:23 ` Alfred M. Szmidt 0 siblings, 0 replies; 384+ messages in thread From: Alfred M. Szmidt @ 2020-12-21 10:23 UTC (permalink / raw) To: Drew Adams; +Cc: rpluim, eliz, rms, emacs-devel Arguing back and forth who was or wasn't snarky isn't useful, it is simpler and far more productive to simply say sorry if it came out that way, no matter if it was ones fault or not and move on. So instead of assuming that someone is trying to cause a bar fight at every turn, lets assume that people are doing their best? Right now this is escalting based based on someone having percieved something as unkind or an attack, instead of just accepting that they at the time read it as such -- for whatever reason, and moving forward. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 8:20 ` Robert Pluim 2020-12-17 14:25 ` Eli Zaretskii 2020-12-17 17:06 ` Drew Adams @ 2020-12-18 5:42 ` Richard Stallman 2 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-18 5:42 UTC (permalink / raw) To: Robert Pluim; +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. ]]] > > What's wrong with Options->Save Options? > Nothing, except that people have been conditioned to expect that > changes in options get saved automatically, so we could do that for > them if they make the changes via the menus. That idea sounds good to me. Or maybe ask the user whether to save the change when the user requests a change. Or offer buttons "Apply permanently" and "Apply for this session". -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 16:18 ` Robert Pluim 2020-12-16 17:12 ` Eli Zaretskii @ 2020-12-17 11:01 ` Lars Ingebrigtsen 2020-12-17 14:36 ` Eli Zaretskii 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-17 11:01 UTC (permalink / raw) To: emacs-devel Robert Pluim <rpluim@gmail.com> writes: >>> And perhaps there should be some menu to toggle the tool bar/scroll bars >>> on/off? That might be there already somewhere, but not in the menu >>> where it would make sense -- the Options menu... >> >> It's under Options->Show/Hide. In this UX experiment, this user was unable to find that option. More data! But all kidding aside, that's a pretty baroque menu system there, and putting the options for where the toolbar should be (!) in the same place is just odd. > Should we take this opportunity to either auto-save config changes > made via the menus, or put a big red button somewhere saying 'click > here to save settings', or prompt the user to save them when exiting? Yes. > (Iʼve never really liked the toolbar enable/disable menu. How many gui > applications these days let you put the toolbar anywhere other than at > the top?) Yeah, that's weird, and shouldn't be in the menu. It's a detail best left to `M-x customize'. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 11:01 ` Lars Ingebrigtsen @ 2020-12-17 14:36 ` Eli Zaretskii 0 siblings, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-17 14:36 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Thu, 17 Dec 2020 12:01:57 +0100 > > > (Iʼve never really liked the toolbar enable/disable menu. How many gui > > applications these days let you put the toolbar anywhere other than at > > the top?) > > Yeah, that's weird, and shouldn't be in the menu. It's a detail best > left to `M-x customize'. Took me a few moments to understand what you two are talking about. You are both looking at a GTK build, right? Where we allow the user to control this aspect of the tool bar because GTK supports it? AFAIK, no other toolkit has that menu item. So if you want to ask what kind of GUI environment lets users put the tool bar anywhere but the top, the answer is GTK ;-) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen ` (5 preceding siblings ...) 2020-12-15 16:26 ` Eli Zaretskii @ 2020-12-15 21:07 ` Dmitry Gutov 2020-12-15 21:29 ` Christopher Dimech ` (2 more replies) 2020-12-16 5:34 ` Richard Stallman 2020-12-16 22:13 ` chad 8 siblings, 3 replies; 384+ messages in thread From: Dmitry Gutov @ 2020-12-15 21:07 UTC (permalink / raw) To: Lars Ingebrigtsen, emacs-devel On 15.12.2020 07:30, Lars Ingebrigtsen wrote: > Of 7.3K respondents, 5K disable toolbars, which is more than two > thirds. So perhaps toolbars should default to off? I know toolbars > were all the rage in the 90s, but that's apparently not the case now. > > Opinions? I also think the poll is heavily biased in favor of either Reddit users (who are largely either power-users, or those who inspire to be), or experienced Emacs users in general. For vast majority of them, disabling the toolbar is a trivial task. The ones who it really serves are less experienced users, non-programmers, etc. I don't think we have any significant data on that segment. Furthermore, features like this can have a very strong survivor bias: if the toolbars are bad, users will disable them. But a better answer would be to improve them instead. Rather than one poll, it might be worth more to look at similar programs (VS Code and IntelliJ IDEA come to mind) which both have a toolbar by default, but make it easy enough to disable the "distracting" elements of the UI for those who prefer them off. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 21:07 ` Dmitry Gutov @ 2020-12-15 21:29 ` Christopher Dimech 2020-12-16 9:24 ` Lars Ingebrigtsen 2020-12-16 14:06 ` Gregory Heytings via Emacs development discussions. 2 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-15 21:29 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Lars Ingebrigtsen, emacs-devel > Sent: Tuesday, December 15, 2020 at 10:07 PM > From: "Dmitry Gutov" <dgutov@yandex.ru> > To: "Lars Ingebrigtsen" <larsi@gnus.org>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > On 15.12.2020 07:30, Lars Ingebrigtsen wrote: > > Of 7.3K respondents, 5K disable toolbars, which is more than two > > thirds. So perhaps toolbars should default to off? I know toolbars > > were all the rage in the 90s, but that's apparently not the case now. > > > > Opinions? > > I also think the poll is heavily biased in favor of either Reddit users > (who are largely either power-users, or those who inspire to be), or > experienced Emacs users in general. > > For vast majority of them, disabling the toolbar is a trivial task. The > ones who it really serves are less experienced users, non-programmers, > etc. I don't think we have any significant data on that segment. > > Furthermore, features like this can have a very strong survivor bias: if > the toolbars are bad, users will disable them. But a better answer would > be to improve them instead. Spot on. There are aspects where certain modes are unwanted because they are not feature complete. Have found too many instances of lost opportunities in industry where projects are forgotten in that way. > Rather than one poll, it might be worth more to look at similar programs > (VS Code and IntelliJ IDEA come to mind) which both have a toolbar by > default, but make it easy enough to disable the "distracting" elements > of the UI for those who prefer them off. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 21:07 ` Dmitry Gutov 2020-12-15 21:29 ` Christopher Dimech @ 2020-12-16 9:24 ` Lars Ingebrigtsen 2020-12-16 9:28 ` Lars Ingebrigtsen ` (2 more replies) 2020-12-16 14:06 ` Gregory Heytings via Emacs development discussions. 2 siblings, 3 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-16 9:24 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > I also think the poll is heavily biased in favor of either Reddit > users (who are largely either power-users, or those who inspire to > be), or experienced Emacs users in general. My impression is that that's not accurate -- there's certainly experienced people who hang out on the Emacs Reddit group, but there's also a lot of new users. (And my guess is that the latter group is larger, based on the questions I see asked there.) In the mega-thread about modernising Emacs, the common refrain was that we needed actual data on what users do. We now have some data, and I don't think we should just dismiss that data because of statistical quibbles. And the data says that, at present, the Emacs toolbars are not very useful. Stefan's point about improving the toolbars so that they become useful is good, but I'm not sure that's realistic: We've had these toolbars for decades, and not much has happened with them. (Except growing progressively smaller.) I mean, look at the toolbar that happens when you "emacs -Q": You get an Emacs with a scratch buffer... with a "Save" icon. In a buffer that can't be saved. That's how much attention we've spent on toolbars in two decades. All the items in the *scratch* buffer toolbar are more natural for a menu, and they're already present there. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:24 ` Lars Ingebrigtsen @ 2020-12-16 9:28 ` Lars Ingebrigtsen 2020-12-16 13:53 ` Christopher Dimech 2020-12-18 5:40 ` Richard Stallman 2020-12-16 16:03 ` Eli Zaretskii 2020-12-16 17:14 ` Dmitry Gutov 2 siblings, 2 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-16 9:28 UTC (permalink / raw) To: emacs-devel Lars Ingebrigtsen <larsi@gnus.org> writes: > We now have some data, and I don't think we should just dismiss that > data because of statistical quibbles. Speaking of statistics -- I found Dick Mao's analysis of the survey pretty interesting: https://github.com/dickmao/emacs-survey/blob/main/2020/commentary.ipynb -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:28 ` Lars Ingebrigtsen @ 2020-12-16 13:53 ` Christopher Dimech 2020-12-18 5:40 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 13:53 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel It is evident how a lot of the reasoning is flawed! Making something harder than it needs to be is good. Only Conmen complicate things more than they should be. And only a genius simplifies complicated things. One of the most surprising aspects of this study is how often programmers have been proved not only wrong, but grossly and disastrously wrong in their prescriptions for the ills of society -- and how little their views have changed in response to empirical evidence of the disasters entailed by those views. Emacs core contributors is and probably should remain small =========================================================== Making something harder than it needs to be does ensure a certain competence. Manual transmission cars are another example of such natural gatekeeping. You were more assured of a new driver's roadworthiness if she could work a clutch, more so than if she relied on electronic assists to parallel park. --------------------- Christopher Dimech General Administrator - Naiad Informatics - GNU Project (Geocomputation) - Geophysical Simulation - Geological Subsurface Mapping - Disaster Preparedness and Mitigation - Natural Resource Exploration and Production - Free Software Advocacy > Sent: Wednesday, December 16, 2020 at 10:28 AM > From: "Lars Ingebrigtsen" <larsi@gnus.org> > To: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Lars Ingebrigtsen <larsi@gnus.org> writes: > > > We now have some data, and I don't think we should just dismiss that > > data because of statistical quibbles. > > Speaking of statistics -- I found Dick Mao's analysis of the survey > pretty interesting: > > https://github.com/dickmao/emacs-survey/blob/main/2020/commentary.ipynb > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:28 ` Lars Ingebrigtsen 2020-12-16 13:53 ` Christopher Dimech @ 2020-12-18 5:40 ` Richard Stallman 2020-12-18 9:37 ` Ihor Radchenko 2020-12-18 9:38 ` Lars Ingebrigtsen 1 sibling, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-18 5:40 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Speaking of statistics -- I found Dick Mao's analysis of the survey > pretty interesting: > https://github.com/dickmao/emacs-survey/blob/main/2020/commentary.ipynb I fetched that URL but all I saw were some GitHub command buttons and links. Where can I find the actual information? I have never used GitHub. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 5:40 ` Richard Stallman @ 2020-12-18 9:37 ` Ihor Radchenko 2020-12-18 9:38 ` Lars Ingebrigtsen 1 sibling, 0 replies; 384+ messages in thread From: Ihor Radchenko @ 2020-12-18 9:37 UTC (permalink / raw) To: rms, Lars Ingebrigtsen; +Cc: emacs-devel Richard Stallman <rms@gnu.org> writes: > > Speaking of statistics -- I found Dick Mao's analysis of the survey > > pretty interesting: > > > https://github.com/dickmao/emacs-survey/blob/main/2020/commentary.ipynb > > I fetched that URL but all I saw were some GitHub command buttons and links. > Where can I find the actual information? > > I have never used GitHub. I think you can just run git clone https://github.com/dickmao/emacs-survey Best, Ihor ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 5:40 ` Richard Stallman 2020-12-18 9:37 ` Ihor Radchenko @ 2020-12-18 9:38 ` Lars Ingebrigtsen 2020-12-19 5:11 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-18 9:38 UTC (permalink / raw) To: Richard Stallman; +Cc: emacs-devel Richard Stallman <rms@gnu.org> writes: > > Speaking of statistics -- I found Dick Mao's analysis of the survey > > pretty interesting: > > > https://github.com/dickmao/emacs-survey/blob/main/2020/commentary.ipynb > > I fetched that URL but all I saw were some GitHub command buttons and links. > Where can I find the actual information? The page has a bunch of charts and graphs, but you have to enable Javascript to see them. (And, no, the Javascript isn't free.) -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 9:38 ` Lars Ingebrigtsen @ 2020-12-19 5:11 ` Richard Stallman 2020-12-19 21:04 ` Daniel Brooks [not found] ` <871rflj3fh.fsf@gmail.com> 0 siblings, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-19 5:11 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > The page has a bunch of charts and graphs, but you have to enable > Javascript to see them. (And, no, the Javascript isn't free.) That is not a good state of affairs. Would someone who is skilled at interpersonal relationships like to ask him politely to make that JS code free, or convert the information to a directly readable format and post that, or some other adequate solution? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-19 5:11 ` Richard Stallman @ 2020-12-19 21:04 ` Daniel Brooks 2020-12-20 6:39 ` Richard Stallman [not found] ` <871rflj3fh.fsf@gmail.com> 1 sibling, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-19 21:04 UTC (permalink / raw) To: Richard Stallman; +Cc: Lars Ingebrigtsen, emacs-devel Richard Stallman <rms@gnu.org> writes: > > The page has a bunch of charts and graphs, but you have to enable > > Javascript to see them. (And, no, the Javascript isn't free.) > > That is not a good state of affairs. Would someone who is skilled at > interpersonal relationships like to ask him politely to make that JS > code free, or convert the information to a directly readable format > and post that, or some other adequate solution? You can view it locally using Jupyter Notebook, which is a bit like Maxima or Macsyma but with Python instead of Lisp, and uses the Modified BSD license. On my Fedora machine I installed it with "dnf install python3-notebook", then run Jupyter with "jupyter notebook commentary.ipynb". It took me a while to find the right package name, because it doesn't have the name "Jupyter" in either the name or the short description; an odd choice. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-19 21:04 ` Daniel Brooks @ 2020-12-20 6:39 ` Richard Stallman 2020-12-20 7:11 ` Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-20 6:39 UTC (permalink / raw) To: Daniel Brooks; +Cc: larsi, 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. ]]] > You can view it locally using Jupyter Notebook, which is a bit like > Maxima or Macsyma but with Python instead of Lisp, and uses the Modified > BSD license. That might be a solution I pesonally could use -- if I understood how to do it -- but there is more at stake than my seeing those graphs. Much more. It is not a good state of affairs for this information to direct people to run a nonfree program, and worse yet, that it happens in connection with Emacs. Would someone who is skilled at interpersonal relationships like to ask Dick Mao politely to make that JS code free, or convert the information to a directly readable format > and post that, or delete the JS and give a recipe for viewing the graphs using Jupyter Notebook, or some other adequate solution? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 6:39 ` Richard Stallman @ 2020-12-20 7:11 ` Daniel Brooks 2020-12-21 5:52 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-20 7:11 UTC (permalink / raw) To: Richard Stallman; +Cc: larsi, emacs-devel Richard Stallman <rms@gnu.org> writes: > > You can view it locally using Jupyter Notebook, which is a bit like > > Maxima or Macsyma but with Python instead of Lisp, and uses the Modified > > BSD license. > > That might be a solution I pesonally could use -- if I understood how > to do it -- but there is more at stake than my seeing those graphs. > Much more. > It is not a good state of affairs for this information to direct people > to run a nonfree program, and worse yet, that it happens in connection > with Emacs. > > Would someone who is skilled at > interpersonal relationships like to ask Dick Mao politely to make that JS > code free, or convert the information to a directly readable format >> and post that, or delete the JS and give a recipe for viewing the > graphs using Jupyter Notebook, or some other adequate solution? There's no JS for any of us to delete or to make free. GitHub renders the notebook using the same Jupyter Notebook software that I recommend using to view it with, so that's not a problem. It's just GitHub's own JS that isn't free software. Of course the graphs could be published anywhere else as well. Well, I assume that it's not difficult to get Jupyter Notebook to export a static view of the document, since GitHub does that already… Yea, in the Jupyter interface, select File → Download As… → HTML. That opens it in a new tab of your browser, and then you can use your browser to save it to disk. That said, I suspect that the notebook is just an intermediate representation. There's also a notebook in the repository called "Emacs User Survey 2020.ipynb" which was obviously used to generate the graphs on the official survey results webpage: https://emacssurvey.org/2020/ I don't know if there's a plan to publish Dick Mao's commentary.ipynb the same way, but it could obviously be done the same way. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-20 7:11 ` Daniel Brooks @ 2020-12-21 5:52 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-21 5:52 UTC (permalink / raw) To: Daniel Brooks; +Cc: larsi, 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. ]]] > Of course the graphs could be published anywhere else as well. Yes. Would someone like to ask Dick Mao to do that? > Yea, in the > Jupyter interface, select File → Download As… → HTML. I know you're trying to help me look at it, but these are terse instructions for a program I have never seen. To try to run it would imply a lot of time futzing around. It would mean losing time I should use for other pending tasks. Anyway, Caio sent me am image file which shows the results. So I personally don't need help any more. But it's still a bad thing to have this posted in a way that tends to lead people to run nonfree software. Let's aim to _fix_ the problem rather than work around 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] 384+ messages in thread
[parent not found: <871rflj3fh.fsf@gmail.com>]
* Re: Re: Emacs Survey: Toolbars [not found] ` <871rflj3fh.fsf@gmail.com> @ 2020-12-20 6:40 ` Richard Stallman 2020-12-21 5:53 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-20 6:40 UTC (permalink / raw) To: Caio Henrique; +Cc: larsi, 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. ]]] > > That is not a good state of affairs. Would someone who is skilled at > > interpersonal relationships like to ask him politely to make that JS > > code free, or convert the information to a directly readable format > > and post that, or some other adequate solution? > Attached to this email is a png image of that website. Thanks, I will look. But that helps only me. The situation is still not a good state of affairs, so we could still use someone to contact Dick Mao. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars [not found] ` <871rflj3fh.fsf@gmail.com> 2020-12-20 6:40 ` Richard Stallman @ 2020-12-21 5:53 ` Richard Stallman 2020-12-21 16:07 ` Eli Zaretskii 2020-12-22 2:54 ` Andy Moreton 1 sibling, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-21 5:53 UTC (permalink / raw) To: Caio Henrique; +Cc: larsi, 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. ]]] Thank you. It is interesting. One thing I noticed is that there seem to be difficulties in GUD (debugging under Emacs). That is a gad situation. Can we encourage users to report the problems, and devote effort to debugging them? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 5:53 ` Richard Stallman @ 2020-12-21 16:07 ` Eli Zaretskii 2020-12-22 5:20 ` Richard Stallman 2020-12-22 2:54 ` Andy Moreton 1 sibling, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-21 16:07 UTC (permalink / raw) To: rms; +Cc: larsi, caiohcs0, emacs-devel > From: Richard Stallman <rms@gnu.org> > Date: Mon, 21 Dec 2020 00:53:16 -0500 > Cc: larsi@gnus.org, emacs-devel@gnu.org > > One thing I noticed is that there seem to be difficulties in GUD > (debugging under Emacs). That is a bad situation. Can we encourage > users to report the problems, and devote effort to debugging them? I didn't interpret what he wrote to mean there's a problem. I interpreted it to mean he personally stopped using the Emacs GDB front end long ago. So he doesn't really say anything about gdb-mi.el, the current GDB front end in Emacs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 16:07 ` Eli Zaretskii @ 2020-12-22 5:20 ` Richard Stallman 2020-12-22 15:36 ` Eli Zaretskii 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-22 5:20 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, caiohcs0, 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 didn't interpret what he wrote to mean there's a problem. I > interpreted it to mean he personally stopped using the Emacs GDB front > end long ago. So he doesn't really say anything about gdb-mi.el, the > current GDB front end in Emacs. I am not sure what he meant, but he seems to claim, in a vague way, that it has had problems over the years. This might refer to real problems. In case that is so, we should ask for details. Would someone be willing to ask him to tell us what he meant, and where we could look for specifics? Of course, the users should have sent bug reports, but since they didn't, let's try to find out what the bugs are. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 5:20 ` Richard Stallman @ 2020-12-22 15:36 ` Eli Zaretskii 2020-12-23 4:23 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-22 15:36 UTC (permalink / raw) To: rms; +Cc: larsi, caiohcs0, emacs-devel > From: Richard Stallman <rms@gnu.org> > Cc: larsi@gnus.org, caiohcs0@gmail.com, emacs-devel@gnu.org > Date: Tue, 22 Dec 2020 00:20:34 -0500 > > > I didn't interpret what he wrote to mean there's a problem. I > > interpreted it to mean he personally stopped using the Emacs GDB front > > end long ago. So he doesn't really say anything about gdb-mi.el, the > > current GDB front end in Emacs. > > I am not sure what he meant, but he seems to claim, in a vague way, > that it has had problems over the years. This might refer to real > problems. In case that is so, we should ask for details. He said that about gud.el, which is nowadays obsolete, as far as its GDB interface is concerned. We leave its GDB parts in Emacs only because in some rare cases using annotations works better with GDB than using the MI interface. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 15:36 ` Eli Zaretskii @ 2020-12-23 4:23 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-23 4:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: larsi, caiohcs0, 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. ]]] > He said that about gud.el, which is nowadays obsolete, as far as its > GDB interface is concerned. We leave its GDB parts in Emacs only > because in some rare cases using annotations works better with GDB > than using the MI interface. His meaning was not clear to me. If there is no reason to think there is a problem in that area now, that's great. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-21 5:53 ` Richard Stallman 2020-12-21 16:07 ` Eli Zaretskii @ 2020-12-22 2:54 ` Andy Moreton 2020-12-22 13:29 ` Caio Henrique 1 sibling, 1 reply; 384+ messages in thread From: Andy Moreton @ 2020-12-22 2:54 UTC (permalink / raw) To: emacs-devel On Mon 21 Dec 2020, 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. ]]] > > Thank you. It is interesting. > > One thing I noticed is that there seem to be difficulties in GUD > (debugging under Emacs). That is a gad situation. Can we encourage > users to report the problems, and devote effort to debugging them? Can you please quote the relevant part of the message you are replying to ? It is jarring to read a message without any context. That is a discourtesy to readers, who must work harder to find which part of a message you are replying to (and some client software makes that harder by not threading messages properly). AndyM ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-22 2:54 ` Andy Moreton @ 2020-12-22 13:29 ` Caio Henrique 0 siblings, 0 replies; 384+ messages in thread From: Caio Henrique @ 2020-12-22 13:29 UTC (permalink / raw) To: Andy Moreton; +Cc: emacs-devel Andy Moreton <andrewjmoreton@gmail.com> writes: > On Mon 21 Dec 2020, 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. ]]] >> >> Thank you. It is interesting. >> >> One thing I noticed is that there seem to be difficulties in GUD >> (debugging under Emacs). That is a gad situation. Can we encourage >> users to report the problems, and devote effort to debugging them? > > Can you please quote the relevant part of the message you are replying > to ? It is jarring to read a message without any context. That is a > discourtesy to readers, who must work harder to find which part of a > message you are replying to (and some client software makes that harder > by not threading messages properly). > > AndyM I think that he is replying to this part of dickmao's survey commentary: > Gdb in emacs used to be so nice >Time was M-x gdb worked flawlessly. At some point, gud or "Grand Unified >Debugger" became the ring to rule them all, with no discernible loss of >functionality. Then some time in the oughts, things started to go >sideways, and "realgud" attempted to make debugging great again with >limited success. Now the latest pretender to the throne is something >called gdb/mi, with a flashy upstart called "dap-mode" nipping at its >mud-caked heels, but at this point I'm too accustomed to running gdb >outside emacs. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:24 ` Lars Ingebrigtsen 2020-12-16 9:28 ` Lars Ingebrigtsen @ 2020-12-16 16:03 ` Eli Zaretskii 2020-12-16 16:54 ` Christopher Dimech 2020-12-16 17:14 ` Dmitry Gutov 2 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-16 16:03 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel, dgutov > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Wed, 16 Dec 2020 10:24:07 +0100 > Cc: emacs-devel@gnu.org > > I mean, look at the toolbar that happens when you "emacs -Q": You get an > Emacs with a scratch buffer... with a "Save" icon. In a buffer that > can't be saved. Which is why the "Save" button is disabled when you are in *scratch*. > That's how much attention we've spent on toolbars in two decades. I think we gave the tool bar (and the menu bar) attention it deserves. > All the items in the *scratch* buffer toolbar are more natural for a > menu, and they're already present there. That is generally true for any tool bar in any GUI program. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 16:03 ` Eli Zaretskii @ 2020-12-16 16:54 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 16:54 UTC (permalink / raw) To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, dgutov, emacs-devel --------------------- Christopher Dimech General Administrator - Naiad Informatics - GNU Project (Geocomputation) - Geophysical Simulation - Geological Subsurface Mapping - Disaster Preparedness and Mitigation - Natural Resource Exploration and Production - Free Software Advocacy > Sent: Wednesday, December 16, 2020 at 5:03 PM > From: "Eli Zaretskii" <eliz@gnu.org> > To: "Lars Ingebrigtsen" <larsi@gnus.org> > Cc: emacs-devel@gnu.org, dgutov@yandex.ru > Subject: Re: Emacs Survey: Toolbars > > > From: Lars Ingebrigtsen <larsi@gnus.org> > > Date: Wed, 16 Dec 2020 10:24:07 +0100 > > Cc: emacs-devel@gnu.org > > > > I mean, look at the toolbar that happens when you "emacs -Q": You get an > > Emacs with a scratch buffer... with a "Save" icon. In a buffer that > > can't be saved. > > Which is why the "Save" button is disabled when you are in *scratch*. > > > That's how much attention we've spent on toolbars in two decades. > > I think we gave the tool bar (and the menu bar) attention it deserves. There are more important areas for improvement than whether a switch is "on" or "off". For instance, making auto-complete be part of standard emacs by default, extending the completion interface to provide an environment for users to concentrate more on their own work. Emacs got momentum in the past because of great tools like org-mode, magit, ivy. > > All the items in the *scratch* buffer toolbar are more natural for a > > menu, and they're already present there. > > That is generally true for any tool bar in any GUI program. > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:24 ` Lars Ingebrigtsen 2020-12-16 9:28 ` Lars Ingebrigtsen 2020-12-16 16:03 ` Eli Zaretskii @ 2020-12-16 17:14 ` Dmitry Gutov 2020-12-16 20:09 ` John Yates 2020-12-17 10:58 ` Lars Ingebrigtsen 2 siblings, 2 replies; 384+ messages in thread From: Dmitry Gutov @ 2020-12-16 17:14 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel On 16.12.2020 11:24, Lars Ingebrigtsen wrote: > Dmitry Gutov <dgutov@yandex.ru> writes: > >> I also think the poll is heavily biased in favor of either Reddit >> users (who are largely either power-users, or those who inspire to >> be), or experienced Emacs users in general. > > My impression is that that's not accurate -- there's certainly > experienced people who hang out on the Emacs Reddit group, but there's > also a lot of new users. (And my guess is that the latter group is > larger, based on the questions I see asked there.) New users ask questions more often than the more experienced ones. There are 50K subscribers to r/emacs and 300 people online just now. Clearly, people asking questions are a minority. > In the mega-thread about modernising Emacs, the common refrain was that > we needed actual data on what users do. We now have some data, and I > don't think we should just dismiss that data because of statistical > quibbles. The question is how to contextualize the data and what to do about it. I agree that the toolbars we have are probably less useful than they could be. > I mean, look at the toolbar that happens when you "emacs -Q": You get an > Emacs with a scratch buffer... with a "Save" icon. In a buffer that > can't be saved. That's how much attention we've spent on toolbars in > two decades. Well, it actually can be saved, as soon as you type something (C-x C-s works), and it's one of the real usage patterns. The button doesn't indicate that, though. But OTOH we have other buttons (New file, Open, Undo, Cut and Paste) that a lot of users expect from a text editor. > All the items in the *scratch* buffer toolbar are more natural for a > menu, and they're already present there. Maybe you're right. I checked back, and most contemporary text editors don't have a toolbar like we do. Atom/Sublime/VS Code don't have this kind of editor toolbar. IDEA only has specialized toolbars for, like, debugging. The recent versions of Kate (KDE editor) also seem to have removed it. GNOME Builder only has a small number of buttons, and they are on the title bar. Geany still has a toolbar, though. Even MS Word, while it has a toolbar for certain features, has moved the basic edit buttons to the window titlebar and made them pretty small. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 17:14 ` Dmitry Gutov @ 2020-12-16 20:09 ` John Yates 2020-12-16 20:29 ` Drew Adams 2020-12-16 21:33 ` chad 2020-12-17 10:58 ` Lars Ingebrigtsen 1 sibling, 2 replies; 384+ messages in thread From: John Yates @ 2020-12-16 20:09 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Lars Ingebrigtsen, Emacs developers On Wed, Dec 16, 2020 at 12:20 PM Dmitry Gutov <dgutov@yandex.ru> wrote: > But OTOH we have other buttons (New file, Open, Undo, Cut and Paste) > that a lot of users expect from a text editor. My sense is that such buttons made sense when a smaller fraction of the population was computer literate. These days I would expect them only on the most simplistic of editors, those still addressing absolute beginners. Folk using more featureful editors (emacs or otherwise) can be assumed to have already mastered some of the fundamentals of editing text. Put another way, can we not assume that anyone, even those using emacs for the very first time, has some notion of key bindings (even if those are C-c, C-x and C-v) and expects New, Open, Save, SaveAs and Close on a File menu? /john ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-16 20:09 ` John Yates @ 2020-12-16 20:29 ` Drew Adams 2020-12-16 23:53 ` Christopher Dimech 2020-12-16 21:33 ` chad 1 sibling, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-16 20:29 UTC (permalink / raw) To: John Yates, Dmitry Gutov; +Cc: Lars Ingebrigtsen, Emacs developers > My sense is that such buttons made sense when a smaller fraction of the > population was computer literate. These days I would expect them only > on the most simplistic of editors, those still addressing absolute beginners. > > Folk using more featureful editors (emacs or otherwise) can be assumed > to have already mastered some of the fundamentals of editing text. Put > another way, can we not assume that anyone, even those using emacs > for the very first time, has some notion of key bindings (even if those are > C-c, C-x and C-v) and expects New, Open, Save, SaveAs and Close on > a File menu? Actually, there are a fair number of GUI applications that pretty much require a lot of mouse clicking - no easy way to use the keyboard for many things. And of those there are a fair number that have lots of toolbar buttons/icons. And in such contexts it can sometimes be quicker to click such a button than to access the equivalent menu item, which might be nested (whether from the menu bar or a popup menu). Such things don't apply to Emacs, in the sense that you're not _required_ to use menus or a toolbar. But their existence elsewhere might be an argument for Emacs supporting them. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: RE: Emacs Survey: Toolbars 2020-12-16 20:29 ` Drew Adams @ 2020-12-16 23:53 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 23:53 UTC (permalink / raw) To: Drew Adams; +Cc: Lars Ingebrigtsen, Dmitry Gutov, Emacs developers, John Yates > Sent: Wednesday, December 16, 2020 at 9:29 PM > From: "Drew Adams" <drew.adams@oracle.com> > To: "John Yates" <john@yates-sheets.org>, "Dmitry Gutov" <dgutov@yandex.ru> > Cc: "Lars Ingebrigtsen" <larsi@gnus.org>, "Emacs developers" <emacs-devel@gnu.org> > Subject: RE: Emacs Survey: Toolbars > > > My sense is that such buttons made sense when a smaller fraction of the > > population was computer literate. These days I would expect them only > > on the most simplistic of editors, those still addressing absolute beginners. > > > > Folk using more featureful editors (emacs or otherwise) can be assumed > > to have already mastered some of the fundamentals of editing text. Put > > another way, can we not assume that anyone, even those using emacs > > for the very first time, has some notion of key bindings (even if those are > > C-c, C-x and C-v) and expects New, Open, Save, SaveAs and Close on > > a File menu? > > Actually, there are a fair number of GUI applications > that pretty much require a lot of mouse clicking - no > easy way to use the keyboard for many things. > > And of those there are a fair number that have lots > of toolbar buttons/icons. And in such contexts it > can sometimes be quicker to click such a button than > to access the equivalent menu item, which might be > nested (whether from the menu bar or a popup menu). Absolutely correct. But many fail to properly realise that. > Such things don't apply to Emacs, in the sense that > you're not _required_ to use menus or a toolbar. But > their existence elsewhere might be an argument for > Emacs supporting them. It is on the opposite side of the spectrum. If the trend in this discussion continues, Emacs will be forcing you to use keybindings, no other option. That is a regression. Emacs must provide flexibilityon both aspects. Or at least the functionality to do so by writing some elisp. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 20:09 ` John Yates 2020-12-16 20:29 ` Drew Adams @ 2020-12-16 21:33 ` chad 2020-12-16 22:56 ` Christopher Dimech 1 sibling, 1 reply; 384+ messages in thread From: chad @ 2020-12-16 21:33 UTC (permalink / raw) To: John Yates; +Cc: Lars Ingebrigtsen, Emacs developers, Dmitry Gutov [-- Attachment #1: Type: text/plain, Size: 1593 bytes --] On Wed, Dec 16, 2020 at 12:12 PM John Yates <john@yates-sheets.org> wrote: > On Wed, Dec 16, 2020 at 12:20 PM Dmitry Gutov <dgutov@yandex.ru> wrote: > > > But OTOH we have other buttons (New file, Open, Undo, Cut and Paste) > > that a lot of users expect from a text editor. > > My sense is that such buttons made sense when a smaller fraction of the > population was computer literate. These days I would expect them only > on the most simplistic of editors, those still addressing absolute > beginners. > I think this expectation is solid, but there's a wrinkle: If the toolbar is largely aimed at helping new users make use of emacs, then having an obvious way to do common functionality that _doesn't use the common bindings_ seems like a good use of toolbar space. Now that the buttons advertise the emacs bindings for these functions in a new-user-friendly way, they're potentially even more helpful, since they both provide a clear way to save/cut/copy/paste/undo, and they also teach the default emacs bindings for same. To this end, I'd suggest adding a button to the default toolbar that launches a short tutorial (in a new frame on gui systems), that talks about these common actions/bindings, with a next-step link describing why emacs uses these bindings and how to change them. It should also have an option to remove the tutorial-launching button from the toolbar. I can probably put together a prototype of this if people would like, and I recall some pieces of similar ideas floating around emacs-devel in the past 6-8 months. Would this be interesting to people? ~Chad [-- Attachment #2: Type: text/html, Size: 2137 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 21:33 ` chad @ 2020-12-16 22:56 ` Christopher Dimech 2020-12-18 5:33 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 22:56 UTC (permalink / raw) To: chad; +Cc: Lars Ingebrigtsen, Emacs developers, Dmitry Gutov, John Yates [-- Attachment #1: Type: text/html, Size: 3409 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 22:56 ` Christopher Dimech @ 2020-12-18 5:33 ` Richard Stallman 2020-12-18 5:53 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-18 5:33 UTC (permalink / raw) To: Christopher Dimech; +Cc: yandros, dgutov, larsi, john, 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. ]]] > --- Not fully correct. Toolbars assist those who suffer from pain pressing > keys. If you have trouble pressing keys, the toolbar will save you at most a tiny fraction of the keys you need to press to enter some text. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 5:33 ` Richard Stallman @ 2020-12-18 5:53 ` Christopher Dimech 2020-12-18 8:43 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 5:53 UTC (permalink / raw) To: rms; +Cc: yandros, john, emacs-devel, larsi, dgutov Dear Richard, It is difficult to use a mouse clicking tool to perform the keysequence on a virtual keyboard. When using a mouse clicking tool with a virtual keyboard, the number of presses that are saved, stop being a tiny fraction. It is then the keybinding approach that gets in the way. Regards Christopher > Sent: Friday, December 18, 2020 at 6:33 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: yandros@gmail.com, dgutov@yandex.ru, larsi@gnus.org, john@yates-sheets.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > --- Not fully correct. Toolbars assist those who suffer from pain pressing > > keys. > > If you have trouble pressing keys, the toolbar will save you at most > a tiny fraction of the keys you need to press to enter some text. > > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 5:53 ` Christopher Dimech @ 2020-12-18 8:43 ` Jean Louis 2020-12-18 8:54 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-18 8:43 UTC (permalink / raw) To: Christopher Dimech; +Cc: rms, emacs-devel, dgutov, larsi, yandros, john * Christopher Dimech <dimech@gmx.com> [2020-12-18 09:00]: > Dear Richard, > > It is difficult to use a mouse clicking tool to perform the > keysequence on a virtual keyboard. When using a mouse clicking tool > with a virtual keyboard, the number of presses that are saved, stop > being a tiny fraction. It is then the keybinding approach that gets > in the way. To give you more insights from me as user, I do use toolbar, sometimes not. In general it does not disturb me neither I see it. It is useful as one level of accessible user interface. It offers similar to menu items specific functions by only using the mouse and a click and that is great. Emacs with toolbar is on a level more accessible. Toolbar is occupying only about one third of linear space on my screen and in my opinion it should be full of functions such as: - new frame - bookmarks list - text properties such as justification full, centering - Emacs packages - report emacs bug - spell checking - version control check in/out - calendar - calculator - send email - then help functions like About Emacs or manual Including a rich toolbar makes options accessible more to users to discover more useful features of Emacs. Including more accessibility features would help that Emacs become useful for more people. Gestures would be another useful accessibility feature. But I think it exists already, I just forgot is it a built-in package. Then user could move mouse in some direction as specified to launch some Emacs commands. This would help on touch screen as well. Accessibility on one level more would be speech recognition where user activates it by saying "M-x" "find file" or "M-x" "mail" to activate features. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 8:43 ` Jean Louis @ 2020-12-18 8:54 ` Christopher Dimech 2020-12-18 10:04 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 8:54 UTC (permalink / raw) To: Jean Louis; +Cc: rms, emacs-devel, dgutov, larsi, yandros, john > Sent: Friday, December 18, 2020 at 9:43 AM > From: "Jean Louis" <bugs@gnu.support> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: rms@gnu.org, emacs-devel@gnu.org, dgutov@yandex.ru, larsi@gnus.org, yandros@gmail.com, john@yates-sheets.org > Subject: Re: Emacs Survey: Toolbars > > * Christopher Dimech <dimech@gmx.com> [2020-12-18 09:00]: > > Dear Richard, > > > > It is difficult to use a mouse clicking tool to perform the > > keysequence on a virtual keyboard. When using a mouse clicking tool > > with a virtual keyboard, the number of presses that are saved, stop > > being a tiny fraction. It is then the keybinding approach that gets > > in the way. > > To give you more insights from me as user, I do use toolbar, sometimes > not. In general it does not disturb me neither I see it. It is useful > as one level of accessible user interface. It offers similar to menu > items specific functions by only using the mouse and a click and that > is great. > > Emacs with toolbar is on a level more accessible. > > Toolbar is occupying only about one third of linear space on my screen > and in my opinion it should be full of functions such as: > > - new frame > - bookmarks list > - text properties such as justification full, centering > - Emacs packages > - report emacs bug > - spell checking > - version control check in/out > - calendar > - calculator > - send email > - then help functions like About Emacs or manual > > Including a rich toolbar makes options accessible more to users to > discover more useful features of Emacs. > > Including more accessibility features would help that Emacs become > useful for more people. Have suggested that the toolbar items could be user defined as it is for keybindings. > Gestures would be another useful accessibility feature. But I think it > exists already, I just forgot is it a built-in package. Then user > could move mouse in some direction as specified to launch some Emacs > commands. This would help on touch screen as well. > > Accessibility on one level more would be speech recognition where user > activates it by saying "M-x" "find file" or "M-x" "mail" to activate > features. > > > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 8:54 ` Christopher Dimech @ 2020-12-18 10:04 ` Jean Louis 2020-12-18 10:15 ` Christopher Dimech 2020-12-18 10:17 ` Christopher Dimech 0 siblings, 2 replies; 384+ messages in thread From: Jean Louis @ 2020-12-18 10:04 UTC (permalink / raw) To: Christopher Dimech; +Cc: rms, emacs-devel, dgutov, larsi, yandros, john * Christopher Dimech <dimech@gmx.com> [2020-12-18 11:54]: > > Including more accessibility features would help that Emacs become > > useful for more people. > > Have suggested that the toolbar items could be user defined as it is > for keybindings. Toolbar is offering accessibility feature that some functions may be chosen with the mouse. Itself it is easily customizable. But offering toolbar to be customizable such as in defcustom style would not be accessible by users, it would be redundant as programmers can already customize it. What would be accessible is to provide icons for many functions and let users drag and drop into the toolbar. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 10:04 ` Jean Louis @ 2020-12-18 10:15 ` Christopher Dimech 2020-12-18 18:07 ` Drew Adams 2020-12-18 10:17 ` Christopher Dimech 1 sibling, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 10:15 UTC (permalink / raw) To: Jean Louis; +Cc: rms, emacs-devel, dgutov, larsi, yandros, john > Sent: Friday, December 18, 2020 at 11:04 AM > From: "Jean Louis" <bugs@gnu.support> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: rms@gnu.org, emacs-devel@gnu.org, dgutov@yandex.ru, larsi@gnus.org, yandros@gmail.com, john@yates-sheets.org > Subject: Re: Emacs Survey: Toolbars > > * Christopher Dimech <dimech@gmx.com> [2020-12-18 11:54]: > > > Including more accessibility features would help that Emacs become > > > useful for more people. > > > > Have suggested that the toolbar items could be user defined as it is > > for keybindings. > > Toolbar is offering accessibility feature that some functions may be > chosen with the mouse. > > Itself it is easily customizable. > > But offering toolbar to be customizable such as in defcustom style > would not be accessible by users, it would be redundant as programmers > can already customize it. > > What would be accessible is to provide icons for many functions and > let users drag and drop into the toolbar. Correct, that what I mean. But also that a toolbar icon could run a user defined function. My disagreement with Lars is that he wants that the determination of when the toolbar can be used is defined by what makes sense to the maintainers of Emacs. Completely wrong. > ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-18 10:15 ` Christopher Dimech @ 2020-12-18 18:07 ` Drew Adams 2020-12-18 20:34 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-18 18:07 UTC (permalink / raw) To: Christopher Dimech, Jean Louis Cc: rms, emacs-devel, dgutov, larsi, yandros, john > > What would be accessible is to provide icons for many functions and > > let users drag and drop into the toolbar. > > Correct, that what I mean. But also that a toolbar icon could run a user > defined function. > > My disagreement with Lars is that he wants that the determination of when the > toolbar can be used is defined by what makes sense to the maintainers of Emacs. > > Completely wrong. A very easy start would be to provide a single button that is shown only if it has an associated binding/action, and whose action is user-defined, the value of a user option. No, that doesn't respond to all that you request (which I support, BTW). But it would seem like a zero-cost no-brainer, to at least let user get a user-defined toolbar button. And the action option could be buffer local. You'd at least get a user-definable, mode-specific button. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 18:07 ` Drew Adams @ 2020-12-18 20:34 ` Jean Louis 0 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-18 20:34 UTC (permalink / raw) To: Drew Adams Cc: rms, Christopher Dimech, emacs-devel, dgutov, larsi, yandros, john * Drew Adams <drew.adams@oracle.com> [2020-12-18 21:07]: > > > What would be accessible is to provide icons for many functions and > > > let users drag and drop into the toolbar. > > > > Correct, that what I mean. But also that a toolbar icon could run a user > > defined function. > > > > My disagreement with Lars is that he wants that the determination of when the > > toolbar can be used is defined by what makes sense to the maintainers of Emacs. > > > > Completely wrong. > > A very easy start would be to provide a single button > that is shown only if it has an associated binding/action, > and whose action is user-defined, the value of a user > option. Package that could send anonymous statistics would be useful to find out what and how people really and and do. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 10:04 ` Jean Louis 2020-12-18 10:15 ` Christopher Dimech @ 2020-12-18 10:17 ` Christopher Dimech 1 sibling, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 10:17 UTC (permalink / raw) To: Jean Louis; +Cc: rms, emacs-devel, dgutov, larsi, yandros, john > Sent: Friday, December 18, 2020 at 11:04 AM > From: "Jean Louis" <bugs@gnu.support> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: rms@gnu.org, emacs-devel@gnu.org, dgutov@yandex.ru, larsi@gnus.org, yandros@gmail.com, john@yates-sheets.org > Subject: Re: Emacs Survey: Toolbars > > * Christopher Dimech <dimech@gmx.com> [2020-12-18 11:54]: > > > Including more accessibility features would help that Emacs become > > > useful for more people. > > > > Have suggested that the toolbar items could be user defined as it is > > for keybindings. > > Toolbar is offering accessibility feature that some functions may be > chosen with the mouse. > > Itself it is easily customizable. > > But offering toolbar to be customizable such as in defcustom style > would not be accessible by users, it would be redundant as programmers > can already customize it. > > What would be accessible is to provide icons for many functions and > let users drag and drop into the toolbar. The toolbar can be detached like in Gimp when enabled. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 17:14 ` Dmitry Gutov 2020-12-16 20:09 ` John Yates @ 2020-12-17 10:58 ` Lars Ingebrigtsen 2020-12-17 11:22 ` Christopher Dimech ` (2 more replies) 1 sibling, 3 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-17 10:58 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: >> I mean, look at the toolbar that happens when you "emacs -Q": You get an >> Emacs with a scratch buffer... with a "Save" icon. In a buffer that >> can't be saved. That's how much attention we've spent on toolbars in >> two decades. > > Well, it actually can be saved, as soon as you type something (C-x C-s > works), and it's one of the real usage patterns. The button doesn't > indicate that, though. Yeah, the save button stays grayed out and you can't click it, which I take to be an indication that this toolbar hasn't gotten a lot of love. I mean, it's the toolbar shown in "emacs -Q", and even that one is pretty nonsensical. > Maybe you're right. I checked back, and most contemporary text editors > don't have a toolbar like we do. > > Atom/Sublime/VS Code don't have this kind of editor toolbar. IDEA only > has specialized toolbars for, like, debugging. > > The recent versions of Kate (KDE editor) also seem to have removed > it. GNOME Builder only has a small number of buttons, and they are on > the title bar. Geany still has a toolbar, though. > > Even MS Word, while it has a toolbar for certain features, has moved > the basic edit buttons to the window titlebar and made them pretty > small. I think we should consider setting some standards for what should be in a toolbar, and normal editing commands shouldn't be there. That is, a toolbar should be for things that people want to click a lot, like "pause" in a media player, or navigation commands like "prev/next" in *Help*. I just had a peek at the toolbar in *Help* -- it includes things like "Save" and "Undo". No wonder most people disable the thing. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 10:58 ` Lars Ingebrigtsen @ 2020-12-17 11:22 ` Christopher Dimech 2020-12-17 12:08 ` Dmitry Gutov 2020-12-17 14:32 ` Eli Zaretskii 2 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-17 11:22 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel, Dmitry Gutov > Sent: Thursday, December 17, 2020 at 11:58 AM > From: "Lars Ingebrigtsen" <larsi@gnus.org> > To: "Dmitry Gutov" <dgutov@yandex.ru> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Dmitry Gutov <dgutov@yandex.ru> writes: > > >> I mean, look at the toolbar that happens when you "emacs -Q": You get an > >> Emacs with a scratch buffer... with a "Save" icon. In a buffer that > >> can't be saved. That's how much attention we've spent on toolbars in > >> two decades. > > Well, it actually can be saved, as soon as you type something (C-x C-s > > works), and it's one of the real usage patterns. The button doesn't > > indicate that, though. > > Yeah, the save button stays grayed out and you can't click it, which I > take to be an indication that this toolbar hasn't gotten a lot of love. > I mean, it's the toolbar shown in "emacs -Q", and even that one is > pretty nonsensical. > > > Maybe you're right. I checked back, and most contemporary text editors > > don't have a toolbar like we do. > > > > Atom/Sublime/VS Code don't have this kind of editor toolbar. IDEA only > > has specialized toolbars for, like, debugging. > > > > The recent versions of Kate (KDE editor) also seem to have removed > > it. GNOME Builder only has a small number of buttons, and they are on > > the title bar. Geany still has a toolbar, though. > > > > Even MS Word, while it has a toolbar for certain features, has moved > > the basic edit buttons to the window titlebar and made them pretty > > small. > > I think we should consider setting some standards for what should be in > a toolbar, and normal editing commands shouldn't be there. That is, a > toolbar should be for things that people want to click a lot, like > "pause" in a media player, or navigation commands like "prev/next" in > *Help*. It's the users who know what they want to click, so make them able to introduce icons with the commands they want. Someone has said there already exists some of that functionality. In my browser I can drag whatever item I want to the toolbar! Artists use toolbars all the time. Gimp has a toolbar you can drag around. Fantastic. And Cad Systems rely on them. > I just had a peek at the toolbar in *Help* -- it includes things like > "Save" and "Undo". No wonder most people disable the thing. > > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 10:58 ` Lars Ingebrigtsen 2020-12-17 11:22 ` Christopher Dimech @ 2020-12-17 12:08 ` Dmitry Gutov 2020-12-17 12:12 ` Lars Ingebrigtsen 2020-12-17 14:32 ` Eli Zaretskii 2 siblings, 1 reply; 384+ messages in thread From: Dmitry Gutov @ 2020-12-17 12:08 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel On 17.12.2020 12:58, Lars Ingebrigtsen wrote: > Dmitry Gutov <dgutov@yandex.ru> writes: > >>> I mean, look at the toolbar that happens when you "emacs -Q": You get an >>> Emacs with a scratch buffer... with a "Save" icon. In a buffer that >>> can't be saved. That's how much attention we've spent on toolbars in >>> two decades. >> >> Well, it actually can be saved, as soon as you type something (C-x C-s >> works), and it's one of the real usage patterns. The button doesn't >> indicate that, though. > > Yeah, the save button stays grayed out and you can't click it, which I > take to be an indication that this toolbar hasn't gotten a lot of love. It's not obvious how to fix it, though, because an active "save" button is like a reminder to save regularly, whereas saving the scratch is an explicit, advanced usage pattern. > I mean, it's the toolbar shown in "emacs -Q", and even that one is > pretty nonsensical. I guess I was somewhat attached to the idea of it because it looks pretty and neat on my system (with -Q). Definitely more so than the splash screen, the discussions about improving which have all seemingly fizzled out. >> Maybe you're right. I checked back, and most contemporary text editors >> don't have a toolbar like we do. >> >> Atom/Sublime/VS Code don't have this kind of editor toolbar. IDEA only >> has specialized toolbars for, like, debugging. >> >> The recent versions of Kate (KDE editor) also seem to have removed >> it. GNOME Builder only has a small number of buttons, and they are on >> the title bar. Geany still has a toolbar, though. >> >> Even MS Word, while it has a toolbar for certain features, has moved >> the basic edit buttons to the window titlebar and made them pretty >> small. > > I think we should consider setting some standards for what should be in > a toolbar, and normal editing commands shouldn't be there. That is, a > toolbar should be for things that people want to click a lot, like > "pause" in a media player, or navigation commands like "prev/next" in > *Help*. Yes, probably. And if there are not enough of such buttons that we can come up with, the toolbar should be hidden for that particular mode. But... can it work well? Showing the toolbar in some modes yet hiding it in others? Jumping window heights are a known source of annoyance. All the editors I mentioned above that do have toolbars have avoided this problem, some way or another. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 12:08 ` Dmitry Gutov @ 2020-12-17 12:12 ` Lars Ingebrigtsen 2020-12-17 19:32 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-17 12:12 UTC (permalink / raw) To: Dmitry Gutov; +Cc: emacs-devel Dmitry Gutov <dgutov@yandex.ru> writes: > But... can it work well? Showing the toolbar in some modes yet hiding > it in others? Jumping window heights are a known source of annoyance. Yes. If we want to go in a toolbars-only-in-modes-where-it's-useful direction, we'll have to fix the height annoyance. Well, we should do that anyway... -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 12:12 ` Lars Ingebrigtsen @ 2020-12-17 19:32 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-17 19:32 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel, Dmitry Gutov > Sent: Thursday, December 17, 2020 at 1:12 PM > From: "Lars Ingebrigtsen" <larsi@gnus.org> > To: "Dmitry Gutov" <dgutov@yandex.ru> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > Dmitry Gutov <dgutov@yandex.ru> writes: > > > But... can it work well? Showing the toolbar in some modes yet hiding > > it in others? Jumping window heights are a known source of annoyance. > > Yes. If we want to go in a toolbars-only-in-modes-where-it's-useful > direction, we'll have to fix the height annoyance. Well, we should do > that anyway... It can be done as is done with Gimp, nobdy complains about a detached toolbar in Gimp. I can be as Speedbar is. > -- > (domestic pets only, the antidote for overdose, milk.) > bloggy blog: http://lars.ingebrigtsen.no > > ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 10:58 ` Lars Ingebrigtsen 2020-12-17 11:22 ` Christopher Dimech 2020-12-17 12:08 ` Dmitry Gutov @ 2020-12-17 14:32 ` Eli Zaretskii 2020-12-18 9:37 ` Lars Ingebrigtsen 2 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-17 14:32 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel, dgutov > From: Lars Ingebrigtsen <larsi@gnus.org> > Date: Thu, 17 Dec 2020 11:58:35 +0100 > Cc: emacs-devel@gnu.org > > Dmitry Gutov <dgutov@yandex.ru> writes: > > >> I mean, look at the toolbar that happens when you "emacs -Q": You get an > >> Emacs with a scratch buffer... with a "Save" icon. In a buffer that > >> can't be saved. That's how much attention we've spent on toolbars in > >> two decades. > > > > Well, it actually can be saved, as soon as you type something (C-x C-s > > works), and it's one of the real usage patterns. The button doesn't > > indicate that, though. > > Yeah, the save button stays grayed out and you can't click it, which I > take to be an indication that this toolbar hasn't gotten a lot of love. ??? I'd say it's the other way around: they are insensitive _because_ someone thought about avoiding to trip the user. > I just had a peek at the toolbar in *Help* -- it includes things like > "Save" and "Undo". No wonder most people disable the thing. I don't understand what you'd like to have instead. Would you like Emacs to instead constantly add and remove tool-bar buttons as they become available/not available? I think this would be much more annoying, and will cause even more people to disable the tool bar. Making a tool bar insensitive is a standard UI way of telling users: don't click on this, it will do nothing useful at this time. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 14:32 ` Eli Zaretskii @ 2020-12-18 9:37 ` Lars Ingebrigtsen 2020-12-18 9:45 ` Helmut Eller ` (2 more replies) 0 siblings, 3 replies; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-18 9:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dgutov, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: > I don't understand what you'd like to have instead. Would you like > Emacs to instead constantly add and remove tool-bar buttons as they > become available/not available? I think this would be much more > annoying, and will cause even more people to disable the tool bar. We're discussing different options. I don't think somebody has suggested dynamically adding/removing buttons from the toolbar, though? What has been suggested is that only modes where it makes sense should enable the toolbar (and there probably aren't that many where it makes much sense). However, that's probably technically difficult -- people have setups where they've computed the size of the Emacs windows based on whether (or not) they have toolbars enabled? So switching the toolbars on/off dynamically may lead to some difficulties in that area? Perhaps modes with "action buttons" (like mpc/eww) should just put the buttons in the header line. And then we're back to the original suggestion: Just default the toolbar to "off". -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 9:37 ` Lars Ingebrigtsen @ 2020-12-18 9:45 ` Helmut Eller 2020-12-18 18:02 ` Drew Adams 2020-12-18 11:52 ` Eli Zaretskii 2020-12-18 17:59 ` Drew Adams 2 siblings, 1 reply; 384+ messages in thread From: Helmut Eller @ 2020-12-18 9:45 UTC (permalink / raw) To: emacs-devel On Fri, Dec 18 2020, Lars Ingebrigtsen wrote: > What has been suggested is that only modes where it makes sense should > enable the toolbar (and there probably aren't that many where it makes > much sense). Maybe there code be something like a "fade-in" toolbar, i.e. normally the toolbar is hidden but when the mouse pointer moves over the top border it becomes visible. Helmut ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-18 9:45 ` Helmut Eller @ 2020-12-18 18:02 ` Drew Adams 2020-12-18 20:32 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-18 18:02 UTC (permalink / raw) To: Helmut Eller, emacs-devel > > What has been suggested is that only modes where it makes sense should > > enable the toolbar (and there probably aren't that many where it makes > > much sense). > > Maybe there code be something like a "fade-in" toolbar, i.e. normally > the toolbar is hidden but when the mouse pointer moves over the top > border it becomes visible. `tool-bar+.el' offers something very close to that, but without the automatic annoyance of it popping up without explicitly clicking something. No one has commented on it. Perhaps no one has bothered to try it? It's a single file; just load it to try it. https://www.emacswiki.org/emacs/download/tool-bar%2b.el https://emacswiki.org/emacs/ToolBar ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 18:02 ` Drew Adams @ 2020-12-18 20:32 ` Jean Louis 0 siblings, 0 replies; 384+ messages in thread From: Jean Louis @ 2020-12-18 20:32 UTC (permalink / raw) To: Drew Adams; +Cc: emacs-devel * Drew Adams <drew.adams@oracle.com> [2020-12-18 21:06]: > > > What has been suggested is that only modes where it makes sense should > > > enable the toolbar (and there probably aren't that many where it makes > > > much sense). > > > > Maybe there code be something like a "fade-in" toolbar, i.e. normally > > the toolbar is hidden but when the mouse pointer moves over the top > > border it becomes visible. > > `tool-bar+.el' offers something very close to that, > but without the automatic annoyance of it popping > up without explicitly clicking something. > > No one has commented on it. Perhaps no one has > bothered to try it? It's a single file; just load > it to try it. > > https://www.emacswiki.org/emacs/download/tool-bar%2b.el Click buttons and tool bar appears, use it and it closes. In my Lucid toolkit I have to click 2 times Buttons for tool bar to appear. Do you know that? ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 9:37 ` Lars Ingebrigtsen 2020-12-18 9:45 ` Helmut Eller @ 2020-12-18 11:52 ` Eli Zaretskii 2020-12-19 15:41 ` Lars Ingebrigtsen 2020-12-18 17:59 ` Drew Adams 2 siblings, 1 reply; 384+ messages in thread From: Eli Zaretskii @ 2020-12-18 11:52 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: dgutov, emacs-devel > From: Lars Ingebrigtsen <larsi@gnus.org> > Cc: emacs-devel@gnu.org, dgutov@yandex.ru > Date: Fri, 18 Dec 2020 10:37:10 +0100 > > Eli Zaretskii <eliz@gnu.org> writes: > > > I don't understand what you'd like to have instead. Would you like > > Emacs to instead constantly add and remove tool-bar buttons as they > > become available/not available? I think this would be much more > > annoying, and will cause even more people to disable the tool bar. > > We're discussing different options. I don't think somebody has > suggested dynamically adding/removing buttons from the toolbar, though? > > What has been suggested is that only modes where it makes sense should > enable the toolbar (and there probably aren't that many where it makes > much sense). But that's exactly the situation I described above. Suppose you type "M-x": this enters the minibuffer, where you have a new mode in effect, and some (most?) tool-bar buttons make no sense. Would you like those buttons, or maybe the entire tool bar, to be removed now? Similar situation exists when I have 2 windows, one of them showing *scratch*, and switche between them -- would you like the tool bar to disappear when I'm in *scratch*? > However, that's probably technically difficult -- people have setups > where they've computed the size of the Emacs windows based on whether > (or not) they have toolbars enabled? So switching the toolbars on/off > dynamically may lead to some difficulties in that area? That's another complication, but we could perhaps handle it in some reasonable way. Appearing and disappearing tool bar, OTOH, is something we need to consider seriously before we decide that such a mode of tool-bar display is sensible. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 11:52 ` Eli Zaretskii @ 2020-12-19 15:41 ` Lars Ingebrigtsen 2020-12-19 19:12 ` Drew Adams 0 siblings, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-19 15:41 UTC (permalink / raw) To: Eli Zaretskii; +Cc: dgutov, emacs-devel Eli Zaretskii <eliz@gnu.org> writes: >> What has been suggested is that only modes where it makes sense should >> enable the toolbar (and there probably aren't that many where it makes >> much sense). > > But that's exactly the situation I described above. Suppose you type > "M-x": this enters the minibuffer, where you have a new mode in > effect, and some (most?) tool-bar buttons make no sense. Would you > like those buttons, or maybe the entire tool bar, to be removed now? > > Similar situation exists when I have 2 windows, one of them showing > *scratch*, and switche between them -- would you like the tool bar to > disappear when I'm in *scratch*? No, I wouldn't, which is why I don't really suggest doing this. Somebody may come up with ideas that makes the proposition workeable, and I see that Drew has one -- he suggests having a blank toolbar in these instances, and ... perhaps? It's a lot of "dead" space real estate, though, so I'm not really enthusiastic. In the cases you describe today, Emacs does switch between different toolbars (if the modes in question have different ones). For instance, `C-x m', and you'll get the Message toolbar with things like "Send" and "Preview". If you `M-x', Emacs will switch to the non-specific toolbar with things like "Save", all of them greyed out. This, perhaps, shows that Drew's idea is a good one -- it's less confusing showing a completely blank toolbar than one with all the items greyed out? >> However, that's probably technically difficult -- people have setups >> where they've computed the size of the Emacs windows based on whether >> (or not) they have toolbars enabled? So switching the toolbars on/off >> dynamically may lead to some difficulties in that area? > > That's another complication, but we could perhaps handle it in some > reasonable way. Appearing and disappearing tool bar, OTOH, is > something we need to consider seriously before we decide that such a > mode of tool-bar display is sensible. Definitely. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-19 15:41 ` Lars Ingebrigtsen @ 2020-12-19 19:12 ` Drew Adams 2020-12-19 19:37 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-19 19:12 UTC (permalink / raw) To: Lars Ingebrigtsen, Eli Zaretskii; +Cc: emacs-devel, dgutov > No, I wouldn't, which is why I don't really suggest doing this. > Somebody may come up with ideas that makes the proposition workeable, > and I see that Drew has one -- he suggests having a blank toolbar in > these instances, and ... perhaps? It's a lot of "dead" space real > estate, though, so I'm not really enthusiastic. I haven't suggested using a blank tool-bar. Not at all. The `tool-bar+.el' code that I pointed to lets you _not show_ (not have) a tool bar at all, until you click a menu-bar pseudo-menu. When you do that Emacs pops up the tool-bar only for the duration of one action (tool-bar action or any other action). There's no blank tool bar - no wasted space. As the doc for `tool-bar+.el' makes clear, that's the point: save screen real estate. It takes only a minute to go to Emacs Wiki, download `tool-bar+.el', load it, and try it. You will immediately see the effect, and won't have to guess. You don't have to like it, but you might want to at least find out what it is (and isn't). https://www.emacswiki.org/emacs/download/tool-bar%2b.el Other approaches are possible. With only Lisp (no C, toolkit etc. changes), I came up with the behavior it offers. Emacs can no doubt do something better or different. But IMO, `tool-bar+.el' is a good start, and it or similar could be added to Emacs immediately. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: RE: Emacs Survey: Toolbars 2020-12-19 19:12 ` Drew Adams @ 2020-12-19 19:37 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-19 19:37 UTC (permalink / raw) To: Drew Adams; +Cc: Lars Ingebrigtsen, dgutov, Eli Zaretskii, emacs-devel > Sent: Sunday, December 20, 2020 at 12:42 AM > From: "Drew Adams" <drew.adams@oracle.com> > To: "Lars Ingebrigtsen" <larsi@gnus.org>, "Eli Zaretskii" <eliz@gnu.org> > Cc: emacs-devel@gnu.org, dgutov@yandex.ru > Subject: RE: Emacs Survey: Toolbars > > > No, I wouldn't, which is why I don't really suggest doing this. > > Somebody may come up with ideas that makes the proposition workeable, > > and I see that Drew has one -- he suggests having a blank toolbar in > > these instances, and ... perhaps? It's a lot of "dead" space real > > estate, though, so I'm not really enthusiastic. > > I haven't suggested using a blank tool-bar. > > Not at all. The `tool-bar+.el' code that I > pointed to lets you _not show_ (not have) a > tool bar at all, until you click a menu-bar > pseudo-menu. > > When you do that Emacs pops up the tool-bar > only for the duration of one action (tool-bar > action or any other action). > > There's no blank tool bar - no wasted space. > As the doc for `tool-bar+.el' makes clear, > that's the point: save screen real estate. > > It takes only a minute to go to Emacs Wiki, > download `tool-bar+.el', load it, and try it. > You will immediately see the effect, and > won't have to guess. You don't have to like > it, but you might want to at least find out > what it is (and isn't). > > https://www.emacswiki.org/emacs/download/tool-bar%2b.el > > Other approaches are possible. With only > Lisp (no C, toolkit etc. changes), I came up > with the behavior it offers. Emacs can no > doubt do something better or different. But > IMO, `tool-bar+.el' is a good start, and it > or similar could be added to Emacs immediately. Can't the functionality of the toolbar be provided by a separate package. Then if one wants it, he can require it. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: Emacs Survey: Toolbars 2020-12-18 9:37 ` Lars Ingebrigtsen 2020-12-18 9:45 ` Helmut Eller 2020-12-18 11:52 ` Eli Zaretskii @ 2020-12-18 17:59 ` Drew Adams 2 siblings, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-18 17:59 UTC (permalink / raw) To: Lars Ingebrigtsen, Eli Zaretskii; +Cc: emacs-devel, dgutov > I don't think somebody has > suggested dynamically adding/removing buttons from the toolbar, though? I think Christopher did suggest that. And I think he suggested that users even be able to easily define their own toolbar buttons/icons. But he'll correct me if I'm mistaken in this. > What has been suggested is that only modes where it makes sense should > enable the toolbar (and there probably aren't that many where it makes > much sense). For some (individual?) definition of "makes sense", it could well make sense for most modes/buffers. The point is that different users can work differently. > However, that's probably technically difficult -- people have setups > where they've computed the size of the Emacs windows based on whether > (or not) they have toolbars enabled? So switching the toolbars on/off > dynamically may lead to some difficulties in that area? I already mentioned tool-bar+.el, which lets you dynamically show and use the tool bar for one-off use, by clicking a pseudo menu-bar menu name. The tool-bar appears, you click a button for its action, then the tool-bar disappears. Currently this is only per-frame, not per window. And currently I have to use a menu-bar menu for the "button" that pops up the tool-bar. It might be nicer to have an icon button for this in the menu-bar, if that were possible. ___ We might also consider having a "hamburger" menu in the mode-line. Items in that menu could show/hide the menu|tool-bar or pop them up for one-off actions. That's one more way to save screen real estate while giving discoverable access to menus and tool buttons. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 21:07 ` Dmitry Gutov 2020-12-15 21:29 ` Christopher Dimech 2020-12-16 9:24 ` Lars Ingebrigtsen @ 2020-12-16 14:06 ` Gregory Heytings via Emacs development discussions. 2020-12-16 15:24 ` Dmitry Gutov 2 siblings, 1 reply; 384+ messages in thread From: Gregory Heytings via Emacs development discussions. @ 2020-12-16 14:06 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Lars Ingebrigtsen, emacs-devel > > I also think the poll is heavily biased in favor of either Reddit users > (who are largely either power-users, or those who inspire to be), or > experienced Emacs users in general. > That's not factually correct. Only 1/3 of the respondents came from Reddit. And the number of years repondents have been using Emacs is for 1/3 less than 4 years, for 1/3 between 4 and 12 years, and for 1/3 more than 12 years. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 14:06 ` Gregory Heytings via Emacs development discussions. @ 2020-12-16 15:24 ` Dmitry Gutov 2020-12-16 15:53 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Dmitry Gutov @ 2020-12-16 15:24 UTC (permalink / raw) To: Gregory Heytings; +Cc: Lars Ingebrigtsen, emacs-devel On 16.12.2020 16:06, Gregory Heytings wrote: > >> >> I also think the poll is heavily biased in favor of either Reddit >> users (who are largely either power-users, or those who inspire to >> be), or experienced Emacs users in general. >> > > That's not factually correct. > > Only 1/3 of the respondents came from Reddit. Another 20% came from hacker news, and a bit more - from lobste.rs. While it's not a given that those respondents are as heavily into Emacs, those forums tend to feature power users as well. Regarding the rest, we don't really know. > And the number of years repondents have been using Emacs is for 1/3 less > than 4 years, for 1/3 between 4 and 12 years, and for 1/3 more than 12 > years. So 70% of the respondents have been using Emacs for more than 4 years. I'd say that's pretty far into the "experienced user" category. Certainly not people who need to be told how to disable the toolbar, if they want to. And 70% of the respondents disable the toolbar. Might be a coincidence, but there is probably a high degree a correlation. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 15:24 ` Dmitry Gutov @ 2020-12-16 15:53 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 15:53 UTC (permalink / raw) To: Dmitry Gutov; +Cc: Gregory Heytings, Lars Ingebrigtsen, emacs-devel > Sent: Wednesday, December 16, 2020 at 4:24 PM > From: "Dmitry Gutov" <dgutov@yandex.ru> > To: "Gregory Heytings" <ghe@sdf.org> > Cc: "Lars Ingebrigtsen" <larsi@gnus.org>, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > On 16.12.2020 16:06, Gregory Heytings wrote: > > > >> > >> I also think the poll is heavily biased in favor of either Reddit > >> users (who are largely either power-users, or those who inspire to > >> be), or experienced Emacs users in general. > >> > > > > That's not factually correct. > > > > Only 1/3 of the respondents came from Reddit. > > Another 20% came from hacker news, and a bit more - from lobste.rs. > While it's not a given that those respondents are as heavily into Emacs, > those forums tend to feature power users as well. Regarding the rest, we > don't really know. > > > And the number of years repondents have been using Emacs is for 1/3 less > > than 4 years, for 1/3 between 4 and 12 years, and for 1/3 more than 12 > > years. > > So 70% of the respondents have been using Emacs for more than 4 years. > I'd say that's pretty far into the "experienced user" category. > Certainly not people who need to be told how to disable the toolbar, if > they want to. > > And 70% of the respondents disable the toolbar. Might be a coincidence, > but there is probably a high degree a correlation. > It's a big fuckup, particularly when these people continue to insist on their analysis when the statistics of the data will be biased. How can then people then expect to be taken seriously! Disregard the bad statistics so we can carry on with our argument is their mantra. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen ` (6 preceding siblings ...) 2020-12-15 21:07 ` Dmitry Gutov @ 2020-12-16 5:34 ` Richard Stallman 2020-12-16 5:54 ` Christopher Dimech 2020-12-16 9:26 ` Lars Ingebrigtsen 2020-12-16 22:13 ` chad 8 siblings, 2 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-16 5:34 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > Of 7.3K respondents, 5K disable toolbars, which is more than two > thirds. So perhaps toolbars should default to off? I know toolbars > were all the rage in the 90s, but that's apparently not the case now. > Opinions? The people who responded to that survey are certainly not representative of all users. They were selected for being users of certain web sites. That doesn't imply that most users want toolbars. Maybe hardly anyone wants toolbars. So here's an idea. We could make Emacs display, where the toolbar would have been, a question: Would you like a toolbar here or not? Yes No If you click Yes, that customizes to permanently turn on the toolbar. If you click No, that customizes to permanently turn off the toolbar. Each one could offer to click on a web page where you could register your preference. That way we would get a complete sample. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 5:34 ` Richard Stallman @ 2020-12-16 5:54 ` Christopher Dimech 2020-12-16 15:51 ` Eli Zaretskii 2020-12-17 5:54 ` Richard Stallman 2020-12-16 9:26 ` Lars Ingebrigtsen 1 sibling, 2 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-16 5:54 UTC (permalink / raw) To: rms; +Cc: Lars Ingebrigtsen, emacs-devel > Sent: Wednesday, December 16, 2020 at 6:34 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Lars Ingebrigtsen" <larsi@gnus.org> > Cc: emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > Of 7.3K respondents, 5K disable toolbars, which is more than two > > thirds. So perhaps toolbars should default to off? I know toolbars > > were all the rage in the 90s, but that's apparently not the case now. > > > Opinions? > > The people who responded to that survey are certainly not representative > of all users. They were selected for being users of certain web sites. > > That doesn't imply that most users want toolbars. Maybe hardly anyone > wants toolbars. > > So here's an idea. We could make Emacs display, where the toolbar > would have been, a question: > > Would you like a toolbar here or not? Yes No > > If you click Yes, that customizes to permanently turn on the toolbar. > If you click No, that customizes to permanently turn off the toolbar. > > Each one could offer to click on a web page where you could > register your preference. That way we would get a complete sample. Toolbar icons are the equivalent to keybindings for those who use the mouse. Rather than arguing about having a toolbar or not, allow the user to introduce a toolbar icon and associate with it a specific command. > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 5:54 ` Christopher Dimech @ 2020-12-16 15:51 ` Eli Zaretskii 2020-12-17 5:54 ` Richard Stallman 1 sibling, 0 replies; 384+ messages in thread From: Eli Zaretskii @ 2020-12-16 15:51 UTC (permalink / raw) To: Christopher Dimech; +Cc: larsi, rms, emacs-devel > From: Christopher Dimech <dimech@gmx.com> > Date: Wed, 16 Dec 2020 06:54:43 +0100 > Cc: Lars Ingebrigtsen <larsi@gnus.org>, emacs-devel@gnu.org > > Rather than arguing about having a toolbar or not, allow the user to > introduce a toolbar icon and associate with it a specific command. This has existed since day one, see tool-bar.el, where you will find examples of doing just that (the entire default tool bar is defined using this method). ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 5:54 ` Christopher Dimech 2020-12-16 15:51 ` Eli Zaretskii @ 2020-12-17 5:54 ` Richard Stallman 2020-12-17 6:49 ` Christopher Dimech 1 sibling, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-17 5:54 UTC (permalink / raw) To: Christopher Dimech; +Cc: larsi, 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. ]]] > Rather than arguing about having a toolbar or not, allow the > user to introduce a toolbar icon and associate with it a specific command. I am not sure what that means, or how it would be different from the current state of affairs. Would you please describe concreretely what feature you're proposing? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 5:54 ` Richard Stallman @ 2020-12-17 6:49 ` Christopher Dimech 2020-12-18 5:41 ` Richard Stallman 0 siblings, 1 reply; 384+ messages in thread From: Christopher Dimech @ 2020-12-17 6:49 UTC (permalink / raw) To: rms; +Cc: larsi, emacs-devel > Sent: Thursday, December 17, 2020 at 6:54 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: larsi@gnus.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > > Rather than arguing about having a toolbar or not, allow the > > user to introduce a toolbar icon and associate with it a specific command. > > I am not sure what that means, or how it would be different from the > current state of affairs. Would you please describe concreretely > what feature you're proposing? Currently one defines a keybinding using "global-set-key" or "add-hook" in their init file. Or by using "M-x global-set-key" or something similar. One then attaches a function, another keybinding or whatever to the user selected key sequence. Ok , I will tell you about it. A User Styled Toolbar. You name an icon (rather than a keybind) and associate with it the command (which can be an elisp function - emacs or user defined). Same functionality as keybinding but achieved by pressing an icon in the icon tool bar. Perhaps the icon can show text or an icon image (using a name from a pre-defined set). Functionality can be programmed by the user using elisp. We just provide a basic library of utilities so even beginners in elisp can just copy and paste from a basic template and adjust accordingly. Same as we are doing with keybindings. This will cater to those who want to use the mouse rather than keypresses. There could be several reasons for that: Repetitive Strain Injury, Illness, or Personal Injury. I can relate to that when I injured my shoulder blade, arm and wrist, a year ago, and could only use the mouse with a program that performs clicks and a virtual keyboard. Deciding the default behaviour of the toolbar is not important. But phasing it out or stop work on it based on a cohort of people who say they do not want it, would be a grave mistake. But you don't have to listen to me of coarse. I have also suggested making modus-themes the dafault face for emacs. I am reviewing the WCAG AAA International Standard with Protesilaos Stavrou for finding bugs, and extend functionality and capability, I also remember encouraging Jose Marchesi on his Recutils Project back in 2013. I knew he was on to something and offered to be its maintainer when he stopped having interest in it. Today, Gnu Recutils is back under active development and has been adopted as part of the infrastructure of guix and GNUnet. Regards Christopher > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-17 6:49 ` Christopher Dimech @ 2020-12-18 5:41 ` Richard Stallman 2020-12-18 6:16 ` Christopher Dimech 0 siblings, 1 reply; 384+ messages in thread From: Richard Stallman @ 2020-12-18 5:41 UTC (permalink / raw) To: Christopher Dimech; +Cc: larsi, 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. ]]] Would you like to implement more convenient customization of the toolbar? -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-18 5:41 ` Richard Stallman @ 2020-12-18 6:16 ` Christopher Dimech 0 siblings, 0 replies; 384+ messages in thread From: Christopher Dimech @ 2020-12-18 6:16 UTC (permalink / raw) To: rms; +Cc: larsi, emacs-devel Dear Richard, I like the way toolbars are implemented in Gimp. One can remove the toolbar because it is set up in another frame. Similar to the speedbar. If emacs could do the same, the toolbar can be disabled and you would not have the problem of vertical shifting. Alternatively, one could make the toolbar functionality appear as an additional MenuItem that you could detach. By keeping two screens - one side emacs, the other with the detached toolbar, a mouse clicking tool, and a virtual keyboard - one can mark quite well. The problem with all this is whether the trend is to get rid of toolbars altogether. That's the real problem. If a way can be found that does not require the toolbar to take space on the frame, it could make people who do not want it happy. The others can have the freedom to develop the toolbar or do work for others with it. I would be willing to include it in my Behistun Package, although have not planned on it. Then send they code for inclusion in emacs. But first one has to see how the emacs code on toolbars is applied differently by the maintaners as they adapt to the many people that insist on not having the toolbar visible. Have not coded in GTK for a long time. Regards Christopher > Sent: Friday, December 18, 2020 at 6:41 AM > From: "Richard Stallman" <rms@gnu.org> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: larsi@gnus.org, emacs-devel@gnu.org > Subject: Re: Emacs Survey: Toolbars > > [[[ 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. ]]] > > Would you like to implement more convenient customization of the > toolbar? > > -- > 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 5:34 ` Richard Stallman 2020-12-16 5:54 ` Christopher Dimech @ 2020-12-16 9:26 ` Lars Ingebrigtsen 2020-12-17 5:54 ` Richard Stallman 1 sibling, 1 reply; 384+ messages in thread From: Lars Ingebrigtsen @ 2020-12-16 9:26 UTC (permalink / raw) To: Richard Stallman; +Cc: emacs-devel Richard Stallman <rms@gnu.org> writes: > That doesn't imply that most users want toolbars. Maybe hardly anyone > wants toolbars. > > So here's an idea. We could make Emacs display, where the toolbar > would have been, a question: > > Would you like a toolbar here or not? Yes No > > If you click Yes, that customizes to permanently turn on the toolbar. > If you click No, that customizes to permanently turn off the toolbar. I think that sounds slightly intrusive... but we certainly could have something in the menu area for that: A mouse-3 popup that switches the toolbar on/off, for instance. > Each one could offer to click on a web page where you could > register your preference. That way we would get a complete sample. I'm not very enthusiastic about that -- it smacks a bit of "telemetry". We don't want Emacs to be seen as a piece of software that "phones home" and leaks data. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-16 9:26 ` Lars Ingebrigtsen @ 2020-12-17 5:54 ` Richard Stallman 0 siblings, 0 replies; 384+ messages in thread From: Richard Stallman @ 2020-12-17 5:54 UTC (permalink / raw) To: Lars Ingebrigtsen; +Cc: emacs-devel [[[ To any NSA and FBI agents reading my email: please consider ]]] [[[ whether defending the US Constitution against all enemies, ]]] [[[ foreign or domestic, requires you to follow Snowden's example. ]]] > > So here's an idea. We could make Emacs display, where the toolbar > > would have been, a question: > > > > Would you like a toolbar here or not? Yes No > > > > If you click Yes, that customizes to permanently turn on the toolbar. > > If you click No, that customizes to permanently turn off the toolbar. > I think that sounds slightly intrusive... Why would it be more intrusive than the toolbar currently is? It would occupy the same screen area. > but we certainly could have > something in the menu area for that: A mouse-3 popup that switches the > toolbar on/off, for instance. Yes, we could do that, but it would not encourage people to actually answer the question. > > Each one could offer to click on a web page where you could > > register your preference. That way we would get a complete sample. > I'm not very enthusiastic about that -- it smacks a bit of > "telemetry". That is a misjudgment. There is nothing wrong with inviting the user to communicate. > We don't want Emacs to be seen as a piece of software that > "phones home" and leaks data. I agree, but what I am proposing is not that. > In the mega-thread about modernising Emacs, the common refrain was that > we needed actual data on what users do. We now have some data, and I > don't think we should just dismiss that data because of statistical > quibbles. My suggestion will get us very good data about this question. -- 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] 384+ messages in thread
* Re: Emacs Survey: Toolbars 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen ` (7 preceding siblings ...) 2020-12-16 5:34 ` Richard Stallman @ 2020-12-16 22:13 ` chad 8 siblings, 0 replies; 384+ messages in thread From: chad @ 2020-12-16 22:13 UTC (permalink / raw) To: EMACS development team [-- Attachment #1: Type: text/plain, Size: 832 bytes --] One interesting bit of data from Dick Mao's survey analysis centers around keybinding sets. Very roughly, about 2/3 of respondents use the default keybindings, and the other third use evil-mode. The correlation that seems relevant: The median evil-modalist is *seven emacs-years younger* than the median > traditionalist. Reading the tea-leaves a bit, I think this suggests that at least many of these younger users are NOT seeing the toolbar normally, since the vast majority of the ways that a newer user is likely to get to vi-style bindings (via packaged setups like spacemacs or doom, by following config-file advice from the community, etc.) also disable the toolbar. This supports the (widespread?) theory that for most new users, the toolbar is present only at the very earliest moments of using emacs, if that. ~Chad [-- Attachment #2: Type: text/html, Size: 1527 bytes --] ^ permalink raw reply [flat|nested] 384+ messages in thread
[parent not found: <<87o8iv3ac3.fsf@gnus.org>]
[parent not found: <<877dpjp30g.fsf@ucl.ac.uk>]
[parent not found: <<87zh2fnmwq.fsf@gnus.org>]
[parent not found: <<87o8ivumn5.fsf@telefonica.net>]
[parent not found: <<87v9d3nkxk.fsf@gnus.org>]
[parent not found: <<X9kFyDSX980pXeVr@protected.rcdrun.com>]
[parent not found: <<ff23c825-e90e-f258-1124-55dbcf486a1d@gmx.com>]
[parent not found: <<X98uACIDV0lryk8q@protected.rcdrun.com>]
[parent not found: <<trinity-fde32917-8579-4566-bbb2-e8276dbd8ad6-1608462826557@3c-app-mailcom-bs11>]
[parent not found: <<E1krE2Q-0002lH-Li@fencepost.gnu.org>]
[parent not found: <<alpine.NEB.2.22.394.2012221159230453.3327@sdf.lonestar.org>]
[parent not found: <<83k0t9rfj5.fsf@gnu.org>]
[parent not found: <<AM0PR06MB65773FF757024A9F8B20B77596DF0@AM0PR06MB6577.eurprd06.prod.outlook.com>]
[parent not found: <<E1krve1-0002Um-Up@fencepost.gnu.org>]
[parent not found: <<AM0PR06MB657713ABD4CE4513D20FD23E96DE0@AM0PR06MB6577.eurprd06.prod.outlook.com>]
[parent not found: <<83tuscplcg.fsf@gnu.org>]
[parent not found: <<AM0PR06MB657758B877E9309CA4189D6996DD0@AM0PR06MB6577.eurprd06.prod.outlook.com>]
[parent not found: <<8335zvp9ko.fsf@gnu.org>]
* RE: Sv: Emacs Survey: Toolbars [not found] ` <<8335zvp9ko.fsf@gnu.org> @ 2020-12-24 17:58 ` Drew Adams 0 siblings, 0 replies; 384+ messages in thread From: Drew Adams @ 2020-12-24 17:58 UTC (permalink / raw) To: Eli Zaretskii, arthur miller; +Cc: ghe, rms, emacs-devel > Those things we "just" have to do, must be done, otherwise we cannot > claim to be anywhere near a word processor, because it is unimaginable > in a word processor to apply faces via Edit->Text Properties, let > alone via lower-level commands. > > And the next thing to do is the ability to save all that face > information to a disk file, so that the next time you visit the file > you see the same faces. Enriched mode does that, but it needs more > love. > > Next after that is pixel-level indentation and filling/justification, > so that we could use variable-pitch fonts. > > Next are the printing facilities, where I hope we will once and for > all solve the problem of printing non-ASCII, non-Latin-1 characters. > > When we have done all that, we will have a significant portion of a > word processor, IMO. I concur. That's a fair amount of basic stuff to provide, as stepping stones. And each bit of it would be useful in its own right and for other purposes as well. ___ Wrt "it is unimaginable in a word processor to apply faces via Edit->Text Properties", FWIW: Some of my code can help with on-demand, ad hoc highlighting. And yes, it's on Edit > Text Properties. But it could be put on tool-bar buttons or whatever. And of course other implementations of such basic features are possible, and would no doubt be chosen to provide performance as the basis of low-level, built-in word-processing. ___ Examples: Apply a color or face by dragging the mouse like a highlighter pen: 1. Edit > Text Properties > Highlight > Highlighter Pen 2. Drag mouse to highlight text dragged over. Apply a color or face to a selection (region): 1. Select text. 2. Right-click `mouse-3' twice (slower than a double-click). 3. Choose Highlight > Highlight in the popup menu. Apply a color or face to a symbol at point: 1. Right-click `mouse-3' twice (slower than a double-click). 2. Choose Thing At Pointer > Highlight Symbol in the popup menu. Do the same, but using hi-lock (highlight all occurrences of the symbol): 1. Same. 2. Choose Thing At Pointer > Hi-Lock Symbol in the popup menu. Choose a color or face to use for all such highlighting operations (and others): 1. Edit > Text Properties > Highlight > Choose Highlighting Face 2. Choose a color or a face (for background) using completion. Critical to choosing a color or face is the ability to see a sample associated with its name (the completion candidate). There are several pieces that combine to provide such behavior. Of course things could be done (implemented or organized) differently. I'm just pointing out some pieces as food for thought. 1. For showing samples along with color and face name completion candidates, i.e., WYSIWYG, I use Icicles. (Icicles lets you match RGB hex codes as well as color names.) I imagine that some other completion frameworks offer something similar, or could do so. Screenshots: https://www.emacswiki.org/emacs/Icicles_-_Screenshots#icicle-read-color (I also have library `palette.el', which gives you a complete color picker, and library `eyedropper.el', which just picks the foreground or background color at cursor or pointer. Some of the display quality of `palette.el' has been degraded by changes to Emacs, and I haven't kept up with fixing that, but it still works.) https://www.emacswiki.org/emacs/ColorPalette https://www.emacswiki.org/emacs/download/eyedropper.el 2. For highlighting by dragging the mouse, and for choosing a color/face for that, I use library `highlight.el'. https://www.emacswiki.org/emacs/HighlightLibrary 3. For putting that on a Highlight menu under Edit > Text Properties I use `facemenu+.el'. https://www.emacswiki.org/emacs/FaceMenuPlus 4. For highlighting on a `mouse-3' popup menu I use library `mouse3.el'. https://www.emacswiki.org/emacs/Mouse3 ^ permalink raw reply [flat|nested] 384+ messages in thread
[parent not found: <<trinity-c4da1b19-a641-4167-a095-38470e4aaae8-1608533825693@3c-app-mailcom-bs16>]
[parent not found: <<E1kra7K-0005VY-7F@fencepost.gnu.org>]
[parent not found: <<83sg7xrgr5.fsf@gnu.org>]
[parent not found: <<X+IeuuUZPkhe0PC3@protected.rcdrun.com>]
[parent not found: <<83h7odrdwy.fsf@gnu.org>]
[parent not found: <<86sg7w39fh.fsf@163.com>]
[parent not found: <<83pn30pku5.fsf@gnu.org>]
[parent not found: <<86wnx8otoj.fsf@163.com>]
[parent not found: <<834kkbp9vr.fsf@gnu.org>]
[parent not found: <<87czyxuxw6.fsf@db48x.net>]
[parent not found: <<87y2hlt82w.fsf@db48x.net>]
[parent not found: <<87lfdlvsw4.fsf@logand.com>]
[parent not found: <<83h7o8ncly.fsf@gnu.org>]
[parent not found: <<87pn2wudab.fsf@db48x.net>]
[parent not found: <<87mty0c3m1.fsf@gnus.org>]
[parent not found: <<83czywnb86.fsf@gnu.org>]
[parent not found: <<87im8ob707.fsf@gnus.org>]
[parent not found: <<87eejcb6nx.fsf@gnus.org>]
[parent not found: <<jwvft3smepa.fsf-monnier+emacs@gnu.org>]
[parent not found: <<875z4ob5c9.fsf@gnus.org>]
[parent not found: <<jwv1rfcmdfb.fsf-monnier+emacs@gnu.org>]
[parent not found: <<83mtxzly4f.fsf@gnu.org>]
* RE: Internationalize Emacs's messages (swahili) [not found] ` <<83mtxzly4f.fsf@gnu.org> @ 2020-12-27 4:03 ` Drew Adams 2020-12-27 4:58 ` lengths and stuff Daniel Brooks 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-27 4:03 UTC (permalink / raw) To: Eli Zaretskii, Stefan Monnier; +Cc: larsi, emacs-devel > > Actually, AFAICT this all started from: > > (not (null (cdr deleted))) would avoid traversing > > the entire list, but it wouldn't be easier to read. > > No, it started from (> (length LIST) 1) being a waste of cycles. I can't believe this thread is going on & on about this. Users need _anyway_ to learn that `length' traverses the entire list. And it's not the only function that does so. This is part of learning Lisp (and not just Lisp). All of your machinations to create additional functions to "help" users avoid the gotcha of using `length' when it's not needed won't really help, is my guess. With that "solution" you've only added a new problem: you now need to advertise the new functions and advise users to use them, not `length', in such a use case. Which means you still have the need to identify the relevant use cases, which means teach them about the `length' gotcha (or hope they follow advice without understanding). IOW, now you have 2 problems... This seems like a classic case of going against Occam's, Razor, i.e., a case of multiplying things needlessly. ___ [Personally, in the case considered, I'd use (cdr x). I wouldn't use (not (null (cdr x))). And it doesn't get simpler _or clearer_ than that, IMO.] ^ permalink raw reply [flat|nested] 384+ messages in thread
* lengths and stuff 2020-12-27 4:03 ` Internationalize Emacs's messages (swahili) Drew Adams @ 2020-12-27 4:58 ` Daniel Brooks 2020-12-27 5:23 ` Drew Adams 0 siblings, 1 reply; 384+ messages in thread From: Daniel Brooks @ 2020-12-27 4:58 UTC (permalink / raw) To: Drew Adams; +Cc: larsi, Eli Zaretskii, Stefan Monnier, emacs-devel Drew Adams <drew.adams@oracle.com> writes: > With that "solution" you've only added a new problem: you > now need to advertise the new functions and advise users > to use them, not `length', in such a use case. Which > means you still have the need to identify the relevant use > cases, which means teach them about the `length' gotcha > (or hope they follow advice without understanding). IOW, > now you have 2 problems... Users certainly do need to know the performance cost of the functions that they use. But they also need alternatives. If (> (length list) n) is a trap for new players, then document it as so _and_ mention that there is a specific function that can be used to avoid the trap. But it's also worth mentioning that maybe the code should use a vector instead of a list, if the length is so important. Also, as was pointed out, this very thing happens 735 times in the Emacs lisp codebase. Probably most of those have no great performance impact, but it's a good observation. > [Personally, in the case considered, I'd use (cdr x). > I wouldn't use (not (null (cdr x))). And it doesn't > get simpler _or clearer_ than that, IMO.] True. It's not the first time I've noticed myself making something more complicated by eagerly converting to a boolean. But I still don't think that it's readable code. db48x ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: lengths and stuff 2020-12-27 4:58 ` lengths and stuff Daniel Brooks @ 2020-12-27 5:23 ` Drew Adams 2020-12-27 17:56 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-27 5:23 UTC (permalink / raw) To: Daniel Brooks; +Cc: larsi, Eli Zaretskii, Stefan Monnier, emacs-devel > -----Original Message----- > From: Daniel Brooks <db48x@db48x.net> > Sent: Saturday, December 26, 2020 8:59 PM > To: Drew Adams <drew.adams@oracle.com> > Cc: Eli Zaretskii <eliz@gnu.org>; Stefan Monnier <monnier@iro.umontreal.ca>; > larsi@gnus.org; emacs-devel@gnu.org > Subject: lengths and stuff > > Drew Adams <drew.adams@oracle.com> writes: > > > With that "solution" you've only added a new problem: you > > now need to advertise the new functions and advise users > > to use them, not `length', in such a use case. Which > > means you still have the need to identify the relevant use > > cases, which means teach them about the `length' gotcha > > (or hope they follow advice without understanding). IOW, > > now you have 2 problems... > > Users certainly do need to know the performance cost of the functions > that they use. But they also need alternatives. If (> (length list) n) > is a trap for new players, then document it as so _and_ mention that > there is a specific function that can be used to avoid the trap. But > it's also worth mentioning that maybe the code should use a vector > instead of a list, if the length is so important. I spoke to that (e.g. doc guidance) a bit already: https://lists.gnu.org/archive/html/emacs-devel/2020-12/msg01757.html And as I said, `length' is not so special in this regard. `map', `dolist', and others also provide the same rope to hang yourself with. Learning to `throw' out of a list traversal (or whatever) when you can tell it's time to quit is a _general_ solution/idiom - good to know about even if it's not always the most appropriate. That should be taught in the manuals (in this general don't-continue-needlessly context), even if many prefer things like `cl-loop'. There are no specific functions that can be used to avoid the trap. Not in general. Code that DTRT in any given context can be short, sweet, and clear. I see no help offered by `length<' & compagnie. And if the list in question is short, and the context is not performance-critical (e.g. tight loop that's important), then there may be no reason to bother about not traversing it entirely. IOW, this stuff is best considered case by case. Lisp already has all that's needed to create clear code that does what one wants AND conveys to human readers what's done and why. > Also, as was pointed out, this very thing happens 735 times in the Emacs > lisp codebase. Probably most of those have no great performance impact, > but it's a good observation. If a given case has no performance impact, then it's maybe better NOT to provide code that might give the impression that we're trying to avoid a particular performance penalty. Of course in middle cases, which might not be obvious to a human reader, we may need to make things clear explicitly. I wouldn't be in favor of systematically avoiding use of `length', as if all uses are poisonous. That would almost be akin to wrapping all uses of `dolist' in a `catch'. It sends human readers the wrong message. When it's important to avoid traversing more than necessary, make that clear. Avoiding it _always_ makes it less clear when it's actually needed, not more. (Just one opinion.) ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: lengths and stuff 2020-12-27 5:23 ` Drew Adams @ 2020-12-27 17:56 ` Tomas Hlavaty 2020-12-27 18:52 ` Drew Adams 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 17:56 UTC (permalink / raw) To: emacs-devel On Sat 26 Dec 2020 at 21:23, Drew Adams <drew.adams@oracle.com> wrote: > And as I said, `length' is not so special in this regard. `map', > `dolist', and others also provide the same rope to hang yourself with. length is different than map and dolist. length is about a property of a list, namely about number of items. map and dolist are about doing something with items of list. Using length in a predicate is yet completely different and most likely bad because to answer the predicate, traversing the whole list is wasted time and energy. > There are no specific functions that can be used to avoid > the trap. There are not, but there could be. > I see no help offered by `length<' & compagnie. The idea is that the intent is expressed in a way that can _guarantee_ that useless length computation is avoided. > And if the list in question is short, and the context is > not performance-critical (e.g. tight loop that's important), > then there may be no reason to bother about not traversing > it entirely. IOW, this stuff is best considered case by > case. Lisp already has all that's needed to create clear > code that does what one wants AND conveys to human readers > what's done and why. In theory. In reality, look at emacs code. The new predicates will allow not worrying about the trap and be sure that it is not there. And if somebody falls in the trap again, the new predicates will make it easy to fix, simply by search and replace. > If a given case has no performance impact, then it's > maybe better NOT to provide code that might give the > impression that we're trying to avoid a particular > performance penalty. Of course in middle cases, which > might not be obvious to a human reader, we may need to > make things clear explicitly. But how do you know if it has or has not performance impact unless you investigate each case? With the new predicates, you do not need to investigate each case because it will be taken care automatically. > I wouldn't be in favor of systematically avoiding use > of `length', as if all uses are poisonous. In fact, it kind of is, especially when used in a predicate. > That would almost be akin to wrapping all uses of `dolist' in a > `catch'. Why? That does not make sense. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: lengths and stuff 2020-12-27 17:56 ` Tomas Hlavaty @ 2020-12-27 18:52 ` Drew Adams 2020-12-27 20:52 ` Tomas Hlavaty 0 siblings, 1 reply; 384+ messages in thread From: Drew Adams @ 2020-12-27 18:52 UTC (permalink / raw) To: Tomas Hlavaty, emacs-devel > > And as I said, `length' is not so special in this regard. `map', > > `dolist', and others also provide the same rope to hang yourself with. > > length is different than map and dolist. Everything that's not the same is different. > length is about a property of a list, namely about number of items. > map and dolist are about doing something with items of list. That's a quibble. Length is about doing something with the list elements: counting them. It's no more about a property of a list than is a function that checks all the element types or, like `member', finds an element that satisfies some condition. > Using length in a predicate is yet completely different and most likely > bad because to answer the predicate, traversing the whole list is wasted > time and energy. (lambda (xs) (= (length xs) 25)) ; need to count elts > > There are no specific functions that can be > > used to avoid the trap. > > There are not, but there could be. No, not completely. The gotcha is much more general than the cases that could be "fixed" using the proposed predicates. > > I see no help offered by `length<' & compagnie. > > The idea is that the intent is expressed in a way that can _guarantee_ > that useless length computation is avoided. There are plenty of other possibilities for uselessly invoking `length'. Probably the most typical one is neglecting to find the length only once and save it in a local variable. How much existing code (probably/hopefully mostly outside the core code) does that, instead of this? (let ((len (length xs))) ... len ...len ... len ...) A quick grep won't find places where code unwisely instead does ... (length xs) ... (length xs) ... (length xs). My guess is that those oblivious to the problem/gotcha do that much more often than they do a single `length' in a predicate that doesn't logically need to traverse the whole list. The point is that it's possible to misuse `length' (and `dolist' and `member' and ...). And no creation of `length<' etc. predicates helps. It fact, it can hurt, as I explained previously. > > IOW, this stuff is best considered case by case. > > If a given case has no performance impact, then it's > > maybe better NOT to provide code that might give the > > impression that we're trying to avoid a particular > > performance penalty. Of course in middle cases, which > > might not be obvious to a human reader, we may need to > > make things clear explicitly. > > But how do you know if it has or has not performance impact unless you > investigate each case? See above - this is best done case by case. As with all attempts to improve performance. Do it when it's appropriate/needed. If you don't know whether it's needed then don't do it. If it's really needed you'll know or you'll find out. Premature or otherwise misguided optimization essentially works against Occam's razor. Relevant/necessary optimization is just the opposite: it applies Occam's razor. > > I wouldn't be in favor of systematically avoiding use > > of `length', as if all uses are poisonous. > > In fact, it kind of is, especially when used in a predicate. No, it kind of isn't. Find the _actual_ places where the core Emacs code is _really_ problematic. See how many there are, compared to that shotgun-blast `grep'. Fix occurrences where the performance matters, i.e., those that are really problematic. End of story. `length<' & compagnie: YAGNI. ^ permalink raw reply [flat|nested] 384+ messages in thread
* RE: lengths and stuff 2020-12-27 18:52 ` Drew Adams @ 2020-12-27 20:52 ` Tomas Hlavaty 2020-12-28 7:15 ` Jean Louis 0 siblings, 1 reply; 384+ messages in thread From: Tomas Hlavaty @ 2020-12-27 20:52 UTC (permalink / raw) To: Drew Adams, emacs-devel On Sun 27 Dec 2020 at 10:52, Drew Adams <drew.adams@oracle.com> wrote: >> Using length in a predicate is yet completely different and most >> likely bad because to answer the predicate, traversing the whole list >> is wasted time and energy. > > (lambda (xs) (= (length xs) 25)) ; need to count elts Is that a joke? The predicates were proposed to help programers avoid writing such bad code. And if somebody writes such bad code, it is almost trivial to fix it with search and replace: "(= (length" -> "(length=" "(< (length" -> "(length<" "(> (length" -> "(length>" "(/= (length" -> "(length/=" "(<= (length" -> "(length<=" "(>= (length" -> "(length>=" Also the "symmetry" (or exhaustiveness?) here is to assist in easily fixing bad code with minimum changes. Nothing of course helps to those who are determined to unneccessarily count _all_ the elements of lists. ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and stuff 2020-12-27 20:52 ` Tomas Hlavaty @ 2020-12-28 7:15 ` Jean Louis 2020-12-28 16:44 ` Eric Abrahamsen 0 siblings, 1 reply; 384+ messages in thread From: Jean Louis @ 2020-12-28 7:15 UTC (permalink / raw) To: Tomas Hlavaty; +Cc: Drew Adams, emacs-devel * Tomas Hlavaty <tom@logand.com> [2020-12-27 23:53]: > On Sun 27 Dec 2020 at 10:52, Drew Adams <drew.adams@oracle.com> wrote: > >> Using length in a predicate is yet completely different and most > >> likely bad because to answer the predicate, traversing the whole list > >> is wasted time and energy. > > > > (lambda (xs) (= (length xs) 25)) ; need to count elts > > Is that a joke? > > The predicates were proposed to help programers avoid writing such bad > code. And if somebody writes such bad code, it is almost trivial to fix > it with search and replace: > > "(= (length" -> "(length=" > "(< (length" -> "(length<" > "(> (length" -> "(length>" > "(/= (length" -> "(length/=" > "(<= (length" -> "(length<=" > "(>= (length" -> "(length>=" > > Also the "symmetry" (or exhaustiveness?) here is to assist in easily > fixing bad code with minimum changes. > > Nothing of course helps to those who are determined to unneccessarily > count _all_ the elements of lists. May I understand if that proposal is to implement it in C or in Lisp? Does that mean when (length< list-1 10) is implemented in C it would become faster than: (< (length list-1) 10) ? Or is that proposal to make Lisp functions like: (defun length< (list n) (when (< (length list) n) t)) ^ permalink raw reply [flat|nested] 384+ messages in thread
* Re: lengths and stuff 2020-12-28 7:15 ` Jean Louis @ 2020-12-28 16:44 ` Eric Abrahamsen 0 siblings, 0 replies; 384+ messages in thread From: Eric Abrahamsen @ 2020-12-28 16:44 UTC (permalink / raw) To: emacs-devel Jean Louis <bugs@gnu.support> writes: > * Tomas Hlavaty <tom@logand.com> [2020-12-27 23:53]: >> On Sun 27 Dec 2020 at 10:52, Drew Adams <drew.adams@oracle.com> wrote: >> >> Using length in a predicate is yet completely different and most >> >> likely bad because to answer the predicate, traversing the whole list >> >> is wasted time and energy. >> > >> > (lambda (xs) (= (length xs) 25)) ; need to count elts >> >> Is that a joke? >> >> The predicates were proposed to help programers avoid writing such bad >> code. And if somebody writes such bad code, it is almost trivial to fix >> it with search and replace: >> >> "(= (length" -> "(length=" >> "(< (length" -> "(length<" >> "(> (length" -> "(length>" >> "(/= (length" -> "(length/=" >> "(<= (length" -> "(length<=" >> "(>= (length" -> "(length>=" >> >> Also the "symmetry" (or exhaustiveness?) here is to assist in easily >> fixing bad code with minimum changes. >> >> Nothing of course helps to those who are determined to unneccessarily >> count _all_ the elements of lists. > > May I understand if that proposal is to implement it in C or in Lisp? > Does that mean when (length< list-1 10) is implemented in C it would > become faster than: (< (length list-1) 10) ? > > Or is that proposal to make Lisp functions like: > > (defun length< (list n) > (when (< (length list) n) > t)) They're already implemented in Emacs master, and they're in C. As I understand it, one of the main advantages (beyond being simply faster, possibly) is that they return early: if all you want to do is check if a list has more than 2 elements, you don't have to calculate the whole length, you can return t once you've found the third element. ^ permalink raw reply [flat|nested] 384+ messages in thread
end of thread, other threads:[~2021-03-01 5:56 UTC | newest] Thread overview: 384+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-12-15 5:30 Emacs Survey: Toolbars Lars Ingebrigtsen 2020-12-15 5:57 ` Christopher Dimech 2020-12-15 6:24 ` Lars Ingebrigtsen 2020-12-15 10:01 ` Jean Louis 2020-12-15 6:24 ` Clément Pit-Claudel 2020-12-15 9:04 ` Thibaut Verron 2020-12-15 19:06 ` Stephen Leake 2020-12-15 19:33 ` Christopher Dimech 2020-12-15 19:47 ` Christopher Dimech 2020-12-16 5:43 ` Richard Stallman 2020-12-16 6:08 ` Christopher Dimech 2020-12-15 10:00 ` Jean Louis 2020-12-15 15:49 ` Christopher Dimech 2020-12-16 5:44 ` Richard Stallman 2020-12-15 17:07 ` Philip K. 2020-12-15 17:30 ` Christopher Dimech 2020-12-15 17:40 ` Drew Adams 2020-12-15 18:06 ` Christopher Dimech 2020-12-16 9:07 ` Robert Pluim 2020-12-16 17:03 ` Drew Adams 2020-12-15 18:02 ` dvorak users (was: Emacs Survey: Toolbars) andrés ramírez 2020-12-15 18:40 ` Christopher Dimech 2020-12-17 22:23 ` Ricardo Wurmus 2020-12-15 14:17 ` Emacs Survey: Toolbars Eric S Fraga 2020-12-15 14:50 ` Lars Ingebrigtsen 2020-12-15 14:56 ` Eric S Fraga 2020-12-15 15:14 ` Óscar Fuentes 2020-12-15 15:33 ` Lars Ingebrigtsen 2020-12-15 17:47 ` Óscar Fuentes 2020-12-15 18:11 ` Christopher Dimech 2020-12-15 18:48 ` Philip K. 2020-12-15 19:02 ` Jean Louis 2020-12-15 19:21 ` Christopher Dimech 2020-12-15 19:17 ` Christopher Dimech 2020-12-16 5:43 ` Richard Stallman 2020-12-15 18:51 ` Jean Louis 2020-12-20 4:23 ` Adrien Brochard 2020-12-20 4:35 ` Christopher Dimech 2020-12-20 13:44 ` Dmitry Gutov 2020-12-20 20:36 ` Christopher Dimech 2020-12-22 10:58 ` Gregory Heytings via Emacs development discussions. 2020-12-22 12:22 ` Christopher Dimech 2020-12-22 14:05 ` Jean Louis 2020-12-22 14:02 ` Jean Louis 2020-12-23 4:26 ` Richard Stallman 2020-12-23 5:22 ` Christopher Dimech 2020-12-23 5:30 ` Christopher Dimech 2020-12-20 10:57 ` Jean Louis 2020-12-20 11:13 ` Christopher Dimech 2020-12-21 5:47 ` Richard Stallman 2020-12-21 6:57 ` Christopher Dimech 2020-12-21 7:04 ` Jean Louis 2020-12-21 16:16 ` Eli Zaretskii 2020-12-21 16:51 ` Jean Louis 2020-12-21 17:20 ` Eli Zaretskii 2020-12-21 17:58 ` Jean Louis 2020-12-21 23:29 ` Christopher Dimech 2020-12-21 18:03 ` Lars Ingebrigtsen 2020-12-21 18:09 ` Arthur Miller 2020-12-21 18:14 ` Eli Zaretskii 2020-12-21 23:37 ` Christopher Dimech 2020-12-22 15:23 ` Eli Zaretskii 2020-12-23 1:32 ` Christopher Dimech 2020-12-23 15:14 ` Eli Zaretskii 2020-12-21 23:55 ` Christopher Dimech 2020-12-22 15:26 ` Eli Zaretskii 2020-12-22 15:52 ` Stefan Monnier 2020-12-23 1:27 ` Christopher Dimech 2020-12-24 5:47 ` Richard Stallman 2020-12-24 6:31 ` Christopher Dimech 2020-12-23 4:16 ` Richard Stallman 2020-12-22 5:21 ` Richard Stallman 2020-12-22 6:05 ` Christopher Dimech 2020-12-22 6:06 ` Ihor Radchenko 2020-12-24 5:49 ` Richard Stallman 2020-12-24 7:04 ` Ihor Radchenko 2020-12-24 11:21 ` Jean Louis 2020-12-26 10:20 ` Richard Stallman 2020-12-26 12:44 ` Ihor Radchenko 2020-12-27 5:42 ` Richard Stallman 2020-12-22 6:31 ` Jean Louis 2020-12-22 15:46 ` Eli Zaretskii 2020-12-24 5:49 ` Richard Stallman 2020-12-22 15:40 ` Eli Zaretskii 2020-12-22 16:28 ` Internationalize Emacs's messages (swahili) Jean Louis 2020-12-22 16:41 ` Eli Zaretskii 2020-12-23 14:04 ` Zhu Zihao 2020-12-23 16:07 ` Eli Zaretskii 2020-12-24 1:54 ` Zhu Zihao 2020-12-24 14:16 ` Eli Zaretskii 2020-12-26 2:03 ` Daniel Brooks 2020-12-26 2:47 ` Stefan Monnier 2020-12-26 3:22 ` Daniel Brooks 2020-12-26 3:48 ` Stefan Monnier 2020-12-26 4:01 ` Daniel Brooks 2020-12-27 5:34 ` Richard Stallman 2020-12-26 6:06 ` Daniel Brooks 2020-12-26 8:26 ` Eli Zaretskii 2020-12-26 8:57 ` tomas 2020-12-26 9:06 ` Tomas Hlavaty 2020-12-26 9:24 ` Eli Zaretskii 2020-12-26 9:28 ` Daniel Brooks 2020-12-26 9:34 ` Lars Ingebrigtsen 2020-12-26 9:47 ` Daniel Brooks 2020-12-26 9:54 ` Eli Zaretskii 2020-12-26 10:02 ` Daniel Brooks 2020-12-26 11:12 ` Tomas Hlavaty 2020-12-26 11:16 ` Daniel Brooks 2020-12-26 11:16 ` Eli Zaretskii 2020-12-27 5:38 ` Richard Stallman 2020-12-27 17:33 ` Tomas Hlavaty 2020-12-28 5:25 ` Richard Stallman 2020-12-26 21:19 ` Lars Ingebrigtsen 2020-12-26 21:26 ` Lars Ingebrigtsen 2020-12-26 21:45 ` Stefan Monnier 2020-12-26 21:55 ` Lars Ingebrigtsen 2020-12-26 22:08 ` Stefan Monnier 2020-12-26 22:10 ` Lars Ingebrigtsen 2020-12-26 23:04 ` Lars Ingebrigtsen 2020-12-27 0:34 ` Lars Ingebrigtsen 2020-12-27 8:01 ` Lars Ingebrigtsen 2020-12-27 18:15 ` Eli Zaretskii 2020-12-27 22:03 ` Lars Ingebrigtsen 2020-12-27 22:30 ` Tomas Hlavaty 2020-12-27 22:49 ` Alfred M. Szmidt 2020-12-27 22:57 ` Tomas Hlavaty 2020-12-27 23:05 ` lengths and other stuff Daniel Brooks 2020-12-27 23:09 ` Lars Ingebrigtsen 2020-12-27 23:16 ` Daniel Brooks 2020-12-27 23:21 ` Lars Ingebrigtsen 2020-12-27 23:23 ` Daniel Brooks 2020-12-27 23:24 ` Stefan Monnier 2020-12-27 23:23 ` Stefan Monnier 2020-12-27 23:32 ` Daniel Brooks 2020-12-27 23:46 ` Stefan Monnier 2020-12-27 23:25 ` Tomas Hlavaty 2020-12-27 23:35 ` Daniel Brooks 2020-12-27 23:47 ` Tomas Hlavaty 2020-12-28 0:00 ` Daniel Brooks 2020-12-27 23:34 ` Internationalize Emacs's messages (swahili) Alfred M. Szmidt 2020-12-28 0:00 ` Tomas Hlavaty 2020-12-28 0:16 ` Alfred M. Szmidt 2020-12-28 0:33 ` Tomas Hlavaty 2020-12-28 0:48 ` Lars Ingebrigtsen 2020-12-28 5:54 ` Drew Adams 2020-12-28 0:52 ` Alfred M. Szmidt 2020-12-27 23:41 ` Drew Adams 2021-01-01 5:55 ` Drew Adams 2021-01-01 15:03 ` Tomas Hlavaty 2021-01-01 19:09 ` Drew Adams 2021-01-01 22:08 ` Tomas Hlavaty 2021-01-01 22:55 ` Drew Adams 2021-01-01 23:32 ` Tomas Hlavaty 2021-01-02 0:25 ` Drew Adams 2020-12-27 12:56 ` Andreas Schwab 2020-12-27 22:05 ` Lars Ingebrigtsen 2020-12-27 22:16 ` Andreas Schwab 2020-12-27 22:17 ` Lars Ingebrigtsen 2020-12-27 22:23 ` Andreas Schwab 2020-12-27 22:29 ` Lars Ingebrigtsen 2020-12-27 22:30 ` Andreas Schwab 2020-12-27 22:42 ` Lars Ingebrigtsen 2020-12-27 23:00 ` Andreas Schwab 2020-12-27 23:05 ` Lars Ingebrigtsen 2020-12-27 22:45 ` Tomas Hlavaty 2020-12-27 22:49 ` Lars Ingebrigtsen 2020-12-27 22:32 ` Alfred M. Szmidt 2020-12-27 22:52 ` Tomas Hlavaty 2020-12-27 23:17 ` Alfred M. Szmidt 2020-12-27 23:40 ` Tomas Hlavaty 2020-12-27 23:55 ` Alfred M. Szmidt 2020-12-28 0:19 ` Tomas Hlavaty 2020-12-28 0:52 ` Alfred M. Szmidt 2020-12-28 7:32 ` Jean Louis 2020-12-27 3:35 ` Eli Zaretskii 2020-12-27 3:33 ` Eli Zaretskii 2020-12-27 5:34 ` Richard Stallman 2020-12-26 7:50 ` Eli Zaretskii 2020-12-26 9:07 ` Daniel Brooks 2020-12-26 9:31 ` Eli Zaretskii 2020-12-26 9:37 ` Daniel Brooks 2020-12-26 9:51 ` Eli Zaretskii 2020-12-26 10:00 ` Daniel Brooks 2020-12-26 9:52 ` Werner LEMBERG 2020-12-26 10:10 ` Daniel Brooks 2020-12-26 9:59 ` Jean Louis 2020-12-26 10:14 ` Daniel Brooks 2020-12-26 10:54 ` Jean Louis 2020-12-26 11:13 ` Daniel Brooks 2020-12-26 10:40 ` Eli Zaretskii 2020-12-27 16:23 ` Juri Linkov 2020-12-26 10:28 ` Richard Stallman 2020-12-26 10:48 ` Daniel Brooks 2020-12-27 5:39 ` Richard Stallman 2020-12-27 8:48 ` Daniel Brooks 2020-12-28 5:28 ` Richard Stallman 2020-12-28 6:30 ` making gettext more like fluent Daniel Brooks 2020-12-29 5:57 ` Richard Stallman 2020-12-29 6:49 ` Daniel Brooks 2020-12-30 5:30 ` Richard Stallman 2020-12-28 8:05 ` Internationalize Emacs's messages (swahili) Zhu Zihao 2020-12-29 6:01 ` Richard Stallman 2020-12-29 7:01 ` Daniel Brooks 2020-12-29 11:48 ` Zhu Zihao 2020-12-30 5:46 ` The posibility to use Rust libraries with GNU Project softwares(e.g. link with Rust library) Zhu Zihao 2020-12-30 14:00 ` Internationalize Emacs's messages (swahili) Andy Moreton 2020-12-30 19:18 ` Rust trademark problems - " Jean Louis 2020-12-21 16:53 ` Emacs Survey: Toolbars Eli Zaretskii 2020-12-21 23:43 ` Christopher Dimech 2021-02-25 22:53 ` Jeremy Bryant 2020-12-22 11:03 ` Gregory Heytings via Emacs development discussions. 2020-12-22 13:22 ` Daniel Martín via "Emacs development discussions. 2020-12-23 15:04 ` Tomas Hlavaty 2020-12-23 15:07 ` Gregory Heytings via Emacs development discussions. 2020-12-23 17:49 ` Tomas Hlavaty 2020-12-23 16:11 ` Eli Zaretskii 2020-12-23 16:39 ` Stefan Monnier 2020-12-23 17:55 ` Tomas Hlavaty 2020-12-23 19:10 ` Daniel Martín 2020-12-23 20:55 ` Tomas Hlavaty 2020-12-25 4:29 ` Richard Stallman 2020-12-25 9:48 ` Tomas Hlavaty 2020-12-25 17:20 ` Stefan Monnier 2020-12-25 18:06 ` Tomas Hlavaty 2020-12-25 18:14 ` Stefan Monnier 2020-12-25 18:24 ` Yuri Khan 2020-12-25 18:29 ` Tomas Hlavaty 2020-12-25 20:32 ` Yuri Khan 2020-12-25 21:57 ` Tomas Hlavaty 2020-12-25 20:25 ` Drew Adams 2020-12-25 21:59 ` Tomas Hlavaty 2020-12-25 18:28 ` Tomas Hlavaty 2020-12-22 16:06 ` Eli Zaretskii 2020-12-22 17:52 ` Arthur Miller 2020-12-22 18:07 ` Eli Zaretskii 2020-12-22 18:32 ` Arthur Miller 2020-12-22 19:04 ` Jean Louis 2020-12-22 19:24 ` Arthur Miller 2020-12-23 4:21 ` Richard Stallman 2020-12-23 11:21 ` Arthur Miller 2020-12-23 12:36 ` Christopher Dimech 2020-12-23 15:45 ` Tomas Hlavaty 2020-12-23 15:56 ` Eli Zaretskii 2020-12-23 16:05 ` Jean Louis 2020-12-24 4:40 ` Sv: " arthur miller 2020-12-24 14:23 ` Eli Zaretskii 2020-12-23 15:42 ` Tomas Hlavaty 2020-12-23 12:45 ` Jean Louis 2020-12-23 13:09 ` Christopher Dimech 2020-12-23 13:44 ` Jean Louis 2020-12-24 5:50 ` Richard Stallman 2020-12-24 5:57 ` Christopher Dimech 2020-12-24 6:31 ` Jean Louis 2020-12-15 20:58 ` Dmitry Gutov 2020-12-15 21:22 ` Christopher Dimech 2020-12-15 16:12 ` Christopher Dimech 2020-12-16 5:44 ` Richard Stallman 2020-12-16 15:49 ` Eli Zaretskii 2020-12-18 5:39 ` Richard Stallman 2020-12-15 14:29 ` Stefan Monnier 2020-12-15 14:48 ` Lars Ingebrigtsen 2021-02-25 15:50 ` Stefan Kangas 2021-02-25 18:17 ` Eli Zaretskii 2021-02-25 19:03 ` Stefan Monnier 2021-02-25 19:16 ` Eli Zaretskii 2021-02-25 19:27 ` [External] : " Drew Adams 2021-02-25 22:24 ` Stefan Monnier 2021-02-26 6:52 ` Eli Zaretskii 2021-02-26 8:44 ` Lars Ingebrigtsen 2021-02-26 15:51 ` [External] : " Drew Adams 2021-02-26 16:27 ` Stefan Monnier 2021-02-27 0:28 ` *Menu* buffer Tomas Hlavaty 2021-02-27 7:11 ` Eli Zaretskii 2021-03-01 5:56 ` David Masterson 2021-02-25 19:44 ` Emacs Survey: Toolbars martin rudalics 2020-12-15 16:32 ` Clément Pit-Claudel 2020-12-15 16:34 ` Drew Adams 2020-12-15 18:44 ` Jean Louis 2020-12-15 19:03 ` Christopher Dimech 2020-12-15 16:26 ` Eli Zaretskii 2020-12-15 16:51 ` Christopher Dimech 2020-12-16 9:14 ` Lars Ingebrigtsen 2020-12-16 16:01 ` Eli Zaretskii 2020-12-16 16:18 ` Robert Pluim 2020-12-16 17:12 ` Eli Zaretskii 2020-12-17 8:20 ` Robert Pluim 2020-12-17 14:25 ` Eli Zaretskii 2020-12-17 15:44 ` Robert Pluim 2020-12-17 15:48 ` Robert Pluim 2020-12-18 0:23 ` Gregory Heytings via Emacs development discussions. 2020-12-18 9:10 ` Robert Pluim 2020-12-17 17:06 ` Drew Adams 2020-12-17 18:10 ` Alfred M. Szmidt 2020-12-17 19:20 ` Christopher Dimech 2020-12-18 5:42 ` Richard Stallman 2020-12-18 6:36 ` Drew Adams 2020-12-18 6:42 ` Christopher Dimech 2020-12-18 8:42 ` Robert Pluim 2020-12-18 8:51 ` Christopher Dimech 2020-12-18 9:29 ` Robert Pluim 2020-12-18 17:48 ` Drew Adams 2020-12-18 21:14 ` Christopher Dimech 2020-12-18 17:43 ` Drew Adams 2020-12-20 6:36 ` Richard Stallman 2020-12-21 1:11 ` Drew Adams 2020-12-21 10:23 ` Alfred M. Szmidt 2020-12-18 5:42 ` Richard Stallman 2020-12-17 11:01 ` Lars Ingebrigtsen 2020-12-17 14:36 ` Eli Zaretskii 2020-12-15 21:07 ` Dmitry Gutov 2020-12-15 21:29 ` Christopher Dimech 2020-12-16 9:24 ` Lars Ingebrigtsen 2020-12-16 9:28 ` Lars Ingebrigtsen 2020-12-16 13:53 ` Christopher Dimech 2020-12-18 5:40 ` Richard Stallman 2020-12-18 9:37 ` Ihor Radchenko 2020-12-18 9:38 ` Lars Ingebrigtsen 2020-12-19 5:11 ` Richard Stallman 2020-12-19 21:04 ` Daniel Brooks 2020-12-20 6:39 ` Richard Stallman 2020-12-20 7:11 ` Daniel Brooks 2020-12-21 5:52 ` Richard Stallman [not found] ` <871rflj3fh.fsf@gmail.com> 2020-12-20 6:40 ` Richard Stallman 2020-12-21 5:53 ` Richard Stallman 2020-12-21 16:07 ` Eli Zaretskii 2020-12-22 5:20 ` Richard Stallman 2020-12-22 15:36 ` Eli Zaretskii 2020-12-23 4:23 ` Richard Stallman 2020-12-22 2:54 ` Andy Moreton 2020-12-22 13:29 ` Caio Henrique 2020-12-16 16:03 ` Eli Zaretskii 2020-12-16 16:54 ` Christopher Dimech 2020-12-16 17:14 ` Dmitry Gutov 2020-12-16 20:09 ` John Yates 2020-12-16 20:29 ` Drew Adams 2020-12-16 23:53 ` Christopher Dimech 2020-12-16 21:33 ` chad 2020-12-16 22:56 ` Christopher Dimech 2020-12-18 5:33 ` Richard Stallman 2020-12-18 5:53 ` Christopher Dimech 2020-12-18 8:43 ` Jean Louis 2020-12-18 8:54 ` Christopher Dimech 2020-12-18 10:04 ` Jean Louis 2020-12-18 10:15 ` Christopher Dimech 2020-12-18 18:07 ` Drew Adams 2020-12-18 20:34 ` Jean Louis 2020-12-18 10:17 ` Christopher Dimech 2020-12-17 10:58 ` Lars Ingebrigtsen 2020-12-17 11:22 ` Christopher Dimech 2020-12-17 12:08 ` Dmitry Gutov 2020-12-17 12:12 ` Lars Ingebrigtsen 2020-12-17 19:32 ` Christopher Dimech 2020-12-17 14:32 ` Eli Zaretskii 2020-12-18 9:37 ` Lars Ingebrigtsen 2020-12-18 9:45 ` Helmut Eller 2020-12-18 18:02 ` Drew Adams 2020-12-18 20:32 ` Jean Louis 2020-12-18 11:52 ` Eli Zaretskii 2020-12-19 15:41 ` Lars Ingebrigtsen 2020-12-19 19:12 ` Drew Adams 2020-12-19 19:37 ` Christopher Dimech 2020-12-18 17:59 ` Drew Adams 2020-12-16 14:06 ` Gregory Heytings via Emacs development discussions. 2020-12-16 15:24 ` Dmitry Gutov 2020-12-16 15:53 ` Christopher Dimech 2020-12-16 5:34 ` Richard Stallman 2020-12-16 5:54 ` Christopher Dimech 2020-12-16 15:51 ` Eli Zaretskii 2020-12-17 5:54 ` Richard Stallman 2020-12-17 6:49 ` Christopher Dimech 2020-12-18 5:41 ` Richard Stallman 2020-12-18 6:16 ` Christopher Dimech 2020-12-16 9:26 ` Lars Ingebrigtsen 2020-12-17 5:54 ` Richard Stallman 2020-12-16 22:13 ` chad [not found] <<87o8iv3ac3.fsf@gnus.org> [not found] ` <<877dpjp30g.fsf@ucl.ac.uk> [not found] ` <<87zh2fnmwq.fsf@gnus.org> [not found] ` <<87o8ivumn5.fsf@telefonica.net> [not found] ` <<87v9d3nkxk.fsf@gnus.org> [not found] ` <<X9kFyDSX980pXeVr@protected.rcdrun.com> [not found] ` <<ff23c825-e90e-f258-1124-55dbcf486a1d@gmx.com> [not found] ` <<X98uACIDV0lryk8q@protected.rcdrun.com> [not found] ` <<trinity-fde32917-8579-4566-bbb2-e8276dbd8ad6-1608462826557@3c-app-mailcom-bs11> [not found] ` <<E1krE2Q-0002lH-Li@fencepost.gnu.org> [not found] ` <<alpine.NEB.2.22.394.2012221159230453.3327@sdf.lonestar.org> [not found] ` <<83k0t9rfj5.fsf@gnu.org> [not found] ` <<AM0PR06MB65773FF757024A9F8B20B77596DF0@AM0PR06MB6577.eurprd06.prod.outlook.com> [not found] ` <<E1krve1-0002Um-Up@fencepost.gnu.org> [not found] ` <<AM0PR06MB657713ABD4CE4513D20FD23E96DE0@AM0PR06MB6577.eurprd06.prod.outlook.com> [not found] ` <<83tuscplcg.fsf@gnu.org> [not found] ` <<AM0PR06MB657758B877E9309CA4189D6996DD0@AM0PR06MB6577.eurprd06.prod.outlook.com> [not found] ` <<8335zvp9ko.fsf@gnu.org> 2020-12-24 17:58 ` Sv: " Drew Adams [not found] ` <<trinity-c4da1b19-a641-4167-a095-38470e4aaae8-1608533825693@3c-app-mailcom-bs16> [not found] ` <<E1kra7K-0005VY-7F@fencepost.gnu.org> [not found] ` <<83sg7xrgr5.fsf@gnu.org> [not found] ` <<X+IeuuUZPkhe0PC3@protected.rcdrun.com> [not found] ` <<83h7odrdwy.fsf@gnu.org> [not found] ` <<86sg7w39fh.fsf@163.com> [not found] ` <<83pn30pku5.fsf@gnu.org> [not found] ` <<86wnx8otoj.fsf@163.com> [not found] ` <<834kkbp9vr.fsf@gnu.org> [not found] ` <<87czyxuxw6.fsf@db48x.net> [not found] ` <<87y2hlt82w.fsf@db48x.net> [not found] ` <<87lfdlvsw4.fsf@logand.com> [not found] ` <<83h7o8ncly.fsf@gnu.org> [not found] ` <<87pn2wudab.fsf@db48x.net> [not found] ` <<87mty0c3m1.fsf@gnus.org> [not found] ` <<83czywnb86.fsf@gnu.org> [not found] ` <<87im8ob707.fsf@gnus.org> [not found] ` <<87eejcb6nx.fsf@gnus.org> [not found] ` <<jwvft3smepa.fsf-monnier+emacs@gnu.org> [not found] ` <<875z4ob5c9.fsf@gnus.org> [not found] ` <<jwv1rfcmdfb.fsf-monnier+emacs@gnu.org> [not found] ` <<83mtxzly4f.fsf@gnu.org> 2020-12-27 4:03 ` Internationalize Emacs's messages (swahili) Drew Adams 2020-12-27 4:58 ` lengths and stuff Daniel Brooks 2020-12-27 5:23 ` Drew Adams 2020-12-27 17:56 ` Tomas Hlavaty 2020-12-27 18:52 ` Drew Adams 2020-12-27 20:52 ` Tomas Hlavaty 2020-12-28 7:15 ` Jean Louis 2020-12-28 16:44 ` Eric Abrahamsen
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.