From: Steve Yegge Date: Tue, 28 Jul 2009 05:57:35 +0000 (+0000) Subject: added js2-mode.el X-Git-Tag: emacs-pretest-23.1.90~2004 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=af0770126db4124103be502e3b8659e040713a45;p=emacs.git added js2-mode.el --- diff --git a/etc/NEWS b/etc/NEWS index cfb5ffed88b..9a8254ba46e 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -137,6 +137,11 @@ Command*'. *** Elint now uses compilation-mode, and recognizes more built-in functions and variables. + +* New Modes and Packages in Emacs 23.2 + +** js2-mode.el is a new major mode for JavaScript files. + * Installation Changes in Emacs 23.1 diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 411af1009fe..c1ca3073877 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2009-07-28 Steve Yegge > + + * progmodes/js2-mode.el: New file. + 2009-07-28 Nick Roberts * progmodes/gud.el (jdb): Add gud-pstar to dump object information. diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 99ed5885627..50c3d7b00ea 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -1051,6 +1051,7 @@ ELCFILES = \ $(lisp)/progmodes/idlw-toolbar.elc \ $(lisp)/progmodes/idlwave.elc \ $(lisp)/progmodes/inf-lisp.elc \ + $(lisp)/progmodes/js2-mode.elc \ $(lisp)/progmodes/ld-script.elc \ $(lisp)/progmodes/m4-mode.elc \ $(lisp)/progmodes/make-mode.elc \ diff --git a/lisp/progmodes/js2-mode.el b/lisp/progmodes/js2-mode.el new file mode 100644 index 00000000000..911eae5bae0 --- /dev/null +++ b/lisp/progmodes/js2-mode.el @@ -0,0 +1,11358 @@ +;;; js2-mode.el --- an improved JavaScript editing mode + +;; Copyright (C) 2009 Free Software Foundation, Inc. + +;; Author: Steve Yegge +;; Version: See `js2-mode-version' +;; Keywords: languages, javascript + +;; This file is part of GNU Emacs. + +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;; This JavaScript editing mode supports: + +;; - strict recognition of the Ecma-262 language standard +;; - support for most Rhino and SpiderMonkey extensions from 1.5 to 1.8 +;; - parsing support for ECMAScript for XML (E4X, ECMA-357) +;; - accurate syntax highlighting using a recursive-descent parser +;; - on-the-fly reporting of syntax errors and strict-mode warnings +;; - undeclared-variable warnings using a configurable externs framework +;; - "bouncing" line indentation to choose among alternate indentation points +;; - smart line-wrapping within comments and strings +;; - code folding: +;; - show some or all function bodies as {...} +;; - show some or all block comments as /*...*/ +;; - context-sensitive menu bar and popup menus +;; - code browsing using the `imenu' package +;; - typing helpers such as automatic insertion of matching braces/parens +;; - many customization options + +;; To customize how it works: +;; M-x customize-group RET js2-mode RET + +;; Notes: + +;; This mode includes a port of Mozilla Rhino's scanner, parser and +;; symbol table. Ideally it should stay in sync with Rhino, keeping +;; `js2-mode' current as the EcmaScript language standard evolves. + +;; Unlike cc-engine based language modes, js2-mode's line-indentation is not +;; customizable. It is a surprising amount of work to support customizable +;; indentation. The current compromise is that the tab key lets you cycle among +;; various likely indentation points, similar to the behavior of python-mode. + +;; This mode does not yet work with "multi-mode" modes such as `mmm-mode' +;; and `mumamo', although it could be made to do so with some effort. +;; This means that `js2-mode' is currently only useful for editing JavaScript +;; files, and not for editing JavaScript within