emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master c9a7a2d 050/271: Add tail-end optimization.


From: Jackson Ray Hamilton
Subject: [elpa] master c9a7a2d 050/271: Add tail-end optimization.
Date: Thu, 05 Feb 2015 18:29:42 +0000

branch: master
commit c9a7a2d1f507f29dcc066c4b6405026ab4b55478
Author: Jackson Ray Hamilton <address@hidden>
Commit: Jackson Ray Hamilton <address@hidden>

    Add tail-end optimization.
---
 scopifier.js |   17 ++++++++++++++++-
 1 files changed, 16 insertions(+), 1 deletions(-)

diff --git a/scopifier.js b/scopifier.js
index 29bdc85..c534ca7 100644
--- a/scopifier.js
+++ b/scopifier.js
@@ -21,6 +21,7 @@ process.stdin.on('end', function () {
         scopes = [],
         symbols = [],
         comments = [],
+        continuous,
         emacsified;
 
     // Gracefully handle parse errors by doing nothing.
@@ -111,7 +112,21 @@ process.stdin.on('end', function () {
         ]);
     });
 
-    emacsified = scopes.concat(symbols.concat(comments));
+    continuous = symbols.concat(comments).sort(function (a, b) {
+        return a[1] - b[1];
+    });
+
+    continuous = continuous.slice(1).reduce(function (soFar, token) {
+        var previous = soFar[soFar.length - 1];
+        if (previous[0] === token[0]) {
+            previous[2] = token[2];
+            return soFar;
+        }
+        soFar.push(token);
+        return soFar;
+    }, continuous.slice(0, 1));
+
+    emacsified = scopes.concat(continuous);
 
     emacsified.forEach(function (instruction) {
         // Emacs starts counting from 1.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]