The nice thing about this rule is that having an editor/IDT _either_ detab _or_ retab should fix the problem.
> On May 9, 2019, at 12:53 PM, Jim Laskey <james.las...@oracle.com> wrote: > > Reasonable. This is a learning step for new users of MLS. > > > >> On May 9, 2019, at 1:43 PM, Guy Steele <guy.ste...@oracle.com >> <mailto:guy.ste...@oracle.com>> wrote: >> >> One possibility is language enforcement: at the part of the processing of a >> multiline string where whitespace is stripped off to the left of the >> rectangle, it could be an error if that leading whitespace is not “spelled >> the same” on all lines from which it is being stripped. I lean toward >> recommending this. >> >>> On May 9, 2019, at 12:40 PM, Jim Laskey <james.las...@oracle.com >>> <mailto:james.las...@oracle.com>> wrote: >>> >>> The proposed solution does not solve the mixed leading white space problem. >>> As long as the white space is consistent across lines with the tabs, it >>> works fine. >>> >>> Otherwise, the developer has two solutions; >>> >>> 1) Uuse your editor to detab or detab + entab. Either makes the white space >>> consistent. >>> >>> 2) Write a custom String::transform method that does the trimMargins thing. >>> >>> String string = """ >>> |> line 1 >>> |> line 2 >>> """.transform(s -> s.replaceAll("\\w*\\| <smb://w*//|>> ", "")); >>> The lone line discussion could fall out an automatic trimMargins solution, >>> but it gets messy. >>> -- Jim >>> >>> >>> >>> >>> >>>> On May 9, 2019, at 12:59 PM, Tagir Valeev <amae...@gmail.com >>>> <mailto:amae...@gmail.com>> wrote: >>>> >>>> Hello! >>>> >>>> Great draft, thank you. I'm especially happy that the expert group came to >>>> the conclusion that automatic builtin processing of the indentation is >>>> important. I proposed to do this in January, 2018 [1]. While the solution >>>> proposed in JEP draft is not as radical as proposed by me, I still like it >>>> better than the previous RSL proposal. >>>> >>>> One thing which seems missing is dealing with tabs. What if user file is >>>> invented with tabs? Should they be also processed? More specifically, what >>>> is a "white space" in strip indent algorithm description? Only \u0020 >>>> symbol or \u0020 & \u0009? Or anything for which Character.isWhiteSpace() >>>> returns true? Also if tabs are included do single tab costs the same as >>>> single space? You may imagine that somebody pastes part of multiline >>>> string from StackOverflow where tabs were used for indent and see some >>>> unexpected results (e.g. indent changes for the untouched lines while >>>> visually in the editor pasted lines look having the same indent as >>>> surrounding ones). I admit that defining what is "expected result" is >>>> hard, especially taking into account that most editors provide a setting >>>> for the tab size and different users may have different tab size. >>>> Nevertheless I feel that tab handling should be explicitly spelled out >>>> (even if it's "tab is not considered as a white-space character"). >>>> >>>> With best regards, >>>> Tagir Valeev. >>>> >>>> [1] >>>> http://mail.openjdk.java.net/pipermail/amber-spec-experts/2018-January/000251.html >>>> >>>> <http://mail.openjdk.java.net/pipermail/amber-spec-experts/2018-January/000251.html> >>>> чт, 9 мая 2019 г., 19:07 Jim Laskey <james.las...@oracle.com >>>> <mailto:james.las...@oracle.com>>: >>>> At this point I think the only outstanding issue is long line >>>> continuation. While we can postpone continuation until a later release, I >>>> think we should at least lay out the details to see if we need to do >>>> anything now. I'll follow up with a (long line continuation) synopsis >>>> e-mail in a few. >>>> >>>> Meanwhile, please review the JEP and comment back here. >>>> >>>> Cheers, >>>> >>>> -- Jim >>>> >>>> >>>> html: >>>> http://cr.openjdk.java.net/~jlaskey/Strings/MLS/MultilineStrings.html >>>> <http://cr.openjdk.java.net/~jlaskey/Strings/MLS/MultilineStrings.html> >>>> markdown: >>>> http://cr.openjdk.java.net/~jlaskey/Strings/MLS/MultilineStrings.md >>>> <http://cr.openjdk.java.net/~jlaskey/Strings/MLS/MultilineStrings.md> >>>> >>>> >>> >> >