* bug#9571: 24.0.50; user option to turn off bidi, please @ 2011-09-22 4:18 Drew Adams 2011-09-22 5:49 ` Eli Zaretskii ` (2 more replies) 0 siblings, 3 replies; 57+ messages in thread From: Drew Adams @ 2011-09-22 4:18 UTC (permalink / raw) To: 9571 Dunno if this is still the latest word, but in the emacs-devel thread "`C-b' is backward-char, `left' is left-char - why?", I was told that the way for a user to turn off bidi is to set `bidi-display-reordering' to nil. Since it is buffer-local, that presumably means putting this in .emacs if you want to turn it off everywhere: (setq-default bidi-display-reordering nil) 1. That's not very user-friendly. We should have a user option that does this, i.e., gives users an easy way to disable this feature if they don't want to use it. 2. I see nothing in the Emacs doc that tells users clearly that if they want to turn off bidi editing then they should set the default value of this internal variable to nil. Users should be told this. The only thing said in the Emacs manual about this variable is this: "The buffer-local variable `bidi-display-reordering' controls whether text in the buffer is reordered for display. If its value is non-`nil', Emacs reorders characters that have right-to-left directionality when they are displayed. The default value is `t'." That tells users who are inclined to study it how it works, but we should be telling all users clearly how they can easily turn it off everywhere, if they want to. FWIW, I turn it off because both (a) it slows down Emacs (no, I don't have a test case and I won't be coming up with one) and (b) I have no need for bidi editing, at least for now. If you don't believe (a), then at least accept (b): I don't _want_ to use it. In GNU Emacs 24.0.50.1 (i386-mingw-nt5.1.2600) of 2011-09-19 on 3249CTO Windowing system distributor `Microsoft Corp.', version 5.1.2600 configured using `configure --with-gcc (4.5) --no-opt' ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 4:18 bug#9571: 24.0.50; user option to turn off bidi, please Drew Adams @ 2011-09-22 5:49 ` Eli Zaretskii 2011-09-22 12:31 ` Stefan Monnier 2011-09-24 3:53 ` Jason Rumney 2 siblings, 0 replies; 57+ messages in thread From: Eli Zaretskii @ 2011-09-22 5:49 UTC (permalink / raw) To: Drew Adams; +Cc: 9571 tags 9571 + wontfix > From: "Drew Adams" <drew.adams@oracle.com> > Date: Wed, 21 Sep 2011 21:18:46 -0700 > > Dunno if this is still the latest word, but in the emacs-devel thread > "`C-b' is backward-char, `left' is left-char - why?", I was told that > the way for a user to turn off bidi is to set `bidi-display-reordering' > to nil. Since it is buffer-local, that presumably means putting this > in .emacs if you want to turn it off everywhere: > > (setq-default bidi-display-reordering nil) Yes. > 1. That's not very user-friendly. We should have a user option that > does this, i.e., gives users an easy way to disable this feature if they > don't want to use it. No, at least not for now. > 2. I see nothing in the Emacs doc that tells users clearly that if they > want to turn off bidi editing then they should set the default value of > this internal variable to nil. Users should be told this. No. Consistent with the above. > FWIW, I turn it off because both (a) it slows down Emacs (no, I don't > have a test case and I won't be coming up with one) and (b) I have no > need for bidi editing, at least for now. If you don't believe (a), then > at least accept (b): I don't _want_ to use it. Suit yourself, but I see no need to make the bidi display a mode that can be turned on and off. So at least for Emacs 24.1 I'm not gonna fix this. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 4:18 bug#9571: 24.0.50; user option to turn off bidi, please Drew Adams 2011-09-22 5:49 ` Eli Zaretskii @ 2011-09-22 12:31 ` Stefan Monnier 2011-09-22 13:13 ` Drew Adams 2011-09-24 3:53 ` Jason Rumney 2 siblings, 1 reply; 57+ messages in thread From: Stefan Monnier @ 2011-09-22 12:31 UTC (permalink / raw) To: Drew Adams; +Cc: 9571 > 1. That's not very user-friendly. We should have a user option that > does this, i.e., gives users an easy way to disable this feature if they > don't want to use it. Why would we need an option for that other than for debugging purposes? Stefan ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 12:31 ` Stefan Monnier @ 2011-09-22 13:13 ` Drew Adams 2011-09-22 21:44 ` Richard Stallman 2011-09-23 4:11 ` Stefan Monnier 0 siblings, 2 replies; 57+ messages in thread From: Drew Adams @ 2011-09-22 13:13 UTC (permalink / raw) To: 'Stefan Monnier'; +Cc: 9571 > > 1. That's not very user-friendly. We should have a user option that > > does this, i.e., gives users an easy way to disable this > > feature if they don't want to use it. > > Why would we need an option for that other than for debugging > purposes? Uh, to give "users an easy way to disable this feature if they don't want to use it." Can you imagine that there are some Emacs users who do not _ever_ need or want to edit bidirectional text? Just like there are some users who never need or want to use SQL code editing features, or image-library features, or Emacs-based mail, or... Why make such users figure out that they need to put a `setq-default' in their .emacs to get back (as much as possible) the traditional behavior (and possibly/hopefully eliminate some of the bidi overhead)? I understand that it is apparently hard to make bidi support entirely optional, e.g., remove all of the overhead even if turned off. But it has also been advised that _if_ you want to turn bidi editing off, setting this variable to nil is the way to do it. So make it a user option. Only those users who want to turn it off will turn it off - what's the problem? Why not give users that control and ease of control? ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 13:13 ` Drew Adams @ 2011-09-22 21:44 ` Richard Stallman 2011-09-23 4:13 ` Stefan Monnier 2011-09-23 9:13 ` Eli Zaretskii 2011-09-23 4:11 ` Stefan Monnier 1 sibling, 2 replies; 57+ messages in thread From: Richard Stallman @ 2011-09-22 21:44 UTC (permalink / raw) To: Drew Adams; +Cc: 9571 One use for a feature to disable bidi display is to figure out what's really present in some strange piece of text. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 21:44 ` Richard Stallman @ 2011-09-23 4:13 ` Stefan Monnier 2011-09-23 12:31 ` Richard Stallman 2011-09-23 9:13 ` Eli Zaretskii 1 sibling, 1 reply; 57+ messages in thread From: Stefan Monnier @ 2011-09-23 4:13 UTC (permalink / raw) To: rms; +Cc: 9571 > One use for a feature to disable bidi display > is to figure out what's really present in some strange piece of text. "Figure out what's really present" is sufficiently vague that I don't know what is the right way to address this need. find-file-literally is at least as likely to be effective, and in many more cases. Stefan ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 4:13 ` Stefan Monnier @ 2011-09-23 12:31 ` Richard Stallman 2011-09-23 14:46 ` Eli Zaretskii 2011-09-24 3:56 ` Jason Rumney 0 siblings, 2 replies; 57+ messages in thread From: Richard Stallman @ 2011-09-23 12:31 UTC (permalink / raw) To: Stefan Monnier; +Cc: 9571 "Figure out what's really present" is sufficiently vague that I don't know what is the right way to address this need. find-file-literally is at least as likely to be effective, and in many more cases. find-file-literally disables character set decoding. That means you'd have to manually figure out how the bytes correspond to the characters of the file, or else give a command to decode it. If the confusion has to do with bidi, the feature you want for understanding it is to turn off bidi and nothing else. It has to be easy to do, so why NOT do it? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 12:31 ` Richard Stallman @ 2011-09-23 14:46 ` Eli Zaretskii 2011-09-23 14:55 ` Lars Magne Ingebrigtsen 2011-09-23 19:44 ` Richard Stallman 2011-09-24 3:56 ` Jason Rumney 1 sibling, 2 replies; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 14:46 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Fri, 23 Sep 2011 08:31:33 -0400 > From: Richard Stallman <rms@gnu.org> > Cc: 9571@debbugs.gnu.org > > If the confusion has to do with bidi, the feature you want for > understanding it is to turn off bidi and nothing else. What confusion are you referring to? Are we talking about a buffer with or without R2L characters? And how would setting bidi-display-reordering to nil resolve that confusion? IOW, please describe the relevant use cases in more detail. Without that, I fear we are having a misunderstanding of some kind. > It has to be easy to do, so why NOT do it? Because the unidirectional display will one day go away, and having a user option will be an obstacle to getting rid of it. We have been there with unibyte buffers. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 14:46 ` Eli Zaretskii @ 2011-09-23 14:55 ` Lars Magne Ingebrigtsen 2011-09-23 15:06 ` Eli Zaretskii 2011-09-23 19:44 ` Richard Stallman 1 sibling, 1 reply; 57+ messages in thread From: Lars Magne Ingebrigtsen @ 2011-09-23 14:55 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571, rms Eli Zaretskii <eliz@gnu.org> writes: > Because the unidirectional display will one day go away, and having a > user option will be an obstacle to getting rid of it. I agree with that sentiment, but... > We have been there with unibyte buffers. ... can we ever get rid of unibyte buffers? I don't really see how. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 14:55 ` Lars Magne Ingebrigtsen @ 2011-09-23 15:06 ` Eli Zaretskii 2011-09-23 17:36 ` Stefan Monnier 2011-09-23 18:23 ` Lars Magne Ingebrigtsen 0 siblings, 2 replies; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 15:06 UTC (permalink / raw) To: Lars Magne Ingebrigtsen; +Cc: 9571, rms > From: Lars Magne Ingebrigtsen <larsi@gnus.org> > Cc: rms@gnu.org, 9571@debbugs.gnu.org > Date: Fri, 23 Sep 2011 16:55:22 +0200 > > > We have been there with unibyte buffers. > > ... can we ever get rid of unibyte buffers? I don't really see how. Sorry for being unclear. I meant the environment variable that used to force Emacs into unibyte operation mode, and other similar user-level devices. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 15:06 ` Eli Zaretskii @ 2011-09-23 17:36 ` Stefan Monnier 2011-09-23 18:23 ` Lars Magne Ingebrigtsen 1 sibling, 0 replies; 57+ messages in thread From: Stefan Monnier @ 2011-09-23 17:36 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571, Lars Magne Ingebrigtsen, rms >> > We have been there with unibyte buffers. >> ... can we ever get rid of unibyte buffers? I don't really see how. > Sorry for being unclear. I meant the environment variable that used to > force Emacs into unibyte operation mode, and other similar user-level > devices. Aka "unibyte sessions". Stefan ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 15:06 ` Eli Zaretskii 2011-09-23 17:36 ` Stefan Monnier @ 2011-09-23 18:23 ` Lars Magne Ingebrigtsen 1 sibling, 0 replies; 57+ messages in thread From: Lars Magne Ingebrigtsen @ 2011-09-23 18:23 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571, rms Eli Zaretskii <eliz@gnu.org> writes: > Sorry for being unclear. I meant the environment variable that used to > force Emacs into unibyte operation mode, and other similar user-level > devices. Yeah, that wasn't very helpful in the long term. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog http://lars.ingebrigtsen.no/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 14:46 ` Eli Zaretskii 2011-09-23 14:55 ` Lars Magne Ingebrigtsen @ 2011-09-23 19:44 ` Richard Stallman 2011-09-23 20:09 ` Eli Zaretskii 1 sibling, 1 reply; 57+ messages in thread From: Richard Stallman @ 2011-09-23 19:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 What confusion are you referring to? Not being sure about the order, in the buffer, of the characters you see on the screen. Are we talking about a buffer with or without R2L characters? It would have to be a case where characters that have bidi significance are present. If there are none, there is no reordering, thus no possibility it can cause confusion. And how would setting bidi-display-reordering to nil resolve that confusion? You would see all the characters in the order that they appear in the buffer. I don't envision anyone would want to edit this way. But it could be useful to look at this kind of display once in a while. Because the unidirectional display will one day go away, and having a user option will be an obstacle to getting rid of it. Why should it ever be deleted? What is gained by deleting it? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 19:44 ` Richard Stallman @ 2011-09-23 20:09 ` Eli Zaretskii 0 siblings, 0 replies; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 20:09 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Fri, 23 Sep 2011 15:44:34 -0400 > From: Richard Stallman <rms@gnu.org> > CC: monnier@iro.umontreal.ca, 9571@debbugs.gnu.org > > What confusion are you referring to? > > Not being sure about the order, in the buffer, of the characters you see > on the screen. If you need to see the buffer order, moving with C-f and C-b will show you the order in the buffer, because cursor motion still works in buffer order. > Are we talking about a buffer > with or without R2L characters? > > It would have to be a case where characters that have bidi > significance are present. If the reordering is correct, there could be no confusion, because the text is then legible. If it is illegible, then there's a bug that needs to be reported. For example, if there are no R2L characters in the text, the result of reordering should be identical to not reordering at all. Any person who can read whatever language we are talking about will instantly distinguish between correct and incorrect order. I see no place for any confusion here. Users will gain nothing from this option, because turning off reordering when R2L text is involved does not make the text more legible; quite the opposite. I explained in my other messages what will users lose if they have such an option, unless someone invests a non-trivial amount of work to restore the old code where I deleted or rewrote it, and maintain that code as a separate execution branch for years to come. > If there are [no R2L characters], there is no > reordering, thus no possibility it can cause confusion. You are wrong: _all_ characters are displayed in Emacs 24 via the reordering engine. It's just that plain left-to-right text emerges from that reordering in its original buffer order. But the reordering engine doesn't "know" that, it just implements the rules of reordering. > And how would setting > bidi-display-reordering to nil resolve that confusion? > > You would see all the characters in the order that they > appear in the buffer. That will not resolve any confusion. As someone who happened to read R2L text in Emacs 23 (e.g., in email messages), I can assure you: seeing R2L text in buffer order confuses even more than seeing results of slightly incorrect reordering. It makes the reading process very slow and error prone, even if your command of the language is very good. > I don't envision anyone would want to edit this way. But it could be > useful to look at this kind of display once in a while. It's not useful for users, believe me. It could be useful to someone who debugs Emacs display, but there's no need for user option for that use case. > Because the unidirectional display will one day go away, and having a > user option will be an obstacle to getting rid of it. > > Why should it ever be deleted? What is gained by deleting it? Easier maintenance. Emacs display engine is already more complex that humanly perceptible. Having two divergent engines in one means unnecessarily complicating maintenance and slowing down development, because every change needs to be tested twice and every new feature needs to be designed so it works in both modes. I'm quite sure doing this will be a waste of resources which are already at premium. There's no need for the old unidirectional display code; as I explained above, straight left-to-right text is treated by the bidirectional code correctly and transparently to the users. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 12:31 ` Richard Stallman 2011-09-23 14:46 ` Eli Zaretskii @ 2011-09-24 3:56 ` Jason Rumney 2011-09-24 12:28 ` Richard Stallman 1 sibling, 1 reply; 57+ messages in thread From: Jason Rumney @ 2011-09-24 3:56 UTC (permalink / raw) To: rms; +Cc: 9571 Richard Stallman <rms@gnu.org> writes: > "Figure out what's really present" is sufficiently vague that I don't > know what is the right way to address this need. find-file-literally is > at least as likely to be effective, and in many more cases. > > find-file-literally disables character set decoding. That means you'd > have to manually figure out how the bytes correspond to the characters > of the file, or else give a command to decode it. > > If the confusion has to do with bidi, the feature you want for > understanding it is to turn off bidi and nothing else. It has to be > easy to do, so why NOT do it? If you can read the relevant scripts, then bidi is not going to confuse you. If you cannot read the scripts, then turning off bidi is not really going to help (probably find-file-literally would be a better option in this case). ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 3:56 ` Jason Rumney @ 2011-09-24 12:28 ` Richard Stallman 0 siblings, 0 replies; 57+ messages in thread From: Richard Stallman @ 2011-09-24 12:28 UTC (permalink / raw) To: Jason Rumney; +Cc: 9571 If you can read the relevant scripts, then bidi is not going to confuse you. If you cannot read the scripts, then turning off bidi is not really going to help (probably find-file-literally would be a better option in this case). For people who can read the scripts, simple ordinary use of bidi will make complete sense. Even for people who can't read them, simple ordinary use will cause no confusion. (I can't read Hebrew, but a Hebrew word in an English text won't be any harder to cope with than a few Chinese characters.) But the bidi feature is complex, and complex cases might be confusing to anyone. Especially if the text is the result of some sort of error, and doesn't really make sense at all. These are the cases where I think temporarily disabling reordering could be useful. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 21:44 ` Richard Stallman 2011-09-23 4:13 ` Stefan Monnier @ 2011-09-23 9:13 ` Eli Zaretskii 2011-09-23 12:31 ` Richard Stallman 1 sibling, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 9:13 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Thu, 22 Sep 2011 17:44:39 -0400 > From: Richard Stallman <rms@gnu.org> > Cc: 9571@debbugs.gnu.org > > One use for a feature to disable bidi display > is to figure out what's really present in some strange piece of text. Bidi display does not change the characters on display or in the buffer in any way. So it will neither help nor prevent you to figure out what's in the text. As Stefan pointed out, find-file-literally has the effect of automatically disabling bidi display (because the bidi reordering is only done in multibyte buffers), so the same Emacs feature generally used for figuring out what's in some strange text also inhibits the bidi display, without any need for the user to do anything. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 9:13 ` Eli Zaretskii @ 2011-09-23 12:31 ` Richard Stallman 2011-09-23 14:40 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Richard Stallman @ 2011-09-23 12:31 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 Bidi display does not change the characters on display or in the buffer in any way. So it will neither help nor prevent you to figure out what's in the text. If the reordering has confusing effects, turning off bidi display would enable you to see clearly what the real order is in the buffer. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 12:31 ` Richard Stallman @ 2011-09-23 14:40 ` Eli Zaretskii 2011-09-23 19:44 ` Richard Stallman 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 14:40 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Fri, 23 Sep 2011 08:31:41 -0400 > From: Richard Stallman <rms@gnu.org> > CC: drew.adams@oracle.com, 9571@debbugs.gnu.org > > Bidi display does not change the characters on display or in the > buffer in any way. So it will neither help nor prevent you to figure > out what's in the text. > > If the reordering has confusing effects, turning off bidi display > would enable you to see clearly what the real order is in the buffer. As I said (following Stefan), find-file-literally has that effect. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 14:40 ` Eli Zaretskii @ 2011-09-23 19:44 ` Richard Stallman 2011-09-23 19:48 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Richard Stallman @ 2011-09-23 19:44 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 > If the reordering has confusing effects, turning off bidi display > would enable you to see clearly what the real order is in the buffer. As I said (following Stefan), find-file-literally has that effect. It has a lot of other effects too, which are painful except when you happen to want them. That is no substitute for what I'm suggesting. Why are you opposed to a flag to turn bidi display off? -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 19:44 ` Richard Stallman @ 2011-09-23 19:48 ` Eli Zaretskii 2011-09-24 12:28 ` Richard Stallman 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 19:48 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Fri, 23 Sep 2011 15:44:31 -0400 > From: Richard Stallman <rms@gnu.org> > CC: drew.adams@oracle.com, 9571@debbugs.gnu.org > > Why are you opposed to a flag to turn bidi display off? I explained that at length in followups. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 19:48 ` Eli Zaretskii @ 2011-09-24 12:28 ` Richard Stallman 2011-09-24 14:04 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Richard Stallman @ 2011-09-24 12:28 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 > Why are you opposed to a flag to turn bidi display off? I explained that at length in followups. Those messages seem to be arguing against maintaining big changes to implement non-bidi display. I agree with that. But they don't seem to be an argument against simple code that would disable the recognition of the bidi specialness of characters. > If there are [no R2L characters], there is no > reordering, thus no possibility it can cause confusion. You are wrong: _all_ characters are displayed in Emacs 24 via the reordering engine. It's just that plain left-to-right text emerges from that reordering in its original buffer order. But the reordering engine doesn't "know" that, it just implements the rules of reordering. We are miscommunicating. When I say "no reordering", I'm not talking about what code is running -- just how the text gets displayed. When there are no R2L characters, the text will be displayed in L2R order, which means no reordering in the display. That will not resolve any confusion. As someone who happened to read R2L text in Emacs 23 (e.g., in email messages), I can assure you: seeing R2L text in buffer order confuses even more than seeing results of slightly incorrect reordering. It makes the reading process very slow and error prone, even if your command of the language is very good. That's an argument not to do your normal editing with such a mode. I only suggest we provide it as a way to check the order of characters in the buffer, when needed. It's not useful for users, believe me. It could be useful to someone who debugs Emacs display, but there's no need for user option for that use case. I am not sure what the best user interface would be. Perhaps a command to toggle the flag for the current buffer. Easier maintenance. Emacs display engine is already more complex that humanly perceptible. Having two divergent engines in one means unnecessarily complicating maintenance and slowing down development, I agree with you, but I am not arguing for having two engines. Only for having a flag. See the other message for how I suggest implementing it. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 12:28 ` Richard Stallman @ 2011-09-24 14:04 ` Eli Zaretskii 2011-09-24 17:30 ` Richard Stallman 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-24 14:04 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Sat, 24 Sep 2011 08:28:20 -0400 > From: Richard Stallman <rms@gnu.org> > CC: drew.adams@oracle.com, 9571@debbugs.gnu.org > > Those messages seem to be arguing against maintaining big changes to > implement non-bidi display. I agree with that. > > But they don't seem to be an argument against simple code that would > disable the recognition of the bidi specialness of characters. That's an entirely different request, it was never voiced before (and I suspect that it won't satisfy people who argue for a user option to disable reordering). Assuming I understand the request correctly, see below. The way I understand this request is: make it so that the result of reordering is the text in its original logical (i.e. buffer or string) order. The code that is involved in reordering, largely in bidi.c and xdisp.c, will still work as it normally does. Is this what you are asking for? If so, then the way to have this is to modify the relevant Unicode property of the R2L characters so that they are treated as L2R. This is easier in Lisp than in C, because the table where these properties are kept is just a specialized form of a char-table, and Lisp code can modify it. Note that we currently have no mechanism for making this table of Unicode properties buffer-local, so changing the properties will affect all the windows on all the frames. But since we are talking about something that's supposed to be used for very short periods of time for exploring rare problems, I think it's not too important. If it's important, and Stefan and Chong agree, I can write a command to do this. Again, I don't think this is what the original proponents of the option wanted, because implementing what you suggest will not bypass any of the code in the new display. IOW, I think it's an entirely different feature. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 14:04 ` Eli Zaretskii @ 2011-09-24 17:30 ` Richard Stallman 2011-09-24 19:15 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Richard Stallman @ 2011-09-24 17:30 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 The way I understand this request is: make it so that the result of reordering is the text in its original logical (i.e. buffer or string) order. The code that is involved in reordering, largely in bidi.c and xdisp.c, will still work as it normally does. Exactly. Again, I don't think this is what the original proponents of the option wanted, because implementing what you suggest will not bypass any of the code in the new display. IOW, I think it's an entirely different feature. Maybe you're right. I didn't follow the whole discussion. I am not sure why they particularly want to bypass code in the new display; that seems like an internal implementation detail, and I don't see why a user would care how the job gets done as long as the output is what he wants. But simply overwriting default_type with STRONG_L isn't right, either. That's because as long as we run the code in bidi.c unaltered, there are some characters whose bidirectional properties are still needed for the code to work: newlines, paragraph separators, line separators, and a few others. Ok, my proposed patch won't do the job. But wouldn't a slightly more complicated patch in the same place do the job? The method of replacing the unicode property table seems to have several drawbacks: 1. Creating the modified table is more work. 2. It is a big data structure, so having another one would be a waste. 3. It feels wrong to alter the information describing the characters. This is a matter of choosing a different way to display some characters, not a matter of redefining what they mean. I think an easy implementation in bidi_get_type is to have an if statement choose between the existing switch statement and a new switch statement. The new switch statement would return different values that would avoid reordering and give the Emacs 23 behavior. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 17:30 ` Richard Stallman @ 2011-09-24 19:15 ` Eli Zaretskii 2011-09-24 23:52 ` Richard Stallman 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-24 19:15 UTC (permalink / raw) To: rms; +Cc: 9571 > Date: Sat, 24 Sep 2011 13:30:41 -0400 > From: Richard Stallman <rms@gnu.org> > CC: drew.adams@oracle.com, 9571@debbugs.gnu.org > > > Ok, my proposed patch won't do the job. But wouldn't a slightly more > complicated patch in the same place do the job? It could be done, but why hard-code in C what can be done in Lisp? The advantage would be that more people will understand the code and changing it does not require rebuilding Emacs. > The method of replacing the unicode property table seems to have > several drawbacks: > > 1. Creating the modified table is more work. I don't understand why: we have map-char-table to do that easily and elegantly. > 2. It is a big data structure, so having another one would be a waste. I don't think modifying entries in a char-table creates a new one. It just modifies entries in the existing one. Perhaps Handa-san could comment on that. > 3. It feels wrong to alter the information describing the characters. > This is a matter of choosing a different way to display some characters, > not a matter of redefining what they mean. The information I propose to change is used only for reordering characters into visual order. I'm talking about the Bidi_class attribute of the characters. No other attribute needs to be changed. And the change will be temporary; toggling the feature off will restore the original types. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 19:15 ` Eli Zaretskii @ 2011-09-24 23:52 ` Richard Stallman 0 siblings, 0 replies; 57+ messages in thread From: Richard Stallman @ 2011-09-24 23:52 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 I don't think modifying entries in a char-table creates a new one. It just modifies entries in the existing one. Perhaps Handa-san could comment on that. It would be terribly unclean to change that data structure globally rather than make a copy. And it would affect all buffers at once. This ought to be a per-buffer feature. It could be done, but why hard-code in C what can be done in Lisp? Because there is only one thing to be done, and it is so simple in C. -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 13:13 ` Drew Adams 2011-09-22 21:44 ` Richard Stallman @ 2011-09-23 4:11 ` Stefan Monnier 2011-09-23 8:01 ` Štěpán Němec 1 sibling, 1 reply; 57+ messages in thread From: Stefan Monnier @ 2011-09-23 4:11 UTC (permalink / raw) To: Drew Adams; +Cc: 9571 > Can you imagine that there are some Emacs users who do not _ever_ need > or want to edit bidirectional text? If those users get a different behavior depending on bidi-display-reordering, then we have a bug. Stefan ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 4:11 ` Stefan Monnier @ 2011-09-23 8:01 ` Štěpán Němec 2011-09-23 9:21 ` Juanma Barranquero 2011-09-23 10:18 ` Eli Zaretskii 0 siblings, 2 replies; 57+ messages in thread From: Štěpán Němec @ 2011-09-23 8:01 UTC (permalink / raw) To: Stefan Monnier; +Cc: 9571 On Fri, 23 Sep 2011 06:11:16 +0200 Stefan Monnier wrote: >> Can you imagine that there are some Emacs users who do not _ever_ need >> or want to edit bidirectional text? > > If those users get a different behavior depending on > bidi-display-reordering, then we have a bug. I assume you don't consider UI responsiveness (buffer movement etc.) deterioration a bug, then? AFIAK it's totally unrealistic to expect the same responsiveness from Emacs with bidi enabled as from one with bidi disabled, just as is the case with font locking. Given that font locking already makes Emacs (next-to-?)unusable under certain circumstances, I'm not sure easily discoverable and advertised possibility to switch bidi off is such a very strange request from someone who never, ever, works with bidi text (intentionally or not, i.e., doesn't even receive bidi emails or something). OTOH, I understand you probably just want to push bidi down everybody's throat as much as possible to catch all problems this major change will bring. So I think I understand the reluctance to honour Drew's request, but the argumentation so far seems a bit disingenuous to me. -- Štěpán ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 8:01 ` Štěpán Němec @ 2011-09-23 9:21 ` Juanma Barranquero 2011-09-23 10:39 ` Štěpán Němec 2011-09-23 10:18 ` Eli Zaretskii 1 sibling, 1 reply; 57+ messages in thread From: Juanma Barranquero @ 2011-09-23 9:21 UTC (permalink / raw) To: Štěpán Němec; +Cc: 9571 2011/9/23 Štěpán Němec <stepnem@gmail.com>: > I assume you don't consider UI responsiveness (buffer movement etc.) > deterioration a bug, then? AFIAK it's totally unrealistic to expect the > same responsiveness from Emacs with bidi enabled as from one with bidi > disabled, just as is the case with font locking. Given that font locking > already makes Emacs (next-to-?)unusable under certain circumstances, I'm > not sure easily discoverable and advertised possibility to switch bidi > off is such a very strange request from someone who never, ever, works > with bidi text (intentionally or not, i.e., doesn't even receive bidi > emails or something). OOH, there was a time when suggesting that the user adds something to .emacs, like (setq-default bidi-display-reordering nil) was not considered obscure. Not everything must go through the customization interface. OTOH, you could equally argue that the new font backend stuff from the Unicode merge slows Emacs for people who only ever edits ASCII, and that disabling these backends should be an "easily disoverable and advertised posibility". But currently the only way to disable a specific font backend is via (initial|default)-frame-alist, and no one has complained yet. Juanma ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 9:21 ` Juanma Barranquero @ 2011-09-23 10:39 ` Štěpán Němec 2011-09-23 11:01 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Štěpán Němec @ 2011-09-23 10:39 UTC (permalink / raw) To: Juanma Barranquero; +Cc: 9571 On Fri, 23 Sep 2011 11:21:02 +0200 Juanma Barranquero wrote: > OOH, there was a time when suggesting that the user adds something to > .emacs, like > > (setq-default bidi-display-reordering nil) > > was not considered obscure. Not everything must go through the > customization interface. It's certainly good enough to me, but you won't find that advice in the current documentation either, AFAICT. > OTOH, you could equally argue that the new font backend stuff from the > Unicode merge slows Emacs for people who only ever edits ASCII, and > that disabling these backends should be an "easily disoverable and > advertised posibility". But currently the only way to disable a > specific font backend is via (initial|default)-frame-alist, and no one > has complained yet. Sure. If someone complained, it would probably idicate there was an issue to be solved? As it happens, Drew did complain. Also, this is not (only) about making `bidi-display-reordering' a custom variable. It is about releasing Emacs 24 with still-not-widely-tested bidi support, which quite possibly adds zero value for most users[1], but does add significant problems at least in some (possibly as yet unknown) circumstances. It might be a good idea, but I don't see why you shouldn't be sincere about it and document the implications and safeguard measures properly. IMO just saying something to the effect of "bidi support can bring various problems and can be disabled by doing AB, but we hope you don't disable it and instead help us improve it by reporting any problems you encounter" might have better effect than everybody switching off bidi for good after encountering the first problem and then finding "Emacs 24 bidi slows things down, just turn it off with AB" on the Internet. [1] Just in case: that of course doesn't mean it's not great or necessary to have it. -- Štěpán ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 10:39 ` Štěpán Němec @ 2011-09-23 11:01 ` Eli Zaretskii 2011-09-23 16:09 ` Drew Adams 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 11:01 UTC (permalink / raw) To: Štěpán Němec; +Cc: 9571, lekktu > From: Štěpán Němec > <stepnem@gmail.com> > Date: Fri, 23 Sep 2011 12:39:19 +0200 > Cc: 9571@debbugs.gnu.org > > On Fri, 23 Sep 2011 11:21:02 +0200 > Juanma Barranquero wrote: > > > OOH, there was a time when suggesting that the user adds something to > > .emacs, like > > > > (setq-default bidi-display-reordering nil) > > > > was not considered obscure. Not everything must go through the > > customization interface. > > It's certainly good enough to me, but you won't find that advice in the > current documentation either, AFAICT. ??? The variable and its effect are clearly documented in both the user manual and the ELisp manual. Which is more than I can say for the other new features introduced in Emacs 24, because documentation is generally finalized only during the pretest. What else besides documentation of the variable is needed to make it clear to users how to turn a feature off? > As it happens, Drew did complain. His complaint is not helpful, because he explicitly declined to provide any details about the situation where bidi slowed down Emacs for him. > Also, this is not (only) about making `bidi-display-reordering' a custom > variable. It is about releasing Emacs 24 with still-not-widely-tested > bidi support, which quite possibly adds zero value for most users[1], > but does add significant problems at least in some (possibly as yet > unknown) circumstances. We are not releasing Emacs 24.1 yet. We didn't yet enter the pretest, and it's anyone's guess when the pretest will be over. Pretest is the time when such radical new features are supposed to be tested and any problems in them fixed before Emacs 24.1 hits the street. We had an even more radical change in the display engine when Emacs 21.1 was developed; the pretest took more than a year back then. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 11:01 ` Eli Zaretskii @ 2011-09-23 16:09 ` Drew Adams 2011-09-23 17:48 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Drew Adams @ 2011-09-23 16:09 UTC (permalink / raw) To: 'Eli Zaretskii', 'Štepán Nemec'; +Cc: 9571, lekktu sn> OOH, there was a time when suggesting that the user adds sn> something to .emacs, like (setq-default bidi-display-reordering nil) sn> was not considered obscure. Not everything must go through the sn> customization interface. First, we have _not_ suggested that to users. To suggest that would be a good first step. Currently, users need to figure out for themselves that the variable exists, what it does, and that it is buffer-local. And they need to learn about buffer-local variables and `setq-default'. No, not every user is up on this stuff. It will not be obvious to all users how they might turn off bidiness. _That is the point of this bug report_: give users an option and document it clearly as turning off bidi. Make it obvious to users. It seems clear that you, Eli, are resisting making it obvious how to turn off this feature you implemented. Is ego mixed in there a bit, perhaps? Let me be clear (again). Bidi support is a _good_ thing. I was the first to respond to your announcement of it, saying "Great!". And I admire your work on it as a real accomplishment. But that does not mean that we should not make it very clear to users how they can easily turn it off. For some reason, this seems to be an emotionally charged issue for some people. When I first suggested, in emacs-devel, giving users an easy way to turn it off, I was practically accused (not by you, Eli) of western imperialism, l2r-ism and nasty asciiness. Nothing could be further from the truth. I'm 100% in favor of Emacs supporting bidirectional text. We already have a way for users to turn bidi off, and that's good. I just want to see it as (a) a user option and (b) clearly advertised (documented). sn> It's certainly good enough to me, but you won't find that sn> advice in the current documentation either, AFAICT. Correct. Adding it to the doc would be a good first step. But the proper test is not whether using `setq-default' for this is good enough for you or this or that Emacs-Lisp aficionado. Users should be able to turn bidi off using Customize, IMO. This is a _user_ setting. It is a _user's_ choice whether to turn bidi support off. ez> ??? The variable and its effect are clearly documented in both the ez> user manual and the ELisp manual. Documented, yes, but not clearly. You do not state clearly that to turn off bidi support in a given buffer you need to set the variable to nil, and to turn it off generally you need to `setq-default' it to nil. As Stepan (sorry about the ASCII/misspelling) replied to you: sn> (it says the variable "controls whether text in the buffer is reordered for display"; sn> is a user with no clue about bidi likely to understand that as "when set sn> to nil, the text in the buffer should behave just as before the bidi sn> feature was introduced"? I don't know, but I suspect I might not, if I sn> hadn't seen previous comments and references to the variable and its sn> effects on emacs-devel and other places). ez> Which is more than I can say for ez> the other new features introduced in Emacs 24, because documentation I agree with Eli about that last sentence, and I applaud his long and continuing interest in and efforts for the doc - second perhaps only to Richard's. The bidi stuff is much more, and presumably better, documented than other Emacs 24 changes, so far. A good case in point is the (apparently still volatile) buffer-display stuff. ez> What else besides documentation of the variable is needed to make it ez> clear to users how to turn a feature off? 1. Clearer doc about turning it off, as Stepan pointed out (above). 2. A user option, findable by looking for _options_, e.g. `apropos-variable bidi' (without C-u). If optionhood is good enough for `bidi-paragraph-direction' then it is good enough for `bidi-display-reordering' too. A user trying `apropos-variable bidi', looking for how to turn bidi off, should find the answer easily. sn> Also, this is not (only) about making `bidi-display-reordering' a custom variable. My bug report _is_ only about providing a user option for this. rms> It has to be easy to do, so why NOT do it? ez> ez> Because the unidirectional display will one day go away, and having a ez> user option will be an obstacle to getting rid of it. When it does go away, so will the option to disable it. The fact that it might one day go away is no reason not to have an option NOW to disable it. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 16:09 ` Drew Adams @ 2011-09-23 17:48 ` Eli Zaretskii 2011-09-23 19:03 ` Drew Adams 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 17:48 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, lekktu, stepnem > From: "Drew Adams" <drew.adams@oracle.com> > Cc: <9571@debbugs.gnu.org>, <lekktu@gmail.com> > Date: Fri, 23 Sep 2011 09:09:56 -0700 > > sn> OOH, there was a time when suggesting that the user adds > sn> something to .emacs, like (setq-default bidi-display-reordering nil) > sn> was not considered obscure. Not everything must go through the > sn> customization interface. > > First, we have _not_ suggested that to users. Because it's _not_ a user variable. The fact that it's documented in the user manual is already more than we normally would do about such toggles. > Currently, users need to figure out for themselves that the variable exists, > what it does, and that it is buffer-local. And they need to learn about > buffer-local variables and `setq-default'. No, they aren't required to. They should report any abnormal behavior as bugs. > It seems clear that you, Eli, are resisting making it obvious how to turn off > this feature you implemented. Is ego mixed in there a bit, perhaps? I cannot be a shrink to myself; maybe it is. If so, it would only be human. I could ask you the same question. Neither will get us anywhere nearer to an agreement. Just drop it. > But that does not mean that we should not make it very clear to users how they > can easily turn it off. Let me be very clear: there is no way for users to turn this off. There's an internal variable that bypasses most of the bidi-aware code. That variable exists for 2 purposes only: (a) let interested individuals, such as myself, see if some problem could be due to the bidi-aware parts of the display engine, and (b) allow Lisp code to turn off bidi reordering where it is needed. I don't mind you or others take advantage of this variable if they so prefer. But please understand that making a user option to force Emacs use Emacs 23 vintage display code will need much more work than just adding a defcustom, because that code was extensively modified as part of development of the bidi-aware display. IOW, when you set bidi-display-reordering to nil, all bets are off regarding the correctness of the display operation, because I do that only very rarely (lately almost never), and only for specific debugging purposes. I cannot in good faith recommend that users use this mode because I don't use it enough to vouch for its correctness and its being free of bugs. You are on your own when you use this mode. Bugs reported for Emacs 24 when this variable is nil will go to the bottom of my todo list. So by pressing for this user option you actually do them a disservice. I realize that you do that because you are not aware of the extent of changes done to the Emacs 23 display code. That's why I say this: now you do know. > We already have a way for users to turn bidi off, and that's good. No, we don't. What you call "bidi" cannot be turned off, not entirely. For example, there's no way to turn off reordering of the mode line and header line, without switching off the reordering entirely. Likewise for the tool bar. It is unthinkable for user-friendly settings to behave like that. > But the proper test is not whether using `setq-default' for this is good enough > for you or this or that Emacs-Lisp aficionado. Users should be able to turn > bidi off using Customize, IMO. This is a _user_ setting. It is a _user's_ choice > whether to turn bidi support off. But it is _not_ a user setting. It was never meant to be, and the code was neither designed nor implemented with such an option in mind. It's not just a missing defcustom, much more is missing to make Emacs display dual-mode like what you seem to think. IOW, your mental model of this variable and its effects is profoundly wrong. > ez> ??? The variable and its effect are clearly documented in both the > ez> user manual and the ELisp manual. > > Documented, yes, but not clearly. You do not state clearly that to turn off bidi > support in a given buffer you need to set the variable to nil, and to turn it > off generally you need to `setq-default' it to nil. Because it's not a user option. Variables that are not user options are normally not documented at all in the user manual. I went out of my way in this matter. More information about this (including the effect of setq-default for this variable) can be found in the ELisp manual, and I wrote it there because I consider that manual to be important for Emacs maintainers, not just for ELisp programmers. > If optionhood is good enough for `bidi-paragraph-direction' then it is good > enough for `bidi-display-reordering' too. The paragraph direction is (and must be) a user setting. Only a human can know better than Emacs what is the correct base direction of the paragraphs in a document. Other bidi-aware programs all have equivalent knobs. But no other application I know of has an option to turn off bidi reordering. They either do it always or not at all. That's how Emacs's bidi display was designed, too. You are asking for something that is not in the design. > rms> It has to be easy to do, so why NOT do it? > ez> > ez> Because the unidirectional display will one day go away, and having a > ez> user option will be an obstacle to getting rid of it. > > When it does go away, so will the option to disable it. The fact that it might > one day go away is no reason not to have an option NOW to disable it. That is a naive and unrealistic view of software maintenance. Users who will customize this option on their .emacs file will object to the change, and rightfully so. The result will be slow and painful process that will take years. We have been there more than once. For once, I'd like to try doing this The Right Way, where things depend on me. Maybe it's a lost battle, but I'd like to try fighting it anyway. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 17:48 ` Eli Zaretskii @ 2011-09-23 19:03 ` Drew Adams 2011-09-23 19:46 ` Eli Zaretskii 2011-09-23 20:00 ` Stefan Monnier 0 siblings, 2 replies; 57+ messages in thread From: Drew Adams @ 2011-09-23 19:03 UTC (permalink / raw) To: 'Eli Zaretskii'; +Cc: 9571, lekktu, stepnem > > sn> OOH, there was a time when suggesting that the user adds > > sn> something to .emacs, like (setq-default > > sn> bidi-display-reordering nil) > > sn> was not considered obscure. Not everything must go > > sn> through the customization interface. > > > > First, we have _not_ suggested that to users. > > Because it's _not_ a user variable. Not yet. That's precisely the bug that this thread is about. > > Currently, users need to figure out for themselves that the > > variable exists, what it does, and that it is buffer-local. > > And they need to learn about buffer-local variables and > > `setq-default'. > > No, they aren't required to. If they want to turn off bidi support, they are. That's what this thread is about. > > But that does not mean that we should not make it very > > clear to users how they can easily turn it off. > > Let me be very clear: there is no way for users to turn this off. > There's an internal variable that bypasses most of the bidi-aware > code. How is that different from turning it off, from a user perspective? Please keep a user, not just an implementor, point of view here. > That variable exists for 2 purposes only: (a) let interested > individuals, such as myself, see if some problem could be due to the > bidi-aware parts of the display engine, and (b) allow Lisp code to > turn off bidi reordering where it is needed. I don't mind you or > others take advantage of this variable if they so prefer. Thank you. > But please understand that making a user option to force > Emacs use Emacs 23 vintage display code will need much more > work than just adding a defcustom, because that code was > extensively modified as part of development of the > bidi-aware display. So maybe it needs more time. > IOW, when you set bidi-display-reordering to nil, all bets > are off regarding the correctness of the display operation, So maybe it needs more time to become fully baked. > because I do that only very rarely (lately almost never), > and only for specific debugging purposes. I cannot in > good faith recommend that users use this mode because I > don't use it enough to vouch for its correctness > and its being free of bugs. More time needed to test and make it correct, it sounds like. > You are on your own when you use this mode. Which means you are on your own when you use Emacs 24. Oh, sure, you'll support bidi on, but not bidi off. And anyone who wants it off can just use Emacs 23... > Bugs reported for Emacs 24 when this variable is nil > will go to the bottom of my todo list. Clear enough, I guess. You closed this bug with lightning speed. If Richard hadn't chimed in, I suppose it would have died instantly. > So by pressing for this user option you actually do > them a disservice. No, I think I do "them" a service. By refusing to make it a user option and refusing to debug and support the nil case, I think you do "them" a disservice. Just one opinion. And yes, a completely _naive_ opinion wrt the design/implementation. You've essentially said that there can be no other design/implementation that lets users turn this off cleanly. If that's true then OK, there's nothing more I can say about this. > I realize that you do that because you are not aware of > the extent of changes done to the Emacs 23 display code. The latter is certainly true. But that is not the reason why I "do that". You are taking an implementor point of view, and you are the expert there. I have nothing to say about that. I am taking a user point of view (and speaking for only one user), ignorant of the design. If design/implementation concerns mean that users can have no option about bidi, then so be it. I can't speak to that. That's your call. So far, however, I see `bidi-display-reordering', and my understanding is that it gives users some control. > That's why I say this: now you do know. Yes, it's clear that you will support the new feature, but not turning it off. To me, that's unfortunate. But maybe it's the best we can hope for. > > We already have a way for users to turn bidi off, and that's good. > > No, we don't. What you call "bidi" cannot be turned off, not > entirely. For example, there's no way to turn off reordering of the > mode line and header line, without switching off the reordering > entirely. Likewise for the tool bar. It is unthinkable for > user-friendly settings to behave like that. OK, so a user cannot turn it off completely. It would be good to document that, e.g., in the doc for `bidi-display-reordering': just what it does and does not affect. But to the extent that they _can_ turn it off, there is apparently a way: `bidi-display-reordering'. > > But the proper test is not whether using `setq-default' > > for this is good enough for you [SN] or this or that > > Emacs-Lisp aficionado. Users should be able to turn > > bidi off using Customize, IMO. This is a _user_ setting. It > > is a _user's_ choice whether to turn bidi support off. > > But it is _not_ a user setting. Precisely what this bug thread is about. Please make it a _user_ setting, if you can. That's the request. > It was never meant to be, and the code was neither designed > nor implemented with such an option in mind. > It's not just a missing defcustom, much more is missing to > make Emacs display dual-mode like what you seem to think. So it needs more work, it sounds like. > IOW, your mental model of this variable and its effects > is profoundly wrong. You've clarified things for my mental model. Now can we please fix the design so it DTRT? Let users turn it off properly, if you can. > > ez> ??? The variable and its effect are clearly documented > > ez> in both the user manual and the ELisp manual. > > > > Documented, yes, but not clearly. You do not state > > clearly that to turn off bidi support in a given buffer > > you need to set the variable to nil, and to turn it > > off generally you need to `setq-default' it to nil. > > Because it's not a user option. Variables that are not user options > are normally not documented at all in the user manual. I went out of > my way in this matter. More information about this (including the > effect of setq-default for this variable) can be found in the ELisp > manual, and I wrote it there because I consider that manual to be > important for Emacs maintainers, not just for ELisp programmers. See above. It _should_ be a user option, if possible. That's the point of this thread - see the Subject line. Even in its current state, the doc is not helpful enough to users. See above. Saying that the doc should not help users because this is not a user option is, well,... > You are asking for something that is not in the design. I believe you. > > rms> It has to be easy to do, so why NOT do it? > > ez> > > ez> Because the unidirectional display will one day go > > ez> away, and having a user option will be an obstacle > > ez> to getting rid of it. > > > > When it does go away, so will the option to disable it. > > The fact that it might one day go away is no reason not > > to have an option NOW to disable it. > > That is a naive and unrealistic view of software maintenance. Why would a user option that no longer has any effect not be removed? We've done that lots of times. > Users who will customize this option Glad to hear you thinking in terms of that possibility. > on their .emacs file will object to the change, and > rightfully so. Maybe, maybe not. Depends what the non-nil state of things is at that point, and depends on user needs and expectations at that point. With your expected scenario, everyone and her brother will _want_ to use non-nil anyway, so no one would object. Anyway, Emacs Dev has lots of times made changes over user objections. Especially if there are very few objectors (which is what you and I both expect), that's not a problem. > The result will be slow and painful process that will > take years. We have been there more than once. Sorry, I don't see it that way. That sounds a bit like scare tactics, to me. You might be right, or not. I don't see the sky falling because Emacs Dev wants to remove a user option that no longer has any effect. > For once, I'd like to try doing this The Right Way, Great. Then let's please take the time to finish things in such a way that users can completely and easily turn this on/off. If you can. > where things depend on me. Maybe it's a lost battle, > but I'd like to try fighting it anyway. Sounds more like a won battle, to me. You seem to say that only the current design is possible; it's impossible to cleanly let users turn it off; if users do try to turn it off that won't be supported;... In sum, your message to users seems to be, "If you don't need or want bidi then use Emacs 23." ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 19:03 ` Drew Adams @ 2011-09-23 19:46 ` Eli Zaretskii 2011-09-23 21:23 ` Drew Adams 2011-09-23 20:00 ` Stefan Monnier 1 sibling, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 19:46 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, lekktu, stepnem > From: "Drew Adams" <drew.adams@oracle.com> > Cc: <stepnem@gmail.com>, <9571@debbugs.gnu.org>, <lekktu@gmail.com> > Date: Fri, 23 Sep 2011 12:03:57 -0700 > > > Let me be very clear: there is no way for users to turn this off. > > There's an internal variable that bypasses most of the bidi-aware > > code. > > How is that different from turning it off, from a user perspective? _Parts_of_it_ can be turned off. What you get is part bidi and part not. What that does is anyone's guess. > > But please understand that making a user option to force > > Emacs use Emacs 23 vintage display code will need much more > > work than just adding a defcustom, because that code was > > extensively modified as part of development of the > > bidi-aware display. > > So maybe it needs more time. That time will help only if someone will work on developing that mode. I won't any time soon; volunteers are welcome. > > Bugs reported for Emacs 24 when this variable is nil > > will go to the bottom of my todo list. > > Clear enough, I guess. You closed this bug with lightning speed. Please get your facts right. The bug is not closed. I never closed it. > > So by pressing for this user option you actually do > > them a disservice. > > No, I think I do "them" a service. By refusing to make it a user option and > refusing to debug and support the nil case, I think you do "them" a disservice. Anything can be turned on its head by clever word juggling. But the truth is still there: given the current design and implementation of the bidi display, you are encouraging them to use unsupported mode, whereas I encourage them to use a mode that is fully supported and whose bugs are being fixed in a matter of days if not hours. > You've essentially said that there can be no other design/implementation that > lets users turn this off cleanly. There _could_ be a different design, but it's too late to talk about that now, that the existing design and implementation are what they are and my free time, age, and amount of energy are what they are. > You are taking an implementor point of view, and you are the expert there. I > have nothing to say about that. I am taking a user point of view (and speaking > for only one user), ignorant of the design. Ignorance is not always a bliss. I took time to explain the implementation because (I hope) those explanations can help you and others understand why pressing for making this a user variable is not TRT, in practical terms. Armed with this new knowledge, I trust interested users, including you, to draw their conclusions. > If design/implementation concerns mean that users can have no option about bidi, > then so be it. I can't speak to that. That's your call. So far, however, I > see `bidi-display-reordering', and my understanding is that it gives users some > control. It's only a partial control, and the result is a weird creature that is neither pre-Emacs 24 display nor full bidi-aware display. IOW, the result is incoherent. It will probably work most of the time, but I cannot bet on that. Whether you want to use such a creature is your call now, that I explained the meaning as clear as I could. > OK, so a user cannot turn it off completely. It would be good to document that, > e.g., in the doc for `bidi-display-reordering': just what it does and does not > affect. So now we are requested to document deeply internal details of the current implementation, and in the user manual at that? Do you understand what kind and amount of highly technical stuff will have to be in the manual in order to explain this in enough detail for users to understand it? How far can you go ad absurdum, Drew? > But to the extent that they _can_ turn it off, there is apparently a way: > `bidi-display-reordering'. That way lies madness, if you ask me. At least in the long run, if not today. You are free to go there, of course: it's a free world (most of it). > > But it is _not_ a user setting. > > Precisely what this bug thread is about. Please make it a _user_ setting, if > you can. That's the request. It doesn't take a bidi expert to add a defcustom. I will object to that, for the reasons I explained, and I certainly won't do it myself. But I cannot force others not to do that. > > It was never meant to be, and the code was neither designed > > nor implemented with such an option in mind. > > It's not just a missing defcustom, much more is missing to > > make Emacs display dual-mode like what you seem to think. > > So it needs more work, it sounds like. If we can find someone to invest that work. > > IOW, your mental model of this variable and its effects > > is profoundly wrong. > > You've clarified things for my mental model. Now can we please fix the design > so it DTRT? Let users turn it off properly, if you can. I have more important things on my table wrt bidi support, and not enough time. So I won't be working on this in the near future, sorry. > In sum, your message to users seems to be, "If you don't need or > want bidi then use Emacs 23." Please don't put your words in my mouth. Emacs 24 is quite usable as it is, and there's no need for users to stay with Emacs 23. At least not users who approach this issue rationally. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 19:46 ` Eli Zaretskii @ 2011-09-23 21:23 ` Drew Adams 2011-09-23 23:21 ` Juanma Barranquero 0 siblings, 1 reply; 57+ messages in thread From: Drew Adams @ 2011-09-23 21:23 UTC (permalink / raw) To: 'Eli Zaretskii'; +Cc: 9571, lekktu, stepnem > > > Let me be very clear: there is no way for users to turn this off. > > > There's an internal variable that bypasses most of the bidi-aware > > > code. > > > > How is that different from turning it off, from a user perspective? > > _Parts_of_it_ can be turned off. What you get is part bidi and part > not. What that does is anyone's guess. Anyone's guess, unless someone checks and specifies what it does. And why is it that that won't happen? > > > But please understand that making a user option to force > > > Emacs use Emacs 23 vintage display code will need much more > > > work than just adding a defcustom, because that code was > > > extensively modified as part of development of the > > > bidi-aware display. > > > > So maybe it needs more time. > > That time will help only if someone will work on developing that > mode. I won't any time soon; volunteers are welcome. I agree. Bidi support - being able to turn it on, is welcome. Being able to turn it OFF is also welcome. > > > Bugs reported for Emacs 24 when this variable is nil > > > will go to the bottom of my todo list. > > > > Clear enough, I guess. You closed this bug with lightning speed. > > Please get your facts right. The bug is not closed. I never closed > it. Sorry; I'm not very clear on the status codes/terminology. This is the fact I was referring to: tags 9571 + wontfix So I guess you're saying that it is not closed but it won't be fixed. Nuance. Limbo is apparently no more (and perhaps never was), but Wontfix is alive and well. > > > So by pressing for this user option you actually do > > > them a disservice. > > > > No, I think I do "them" a service. By refusing to make it > > a user option and refusing to debug and support the nil case, > > I think you do "them" a disservice. > > Anything can be turned on its head by clever word juggling. What word juggling? Are you now saying that you do _not_ refuse to debug the nil case and you _will_ support it? I was trying to state your position accurately, but I'll be happy to hear if I misrepresented it. > But the truth is still there: given the current design and > implementation of the bidi display, I never said you could not modify the implementation. On the contrary. Based on your statement that the implementation does not support the nil case yet, I encourage work on fixing that. > you are encouraging them to use unsupported mode, Not at all. Emacs 24 has not yet been released. We still have a chance to get it right. Until Emacs 24 has been released, talking about supported/unsupported mode simply expresses your desire that you not support the nil case. > whereas I encourage them to use a mode that is fully supported and > whose bugs are being fixed in a matter of days if not hours. I too am happy to see them use the bidi-ON mode. And I am happy to see your level of support for it. > > You've essentially said that there can be no other > > design/implementation that lets users turn this off cleanly. > > There _could_ be a different design, but it's too late to talk about > that now, that the existing design and implementation are what they > are and my free time, age, and amount of energy are what they are. The release is not out yet. If the cake is not fully baked, maybe it shouldn't be served quite yet. > > You are taking an implementor point of view, and you are > > the expert there. I have nothing to say about that. I am taking > > a user point of view (and speaking for only one user), ignorant > > of the design. > > Ignorance is not always a bliss. I took time to explain the > implementation because (I hope) those explanations can help you and > others understand why pressing for making this a user variable is not > TRT, in practical terms. Armed with this new knowledge, I trust > interested users, including you, to draw their conclusions. So far, it seems (but I can't speak for him, obviously) that Richard is not convinced either. He has repeated the same thing as I: why shouldn't this be a user option? And he adds, "Why should [unidirectional display] ever be deleted? What is gained by deleting it?" I have no opinion about that. My only concern is that users be able to, and know how to, turn bidirectional display off. I mention Richard here because he is more likely than I to listen to and understand correctly the explanations about the design. > > If design/implementation concerns mean that users can have > > no option about bidi, then so be it. I can't speak to that. > > That's your call. So far, however, I see `bidi-display-reordering', > > and my understanding is that it gives users some control. > > It's only a partial control, and the result is a weird creature that > is neither pre-Emacs 24 display nor full bidi-aware display. Emacs has been about partial control, better-than-nothing, and do-the-best-we-can, since its inception. Above all, it has been about giving users as much control as possible. And about making things transparent (clear) to users, including about how partial the control might be. That, in particular, is not something we have hidden from users - unlike the case for some non-free software. > IOW, the result is incoherent. It will probably work most of > the time, And that's about as good as one can say for most of Emacs. > but I cannot bet on that. No one is asking you to bet. This bug report only asks that you make the variable, which already exists, which already gives users "partial control", and which already "probably work[s] most of the time", into a _user option_. And that you clearly document how to turn things off (so far as that can be done). No one is asking more than that. If you do not want to, or we do not have the resources to, make the nil case work perfectly, then we will anyway live with it being imperfect. It's about giving users the knowledge and access, even if the results of using nil are not 100% predictable or 100% good. > Whether you want to use such a creature is your > call now, that I explained the meaning as clear as I could. It's not about me. It has never been about me. I might turn it on or I might turn it off. If I get the impression that it slows things down I might try turning it off. If I get the impression that it has no negative effect I might turn it on. I now know how to turn it off (as much as is possible), thanks to the knowledge you communicated - here and in the manual. But other users might not know that. I would prefer that we offer a user option. Not for me, but for others, who might not be so clear about Lisp, buffer-local variables, and `setq-default'. > > OK, so a user cannot turn it off completely. It would be > > good to document that, e.g., in the doc for > > `bidi-display-reordering': just what it does and does not > > affect. > > So now we are requested to document deeply internal details of the > current implementation, and in the user manual at that? That's you saying that, not I. Here is your text I was responding to, in fact: >>> For example, there's no way to turn off reordering of the >>> mode line and header line, without switching off the reordering >>> entirely. Likewise for the tool bar. It is unthinkable for >>> user-friendly settings to behave like that. Unthinkable that the settings behave like that - maybe. But what's quite thinkable is that users of the variable that you documented might want to know that it does not turn off reordering of the mode line etc. Telling them that - just what you told us here, is not "document[ing] deeply internal details of the current implementation" - please don't exaggerate. That is simply presenting a caveat, documenting a few special cases so users don't expect something different in those cases. > Do you understand what kind and amount of highly technical stuff > will have to be in the manual in order to explain this in enough > detail for users to understand it? What kind and amount of "highly technical stuff" did you have to go into, to communicate to us those few corner cases? I didn't see _anything_ highly technical in what you said, but what you said helped me know what to expect for the mode line etc. Other users deserve the same info. > How far can you go ad absurdum, Drew? You are the one stretching things, Eli. You give us a sentence that makes clear not to expect turn-off of reorder in cases a, b, and c. When I say, great, thank you, please tell that to the users also, you freak out and start screaming too "highly technical" and "deeply internal" for users. Ad absurdum, indeed. No one is asking that you document the implementation. Think in terms of what might help a user who does happen to set the variable to nil. That's the kind of info that it could be helpful to add to the manual. Nothing more. > > But to the extent that they _can_ turn it off, there is > > apparently a way: `bidi-display-reordering'. > > That way lies madness, if you ask me. At least in the long run, if > not today. You are free to go there, of course: it's a free world > (most of it). So you introduced, and documented in the user manual, something that leads to madness? That's not my doing. > > > But it is _not_ a user setting. > > > > Precisely what this bug thread is about. Please make it a > > _user_ setting, if you can. That's the request. > > It doesn't take a bidi expert to add a defcustom. I will object to > that, for the reasons I explained, and I certainly won't do it > myself. But I cannot force others not to do that. What do you call tagging the request for that as "wontfix"? > > > It was never meant to be, and the code was neither designed > > > nor implemented with such an option in mind. > > > It's not just a missing defcustom, much more is missing to > > > make Emacs display dual-mode like what you seem to think. > > > > So it needs more work, it sounds like. > > If we can find someone to invest that work. We agree that would be a good thing. So at least this bug should be classified "wishlist" instead of "wontfix". > > > IOW, your mental model of this variable and its effects > > > is profoundly wrong. > > > > You've clarified things for my mental model. Now can we > > please fix the design so it DTRT? Let users turn it off > > properly, if you can. > > I have more important things on my table wrt bidi support, and not > enough time. So I won't be working on this in the near future, sorry. Yes, you made that clear with your first reply. In fact, you quickly made it clear that no one else would work on fixing this either: "tags 9571 + wontfix" > > In sum, your message to users seems to be, "If you don't need or > > want bidi then use Emacs 23." > > Please don't put your words in my mouth. Emacs 24 is quite usable as > it is, and there's no need for users to stay with Emacs 23. At least > not users who approach this issue rationally. Then just what words would you like to use to end the sentence "If you don't need or want bidi then use..."? Don't let me put words in your mouth - you tell us how the sentence ends, please. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 21:23 ` Drew Adams @ 2011-09-23 23:21 ` Juanma Barranquero 2011-09-24 0:32 ` Drew Adams 0 siblings, 1 reply; 57+ messages in thread From: Juanma Barranquero @ 2011-09-23 23:21 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, stepnem On Fri, Sep 23, 2011 at 23:23, Drew Adams <drew.adams@oracle.com> wrote: > Anyone's guess, unless someone checks and specifies what it does. > And why is it that that won't happen? You remind me of a discussion in the Perl 6 mailing list, a few years ago: "As one of the 3 or 4 people in the world that understands the perl5 regexp engine, we would welcome your input." "'Understands' is a rather strong word..." -- Mark Kvale and Hugo van der Sanden And that is the case here: the number of people who understands both the Emacs display engine and the issues related to bidi can be counted with a couple bits, and I'm being generous. So if Eli says that he's not going to devote time to some issue related to it, it's not unrealistic to expect that it won't happen (soonish). Your insistence in keeping the issue as a wishlist is just the hope that someone will someday want to change the display engine to suit your preferences. Even if the number of knowledgeable people suddenly were to increase, that wouldn't automatically mean that they would be willing to invest in adding the code and the toggle to keep the display engine backward-compatible. > Limbo is apparently no more Not exactly, no. In fact, the official position of the Catholic Church has not changed, news reports notwithstanding. http://en.wikipedia.org/wiki/Limbo#Modern_era > Not at all. Emacs 24 has not yet been released. > We still have a chance to get it right. Perhaps if you can convince Eli, Stefan and Chong that supporting both the bidi-aware and the not-bidi-aware code is the "right" thing to do. If you can do that, please also convince them to simultaneously support the Unicode and pre-Unicode font backends; I miss the speed of my line-by-line scrolling in times past (though it is now quite usable, thanks to tireless efforts by Eli and Chong and Jason, IIRC). > So far, it seems (but I can't speak for him, obviously) that Richard is not > convinced either. He has repeated the same thing as I: why shouldn't this be a > user option? Because the option it would currently offer is bogus. > Emacs has been about partial control, better-than-nothing, and > do-the-best-we-can, since its inception. Above all, it has been about giving > users as much control as possible. It has also been about using resources (= developers) in the most efficient way possible. > It's about giving users the knowledge and access, even if the results of using > nil are not 100% predictable or 100% good. Are there really that many users that will want to disable bidi-display-reordering, knowing that the result will likely be buggier than the default? And if they do exist, do they really need a defcustom? > I would prefer that we offer a user option. Not for me, but for others, who > might not be so clear about Lisp, buffer-local variables, and `setq-default'. A defcustom is an statement that something is a switch, and both modes are reasonable. That is not the case here. > When I say, great, > thank you, please tell that to the users also, you freak out and start screaming > too "highly technical" and "deeply internal" for users. How did you determine the freaking out and the screaming? I'm quite interested. > No one is asking that you document the implementation. Think in terms of what > might help a user who does happen to set the variable to nil. That's the kind > of info that it could be helpful to add to the manual. Nothing more. Your defcustom request can be trivially satisfied, and not a word is needed in the manual: (defcustom bidi-display-reordering t "Not a user option. Do NOT set it to nil. Horrible things will happen. Thanks." :type 'boolean :version "24.1" Juanma ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 23:21 ` Juanma Barranquero @ 2011-09-24 0:32 ` Drew Adams 2011-09-24 1:13 ` Juanma Barranquero 2011-09-24 6:49 ` Eli Zaretskii 0 siblings, 2 replies; 57+ messages in thread From: Drew Adams @ 2011-09-24 0:32 UTC (permalink / raw) To: 'Juanma Barranquero'; +Cc: 9571, stepnem > And that is the case here: the number of people who understands both > the Emacs display engine and the issues related to bidi can be counted > with a couple bits, and I'm being generous. So if Eli says that he's > not going to devote time to some issue related to it, it's not > unrealistic to expect that it won't happen (soonish). I think everyone realizes that. This bug report is about making the variable into a user option. As Eli has said, we don't need his valuable time and expertise for that. > Your insistence in keeping the issue as a wishlist I mentioned "wishlist" only after Eli himself indicated that it needs more work "if we can find someone to invest that work". I don't think this bug report - which asks for a user option, should be closed, or classified wontfix (already done), or sent to the wishlist. I think we should make the var an option now AND (based on what Eli has said) add an enhancement request to the wishlist for more development to support the nil value - whether or not Eli is the only one on the planet who could ever hope to respond to such a wish. If you exclude things from the wishlist just because there is no one around today who has the time to work on them, then it is not a wishlist. > is just the hope that someone will someday want to change > the display engine to suit your preferences. No, you haven't been reading what I said. It's not about my preferences. I truly have no idea whether I will want this thing on or off, personally, as I indicated clearly several times. As I said, if there seems to be no downside, I will likely just leave it on. That's even though I do not expect to have any need for bidirectional editing. Why then? To closer reflect what others use, including people who might use some of my code. As you know, each departure from emacs -Q makes bug reporting just that much harder. But again, I have no idea now what I will do, and this bug report has NOTHING to do with my (nonexistent) preferences wrt the variable value. > > Limbo is apparently no more > > Not exactly, no. In fact, the official position of the Catholic Church > has not changed, news reports notwithstanding. > http://en.wikipedia.org/wiki/Limbo#Modern_era Thinking, in fact, of you, Juanma, I read precisely that Wikipedia article BEFORE I wrote that sentence, being personally ignorant and indifferent to limbosity. And that is _exactly_ why I added "(and perhaps never was)" immediately following the words you quoted (but which you chose to cut). That article makes it clear that the situation wrt the Catholic Church is less than clear wrt "limbo" - even after P.B. XVI's 2007 publication, and that there have been multiple notions of "limbo" over the ages, etc. "And perhaps never was" sums up the situation quite accurately, as I read that Wikipedia article. Not that I really care... > > So far, it seems (but I can't speak for him, obviously) > > that Richard is not convinced either. He has repeated the > > same thing as I: why shouldn't this be a user option? > > Because the option it would currently offer is bogus. Then so is the same variable as a NON-option bogus. And then so is its treatment in two (count 'em!) Emacs manuals. I didn't create that variable, nor did I describe it in the manuals. You cannot have it both ways. Either this is something useful for users to know about or it is not. If it is, then AFAICT it is just as useful for non-Lispers as for Lispers, for those who understand `setq-default' and buffer-local vars as well as for those who do not. > > Emacs has been about partial control, better-than-nothing, and > > do-the-best-we-can, since its inception. Above all, it has > > been about giving users as much control as possible. > > It has also been about using resources (= developers) in the most > efficient way possible. There are two different issues that have been discussed here: 1. Make the variable into an option, and tell users more clearly about what nil does. 2. Work more on the code to be able to more solidly "support" the nil use case. This bug report asked only for #1. As Eli has admitted, it doesn't take much in the way of resources to do that. It is Eli, not I, who brought up #2 and pointed to potential problems if users set the variable to nil. And let's not be under any illusions about this "support". Not making it a user option does not let Emacs "support" off the hook. The existence of the variable, and especially its description in both Emacs manuals, means that some users will likely set it to nil. > > It's about giving users the knowledge and access, even if > > the results of using nil are not 100% predictable or 100% good. > > Are there really that many users that will want to disable > bidi-display-reordering, Who knows? Do you? > knowing that the result will likely be buggier than the > default? But how on Earth will they know that? Saying anything about that in the doc was specifically verboten by Eli: Saying in the manual that some feature "means trouble" is not something we use [sic] to do, because users will say "if it's trouble, why don't you fix it?". > And if they do exist, do they really need a defcustom? To quote a famous person, why not? "Why are you opposed to a flag to turn bidi display off?" Why should you, Juama, who are familiar enough with buffer-local vars etc. to understand how to turn this off (if you wanted to), be able to do so; but not Jane Doe, who understans how to use Customize but knows nothing about `setq-default'? Do you "really need" to keep this optional behavior to yourself and others with Emacs-Lisp knowledge? > > I would prefer that we offer a user option. Not for me, > > but for others, who might not be so clear about Lisp, > > buffer-local variables, and `setq-default'. > > A defcustom is an statement that something is a switch, and both modes > are reasonable. That is not the case here. No more so than for any other variable. Nothing is guaranteed in Emacs. User options no more than other vars. You are making a mountain out of a mole hill. > > No one is asking that you document the implementation. > > Think in terms of what might help a user who does happen > > to set the variable to nil. That's the kind > > of info that it could be helpful to add to the manual. > > Nothing more. > > Your defcustom request can be trivially satisfied, and not a word is > needed in the manual: > > (defcustom bidi-display-reordering t > "Not a user option. Do NOT set it to nil. Horrible things will > happen. Thanks." :type 'boolean :version "24.1" You forgot a paren.) But I could actually live with that, provided the manual still describes the variable fairly, as it does now (and hopefully a bit more clearly wrt what nil does). I wouldn't choose such a doc string myself, but if that's the price to pay for giving users an option they can find easily using `apropos-variable' then it might be worth it. But I don't think you'll convince Eli to use such language - see above. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 0:32 ` Drew Adams @ 2011-09-24 1:13 ` Juanma Barranquero 2011-09-24 3:46 ` Drew Adams 2011-09-24 6:49 ` Eli Zaretskii 1 sibling, 1 reply; 57+ messages in thread From: Juanma Barranquero @ 2011-09-24 1:13 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, stepnem On Sat, Sep 24, 2011 at 02:32, Drew Adams <drew.adams@oracle.com> wrote: > As Eli has said, we don't need his valuable time and > expertise for that. He's already been useful in this message thread by explaining that setting the variable to nil does not do what people thinks it does. > I don't think this bug report - which asks for a user option, should be closed, > or classified wontfix (already done), or sent to the wishlist. OK. > I think we should make the var an option now AND (based on what Eli has said) > add an enhancement request to the wishlist for more development to support the > nil value - whether or not Eli is the only one on the planet who could ever hope > to respond to such a wish. Eli has said that he won't oppose someone adding the defcustom, so you can do both (sending a patch to add the defcustom, and remove the wishlist tag from the bug). > If you exclude things from the wishlist just because there is no one around > today who has the time to work on them, then it is not a wishlist. Of course. I just added today a wishlist item for datagram sockets on Windows, knowing full well that there aren't many people with the knowledge and the inclination to spend time implementing them. But experience of years shows that redisplay engine experts are few and far between. We can leave this as a wishlist, it's just that it won't likely serve any useful purpose. > No, you haven't been reading what I said. It's not about my preferences. I meant, your preference of the display enginge being able to be turned off, even if you personally wouldn't want to do it. > Thinking, in fact, of you, Juanma, I read precisely that Wikipedia article > BEFORE I wrote that sentence, being personally ignorant and indifferent to > limbosity. Why, pray tell, thinking of me? Because I'm nitpicky enough to answer to that, or because being a Spaniard I'm more likely to be Catholic (which I theoretically am, but not in fact)? > And that is _exactly_ why I added "(and perhaps never was)" immediately > following the words you quoted (but which you chose to cut). It's not that I chose to cut these words, is that I was only replying to the first words. So: > That article makes it clear that the situation wrt the Catholic Church is less > than clear wrt "limbo" - even after P.B. XVI's 2007 publication, and that there > have been multiple notions of "limbo" over the ages, etc. Yes. But the fact is, the position of the Catholic Church has not changed, recently or otherwise. Belief in the limbo has traditionally been, and still is, something that is not doctrine, but does not contradict doctrine. That's why I commented your "Limbo is apparently no more" and let the rest aside. I wasn't interested in discussing limbo's theology with you, but inform you that the news reports were far off the mark. > "And perhaps never was" sums up the situation quite accurately, as I read that > Wikipedia article. Sums up the situation quite accurately. Which is unrelated to any recent change of status. > Then so is the same variable as a NON-option bogus. No, if its intended use is helping in debugging. > You cannot have it both ways. Either this is something useful for users to know > about or it is not. And i don't want it both ways. I think is not useful for users to know. Note "useful". I'm not saying that they shouldn't be able to know it. Also note "I think". That's an opinion, I'm not claiming to know for a fact that it is not useful for them. No one really knows. > Who knows? Do you? I don't know, and neither do you. You ask for I change, I don't. So when the masses come here to bring down the walls, we can relent and give them the defcustom (I'm feeling generous today). Until then, it's customizability for customizability's sake. > But how on Earth will they know that? Saying anything about that in the doc was > specifically verboten by Eli: Yes. It doesn't seem appropriate for the manual. But we have lot of docstrings that say: "internal use only" or somesuch. > To quote a famous person, why not? "Why are you opposed to a flag to turn bidi > display off?" Because it will create the false belief that it does something useful, so some users will mistakenly shot themselves in the foot. If you mean: why am I opposed to making the display engine have two code paths, one with bidi support and one without it, switchable with a flag... I'm neither for nor against, except that it will be a lot of work that nobody wants to do, it will make the display engine still harder to study (I'm just repeating what Eli said a few messages ago), and it's not clear that it will serve any useful purpose. > Why should you, Juama, who are familiar enough with buffer-local vars etc. to > understand how to turn this off (if you wanted to), be able to do so; but not > Jane Doe, who understans how to use Customize but knows nothing about > `setq-default'? I know lots of things, for lots of reasons, that are just garbage and/or non-useful. I don't see why should I try to help everyone know these things. I won't try to preclude anyone to learn them, of course, but I won't help anyone by getting them to learn to say "please" in irish, memorize an obsolete definition of the meter, or be able to recite the full name of the female protagonist of "The Fifth Element". More power to Jane Doe if she wants to read the Emacs Lisp Reference and know how to setq-default bidi-display-reordering. No one is really going to try to stop her. > Do you "really need" to keep this optional behavior to yourself and others with > Emacs-Lisp knowledge? Is that what I'm proposing? "Keeping it to myself"? I wasn't born knowing elisp, you know; and neither had I to submit to some hermetic mysteries' initiation to be allowed to read the manual. Quaerendo invenietis. > No more so than for any other variable. Nothing is guaranteed in Emacs. User > options no more than other vars. You are making a mountain out of a mole hill. A very small mountain, perhaps. A couple cubic meters of dirt, tops. > You forgot a paren.) Let down by cut&paste :-( > But I could actually live with that, provided the manual > still describes the variable fairly, as it does now (and hopefully a bit more > clearly wrt what nil does). Glad to hear it. Juanma ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 1:13 ` Juanma Barranquero @ 2011-09-24 3:46 ` Drew Adams 2011-09-24 8:44 ` Juanma Barranquero 0 siblings, 1 reply; 57+ messages in thread From: Drew Adams @ 2011-09-24 3:46 UTC (permalink / raw) To: 'Juanma Barranquero'; +Cc: 9571, stepnem > > Thinking, in fact, of you, Juanma, I read precisely that > > Wikipedia article BEFORE I wrote that sentence, being > > personally ignorant and indifferent to limbosity. > > Why, pray tell, thinking of me? Because I'm nitpicky enough to answer > to that, or because being a Spaniard I'm more likely to be Catholic > (which I theoretically am, but not in fact)? Because you are knowledgable in many historical and language matters and are wont to refer to Wikipedia. I read that article mainly because I had heard only vague things about limbo and wanted to get a little background before saying something completely incorrect, even if I was really only joking about the popular (and no doubt inaccurate) meaning of "limbo". Thinking of you in that regard was secondary, and only because, as I say, you are one who is both knowledgable and wont to correct inaccuracies even in non-technical matters. And yes, you can properly take that as a compliment, from someone who is also sometimes interested in non-software topics. > > "And perhaps never was" sums up the situation quite > > accurately, as I read that Wikipedia article. > > Sums up the situation quite accurately. Which is unrelated to any > recent change of status. We do agree, I fear. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 3:46 ` Drew Adams @ 2011-09-24 8:44 ` Juanma Barranquero 2012-02-22 2:34 ` Glenn Morris 0 siblings, 1 reply; 57+ messages in thread From: Juanma Barranquero @ 2011-09-24 8:44 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, stepnem On Sat, Sep 24, 2011 at 05:46, Drew Adams <drew.adams@oracle.com> wrote: > Thinking of you in that regard was secondary, and only because, as I say, you > are one who is both knowledgable and wont to correct inaccuracies even in > non-technical matters. And yes, you can properly take that as a compliment, > from someone who is also sometimes interested in non-software topics. I wouldn't dream of taking it otherwise. Juanma ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 8:44 ` Juanma Barranquero @ 2012-02-22 2:34 ` Glenn Morris 0 siblings, 0 replies; 57+ messages in thread From: Glenn Morris @ 2012-02-22 2:34 UTC (permalink / raw) To: 9571-done It was explained that this won't be done. Closed as "wontfix". ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 0:32 ` Drew Adams 2011-09-24 1:13 ` Juanma Barranquero @ 2011-09-24 6:49 ` Eli Zaretskii 2011-09-24 8:46 ` Juanma Barranquero 1 sibling, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-24 6:49 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, lekktu, stepnem > From: "Drew Adams" <drew.adams@oracle.com> > Cc: "'Eli Zaretskii'" <eliz@gnu.org>, <stepnem@gmail.com>, > <9571@debbugs.gnu.org> > Date: Fri, 23 Sep 2011 17:32:08 -0700 I said everything I could in this matter. What is left is discussion of what is limbo and what the church thinks about that, for which I have neither time nor motivation. Just a few minor remarks, before I get back to fixing the bug I was working on before this erupted. > I mention Richard here because he is more likely than I to listen to and > understand correctly the explanations about the design. We will not see what Richard thinks until we are done with basics. Any serious discussion of these issues and the related trade-offs must be based on good understanding of the details of the design and implementation. We are not there yet, sadly. ("Sadly" because I wish I had someone more experienced and talented than myself available to delve into the design and talk about this during the past 2 years, while I labored on it.) > > Do you understand what kind and amount of highly technical stuff > > will have to be in the manual in order to explain this in enough > > detail for users to understand it? > > What kind and amount of "highly technical stuff" did you have to go into, to > communicate to us those few corner cases? They are not "few". I just mentioned a few, but that doesn't mean that's all there is to it. > Then so is the same variable as a NON-option bogus. And then so is its > treatment in two (count 'em!) Emacs manuals. I didn't create that variable, nor > did I describe it in the manuals. There's a very good reason why this variable is in the manuals. The words used to describe it in both manuals were carefully chosen, both to avoid any factual inaccuracies and still leave it vague enough to allow changes in the underlying implementation. In particular, it's not an incident that it expressly does NOT say in any of the 2 manuals what is the precise effect on reordering of buffer text if this variable is set to a nil value. I encourage you to re-read the text with that in mind. Maybe then you will understand why I described it, even though using it means living closer to the edge, and why the fact that it is documented says nothing at all about the legitimacy of using it as a user-level toggle. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 6:49 ` Eli Zaretskii @ 2011-09-24 8:46 ` Juanma Barranquero 0 siblings, 0 replies; 57+ messages in thread From: Juanma Barranquero @ 2011-09-24 8:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571, stepnem On Sat, Sep 24, 2011 at 08:49, Eli Zaretskii <eliz@gnu.org> wrote: > I said everything I could in this matter. What is left is discussion > of what is limbo and what the church thinks about that, for which I > have neither time nor motivation. Still, I think theology is quite on topic for Emacs developers... ;-) Juanma ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 19:03 ` Drew Adams 2011-09-23 19:46 ` Eli Zaretskii @ 2011-09-23 20:00 ` Stefan Monnier 1 sibling, 0 replies; 57+ messages in thread From: Stefan Monnier @ 2011-09-23 20:00 UTC (permalink / raw) To: Drew Adams; +Cc: 9571, lekktu, stepnem >> Because it's _not_ a user variable. > Not yet. That's precisely the bug that this thread is about. I suggest to drop this useless thread. It's not a user option and won't be. Ideally we'll remove it altogether before Emacs-24.1 is released (or we may just rename it to `bidi--fiddle-with-internals'). Making it more user-visible is not on the radar (BTW, Eli, I think it should be removed from the user manual). Stefan ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 8:01 ` Štěpán Němec 2011-09-23 9:21 ` Juanma Barranquero @ 2011-09-23 10:18 ` Eli Zaretskii 2011-09-23 11:09 ` Štěpán Němec 1 sibling, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 10:18 UTC (permalink / raw) To: Štěpán Němec; +Cc: 9571 > From: Štěpán Němec > <stepnem@gmail.com> > Date: Fri, 23 Sep 2011 10:01:08 +0200 > Cc: 9571@debbugs.gnu.org > > On Fri, 23 Sep 2011 06:11:16 +0200 > Stefan Monnier wrote: > > >> Can you imagine that there are some Emacs users who do not _ever_ need > >> or want to edit bidirectional text? > > > > If those users get a different behavior depending on > > bidi-display-reordering, then we have a bug. > > I assume you don't consider UI responsiveness (buffer movement etc.) > deterioration a bug, then? Yes, I do. Please report them as much as possible, so they could be debugged and fixed. > AFIAK it's totally unrealistic to expect the same responsiveness > from Emacs with bidi enabled as from one with bidi disabled No, it's not unrealistic. In a vast majority of cases, the difference in responsiveness is below the threshold of human perception. If it were not for that, we would have much more complaints about the new display. Where it exceeds that threshold, i.e. it becomes annoyingly slow (whatever "annoyingly" means for you), please report that as a bug with a clear test case. Without reporting such incidents, there's no way we can get the new display better as fast as needed, which I hope is what everyone here wants. > just as is the case with font locking. This analogy is invalid, because font-lock is a very different beast. For starters, it works on the entire buffer, while bidi is display-only feature, and thus operates only on the (small) portion of the buffer being displayed. > OTOH, I understand you probably just want to push bidi down everybody's > throat No one around here has such a nasty attitude. I'm appalled that you can even suggest such a possibility. The bidi display was designed and implemented to be fast enough to be tolerable by people even if they don't use any R2L scripts. Where the reality flies at the face of this design or implementation, there's a bug that needs to be fixed. But it's impossible to fix them if they are not reported, because Emacs display features are a million, and no single living person can envision every use case in a lifetime. > the argumentation so far seems a bit disingenuous to me. They are the truth nonetheless. The old unidirectional display was left in place only as a debugging aid. Like any other basic feature of the display engine, it will one day become the only way to display text in Emacs, because maintaining two separate code bases, and in the display engine at that, is a serious maintenance burden. Introducing a user-level variable to use the unidirectional display will be a tremendous obstacle when we would like to get rid of the old code, I hope at least that much is clear and agreed. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 10:18 ` Eli Zaretskii @ 2011-09-23 11:09 ` Štěpán Němec 2011-09-23 11:45 ` Juanma Barranquero 2011-09-23 11:50 ` Eli Zaretskii 0 siblings, 2 replies; 57+ messages in thread From: Štěpán Němec @ 2011-09-23 11:09 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571 On Fri, 23 Sep 2011 12:18:25 +0200 Eli Zaretskii wrote: Thank you very much for the explanation. (I guess "pushing bidi down everybody's throat" was picturesque in a wrong way, sorry for that; it's really just another way of saying "bidi will (one day) become the only way to display text in Emacs"). I still think "there is no way back" is all the more reason to be as helpful and open about the changes and possible problems as possible. By under-documenting the issue you only provide more opportunity to FUD. In other words, not clearly saying that bidi might bring problems and how to work around them in the user documentation at this point would only be reasonable if Emacs bidi was pretty much a solved problem, but that's really not the impression I got from the related emacs-devel discussions or even from your explanation. -- Štěpán ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 11:09 ` Štěpán Němec @ 2011-09-23 11:45 ` Juanma Barranquero 2011-09-23 13:01 ` Štěpán Němec 2011-09-23 11:50 ` Eli Zaretskii 1 sibling, 1 reply; 57+ messages in thread From: Juanma Barranquero @ 2011-09-23 11:45 UTC (permalink / raw) To: Štěpán Němec; +Cc: 9571 2011/9/23 Štěpán Němec <stepnem@gmail.com>: > Thank you very much for the explanation. (I guess "pushing bidi down > everybody's throat" was picturesque in a wrong way, sorry for that; it's > really just another way of saying "bidi will (one day) become the only > way to display text in Emacs"). Again: the unicode merge brought the new font backends, which became the only way to display text in Emacs. That's progress. It's not as if the previous releases suddenly disappear, for those unable or unwilling to use newer Emacsen. I switched from Firefox to Chrome because I cannot bear the new Firefox interface, but I don't expect the Firefox developers to add ways to make Firefox 6 to behave exactly like Firefox 4. > I still think "there is no way back" is all the more reason to be as > helpful and open about the changes and possible problems as possible. Pretest *is* the moment to discover, and hopefully fix, the possible problems... > In > other words, not clearly saying that bidi might bring problems and how > to work around them in the user documentation at this point would only > be reasonable if Emacs bidi was pretty much a solved problem, but that's > really not the impression I got from the related emacs-devel discussions > or even from your explanation. That's a bit absurd, IMO (no offense intended). New features are never a "solved problem" until they have been extensively tested, and then some. That has to be done at some point in time. And that moment is now. Juanma ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 11:45 ` Juanma Barranquero @ 2011-09-23 13:01 ` Štěpán Němec 2011-09-23 15:03 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Štěpán Němec @ 2011-09-23 13:01 UTC (permalink / raw) To: Juanma Barranquero, Eli Zaretskii; +Cc: 9571 On Fri, 23 Sep 2011 13:45:35 +0200 Juanma Barranquero wrote: > 2011/9/23 Štěpán Němec <stepnem@gmail.com>: >> I still think "there is no way back" is all the more reason to be as >> helpful and open about the changes and possible problems as possible. > > Pretest *is* the moment to discover, and hopefully fix, the possible problems... It's meant to be, yes, but I suspect most users just wait for the release. And in any case, clear information about an experimental (or call it "new", if "experimental" is controversial) feature and related issues is very useful for pretesters, too. >> In >> other words, not clearly saying that bidi might bring problems and how >> to work around them in the user documentation at this point would only >> be reasonable if Emacs bidi was pretty much a solved problem, but that's >> really not the impression I got from the related emacs-devel discussions >> or even from your explanation. > > That's a bit absurd, IMO (no offense intended). New features are never > a "solved problem" until they have been extensively tested, and then > some. That has to be done at some point in time. And that moment is > now. Some features are more experimental than others, some are more annoying when gone wrong than others, and some cause annoyances harder to diagnose than others. On Fri, 23 Sep 2011 13:50:59 +0200 Eli Zaretskii wrote: >> From: Štěpán Němec <stepnem@gmail.com> >> Cc: 9571@debbugs.gnu.org >> Date: Fri, 23 Sep 2011 13:09:49 +0200 >> >> By under-documenting the issue you only provide more opportunity to >> FUD. In other words, not clearly saying that bidi might bring >> problems and how to work around them in the user documentation at >> this point would only be reasonable if Emacs bidi was pretty much a >> solved problem, but that's really not the impression I got from the >> related emacs-devel discussions or even from your explanation. > > I happen to be a documentation freak, and tried to do my best in > documenting everything related to bidi. If you can suggest specific > changes to the user manual or NEWS about this, please do. Saying in > the manual that some feature "means trouble" is not something we use > to do, because users will say "if it's trouble, why don't you fix > it?". We need to find a way of saying something useful that will help > users nonetheless. Suggestions are welcome. When you take one example Lars reported recently -- a buffer where the current bidi code wasn't able to diagnose the paragraph direction properly (or something) in a relatively untypical buffer (a lot of long lines without paragraph breaks). It made the buffer unusable. Now, how would a user diagnose or solve this issue? How would the current documentation help him in doing so? The user has to figure out that 1) (a problem with) the bidi reordering is the cause of the problem 2) they can work around it by setting bidi-display-reordering to nil. I'm rather sure the current documentation provides no clue as to point 1) (because it doesn't say such problems might occur and there is no other way to know), and I'm not quite sure it provides sufficient clues for point 2) (it says the variable "controls whether text in the buffer is reordered for display"; is a user with no clue about bidi likely to understand that as "when set to nil, the text in the buffer should behave just as before the bidi feature was introduced"? I don't know, but I suspect I might not, if I hadn't seen previous comments and references to the variable and its effects on emacs-devel and other places). I think unless you're pretty sure such problems are not likely to occur again, you should at least say (in NEWS if not in the manual; I would probably check the NEWS first in such situation anyway) that such things can happen and how to work around it (and you should probably also say that bidi is here to stay anyway so disabling it is only a workaround, encouraging users to report issues instead of just turning bidi off). -- Štěpán ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 13:01 ` Štěpán Němec @ 2011-09-23 15:03 ` Eli Zaretskii 2011-09-23 17:46 ` Stefan Monnier 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 15:03 UTC (permalink / raw) To: Štěpán Němec; +Cc: 9571, lekktu > From: Štěpán Němec <stepnem@gmail.com> > Cc: 9571@debbugs.gnu.org > Date: Fri, 23 Sep 2011 15:01:32 +0200 > > > I happen to be a documentation freak, and tried to do my best in > > documenting everything related to bidi. If you can suggest specific > > changes to the user manual or NEWS about this, please do. Saying in > > the manual that some feature "means trouble" is not something we use > > to do, because users will say "if it's trouble, why don't you fix > > it?". We need to find a way of saying something useful that will help > > users nonetheless. Suggestions are welcome. > > When you take one example Lars reported recently -- a buffer where the > current bidi code wasn't able to diagnose the paragraph direction > properly (or something) in a relatively untypical buffer (a lot of long > lines without paragraph breaks). It made the buffer unusable. Now, how > would a user diagnose or solve this issue? How would the current > documentation help him in doing so? Documentation cannot help with this, because it was a bug. It happened in a situation that I never envisioned, and that took several months to bump into, since bidi-display-reordering was turned on. The bug was fixed since then. I expect users who bump into such issues, and cannot find anything to help them in the manual, to ask for help on help-gnu-emacs or on emacs-devel. Then they will be provided with workarounds if they are available, or with patches if not. IOW, treat that as we always do with bugs. I also expect such issues to be extremely rare and marginal by the end of the pretest, provided that people report the problems. > I think unless you're pretty sure such problems are not likely to occur > again, you should at least say (in NEWS if not in the manual; I would > probably check the NEWS first in such situation anyway) that such things > can happen and how to work around it I wouldn't know what to say in a way that will be useful. Bugs that are reported are being fixed fairly quickly, so describing them would be an exercise in futility. Bugs that were not yet reported are unknown and cannot be described. The assumption that every single slowdown and every display-related bug in Emacs 24 are due to the bidirectional display engine is profoundly false, at least lately, so saying "as soon as you see any problem whatsoever, turn off bidi" would be crying wolf for no good reason. IOW, I feel that the issue is blown out of proportions for reason I cannot understand. By and large, THERE IS NO PROBLEM. Fear of problems, maybe. But no real problems, at least not reported ones. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 15:03 ` Eli Zaretskii @ 2011-09-23 17:46 ` Stefan Monnier 2011-09-23 18:24 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Stefan Monnier @ 2011-09-23 17:46 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571, lekktu, Štěpán Němec > IOW, I feel that the issue is blown out of proportions for reason I > cannot understand. By and large, THERE IS NO PROBLEM. Fear of > problems, maybe. But no real problems, at least not reported ones. Agreed. There have been a fair number of behavior bugs with respect to cursor positioning (that's the tricky part of your changes, and IIUC the only part that can't just be turned off by bidi-display-reordering), but they seem to be mostly under control now (new cursor bugs are just as likely now to exist in Emacs-23 as well). The other source of problem has been performance, and AFAICT it's always been linked to bidi-paragraph-direction (unsurprisingly: the rest of the changes have almost no impact on algorithmic complexity, and even the potentially large slowdown on the core "step to next position" operation is drowned in all the rest of the work we do per-position anyway). We can make that default to `left-to-right' if needed, but hopefully that won't even be necessary. Stefan ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 17:46 ` Stefan Monnier @ 2011-09-23 18:24 ` Eli Zaretskii 2011-09-23 19:10 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 18:24 UTC (permalink / raw) To: Stefan Monnier; +Cc: 9571, lekktu, stepnem > From: Stefan Monnier <monnier@iro.umontreal.ca> > Cc: Štěpán Němec <stepnem@gmail.com>, > 9571@debbugs.gnu.org, lekktu@gmail.com > Date: Fri, 23 Sep 2011 13:46:35 -0400 > > cursor positioning [is] the tricky part of your changes, and IIUC > the only part that can't just be turned off by bidi-display-reordering By and large, yes. But cursor positioning is very central to user experience. And there are other, less major pieces of the display engine that were modified without keeping the old code conditioned on bidi-display-reordering. I never considered it a goal to keep the old display code intact, so I cannot guarantee I did, and I know for a fact that some places other than cursor positioning have unconditional changes. > The other source of problem has been performance, and AFAICT it's always > been linked to bidi-paragraph-direction That is one potentially expensive part of the design. There's another: searching for portions of text covered by "replacing" display properties (because those text parts are reordered for display as a single unit). Both issues are kept at bay by limiting the amount of text we search before giving up. That said, the above two performance are explicitly present in the design. There are others that are unintended (a.k.a. "bugs"). Lately, more often than not, I find that slowdown is due to those unintended factors, not to the above 2 inherently expensive design traits. Bug reports with details of the use case are necessary to find these and weed them out. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 18:24 ` Eli Zaretskii @ 2011-09-23 19:10 ` Eli Zaretskii 0 siblings, 0 replies; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 19:10 UTC (permalink / raw) To: monnier; +Cc: 9571, lekktu, stepnem > Date: Fri, 23 Sep 2011 21:24:03 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 9571@debbugs.gnu.org, lekktu@gmail.com, stepnem@gmail.com > > > cursor positioning [is] the tricky part of your changes, and IIUC > > the only part that can't just be turned off by bidi-display-reordering > > By and large, yes. But cursor positioning is very central to user > experience. And there are other, less major pieces of the display > engine that were modified without keeping the old code conditioned on > bidi-display-reordering. I remembered another important piece of code that doesn't pay attention to bidi-display-reordering: mouse highlight. It was completely reimplemented with bidi-aware code. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 11:09 ` Štěpán Němec 2011-09-23 11:45 ` Juanma Barranquero @ 2011-09-23 11:50 ` Eli Zaretskii 2011-09-24 12:28 ` Richard Stallman 1 sibling, 1 reply; 57+ messages in thread From: Eli Zaretskii @ 2011-09-23 11:50 UTC (permalink / raw) To: Štěpán Němec; +Cc: 9571 > From: Štěpán Němec <stepnem@gmail.com> > Cc: 9571@debbugs.gnu.org > Date: Fri, 23 Sep 2011 13:09:49 +0200 > > By under-documenting the issue you only provide more opportunity to > FUD. In other words, not clearly saying that bidi might bring > problems and how to work around them in the user documentation at > this point would only be reasonable if Emacs bidi was pretty much a > solved problem, but that's really not the impression I got from the > related emacs-devel discussions or even from your explanation. I happen to be a documentation freak, and tried to do my best in documenting everything related to bidi. If you can suggest specific changes to the user manual or NEWS about this, please do. Saying in the manual that some feature "means trouble" is not something we use to do, because users will say "if it's trouble, why don't you fix it?". We need to find a way of saying something useful that will help users nonetheless. Suggestions are welcome. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-23 11:50 ` Eli Zaretskii @ 2011-09-24 12:28 ` Richard Stallman 2011-09-24 14:13 ` Eli Zaretskii 0 siblings, 1 reply; 57+ messages in thread From: Richard Stallman @ 2011-09-24 12:28 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 9571, stepnem Would this change in bidi_get_type suffice to implement non-bidi display? (In addition, one needs to define the option display-bidi-flag, etc.) This is partly based on guessing, so maybe it is wrong. (I don't know to test it.) But, if it is wrong, I think you would see in a second what's wrong, and maybe you could make it right in another minute. If it is really as easy as this, why say no? === modified file 'src/bidi.c' *** src/bidi.c 2011-09-24 10:31:37 +0000 --- src/bidi.c 2011-09-24 10:34:31 +0000 *************** *** 115,120 **** --- 115,123 ---- if (default_type == UNKNOWN_BT) abort (); + if (NILP (Vdisplay_bidi_flag)) + return default_type; + if (override == NEUTRAL_DIR) return default_type; -- Dr Richard Stallman President, Free Software Foundation 51 Franklin St Boston MA 02110 USA www.fsf.org www.gnu.org Skype: No way! That's nonfree (freedom-denying) software. Use free telephony http://directory.fsf.org/category/tel/ ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-24 12:28 ` Richard Stallman @ 2011-09-24 14:13 ` Eli Zaretskii 0 siblings, 0 replies; 57+ messages in thread From: Eli Zaretskii @ 2011-09-24 14:13 UTC (permalink / raw) To: rms; +Cc: 9571, stepnem > Date: Sat, 24 Sep 2011 08:28:39 -0400 > From: Richard Stallman <rms@gnu.org> > CC: stepnem@gmail.com, 9571@debbugs.gnu.org > > Would this change in bidi_get_type suffice to implement non-bidi > display? (In addition, one needs to define the option > display-bidi-flag, etc.) > [...] > + if (NILP (Vdisplay_bidi_flag)) > + return default_type; > + No, this won't do what you want. default_type comes from this code: default_type = (bidi_type_t) XINT (CHAR_TABLE_REF (bidi_type_table, ch)); This accesses the table of bidirectional properties and extracts from there the bidirectional type of CH, the character we are interested in. The rest of the code deals with _overriding_ that type. For any R2L character, default_type is STRONG_R, and it will cause bidi.c to reorder it into visual order. What you want is to pretend that R2L characters get the type STRONG_L, which is the type reserved for letters in left-to-right scripts. But simply overwriting default_type with STRONG_L isn't right, either. That's because as long as we run the code in bidi.c unaltered, there are some characters whose bidirectional properties are still needed for the code to work: newlines, paragraph separators, line separators, and a few others. So my suggestion to have what you want is different, see my other mail. > If it is really as easy as this, why say no? I didn't say no to this suggestion, because it was never explicitly requested, from my POV. If you meant this from the beginning, then I'm sorry for my misunderstanding of what you meant. However, I'm quite sure I did understand the original request that started this, and it wasn't this. ^ permalink raw reply [flat|nested] 57+ messages in thread
* bug#9571: 24.0.50; user option to turn off bidi, please 2011-09-22 4:18 bug#9571: 24.0.50; user option to turn off bidi, please Drew Adams 2011-09-22 5:49 ` Eli Zaretskii 2011-09-22 12:31 ` Stefan Monnier @ 2011-09-24 3:53 ` Jason Rumney 2 siblings, 0 replies; 57+ messages in thread From: Jason Rumney @ 2011-09-24 3:53 UTC (permalink / raw) To: Drew Adams; +Cc: 9571 "Drew Adams" <drew.adams@oracle.com> writes: > 1. That's not very user-friendly. We should have a user option that > does this, i.e., gives users an easy way to disable this feature if they > don't want to use it. This report is a bit like the reports we received when 20.1 was entering pre-release which resulted in the addition of --unibyte and related kludges, which lived on too long and caused all sorts of bugs. If you don't want to use bidi, just don't type or look at RTL text. If it is slowing Emacs down on LTR text in a way that setting bidi-display-reordering to nil fixes, then please file a bug report, I am sure an optimisation can be made to fix such slowdowns. ^ permalink raw reply [flat|nested] 57+ messages in thread
end of thread, other threads:[~2012-02-22 2:34 UTC | newest] Thread overview: 57+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-09-22 4:18 bug#9571: 24.0.50; user option to turn off bidi, please Drew Adams 2011-09-22 5:49 ` Eli Zaretskii 2011-09-22 12:31 ` Stefan Monnier 2011-09-22 13:13 ` Drew Adams 2011-09-22 21:44 ` Richard Stallman 2011-09-23 4:13 ` Stefan Monnier 2011-09-23 12:31 ` Richard Stallman 2011-09-23 14:46 ` Eli Zaretskii 2011-09-23 14:55 ` Lars Magne Ingebrigtsen 2011-09-23 15:06 ` Eli Zaretskii 2011-09-23 17:36 ` Stefan Monnier 2011-09-23 18:23 ` Lars Magne Ingebrigtsen 2011-09-23 19:44 ` Richard Stallman 2011-09-23 20:09 ` Eli Zaretskii 2011-09-24 3:56 ` Jason Rumney 2011-09-24 12:28 ` Richard Stallman 2011-09-23 9:13 ` Eli Zaretskii 2011-09-23 12:31 ` Richard Stallman 2011-09-23 14:40 ` Eli Zaretskii 2011-09-23 19:44 ` Richard Stallman 2011-09-23 19:48 ` Eli Zaretskii 2011-09-24 12:28 ` Richard Stallman 2011-09-24 14:04 ` Eli Zaretskii 2011-09-24 17:30 ` Richard Stallman 2011-09-24 19:15 ` Eli Zaretskii 2011-09-24 23:52 ` Richard Stallman 2011-09-23 4:11 ` Stefan Monnier 2011-09-23 8:01 ` Štěpán Němec 2011-09-23 9:21 ` Juanma Barranquero 2011-09-23 10:39 ` Štěpán Němec 2011-09-23 11:01 ` Eli Zaretskii 2011-09-23 16:09 ` Drew Adams 2011-09-23 17:48 ` Eli Zaretskii 2011-09-23 19:03 ` Drew Adams 2011-09-23 19:46 ` Eli Zaretskii 2011-09-23 21:23 ` Drew Adams 2011-09-23 23:21 ` Juanma Barranquero 2011-09-24 0:32 ` Drew Adams 2011-09-24 1:13 ` Juanma Barranquero 2011-09-24 3:46 ` Drew Adams 2011-09-24 8:44 ` Juanma Barranquero 2012-02-22 2:34 ` Glenn Morris 2011-09-24 6:49 ` Eli Zaretskii 2011-09-24 8:46 ` Juanma Barranquero 2011-09-23 20:00 ` Stefan Monnier 2011-09-23 10:18 ` Eli Zaretskii 2011-09-23 11:09 ` Štěpán Němec 2011-09-23 11:45 ` Juanma Barranquero 2011-09-23 13:01 ` Štěpán Němec 2011-09-23 15:03 ` Eli Zaretskii 2011-09-23 17:46 ` Stefan Monnier 2011-09-23 18:24 ` Eli Zaretskii 2011-09-23 19:10 ` Eli Zaretskii 2011-09-23 11:50 ` Eli Zaretskii 2011-09-24 12:28 ` Richard Stallman 2011-09-24 14:13 ` Eli Zaretskii 2011-09-24 3:53 ` Jason Rumney
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).