]> git.lizzy.rs Git - rust.git/commitdiff
Fix the source code highlighting on source comments
authorStefan Schindler <dns2utf8@estada.ch>
Fri, 15 Nov 2019 01:02:09 +0000 (02:02 +0100)
committerStefan Schindler <dns2utf8@estada.ch>
Fri, 15 Nov 2019 01:02:09 +0000 (02:02 +0100)
src/librustdoc/html/static/main.js

index 04c0a0f005b8216ed05e648b12038fd06b030e2f..e992c0b62bf008c5f55baa3ed43f96306fb9e03d 100644 (file)
@@ -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);