Function: js--multi-line-declaration-indentation
js--multi-line-declaration-indentation is a byte-compiled function
defined in js.el.gz.
Signature
(js--multi-line-declaration-indentation)
Documentation
Helper function for js--proper-indentation.
Return the proper indentation of the current line if it belongs to a declaration statement spanning multiple lines; otherwise, return nil.
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/js.el.gz
(defun js--multi-line-declaration-indentation ()
"Helper function for `js--proper-indentation'.
Return the proper indentation of the current line if it belongs to a declaration
statement spanning multiple lines; otherwise, return nil."
(let (forward-sexp-function ; Use Lisp version.
at-opening-bracket)
(save-excursion
(back-to-indentation)
(when (not (looking-at js--declaration-keyword-re))
(let ((pt (point)))
(when (looking-at js--indent-operator-re)
(goto-char (match-end 0)))
;; The "operator" is probably a regexp literal opener.
(when (nth 3 (syntax-ppss))
(goto-char pt)))
(while (and (not at-opening-bracket)
(not (bobp))
(let ((pos (point)))
(save-excursion
(js--backward-syntactic-ws)
(or (eq (char-before) ?,)
(and (not (eq (char-before) ?\;))
(prog2
(skip-syntax-backward ".")
(looking-at js--indent-operator-re)
(js--backward-syntactic-ws))
(not (eq (char-before) ?\;)))
(js--same-line pos)))))
(condition-case nil
(backward-sexp)
(scan-error (setq at-opening-bracket t))))
(when (looking-at js--declaration-keyword-re)
(goto-char (match-end 0))
(1+ (current-column)))))))