Differences between original js2-mode.el
========================================
-Support for abbreviated destructuring assignments
--------------------------------------------------
-
- let {a, b} = {a: 10, b: 20}; // Abbreviated (Not supported in original js2-mode.el)
- let {a: a, b: b} = {a: 10, b: 20}; // Same as above (Supported in original js2-mode.el)
-
- (function ({responseText}) { /* */ })(xhr); // As the argument of function
-
-Support for expression closure in property value
-------------------------------------------------
-
- let worker = {
- get age() 20,
- get sex() "male",
- fire: function () _fire()
- };
-
Supported more popular indentation style
----------------------------------------
return validate(v);
});
-Fixed the odd indentation of "else if" with no braces
+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
+-------------------------------------------------
+
+ let {a, b} = {a: 10, b: 20}; // Abbreviated (Not supported in original js2-mode.el)
+ let {a: a, b: b} = {a: 10, b: 20}; // Same as above (Supported in original js2-mode.el)
+
+ (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
+------------------------------------------------
+
+ let worker = {
+ get age() 20,
+ get sex() "male",
+ fire: function () _fire()
+ };
+
+Fixed odd indentation of "else if" with no braces
-----------------------------------------------------
In original js2-mode.el,
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
+ },
+ }
+
+Imenu support for function nesting
+----------------------------------
+
+Supports one level of nesting:
+
+ function foo() {
+ function bar() { // shown as foo.bar
+ function baz() {} // hidden
+ }
+ }
+
+Top-level function can be anonymous wrapper:
+
+ (function() {
+ var foo = function() {}; // shown as foo
+ })();
+
+Examples of output:
+
+* [Underscore.js](https://github.com/documentcloud/underscore/blob/master/underscore.js)
+-> <https://gist.github.com/824262>
+* [Backbone.js](https://github.com/documentcloud/backbone/blob/master/backbone.js)
+-> <https://gist.github.com/824260>
+
+No support for library-specific extension methods like _.extend.
+
Bugs
====