See the reproduction here:
Variables are not properly highlighted as defined.
See the reproduction here:
Variables are not properly highlighted as defined.
This one’s an upstream bug that is present in CodeMirror. Unfortunately, because arrow functions are very context-dependent (because (foo, bar='default')
is a valid javascript expression and we only know that it’s a parameter list after encountering =>
, and CodeMirror’s syntax highlighting system is very context-independent, I’m not sure that there’s a clean fix before CodeMirror 6.
Why does it work with a number then?
I haven’t tested this (so take this with a grain of salt), but I suspect this line in CodeMirror’s JS mode is causing the arrow-function detection to fail. It looks like it was added in response to this issue.
EDIT: As evidence for this, note that using backticks around your default string argument causes syntax highlighting to work again. Try pasting the following into a notebook:
test4 = (foo, bar = `string`) => [foo, bar]
Reported to CodeMirror:
This was fixed in codemirror/CodeMirror@4c30e11
. It looks like that commit hasn’t yet been published to npm yet, but you should be able to install from the master
branch on GitHub to get the fix.
Tom backported the CodeMirror fix, so this ought to be highlighting correctly now.
Thanks, Tom!
Awesome. Thank you!