-
-
Notifications
You must be signed in to change notification settings - Fork 183
Latest user visible changes
This page lists some of the user-visible changes.
Support for:
- Unicode characters in identifiers (improved).
- Delegating yield.
- ES6 numeric literals (octal, binary).
- Harmony array and generator comprehensions.
Support for:
See the docstring for js2-include-jslint-globals
.
Because well-behaving major modes aren't supposed to do that.
So pressing it won't continue a block comment, or turn a string into a concatenation.
Pressing M-j
, however, will.
The options js2-indent-on-enter-key
and js2-enter-indents-newline
were also removed.
To bring back the previous behavior, put this in your init file:
(eval-after-load 'js2-mode
'(define-key js2-mode-map (kbd "RET") 'js2-line-break))
Support for for..of loops
[foo, bar, baz].forEach(function (v) {
if (validate(v))
process(v);
});
[a, b, c].some(function (v) {
return validate(v);
});
In the original mode,
var foo = 10,
bar = 20,
baz = 30;
In this mode when the value of js2-pretty-multiline-declarations
is non-nil,
var foo = 10,
bar = 20,
baz = 30;
let {a, b} = {a: 10, b: 20}; // Abbreviated (Not supported in the original mode)
let {a: a, b: b} = {a: 10, b: 20}; // Same as above (Supported in the original mode)
(function ({responseText}) { /* */ })(xhr); // As the argument of function
for (let [k, { name, age }] in Iterator(obj)) // nested
print(k, name, age);
let worker = {
get age() 20,
get sex() "male",
fire: function () _fire()
};
In the original mode,
if (foo)
return foo;
else if (bar)
return bar; // here
In this mode,
if (foo)
return foo;
else if (bar)
return bar; // fixed
Supports function nesting and anonymous wrappers:
(function() {
var foo = function() {
function bar() { // shown as foo.bar.<definition-1>
function baz() {} // foo.bar.baz
var qux = function() {}; // foo.bar.quux
}
};
});
Examples of output:
For library-specific extension methods like $.extend
and dojo.declare
, see js2-imenu-extras.
Original mode highlights them only on the left side of assignments:
var house;
hose = new House(); // highlights "hose"
Here they are highlighted in all expressions:
function feed(fishes, food) {
for each (var fish in fshes) { // highlights "fshes"
food.feed(fsh); // highlights "fsh"
}
hood.discard(); // highlights "hood"
}
Destructuring assignments and array comprehensions (JS 1.7) are supported:
let three, [one, two] = [1, 2];
thee = one + two; // highlights "thee"
function revenue(goods) {
// highlights "coast"
return [price - coast for each ({price, cost} in goods)].reduce(add);
}