diff options
author | Nathan Weizenbaum <nweiz@cressida.sea.corp.google.com> | 2010-08-26 16:09:31 -0400 |
---|---|---|
committer | Chong Yidong <cyd@stupidchicken.com> | 2010-08-26 16:09:31 -0400 |
commit | 4142607e2fb5acacc8d087fa581422df3459fc81 (patch) | |
tree | bdb04393ccebaff9089a01a2a5eb831551feb2bb | |
parent | 88a36e604acbcb7093cb271ebf7b3ebed4d750ef (diff) | |
download | emacs-4142607e2fb5acacc8d087fa581422df3459fc81.tar.gz |
* progmodes/js.el: Make indentation more customizable (Bug#6914).
(js-paren-indent-offset, js-square-indent-offset)
(js-curly-indent-offset): New options.
(js--proper-indentation): Use them.
-rw-r--r-- | lisp/ChangeLog | 7 | ||||
-rw-r--r-- | lisp/progmodes/js.el | 41 |
2 files changed, 43 insertions, 5 deletions
diff --git a/lisp/ChangeLog b/lisp/ChangeLog index dd96803195f..a220bc38f95 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2010-08-26 Nathan Weizenbaum <nweiz@cressida.sea.corp.google.com> (tiny change) + + * progmodes/js.el: Make indentation more customizable (Bug#6914). + (js-paren-indent-offset, js-square-indent-offset) + (js-curly-indent-offset): New options. + (js--proper-indentation): Use them. + 2010-08-26 Daniel Colascione <dan.colascione@gmail.com> * progmodes/sh-script.el (sh-get-indent-info): Use syntax-ppss diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el index d6feca4d8a0..9fb4822436a 100644 --- a/lisp/progmodes/js.el +++ b/lisp/progmodes/js.el @@ -431,11 +431,32 @@ Match group 1 is the name of the macro.") :group 'js) (defcustom js-expr-indent-offset 0 - "Number of additional spaces used for indentation of continued expressions. + "Number of additional spaces for indenting continued expressions. The value must be no less than minus `js-indent-level'." :type 'integer :group 'js) +(defcustom js-paren-indent-offset 0 + "Number of additional spaces for indenting expressions in parentheses. +The value must be no less than minus `js-indent-level'." + :type 'integer + :group 'js + :version "24.1") + +(defcustom js-square-indent-offset 0 + "Number of additional spaces for indenting expressions in square braces. +The value must be no less than minus `js-indent-level'." + :type 'integer + :group 'js + :version "24.1") + +(defcustom js-curly-indent-offset 0 + "Number of additional spaces for indenting expressions in curly braces. +The value must be no less than minus `js-indent-level'." + :type 'integer + :group 'js + :version "24.1") + (defcustom js-auto-indent-flag t "Whether to automatically indent when typing punctuation characters. If non-nil, the characters {}();,: also indent the current line @@ -1769,14 +1790,17 @@ nil." ((eq (char-after) ?#) 0) ((save-excursion (js--beginning-of-macro)) 4) ((nth 1 parse-status) + ;; A single closing paren/bracket should be indented at the + ;; same level as the opening statement. Same goes for + ;; "case" and "default". (let ((same-indent-p (looking-at "[]})]\\|\\_<case\\_>\\|\\_<default\\_>")) (continued-expr-p (js--continued-expression-p))) - (goto-char (nth 1 parse-status)) + (goto-char (nth 1 parse-status)) ; go to the opening char (if (looking-at "[({[]\\s-*\\(/[/*]\\|$\\)") - (progn + (progn ; nothing following the opening paren/bracket (skip-syntax-backward " ") - (when (eq (char-before) ?\)) (backward-list)) + (when (eq (char-before) ?\)) (backward-list)) (back-to-indentation) (cond (same-indent-p (current-column)) @@ -1784,7 +1808,14 @@ nil." (+ (current-column) (* 2 js-indent-level) js-expr-indent-offset)) (t - (+ (current-column) js-indent-level)))) + (+ (current-column) js-indent-level + (case (char-after (nth 1 parse-status)) + (?\( js-paren-indent-offset) + (?\[ js-square-indent-offset) + (?\{ js-curly-indent-offset)))))) + ;; If there is something following the opening + ;; paren/bracket, everything else should be indented at + ;; the same level. (unless same-indent-p (forward-char) (skip-chars-forward " \t")) |