-
Enhancement
-
Resolution: Fixed
-
P3
-
9
-
b142
-
Verified
It would be really helpful to have a way to print the values of various configuration settings. Specifically, I want some kind of command that would allow the me to confirm the current options that are configurable with the "/set" command (e.g. mode, truncation, editor, etc.) and the current classpath (i.e. as configured by the "/classpath").
This would help improve the usability and serviceability of jshell tremendously. Without such functionality, the only way to confirm the various settings is to examine the command history and extrapolate the current settings. That is like saying a Unix shell doesn't need a "cwd" command because one could figure out the current directory by examining or parsing the command history.
For example, one possible solution may be for "/set" to have a counterpart command (called "/show" ?) that would display the value of any of the configuration options. Or maybe we could just make "/set" called without any arguments display all of the current values, just like bash's "set" command would.
Solution chosen is as follows --
------------------------------------------------------------------------------------
In response to a review request for
8163840: jshell tool: provide way to display configuration settings
I had an in-depth discussion with Brian about the settings related commands -- resulting in a proposed syntax significantly different than current or the webrev. I'd like to vet this at the design level before implementing it (again). Your feedback is requested.
/set as before.
Showing settings with '/set' without specifying a setting (rather than '/set -show' in the RFR).. This is consistent with many other shells, including bash. It also reduces the commands to learn.
Since /set would also show settings retained between sessions, for symmetry, /retain would be rolled into /set as /set -retain ...
Since mode settings are very extensive they would be shown only for requested modes.
Examples ---
jshell> /set
| /set editor -retain kwrite
| /set editor -default
| /set start -none
| /set feedback normal
|
| For mode settings use: /show mode <mode>
| Current set modes: verbose normal concise silent
jshell> /set editor
| /set editor -retain kwrite
| /set editor -default
jshell> /set mode concise
| /set mode concise -quiet
| /set prompt concise "jshell> " " ...> "
| /set format concise typeKind "class" class
| /set format concise typeKind "interface" interface
| /set format concise typeKind "enum" enum
| /set format concise typeKind "annotation interface" annotation
| /set format concise pre "| "
| /set format concise resolve "{until}{unrerr}" modified,added,used,replaced
| /set format concise err "%6$s"
| /set format concise unrerr "{unresolved} is declared" unresolved1-error0
| /set format concise unrerr "{unresolved} are declared" unresolved2-error0
| /set format concise unrerr " this error is corrected: {errors}" unresolved0-error1
| /set format concise unrerr "{unresolved} is declared and this error is corrected: {errors}" unresolved1-error1
| /set format concise unrerr "{unresolved} are declared and this error is corrected: {errors}" unresolved2-error1
| /set format concise unrerr " these errors are corrected: {errors}" unresolved0-error2
| /set format concise unrerr "{unresolved} is declared and these errors are corrected: {errors}" unresolved1-error2
| /set format concise unrerr "{unresolved} are declared and these errors are corrected: {errors}" unresolved2-error2
| /set format concise display "{result}{pre}created scratch variable {name} : {type}{post}" expression-modified,added,replaced-primary
| /set format concise display "{result}{pre}value of {name} : {type}{post}" varvalue-primary
| /set format concise display "{result}{pre}assigned to {name} : {type}{post}" assignment-primary
| /set format concise display "{result}{pre}{action} variable {name} : {type}{resolve}{post}" varinit,vardecl
| /set format concise display "{pre}{action} variable {name}{resolve}{post}" varinit,vardecl-notdefined
| /set format concise display "{pre}{action} variable {name}{post}" varinit,expression,vardecl-dropped
| /set format concise display "{pre}{action} variable {name}, reset to null{post}" varinit,vardecl-replaced-update-ok
| /set format concise display "{pre}{action} {typeKind} {name}{resolve}{post}" class,enum,annotation,interface
| /set format concise display "{pre}{action} method {name}({type}){resolve}{post}" method
| /set format concise display "{pre}attempted to use {typeKind} {name}{resolve}{post}" class,enum,annotation,interface-used
| /set format concise display "{pre}attempted to call method {name}({type}){resolve}{post}" method-used
| /set format concise display "" modified,added,dropped,overwrote,replaced-update
| /set format concise display "{pre}{action} variable {name}, reset to null{post}" varinit,vardecl-replaced-update-ok
| /set format concise display "{result}" varinit,expression,assignment,varvalue,vardecl-modified,added,replaced-primary-ok
| /set format concise display "" class,enum,varinit,annotation,assignment,method,vardecl,interface-ok
| /set format concise type "%2$s"
| /set format concise errorpre "| "
| /set format concise result "{name} ==> {value}{post}" modified,added,replaced-primary-ok
| /set format concise unresolved "%4$s"
| /set format concise errorline "{post}{pre} {err}"
| /set format concise post "%n"
| /set format concise name "%1$s"
| /set format concise action "created" added-primary
| /set format concise action "modified" modified-primary
| /set format concise action "replaced" replaced-primary
| /set format concise action "overwrote" overwrote-primary
| /set format concise action "dropped" dropped-primary
| /set format concise action " update created" added-update
| /set format concise action " update modified" modified-update
| /set format concise action " update replaced" replaced-update
| /set format concise action " update overwrote" overwrote-update
| /set format concise action " update dropped" dropped-update
| /set format concise errorpost "%n"
| /set format concise until ", however, it cannot be instanciated or its methods invoked until" class-primary-defined
| /set format concise until ", however, its methods cannot be invoked until" interface-primary-defined
| /set format concise until ", however, it cannot be used until" enum,annotation-primary-defined
| /set format concise until ", however, it cannot be invoked until" method-primary-defined
| /set format concise until ", however, it cannot be referenced until" primary-notdefined
| /set format concise until " which cannot be instanciated or its methods invoked until" class-update-defined
| /set format concise until " whose methods cannot be invoked until" interface-update-defined
| /set format concise until " which cannot be invoked until" method-update-defined
| /set format concise until " which cannot be referenced until" update-notdefined
| /set format concise value "%3$s"
| /set format concise errors "%5$s"
| /set truncation concise 80
| /set truncation concise 1000 expression,varvalue
jshell> /set start -retain -default
This would help improve the usability and serviceability of jshell tremendously. Without such functionality, the only way to confirm the various settings is to examine the command history and extrapolate the current settings. That is like saying a Unix shell doesn't need a "cwd" command because one could figure out the current directory by examining or parsing the command history.
For example, one possible solution may be for "/set" to have a counterpart command (called "/show" ?) that would display the value of any of the configuration options. Or maybe we could just make "/set" called without any arguments display all of the current values, just like bash's "set" command would.
Solution chosen is as follows --
------------------------------------------------------------------------------------
In response to a review request for
8163840: jshell tool: provide way to display configuration settings
I had an in-depth discussion with Brian about the settings related commands -- resulting in a proposed syntax significantly different than current or the webrev. I'd like to vet this at the design level before implementing it (again). Your feedback is requested.
/set as before.
Showing settings with '/set' without specifying a setting (rather than '/set -show' in the RFR).. This is consistent with many other shells, including bash. It also reduces the commands to learn.
Since /set would also show settings retained between sessions, for symmetry, /retain would be rolled into /set as /set -retain ...
Since mode settings are very extensive they would be shown only for requested modes.
Examples ---
jshell> /set
| /set editor -retain kwrite
| /set editor -default
| /set start -none
| /set feedback normal
|
| For mode settings use: /show mode <mode>
| Current set modes: verbose normal concise silent
jshell> /set editor
| /set editor -retain kwrite
| /set editor -default
jshell> /set mode concise
| /set mode concise -quiet
| /set prompt concise "jshell> " " ...> "
| /set format concise typeKind "class" class
| /set format concise typeKind "interface" interface
| /set format concise typeKind "enum" enum
| /set format concise typeKind "annotation interface" annotation
| /set format concise pre "| "
| /set format concise resolve "{until}{unrerr}" modified,added,used,replaced
| /set format concise err "%6$s"
| /set format concise unrerr "{unresolved} is declared" unresolved1-error0
| /set format concise unrerr "{unresolved} are declared" unresolved2-error0
| /set format concise unrerr " this error is corrected: {errors}" unresolved0-error1
| /set format concise unrerr "{unresolved} is declared and this error is corrected: {errors}" unresolved1-error1
| /set format concise unrerr "{unresolved} are declared and this error is corrected: {errors}" unresolved2-error1
| /set format concise unrerr " these errors are corrected: {errors}" unresolved0-error2
| /set format concise unrerr "{unresolved} is declared and these errors are corrected: {errors}" unresolved1-error2
| /set format concise unrerr "{unresolved} are declared and these errors are corrected: {errors}" unresolved2-error2
| /set format concise display "{result}{pre}created scratch variable {name} : {type}{post}" expression-modified,added,replaced-primary
| /set format concise display "{result}{pre}value of {name} : {type}{post}" varvalue-primary
| /set format concise display "{result}{pre}assigned to {name} : {type}{post}" assignment-primary
| /set format concise display "{result}{pre}{action} variable {name} : {type}{resolve}{post}" varinit,vardecl
| /set format concise display "{pre}{action} variable {name}{resolve}{post}" varinit,vardecl-notdefined
| /set format concise display "{pre}{action} variable {name}{post}" varinit,expression,vardecl-dropped
| /set format concise display "{pre}{action} variable {name}, reset to null{post}" varinit,vardecl-replaced-update-ok
| /set format concise display "{pre}{action} {typeKind} {name}{resolve}{post}" class,enum,annotation,interface
| /set format concise display "{pre}{action} method {name}({type}){resolve}{post}" method
| /set format concise display "{pre}attempted to use {typeKind} {name}{resolve}{post}" class,enum,annotation,interface-used
| /set format concise display "{pre}attempted to call method {name}({type}){resolve}{post}" method-used
| /set format concise display "" modified,added,dropped,overwrote,replaced-update
| /set format concise display "{pre}{action} variable {name}, reset to null{post}" varinit,vardecl-replaced-update-ok
| /set format concise display "{result}" varinit,expression,assignment,varvalue,vardecl-modified,added,replaced-primary-ok
| /set format concise display "" class,enum,varinit,annotation,assignment,method,vardecl,interface-ok
| /set format concise type "%2$s"
| /set format concise errorpre "| "
| /set format concise result "{name} ==> {value}{post}" modified,added,replaced-primary-ok
| /set format concise unresolved "%4$s"
| /set format concise errorline "{post}{pre} {err}"
| /set format concise post "%n"
| /set format concise name "%1$s"
| /set format concise action "created" added-primary
| /set format concise action "modified" modified-primary
| /set format concise action "replaced" replaced-primary
| /set format concise action "overwrote" overwrote-primary
| /set format concise action "dropped" dropped-primary
| /set format concise action " update created" added-update
| /set format concise action " update modified" modified-update
| /set format concise action " update replaced" replaced-update
| /set format concise action " update overwrote" overwrote-update
| /set format concise action " update dropped" dropped-update
| /set format concise errorpost "%n"
| /set format concise until ", however, it cannot be instanciated or its methods invoked until" class-primary-defined
| /set format concise until ", however, its methods cannot be invoked until" interface-primary-defined
| /set format concise until ", however, it cannot be used until" enum,annotation-primary-defined
| /set format concise until ", however, it cannot be invoked until" method-primary-defined
| /set format concise until ", however, it cannot be referenced until" primary-notdefined
| /set format concise until " which cannot be instanciated or its methods invoked until" class-update-defined
| /set format concise until " whose methods cannot be invoked until" interface-update-defined
| /set format concise until " which cannot be invoked until" method-update-defined
| /set format concise until " which cannot be referenced until" update-notdefined
| /set format concise value "%3$s"
| /set format concise errors "%5$s"
| /set truncation concise 80
| /set truncation concise 1000 expression,varvalue
jshell> /set start -retain -default
- duplicates
-
JDK-8167559 help.retain.mode multiple lines properties broken
-
- Closed
-