JShell tool: remove or keep default Edit Pad editor?
Robert Field
robert.field at oracle.com
Wed Oct 12 21:08:31 UTC 2016
On 10/12/16 10:12, mark.reinhold at oracle.com wrote:
> 2016/10/11 17:51:41 -0700, robert.field at oracle.com:
>> On 10/11/16 16:09, mark.reinhold at oracle.com wrote:
>>> 2016/10/10 17:31:35 -0700, paul.sandoz at oracle.com:
>>>> ...
>>>>
>>>> One approach for an out of the box solution is to split out the editor
>>>> functionality into a separate module and for jshell to define a
>>>> service provider interface. Thereby on a full JDK distribution you can
>>>> the same functionality but on a more minimal distribution it is not
>>>> present.
>>> That would be the "modular" way to do it.
>> That would certainly be doable. If the critical concern is module
>> boundaries. But that exposes the Edit Pad to use outside of jshell --
>> is that an issue?
> You can prevent undue exposure by defining the service type in the
> jdk.jshell module and exporting its containing package only to the
> new module that contains Edit Pad, something like this:
>
> module jdk.jshell {
> exports jdk.jshell.editor.spi to jdk.internal.editpad;
> ...
> }
>
> module jdk.internal.editpad {
> requires java.desktop;
> requires jdk.jshell;
> provides jdk.jshell.editor.spi.Editor
> with jdk.internal.editpad.EditorProvider;
> }
Nice! I've created:
jshell tool: Edit Pad should be in its own module
https://bugs.openjdk.java.net/browse/JDK-8167636
>>> ...
>>>
>>> Have you considered, at least on Unix systems, supporting the EDITOR
>>> environment variable? Yes, it might be platform-specific, but it's an
>>> incredibly handy and reasonably standard way to tell random programs how
>>> to use the editor of your choice.
>> Was tempted. The jshell tool suspends the REPL while in the editor (so
>> they don't clash). However some editors return immediately -- there is
>> a -wait option on /set editor for this case.
> Every Unix tool I've ever seen that uses EDITOR has assumed that the
> command defined by that environment variable will not return until the
> editing operation is complete. I think jshell can assume that too.
Given that assumption, that is a good idea. Created:
jshell tool: /edit should use EDITOR setting
https://bugs.openjdk.java.net/browse/JDK-8167637
>
>> But of course, coming from
>> EDITOR there is no way to know if it needed. Between that, the platform
>> specific aspect, and how it would interact with /set and Preferences --
>> it seemed a bit convoluted and shaky. Still an option but it doesn't
>> solve the problem -- just another finger in the dike.
> All too often we've built useful tools in the JDK but failed to make
> them relate well to the environments in which they're actually used.
> I'd hate to see jshell fall into the same trap. Please reconsider
> this.
Done!
-Robert
>
> - Mark
More information about the kulla-dev
mailing list