Indeed, it does solve a number of "figure out what was the user
thinking" questions.
You hit the nail on the head regarding IDE support. Our original
thinking was that it should be easy to cut and paste between a (say)
JSON document and a Java source program, without having to mangle it up
in an annoying and error-prone way.
I think what you're saying is, in the age of IDEs, that this is not such
a problem, and we should focus on what yields the most _readable_ code,
on the theory that writing is the job of the IDE?
On 4/16/2019 3:37 PM, Guy Steele wrote:
Just in case it wasn’t clear, I want to emphasize that my suggestion
of using a rectangle-of-double-quotes was intended as a serious
proposal—admittedly one that looks unusual and would require good
cooperation from each IDE to be practical, but one that solves a
number of the problems about that we are facing about indentation and
whether to strip whitespace.
—Guy
On Apr 10, 2019, at 5:48 PM, Guy Steele <guy.ste...@oracle.com
<mailto:guy.ste...@oracle.com>> wrote:
On Apr 10, 2019, at 5:36 PM, Guy Steele <guy.ste...@oracle.com
<mailto: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.