From 0d5f0ae2455fb0a3ca49695853c2ae6b746ad1a8 Mon Sep 17 00:00:00 2001 From: Martin Kavalar Date: Sun, 26 Apr 2026 08:47:53 +1000 Subject: [PATCH 1/3] Only pass `:store!-viewer` opt into process-blocks --- src/nextjournal/clerk/viewer.cljc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/nextjournal/clerk/viewer.cljc b/src/nextjournal/clerk/viewer.cljc index b040cbbd0..0c1b6fa54 100644 --- a/src/nextjournal/clerk/viewer.cljc +++ b/src/nextjournal/clerk/viewer.cljc @@ -1361,7 +1361,7 @@ :transform-fn (fn [{:as wrapped-value :nextjournal/keys [viewers]}] (-> wrapped-value (update :nextjournal/value (fn [value] - (process-blocks viewers (merge (->opts wrapped-value) value)))) + (process-blocks viewers (merge (select-keys wrapped-value [:store!-viewer]) value)))) mark-presented))}) (def render-eval-viewer From 06e72105730f654a5b8eb9f5de866aaa4d496df7 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 27 Apr 2026 15:52:34 +0200 Subject: [PATCH 2/3] Add test --- test/nextjournal/clerk/viewer_test.clj | 26 +++++++++++++++++++++++++- 1 file changed, 25 insertions(+), 1 deletion(-) diff --git a/test/nextjournal/clerk/viewer_test.clj b/test/nextjournal/clerk/viewer_test.clj index 20be9d3a2..b3266b03d 100644 --- a/test/nextjournal/clerk/viewer_test.clj +++ b/test/nextjournal/clerk/viewer_test.clj @@ -103,7 +103,31 @@ ;; see also n.c.render/url-for (is (bytes? (:nextjournal/value ((:present-elision-fn (meta presented)) - (select-keys (:nextjournal/value presented) [:path]))))))))) + (select-keys (:nextjournal/value presented) [:path])))))))) + (testing "elision is scoped by block, see #813" + (let [code "(ns nextjournal.clerk.test.elision + (:require [nextjournal.clerk :as clerk])) + (clerk/table {:row (mapv #(str \"t1-\" %) (range 30))}) + (clerk/table {:row (mapv #(str \"t2-\" %) (range 30))})" + table-results (->> (eval/eval-string code) + view/doc->viewer + :nextjournal/value + :blocks + (mapcat :nextjournal/value) + (keep #(get-in % [:nextjournal/value :nextjournal/presented])) + (filter v/find-elision)) + table-strs (fn [presented] + (->> + ;; expands elided values + (resolve-elision presented) + v/desc->values + rest + first + (mapv first))) + [t1-strs t2-strs] (map table-strs table-results)] + (is (= 30 (count t1-strs) (count t2-strs))) + (is (every? #(str/starts-with? % "t1") t1-strs)) + (is (every? #(str/starts-with? % "t2") t2-strs))))) (deftest default-viewers (testing "viewers have names matching vars" From 0bc3c8c5c8418ca519fd518a8083bdc5f8641eb1 Mon Sep 17 00:00:00 2001 From: Michiel Borkent Date: Mon, 27 Apr 2026 15:53:18 +0200 Subject: [PATCH 3/3] fix weird formatting --- test/nextjournal/clerk/viewer_test.clj | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/test/nextjournal/clerk/viewer_test.clj b/test/nextjournal/clerk/viewer_test.clj index b3266b03d..b21283a1f 100644 --- a/test/nextjournal/clerk/viewer_test.clj +++ b/test/nextjournal/clerk/viewer_test.clj @@ -110,12 +110,12 @@ (clerk/table {:row (mapv #(str \"t1-\" %) (range 30))}) (clerk/table {:row (mapv #(str \"t2-\" %) (range 30))})" table-results (->> (eval/eval-string code) - view/doc->viewer - :nextjournal/value - :blocks - (mapcat :nextjournal/value) - (keep #(get-in % [:nextjournal/value :nextjournal/presented])) - (filter v/find-elision)) + view/doc->viewer + :nextjournal/value + :blocks + (mapcat :nextjournal/value) + (keep #(get-in % [:nextjournal/value :nextjournal/presented])) + (filter v/find-elision)) table-strs (fn [presented] (->> ;; expands elided values