$ git clone git://github.com/mooz/js2-mode.git
$ cd js2-mode
- $ emacs --batch --eval '(byte-compile-file "js2-mode.el")'
+ $ emacs --batch -f batch-byte-compile js2-mode.el
Then, place js2-mode.elc into your site-lisp directory.
return validate(v);
});
-Fixed ugly indentation with multi-line variable declaration
------------------------------------------------------------
+Pretty multi-line variable declaration
+--------------------------------------
In original js2-mode.el,
bar = 20,
baz = 30;
-In this js2-mode.el,
+In this js2-mode.el, when the value `js2-use-ast-for-indentation-p` is non-nil (default nil),
var foo = 10,
bar = 20,
bar: function() {}, // ok in original
baz: {
boop: function() {} // fixed here
- },
+ }
}
Imenu support for function nesting
No support for library-specific extension methods like _.extend.
+Highlights undeclared/external variables
+----------------------------------------
+
+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);
+ }
+
Bugs
====