From 9a266d91c0cc15f10ec03c4ebb51e13952556384 Mon Sep 17 00:00:00 2001 From: Dmitry Gutov Date: Tue, 24 Jan 2012 03:55:56 +0400 Subject: [PATCH] Update the README --- README.md | 173 ++++++------------------------------------------------ 1 file changed, 18 insertions(+), 155 deletions(-) diff --git a/README.md b/README.md index 35d3ff54..556b32c2 100644 --- a/README.md +++ b/README.md @@ -1,174 +1,37 @@ -js2-mode -======== +Description +====== An improved JavaScript mode for GNU Emacs. Forked from . -Install -======= +For the list of user-visible changes, see +[Changes from the original mode](https://github.com/mooz/js2-mode/wiki/Changes-from-the-original-mode). + +Installation +====== $ git clone git://github.com/mooz/js2-mode.git $ cd js2-mode $ emacs --batch -f batch-byte-compile js2-mode.el -_NOTE: Emacs may fail to byte compile js2-mode.el in interactive mode (e.g., `M-x byte-compile-file`). Following the above instruction is highly recommended. See https://github.com/mooz/js2-mode/issues/13 for details._ - -Then, place js2-mode.elc into your site-lisp directory. +Then put js2-mode.elc into your site-lisp directory. In you emacs config: (autoload 'js2-mode "js2-mode" nil t) (add-to-list 'auto-mode-alist '("\\.js$" . js2-mode)) -See for details. - -Differences between original js2-mode.el -======================================== - -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); - }); - -Pretty multi-line variable declaration --------------------------------------- - -In original js2-mode.el, - - var foo = 10, - bar = 20, - baz = 30; - -In this js2-mode.el, when the value `js2-pretty-multiline-decl-indentation-p` is non-nil, - - var foo = 10, - bar = 20, - baz = 30; - -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); - -Expression closure in property value ------------------------------------- - - let worker = { - get age() 20, - get sex() "male", - fire: function () _fire() - }; - -Fix for odd indentation of "else if" with no braces ---------------------------------------------------- - -In original js2-mode.el, - - if (foo) - return foo; - else if (bar) - return bar; // here +See for +additional details. -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 - } - } - -Imenu support for function nesting ----------------------------------- - -Supports function nesting and anonymous wrappers: - - (function() { - var foo = function() { - function bar() { // shown as foo.bar. - function baz() {} // foo.bar.baz - var qux = function() {}; // foo.bar.quux - } - }; - }); - -Examples of output: - -* [jQuery 1.5](https://gist.github.com/845449) -* [Underscore.js](https://gist.github.com/824262) -* [Backbone.js](https://gist.github.com/824260) - -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" - } +Bugs +==== -Destructuring assignments and array comprehensions (JS 1.7) are supported: +If you find problems, please report them at . - let three, [one, two] = [1, 2]; - thee = one + two; // highlights "thee" +See Also +====== - function revenue(goods) { - // highlights "coast" - return [price - coast for each ({price, cost} in goods)].reduce(add); - } - -Bugs -==== +Some third-party modes that use the generated syntax tree: -If you find problems, please report them to . +* [js2-highlight-vars-mode](http://mihai.bazon.net/projects/editing-javascript-with-emacs-js2-mode/js2-highlight-vars-mode) +* [js2-rename-var](https://github.com/magnars/mark-multiple.el/blob/master/js2-rename-var.el)