> On Apr 10, 2019, at 5:36 PM, Guy Steele <guy.ste...@oracle.com> wrote: > > >> On Apr 10, 2019, at 4:54 PM, Brian Goetz <brian.go...@oracle.com >> <mailto:brian.go...@oracle.com>> wrote: >> >> This is a plateful! >> >> Stripping "incidental" whitespace is an attractive target of opportunity; >> the real question is, can we do it right enough of the time, and when we get >> it wrong, is there an easy way for the user to recover and get what they >> want? >> >> Kevin described this as: "find the magic rectangle"; that there should be a >> rectangle enclosing the snippet that sets apart the incidental whitespace >> from the essential. In your examples, most of the time, the magic rectangle >> is, well, the actual rectangle in your text. >> >> >>> >>> Examples; >>> >>> String a = """ >>> +--------+ >>> | text | >>> +--------+ >>> """; // first characters in first column? > > Which suggests yet another approach to multiline string literals: > > String a = “”””””””””””””””””””””””””””””””””””””” > “A rectangle of double quotes " > “ can enclose any arbitrary text “ > “ with any desired indentation, “ > “ and you can assume any trailing “ > “ whitespace on each line will be “ > “ removed and that each line will “ > “ end with a \\n <smb://n>. “ > “ “ > “So all you need is IDE support for “ > “ making nice rectangles. “ > “””””””””””””””””””””””””””””””””””””””; > > String result = “””””””””””””””””””””””””””””””””””””””””””””””” > “public class Main { “ > “ public static void main(String... args) { “ > “ System.out.println("Hello World!”); “ > “ } “ > “} “ > “”””””””””””””””””””””””””””””””””””””””””””””””; > > String html = “”””””””””””””””””””””””””””””””””””””””””””””” > “<html> “ > “ <body style=\"width: 100vw\”> “ > “ <p>Hello World.</p> “ > “ </body> “ > “ <script>console.log(\"\\nloaded\")</script>” > “</html> “ > “””””””””””””””””””””””””””””””””””””””””””””””; >
Note that I was inconsistent with my use of escapes. I reckon you should be able to use escapes, but perhaps one need not escape included double quotes because you can tell from the length of the initial line of double-quotes how much text to skip before you expect see the double quote that marks the right-hand edge of the rectangle.