[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 27db37a 202/271: Use a hash table as a scope level fast tr
From: |
Jackson Ray Hamilton |
Subject: |
[elpa] master 27db37a 202/271: Use a hash table as a scope level fast track. |
Date: |
Thu, 05 Feb 2015 18:31:12 +0000 |
branch: master
commit 27db37af12f27d6d989c2031b8d21cab1088347d
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>
Use a hash table as a scope level fast track.
---
context-coloring.el | 35 ++++++++++++++++++++++-------------
1 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/context-coloring.el b/context-coloring.el
index 7005dcf..ac941db 100644
--- a/context-coloring.el
+++ b/context-coloring.el
@@ -227,21 +227,28 @@ END (exclusive) with the face corresponding to LEVEL."
;;; js2-mode colorization
+(defvar-local context-coloring-js2-scope-level-hash-table nil
+ "Associates `js2-scope' structures and with their scope
+ levels.")
+
(defsubst context-coloring-js2-scope-level (scope)
"Gets the level of SCOPE."
- (let ((level 0)
- enclosing-scope)
- (while (and scope
- (js2-node-parent scope)
- (setq enclosing-scope (js2-node-get-enclosing-scope scope)))
- (when (or context-coloring-js-block-scopes
- (let ((type (js2-scope-type scope)))
- (or (= type js2-SCRIPT)
- (= type js2-FUNCTION)
- (= type js2-CATCH))))
- (setq level (+ level 1)))
- (setq scope enclosing-scope))
- level))
+ (cond ((gethash scope context-coloring-js2-scope-level-hash-table))
+ (t
+ (let ((level 0)
+ (current-scope scope)
+ enclosing-scope)
+ (while (and current-scope
+ (js2-node-parent current-scope)
+ (setq enclosing-scope (js2-node-get-enclosing-scope
current-scope)))
+ (when (or context-coloring-js-block-scopes
+ (let ((type (js2-scope-type current-scope)))
+ (or (= type js2-SCRIPT)
+ (= type js2-FUNCTION)
+ (= type js2-CATCH))))
+ (setq level (+ level 1)))
+ (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)
@@ -274,6 +281,8 @@ variable."
(defun context-coloring-js2-colorize ()
"Colorizes the current buffer using the abstract syntax tree
generated by js2-mode."
+ ;; Reset the hash table; the old one could be obsolete.
+ (setq context-coloring-js2-scope-level-hash-table (make-hash-table :test
'eq))
(with-silent-modifications
(js2-visit-ast
js2-mode-ast
- [elpa] master 3944181 223/271: Renames. Cleanup., (continued)
- [elpa] master 3944181 223/271: Renames. Cleanup., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 1f06301 198/271: Pass property lookup test., Jackson Ray Hamilton, 2015/02/05
- [elpa] master f836bd2 141/271: Add js2-mode test., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 32aacc9 216/271: Add customization interface., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 0830f53 104/271: Merge branch 'develop', Jackson Ray Hamilton, 2015/02/05
- [elpa] master 1df629d 222/271: Enable rainbow-mode., Jackson Ray Hamilton, 2015/02/05
- [elpa] master dc9644e 271/271: Merge branch 'master' of git://git.sv.gnu.org/emacs/elpa, Jackson Ray Hamilton, 2015/02/05
- [elpa] master 97150a1 256/271: Update .elpaignore., Jackson Ray Hamilton, 2015/02/05
- [elpa] master ae2adc4 259/271: Merge themes into main file., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 5908ce8 232/271: Fix readme., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 27db37a 202/271: Use a hash table as a scope level fast track.,
Jackson Ray Hamilton <=
- [elpa] master f3ab262 246/271: Merge branch 'develop', Jackson Ray Hamilton, 2015/02/05
- [elpa] master 73c82f9 234/271: Merge branch 'feature/set-colors' into develop, Jackson Ray Hamilton, 2015/02/05
- [elpa] master 1c0155f 203/271: Don't color name nodes in their own scope., Jackson Ray Hamilton, 2015/02/05
- [elpa] master b325b91 250/271: Add current directory to load path for compilation., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 6755fdb 194/271: Pass test for key names., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 941070c 257/271: Add `make deps`., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 6ce2b63 184/271: Bump required js2-mode version., Jackson Ray Hamilton, 2015/02/05
- [elpa] master d1cb93b 241/271: Merge branch 'feature/dispatch' into develop, Jackson Ray Hamilton, 2015/02/05
- [elpa] master e05f044 191/271: Update js2-mode., Jackson Ray Hamilton, 2015/02/05
- [elpa] master 04f6f73 185/271: Documentation., Jackson Ray Hamilton, 2015/02/05