Coming soon to the Ignition designer (and available now in 8.1.18 nightly builds):
The first round of changes in an enhanced script editing experience (our fourth most upvoted ideas request)
So, what does that actually mean?
Well, to start, we’ve replaced the backing ‘code editor’ Java component with a new one, which has some enhanced smarts to start with; plus, as a bonus, it’s more aware of DPI scaling. This should be an automatic, seamless change across pretty much the entire designer - anywhere you’re used to editing scripts should be a lot nicer to use now
This new editor has some basic niceties such as:
Inline find & replace
Code folding
Visible whitespace
Type Awareness
In addition, there’s new awareness of variable and parameter types [1] in the script editor, so in various contexts, such as extension functions, parameter types are hinted and autocompleted on their own.
For instance, in a script transform, quality
is known to be a QualityCode
object, so methods and properties of the QualityCode
type are exposed:
System functions [2] and Python’s builtin functions are currently part of the enhanced type completion, with project and Python standard library scripts hopefully soon to follow:
Parameter Completion
As a nice quality-of-life change, the new editor also offers parameter completion assistance; if you auto-complete a method with multiple required parameters, you’ll automatically enter a “parameter assistance” mode, where you can tab through the parameters and enter them one at a time:
Note: If you don’t want this, you can disable it across all script editors in the right click menu:
Disabling
Tooltips
As a nice bonus, with richer contextual and type information comes easy support for contextual tooltips. Just hover over an extension function parameter, Python builtin, or system function, and get a useful hint:
[1] There’s a bit of a fib here - it’s not true type awareness (yet) - there’s no AST parsing going on. But it’s pretty good as long as you don’t actively try to break it.
[2] System functions aren’t truly type aware (e.g. return types) because of some API limitations. Module authors providing scripting functions, beware - 8.2 will break the current script providers APIs, new signatures TBD.
With all that said - we’re not done yet! Behind the scenes, there was a lot of extra work required to make this change seamless, and lay the groundwork for type-awareness. Future versions of Ignition should continue to add to this foundation.
Module authors - if you’re providing any custom script hooks in your modules, look into the ExtensionFunctionPanel or PythonTextArea classes in the 8.1.18 SDK, and feel free to post questions and tag me.