Differences between original js2-mode.el
========================================
+Supported more popular indentation style
+----------------------------------------
+
+When js2-consistent-level-indent-inner-bracket-p is non-nil
+
+ [foo, bar, baz].forEach(function (v) {
+ if (validate(v))
+ process(v);
+ });
+
+ [a, b, c].some(function (v) {
+ return validate(v);
+ });
+
+When js2-consistent-level-indent-inner-bracket-p is nil
+(Same as original js2-mode's indentation)
+
+ [foo, bar, baz].forEach(function (v) {
+ if (validate(v))
+ process(v);
+ });
+
+ [a, b, c].some(function (v) {
+ return validate(v);
+ });
+
+Fixed ugly indentation with multi-line variable declaration
+-----------------------------------------------------------
+
+In original js2-mode.el,
+
+ var foo = 10,
+ bar = 20,
+ baz = 30;
+
+In this js2-mode.el,
+
+ var foo = 10,
+ bar = 20,
+ baz = 30;
+
Support for abbreviated destructuring assignments
-------------------------------------------------
(function ({responseText}) { /* */ })(xhr); // As the argument of function
+ for (let [k, { name, age }] in Iterator(obj)) // nested
+ print(k, name, age);
+
Support for expression closure in property value
------------------------------------------------
fire: function () _fire()
};
+Fixed odd indentation of "else if" with no braces
+-----------------------------------------------------
+
+In original js2-mode.el,
+
+ if (foo)
+ return foo;
+ else if (bar)
+ return bar; // here
+
+In this js2-mode.el,
+
+ if (foo)
+ return foo;
+ else if (bar)
+ return bar; // fixed
+
+Fixes in Imenu support
+-----------------------
+
+Supports element-get form:
+
+ foo["bar"] = function() {};
+ foo[647] = function() {};
+
+Proper position for functions in nested object literals:
+
+ foo = {
+ bar: function() {}, // ok in original
+ baz: {
+ boop: function() {} // fixed here
+ },
+ }
+
Bugs
====