Named result variables
Robert Field
robert.field at oracle.com
Mon Nov 2 19:28:21 UTC 2015
That was fast! :-)
I can’t get it to work on mac. Tried 3+4 then option-enter, command-enter, shift-option-enter, ctrl-option-enter, or ctrl-command-option-enter, and a few others.
Will try on Linux…
On merge I get this:
$ patch -p1 < ~/work/complete-variable-prototype.diff
patching file src/jdk.jshell/share/classes/jdk/internal/jshell/tool/ConsoleIOContext.java
patching file src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysis.java
patching file src/jdk.jshell/share/classes/jdk/jshell/SourceCodeAnalysisImpl.java
Hunk #1 succeeded at 997 (offset -187 lines).
Could that be my problem?
-Robert
> On Nov 2, 2015, at 7:07 AM, Jan Lahoda <jan.lahoda at oracle.com> wrote:
>
> Hi Robert,
>
> Attached is a crude prototype implementing the proposal - the shortcut to active the function is Alt-Enter.
>
> (Many things, like using simple names whenever possible, could be improved in the prototype, but hopefully good enough for experimenting.)
>
> Jan
>
> On 30.10.2015 07:48, Robert Field wrote:
>> Keep in mind I'm open to any solution.
>>
>> Let me frame my idea as a strawman so it is easier to shoot arrows at :-)
>>
>> Think: source code transformations that IDEs sometimes do.
>> So, in this case say, ...
>> You type in a complex expression expr. Then you press ctrl-V. The tool
>> generates the type typedecl and an equals sign and sticks the cursor
>> between them so you can type the variable name:
>>
>> typedecl. | = expr:
>>
>> Where | represents the cursor position.
>>
>> Jan can tell me if this is even something jline can do.
>>
>> The idea is, like tab, you type characters which don't correspond to
>> valid Java, but what you see is valid.
>>
>> Of course what character is typed to initiate this is arbitrary.
>>
>> Ideas...
>>
>> -Robert
>>
>>
>>
>> On October 29, 2015 11:17:24 PM Robert Field <robert.field at oracle.com>
>> wrote:
>>
>>> Thanks Cay putting this out for discussion, would love to come up
>>> with some nice solution for this. I would like to avoid something
>>> that straddles the snippet and command worlds which are now distinct.
>>>
>>> I don't think I expressed my idea very clearly -- mostly because it
>>> isn't at all clear to me ;-)
>>> What I was thinking was something vaguely tab completion like, in that
>>> you wind up looking at a well formed snippet not all of which you
>>> explicitly typed. But not literally a tab nor completion.
>>>
>>> Thanks,
>>> Robert
>>>
>>>
>>> On October 29, 2015 6:50:46 PM Cay Horstmann <cay at horstmann.com> wrote:
>>>
>>>> When I teach, I like to use jshell for quick demos. I might predefine
>>>>
>>>> <T> Set<T> setOf(T... values) { return new
>>>> TreeSet<>(Arrays.asList(values)); }
>>>>
>>>> and then construct two sets:
>>>>
>>>> Set<Integer> set1 = setOf(1, 2, 3);
>>>> Set<Integer> set2 = setOf(2, 3, 5);
>>>> set1.removeAll(set2)
>>>>
>>>> Except, that's a lot of typing, so I don't do that. I do
>>>>
>>>> setOf(1, 2, 3);
>>>> setOf(2, 3, 5);
>>>> $1.removeAll($2)
>>>>
>>>> Note the absence of types. The $n are automatically typed.
>>>>
>>>> But I lose track of those $n prettty soon. It would be nice if i could
>>>> name them.
>>>>
>>>> I brought this up at the Java One presentation and suggested
>>>>
>>>> /var set1 $1
>>>>
>>>> or
>>>>
>>>> /var set2
>>>>
>>>> to name the last $n.
>>>>
>>>> Robert thought that was a bit too much like inventing a new langauge
>>>> feature and suggested that one might be able to solve this with tab
>>>> completion instead.
>>>>
>>>> I thought about this a bit and couldn't come up with a compelling way.
>>>> Right now, when one hits Tab on a blank line, one is offered a
>>>> collection of well over 400 possible completions (types, packages,
>>>> classes, $ variables). Using that to get to something like Set<Integer>
>>>> or TreeMap<String, TreeSet<Integer>> isn't satisfactory.
>>>>
>>>> Does anyone else think that an easy way of naming results is worthwhile?
>>>> Any ideas on what the user interface should be?
>>>>
>>>> Cheers,
>>>>
>>>> Cay
>>>>
>>>>
>>>> --
>>>>
>>>> Cay S. Horstmann | http://horstmann.com | mailto:cay at horstmann.com
> <complete-variable-prototype.txt>
More information about the kulla-dev
mailing list