<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 11 mai 2020 à 23:26, Phil B <<a href="mailto:pbpublist@gmail.com">pbpublist@gmail.com</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Nicolas,</div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 11, 2020 at 5:02 PM Nicolas Cellier via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 11 mai 2020 à 22:58, Luciano Notarfrancesco via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div><br></div><div><br><div class="gmail_quote"></div></div></div><div><div dir="ltr" class="gmail_attr">On Tue, 12 May 2020 at 3:44 AM, Nicolas Cellier via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>Can you represent empty ranges?</div><div><br></div><div>For example,</div><div>(5,5) could be empty (marking a position before or after 5th character - your choice)</div></div></blockquote></div></blockquote></div></div></blockquote><div><br></div><div>Definitely.  That's why start<=end.  Needed for things like errors where you might only essentially know the position something occurred at but need to return a range for whatever reason.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div> (5,6) a one character range (from left to right)</div></div></blockquote></div></blockquote></div></div></blockquote><div><br></div><div>Yep.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div>(5,4) too (from right to left).</div></div></blockquote></div></blockquote></div></div></blockquote><div><br></div><div>My thinking was that this could get swapped during instance creation.  If end<start, then swap. (i.e. only for source code ranges would start<=end always be the case, the more general range superclass would allow the inversion)</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"><br></div></div><div><div dir="auto">Good question. Kind of looks like a pathological case, do you really need that? Is it for the cursor position?</div></div><div><div dir="auto"><br></div></div></blockquote><div>For example if we want to use that Range in Text selection, then yes.</div></div></div></blockquote><div><br></div><div>While the text could be selected from end to start, would anything be lost by flipping the positions around in the range created?</div><div> </div></div></div></blockquote><div>Oups, sorry to repeat, my intention was this to be in public discussion, but I'm bad with reply, reply all ..</div><div><br></div><div>As you noted, backward ranges like (5,4) have an interest for interactive 
selection: the start is the pivot point, and the end gives the direction
 (we are extending selection toward left or right around the pivot). <br></div><div>Peserving the pivot is an advantage when you later extend/shrink the selection with cursor keys for example...</div><div><br></div><div>Of course, this can be (and is) the responsibility of specialized editor, but I have the feeling that Range serves this purpose well without too much complexification...</div><div><br></div><div>Currently most models (Browser, Debugger, etc...) are using Interval for contentsSelection which does not sound good.</div><div>What if you want to have more control on the direction of the selection?</div><div>Recently, there was a hack in Squeak which reverted the pcRange in Debugger so as to show the beginning of selected text rather than the end for the case when the window is small. That would not work in Cuis due to cleaner Interval implementation, and that did not work either in a Squeak after I cleaned the Interval too :(<br></div><div>Not sure if it is the right fix, but backward Range would fit...<br></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div><div dir="auto"></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><br></div></div><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Le lun. 11 mai 2020 à 01:22, Phil B via Cuis-dev <<a href="mailto:cuis-dev@lists.cuis.st" target="_blank">cuis-dev@lists.cuis.st</a>> a écrit :<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Luciano,</div><div dir="ltr"><br></div><div>Since the vast majority of ranges I'd be working with are programmatically created, #.. wouldn't really help me (i.e. Range #from:to: would be fine and consistent with Interval in meaning) but I'm not opposed to it if it would help you.  However, I would not be in favor of overloading #, since that seems confusing given other implementors of #,.</div><div></div></div></blockquote></div></blockquote><div dir="auto"><br></div></div><div><div dir="auto">Yeah, I wouldn’t want to overload #, and my suggestion about #.. mainly was about allowing it as a binary operator that might be nice to have available for whatever people decide to use it. #from:to: looks nice enough, tho.</div>
</div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>
-- <br>
Cuis-dev mailing list<br>
<a href="mailto:Cuis-dev@lists.cuis.st" target="_blank">Cuis-dev@lists.cuis.st</a><br>
<a href="https://lists.cuis.st/mailman/listinfo/cuis-dev" rel="noreferrer" target="_blank">https://lists.cuis.st/mailman/listinfo/cuis-dev</a><br>
</blockquote></div></div>
</blockquote></div></div>