(setq current-scope enclosing-scope))
(puthash scope level context-coloring-js2-scope-level-hash-table)))))
-(defsubst context-coloring-js2-name-node-level (node)
- (cond ((js2-node-top-level-decl-p node)
- 0)
- (t
- (context-coloring-js2-scope-level
- (js2-get-defining-scope
- (js2-node-get-enclosing-scope node)
- (js2-name-node-name node))))))
-
(defsubst context-coloring-js2-local-name-node-p (node)
"Determines if NODE is a js2-name-node representing a local
variable."
node
(context-coloring-js2-scope-level node)))
((context-coloring-js2-local-name-node-p node)
- (context-coloring-js2-colorize-node
- node
- (context-coloring-js2-name-node-level node))))
+ (let* ((enclosing-scope (js2-node-get-enclosing-scope node))
+ (defining-scope (js2-get-defining-scope
+ enclosing-scope
+ (js2-name-node-name node))))
+ ;; The tree seems to be walked lexically, so an entire scope will
+ ;; be colored, including its name nodes, before they are
+ ;; reached. Coloring the nodes defined in that scope would be
+ ;; redundant, so don't do it.
+ (when (not (eq defining-scope enclosing-scope))
+ (context-coloring-js2-colorize-node
+ node
+ (context-coloring-js2-scope-level defining-scope))))))
;; The `t' indicates to search children.
t)))))