about summary refs log tree commit diff
diff options
context:
space:
mode:
authorStefan Schindler <dns2utf8@estada.ch>2019-11-15 02:02:09 +0100
committerStefan Schindler <dns2utf8@estada.ch>2019-11-15 02:02:09 +0100
commit71cf364c3cf1c6b437be0e9352fa6d3ee8191404 (patch)
treef9f633fa15e169ede1ba3a148bb17eb7325f625b
parent82cf3a4486bc882207a09bf0d9e2dea4632781aa (diff)
downloadrust-71cf364c3cf1c6b437be0e9352fa6d3ee8191404.tar.gz
rust-71cf364c3cf1c6b437be0e9352fa6d3ee8191404.zip
Fix the source code highlighting on source comments
-rw-r--r--src/librustdoc/html/static/main.js56
1 files changed, 32 insertions, 24 deletions
diff --git a/src/librustdoc/html/static/main.js b/src/librustdoc/html/static/main.js
index 04c0a0f005b..e992c0b62bf 100644
--- a/src/librustdoc/html/static/main.js
+++ b/src/librustdoc/html/static/main.js
@@ -396,38 +396,46 @@ function getSearchElement() {
 
     document.onkeypress = handleShortcut;
     document.onkeydown = handleShortcut;
-    document.onclick = function(ev) {
-        if (hasClass(ev.target, "collapse-toggle")) {
-            collapseDocs(ev.target, "toggle");
-        } else if (hasClass(ev.target.parentNode, "collapse-toggle")) {
-            collapseDocs(ev.target.parentNode, "toggle");
-        } else if (ev.target.tagName === "SPAN" && hasClass(ev.target.parentNode, "line-numbers")) {
-            var prev_id = 0;
 
-            var set_fragment = function(name) {
-                if (browserSupportsHistoryApi()) {
-                    history.replaceState(null, null, "#" + name);
-                    highlightSourceLines();
-                } else {
-                    location.replace("#" + name);
-                }
-            };
+    var handleSourceHighlight = (function() {
+        var prev_line_id = 0;
+
+        var set_fragment = function(name) {
+            if (browserSupportsHistoryApi()) {
+                history.replaceState(null, null, "#" + name);
+                highlightSourceLines();
+            } else {
+                location.replace("#" + name);
+            }
+        };
 
-            var cur_id = parseInt(ev.target.id, 10);
+        return function(ev) {
+            var cur_line_id = parseInt(ev.target.id, 10);
 
-            if (ev.shiftKey && prev_id) {
-                if (prev_id > cur_id) {
-                    var tmp = prev_id;
-                    prev_id = cur_id;
-                    cur_id = tmp;
+            if (ev.shiftKey && prev_line_id) {
+                // Swap selection if needed
+                if (prev_line_id > cur_line_id) {
+                    var tmp = prev_line_id;
+                    prev_line_id = cur_line_id;
+                    cur_line_id = tmp;
                 }
 
-                set_fragment(prev_id + "-" + cur_id);
+                set_fragment(prev_line_id + "-" + cur_line_id);
             } else {
-                prev_id = cur_id;
+                prev_line_id = cur_line_id;
 
-                set_fragment(cur_id);
+                set_fragment(cur_line_id);
             }
+        }
+    })();
+
+    document.onclick = function(ev) {
+        if (hasClass(ev.target, "collapse-toggle")) {
+            collapseDocs(ev.target, "toggle");
+        } else if (hasClass(ev.target.parentNode, "collapse-toggle")) {
+            collapseDocs(ev.target.parentNode, "toggle");
+        } else if (ev.target.tagName === "SPAN" && hasClass(ev.target.parentNode, "line-numbers")) {
+            handleSourceHighlight(ev);
         } else if (hasClass(getHelpElement(), "hidden") === false) {
             var help = getHelpElement();
             var is_inside_help_popup = ev.target !== help && help.contains(ev.target);