From dc9af4e2fcd6f01c03ffd8555ff5bd84bfd18504 Mon Sep 17 00:00:00 2001 From: Kyunghyun Park <72776061+khpark43@users.noreply.github.com> Date: Thu, 2 Jan 2025 15:50:51 +0900 Subject: [PATCH] [VIZ] fix hljs.highlightElement to correctly target (#8465) * hljs.highlightElement target code not pre * createPre * no style change * real no style change * remove unnecessary scroll bar * horizontal scrollbar appears only when scrolled all the way to the bottom * misc --- tinygrad/tensor.py | 2 +- tinygrad/viz/index.html | 28 ++++++++++++++++------------ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/tinygrad/tensor.py b/tinygrad/tensor.py index 48556ccfda..65d786ad53 100644 --- a/tinygrad/tensor.py +++ b/tinygrad/tensor.py @@ -196,7 +196,7 @@ class Tensor(SimpleMathTrait): def __exit__(self, exc_type, exc_value, traceback): Tensor.no_grad = self.prev def __repr__(self): - if isinstance(ld:=self.lazydata, MultiLazyBuffer): ld_repr = f"{self.lazydata!r}" + if isinstance(ld:=self.lazydata, MultiLazyBuffer): ld_repr = f"{ld!r}" else: ld_repr = f"" return f"" diff --git a/tinygrad/viz/index.html b/tinygrad/viz/index.html index f42ac724e8..a4725fc9b5 100644 --- a/tinygrad/viz/index.html +++ b/tinygrad/viz/index.html @@ -128,6 +128,7 @@ right: 0; } #metadata-resize-handle { + margin-top: 0; left: 0; } .floating-container { @@ -187,9 +188,9 @@ word-wrap: break-word; white-space: pre-wrap; } - .code-block { - max-height: 30%; + .code-block.hljs { overflow-y: auto; + max-height: 30vh; border-radius: 8px; padding: 8px; } @@ -273,6 +274,13 @@ const toPath = ([fp, lineno]) => `${fp.replaceAll("\\", "/").split("/").pop()}:${lineno}`; const vsCodeOpener = (parts) => Object.assign(document.createElement("a"), { textContent: parts[parts.length-1]+"\n\n", href: "vscode://file"+parts.join("/"), style: "font-family: monospace; margin: 4px 0;" }); + const highlightedCodeBlock = (code, lang, wrap) => { + const pre = Object.assign(document.createElement("pre"), {className: wrap ? "wrap" : ""}); + const codeEl= Object.assign(document.createElement("code"), {className: `language-${lang} code-block`, textContent: DOMPurify.sanitize(code)}); + pre.appendChild(codeEl); + hljs.highlightElement(codeEl); + return pre; + }; // **** main loop var ret = {}; @@ -332,7 +340,8 @@ kernelList.appendChild(kernelUl); }); // ***** UOp graph - if (currentKernel != -1) { + if (currentKernel == -1) return; + else { const cacheKey = `${currentKernel}-${currentUOp}`; if (cacheKey in cache) { ret = cache[cacheKey]; @@ -347,10 +356,9 @@ const metadata = document.querySelector(".container.metadata"); metadata.innerHTML = ""; metadata.appendChild(vsCodeOpener(ret.loc.join(":").split("/"))); - const pre = Object.assign(document.createElement("pre"), { innerHTML: `${DOMPurify.sanitize(ret.code_line)}`, - className: "wrap code-block language-python" }); + const pre = highlightedCodeBlock(ret.code_line, "python", true) metadata.appendChild(pre); - hljs.highlightElement(pre); + // ** code blocks let code = ret.uops[currentRewrite]; let lang = "python" @@ -358,9 +366,7 @@ code = ret.kernel_code.replaceAll("<", "<").replaceAll(">", ">"); lang = "cpp"; } - const codeBlock = Object.assign(document.createElement("pre"), { innerHTML: `${DOMPurify.sanitize(code)}`, - className: `code-block language-${lang}` }); - hljs.highlightElement(codeBlock); + const codeBlock = highlightedCodeBlock(code, lang, false); metadata.appendChild(codeBlock); // ** rewrite list if (ret.graphs.length > 1) { @@ -378,10 +384,8 @@ const div = Object.assign(document.createElement("div"), { className: "rewrite-container" }); const link = vsCodeOpener(parts); div.appendChild(link); - const pre = Object.assign(document.createElement("pre"), { className: "code-block wrap" }); - pre.appendChild(Object.assign(document.createElement("code"), { textContent: DOMPurify.sanitize(pattern), className: "language-python" })); + const pre = highlightedCodeBlock(pattern, "python", true); div.appendChild(pre); - hljs.highlightElement(pre); metadata.appendChild(div); const diffHtml = diff.map((line) => { const color = line.startsWith("+") ? "#3aa56d" : line.startsWith("-") ? "#d14b4b" : "#f0f0f5";